1 #ifndef ABLATELIBRARY_LODIBOUNDARY_HPP
2 #define ABLATELIBRARY_LODIBOUNDARY_HPP
4 #include "boundarySolver/boundaryProcess.hpp"
6 #include "finiteVolume/compressibleFlowFields.hpp"
7 #include "finiteVolume/processes/flowProcess.hpp"
8 #include "finiteVolume/processes/navierStokesTransport.hpp"
9 #include "finiteVolume/processes/pressureGradientScaling.hpp"
11 namespace ablate::boundarySolver::lodi {
15 RHO = finiteVolume::CompressibleFlowFields::RHO,
16 RHOE = finiteVolume::CompressibleFlowFields::RHOE,
17 RHOVELN = finiteVolume::CompressibleFlowFields::RHOU,
18 RHOVELT1 = finiteVolume::CompressibleFlowFields::RHOV,
19 RHOVELT2 = finiteVolume::CompressibleFlowFields::RHOW
20 } BoundaryEulerComponents;
23 const std::shared_ptr<finiteVolume::processes::PressureGradientScaling> pressureGradientScaling;
25 void GetVelAndCPrims(PetscReal velNorm, PetscReal speedOfSound, PetscReal Cp, PetscReal Cv, PetscReal& velNormPrim, PetscReal& speedOfSoundPrim);
27 void GetEigenValues(PetscReal veln, PetscReal c, PetscReal velnprm, PetscReal cprm, PetscReal lamda[])
const;
29 void GetmdFdn(
const PetscInt sOff[],
const PetscReal* velNormCord, PetscReal rho, PetscReal T, PetscReal Cp, PetscReal Cv, PetscReal C, PetscReal Enth, PetscReal velnprm, PetscReal Cprm,
30 const PetscReal* conserved,
const PetscInt uOff[],
const PetscReal* sL,
const PetscReal transformationMatrix[3][3], PetscReal* mdFdn)
const;
33 PetscInt dims, nEqs, nSpecEqs, nEvEqs, eulerId, speciesId;
42 std::vector<std::string> fieldNames;
45 const std::shared_ptr<eos::EOS> eos;
55 explicit LODIBoundary(std::shared_ptr<eos::EOS> eos, std::shared_ptr<finiteVolume::processes::PressureGradientScaling> pressureGradientScaling = {});
66 void Setup(PetscInt dims, PetscInt nEqs, PetscInt nSpecEqs = 0, std::vector<PetscInt> nEvEqs = {},
const std::vector<domain::Field>& fields = {});
Definition: boundaryProcess.hpp:8
Definition: boundarySolver.hpp:13
Definition: lodiBoundary.hpp:12
std::vector< PetscInt > evIds
There maybe more than one ev field so keep a separate id for each.
Definition: lodiBoundary.hpp:36
std::vector< PetscInt > nEvComps
Track the number of components in each ev field.
Definition: lodiBoundary.hpp:39
void Setup(ablate::boundarySolver::BoundarySolver &bSolver) override
Definition: lodiBoundary.cpp:116