// SPDX-FileCopyrightText: Copyright (c) 2017-2024, HONEE contributors. // SPDX-License-Identifier: Apache-2.0 OR BSD-2-Clause #pragma once #include #include "stabilization_types.h" typedef enum { WIND_ROTATION = 0, WIND_TRANSLATION = 1, } WindType; // Advection - Initial Condition Types typedef enum { ADVECTIONIC_BUBBLE_SPHERE = 0, // dim=3 ADVECTIONIC_BUBBLE_CYLINDER = 1, // dim=2 ADVECTIONIC_COSINE_HILL = 2, // dim=2 ADVECTIONIC_SKEW = 3, } AdvectionICType; // Advection - Bubble Continuity Types typedef enum { BUBBLE_CONTINUITY_SMOOTH = 0, // Original continuous, smooth shape BUBBLE_CONTINUITY_BACK_SHARP = 1, // Discontinuous, sharp back half shape BUBBLE_CONTINUITY_THICK = 2, // Define a finite thickness BUBBLE_CONTINUITY_COSINE = 3, // Use cosine wave for smoothing } BubbleContinuityType; typedef struct AdvectionContext_ *AdvectionContext; struct AdvectionContext_ { CeedScalar CtauS; bool strong_form; CeedScalar E_wind; bool implicit; StabilizationType stabilization; StabilizationTauType stabilization_tau; CeedScalar Ctau_a; CeedScalar Ctau_t; CeedScalar dt; CeedScalar diffusion_coeff; }; typedef struct SetupContextAdv_ *SetupContextAdv; struct SetupContextAdv_ { CeedScalar rc; CeedScalar lx; CeedScalar ly; CeedScalar lz; CeedScalar wind[3]; CeedScalar time; WindType wind_type; AdvectionICType initial_condition_type; BubbleContinuityType bubble_continuity_type; };