1ae2b091fSJames Wright // SPDX-FileCopyrightText: Copyright (c) 2017-2024, HONEE contributors. 2ae2b091fSJames Wright // SPDX-License-Identifier: Apache-2.0 OR BSD-2-Clause 3c7ece6efSJeremy L Thompson #pragma once 415a3537eSJed Brown 53e17a7a1SJames Wright #include <ceed/types.h> 63e17a7a1SJames Wright #ifndef CEED_RUNNING_JIT_PASS 73e17a7a1SJames Wright #include <stdbool.h> 83e17a7a1SJames Wright #endif 915a3537eSJed Brown #include "stabilization_types.h" 1015a3537eSJed Brown 113636f6a4SJames Wright typedef enum { 123636f6a4SJames Wright STATEVAR_CONSERVATIVE = 0, 133636f6a4SJames Wright STATEVAR_PRIMITIVE = 1, 14c62f7daeSJames Wright STATEVAR_ENTROPY = 2, 153636f6a4SJames Wright } StateVariable; 161c94e285SJames Wright #ifndef CEED_RUNNING_JIT_PASS 17e5a8cae0SJames Wright extern const char *const StateVariables[]; 181c94e285SJames Wright #endif 193636f6a4SJames Wright 20*cde3d787SJames Wright typedef struct { 2115a3537eSJed Brown CeedScalar lambda; 2215a3537eSJed Brown CeedScalar mu; 2315a3537eSJed Brown CeedScalar k; 2415a3537eSJed Brown CeedScalar cv; 2515a3537eSJed Brown CeedScalar cp; 26*cde3d787SJames Wright } NewtonianIGProperties; 27*cde3d787SJames Wright 28*cde3d787SJames Wright typedef struct NewtonianIdealGasContext_ *NewtonianIdealGasContext; 29*cde3d787SJames Wright struct NewtonianIdealGasContext_ { 30*cde3d787SJames Wright NewtonianIGProperties gas; 3115a3537eSJed Brown CeedScalar g[3]; 32a8bca8acSJames Wright CeedScalar time; 33f0b65372SJed Brown CeedScalar ijacobian_time_shift; 348085925cSJames Wright bool is_implicit; 353636f6a4SJames Wright StateVariable state_var; 3615a3537eSJed Brown StabilizationType stabilization; 37e7754af5SKenneth E. Jansen bool idl_enable; 38fcb2c22aSJames Wright CeedScalar idl_pressure; 39e7754af5SKenneth E. Jansen CeedScalar idl_amplitude; 40e7754af5SKenneth E. Jansen CeedScalar idl_start; 41e7754af5SKenneth E. Jansen CeedScalar idl_length; 428c85b835SJames Wright 43*cde3d787SJames Wright // Stabilization 44*cde3d787SJames Wright TauDiagCoefficients tau_coeffs; 45*cde3d787SJames Wright CeedScalar dt; 468c85b835SJames Wright DivDiffFluxProjectionMethod divFdiff_method; 4715a3537eSJed Brown }; 4815a3537eSJed Brown 49b8fb7609SAdeleke O. Bankole typedef struct { 50b8fb7609SAdeleke O. Bankole CeedScalar pressure; 51b8fb7609SAdeleke O. Bankole CeedScalar velocity[3]; 52b8fb7609SAdeleke O. Bankole CeedScalar temperature; 53b8fb7609SAdeleke O. Bankole } StatePrimitive; 54b8fb7609SAdeleke O. Bankole 55c62f7daeSJames Wright typedef struct { 56c62f7daeSJames Wright CeedScalar S_density; 57c62f7daeSJames Wright CeedScalar S_momentum[3]; 58c62f7daeSJames Wright CeedScalar S_energy; 59c62f7daeSJames Wright } StateEntropy; 60c62f7daeSJames Wright 61b8fb7609SAdeleke O. Bankole typedef struct SetupContext_ *SetupContext; 62b8fb7609SAdeleke O. Bankole struct SetupContext_ { 63b8fb7609SAdeleke O. Bankole StatePrimitive reference; 64*cde3d787SJames Wright struct NewtonianIdealGasContext_ newt_ctx; 65b8fb7609SAdeleke O. Bankole CeedScalar lx; 66b8fb7609SAdeleke O. Bankole CeedScalar ly; 67b8fb7609SAdeleke O. Bankole CeedScalar lz; 68b8fb7609SAdeleke O. Bankole CeedScalar time; 69b8fb7609SAdeleke O. Bankole }; 70