xref: /honee/qfunctions/newtonian_types.h (revision 475f0cac5d40259768f4556cf888e8f2448554cb)
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