LCOV - code coverage report
Current view: top level - src/Integrator - Hydro.H (source / functions) Coverage Total Hit
Test: coverage_merged.info Lines: 100.0 % 20 20
Test Date: 2025-06-26 20:08:28 Functions: 60.0 % 5 3

            Line data    Source code
       1              : #ifndef INTEGRATOR_HYDRO_H
       2              : #define INTEGRATOR_HYDRO_H
       3              : 
       4              : #include "Integrator/Integrator.H"
       5              : #include "IO/ParmParse.H"
       6              : 
       7              : #include "BC/BC.H"
       8              : #include "BC/Constant.H"
       9              : #include "BC/Nothing.H"
      10              : #include "IC/IC.H"
      11              : 
      12              : #include "Set/Base.H"
      13              : #include "Solver/Local/Riemann/Roe.H"
      14              : 
      15              : #if AMREX_SPACEDIM==2
      16              : 
      17              : namespace Integrator
      18              : {
      19              : class Hydro : virtual public Integrator
      20              : {
      21              : public:
      22              :     static constexpr const char* name = "hydro";
      23              : 
      24            6 :     Hydro() {};
      25              :     Hydro(IO::ParmParse& pp);
      26              :     static void Parse(Hydro& value, IO::ParmParse& pp);
      27           12 :     virtual ~Hydro()
      28            6 :     {
      29            6 :         delete density_bc;
      30            6 :         delete momentum_bc;
      31            6 :         delete energy_bc;
      32            6 :         delete eta_bc;
      33              : 
      34            6 :         delete density_ic;
      35            6 :         delete velocity_ic;
      36            6 :         delete pressure_ic;
      37              : 
      38            6 :         delete ic_m0;
      39            6 :         delete ic_u0;
      40            6 :         delete ic_q;
      41              : 
      42            6 :         delete eta_ic;
      43            6 :         delete etadot_ic;
      44              : 
      45            6 :         delete solid.momentum_ic;
      46            6 :         delete solid.density_ic;
      47            6 :         delete solid.energy_ic;
      48              : 
      49            6 :         delete riemannsolver;
      50           12 :     }
      51              : 
      52              : protected:
      53              :     void Initialize(int lev) override;
      54              :     void Mix(int lev);
      55              :     void TimeStepBegin(Set::Scalar a_time, int a_iter) override;
      56              :     void TimeStepComplete(Set::Scalar time, int lev) override;
      57              :     void Advance(int lev, Set::Scalar time, Set::Scalar dt) override;
      58              :     void TagCellsForRefinement(int lev, amrex::TagBoxArray& tags, amrex::Real /*time*/, int /*ngrow*/) override;
      59              :     void Regrid(int lev, Set::Scalar time) override;
      60              : 
      61              :     virtual void UpdateEta(int lev, Set::Scalar time);
      62              : private:
      63              :     
      64              :     void RHS(   int lev, Set::Scalar time, 
      65              :                 amrex::MultiFab &rho_rhs_mf, 
      66              :                 amrex::MultiFab &M_rhs_mf, 
      67              :                 amrex::MultiFab &E_rhs_mf,
      68              :                 const amrex::MultiFab &rho_mf,
      69              :                 const amrex::MultiFab &M_mf,
      70              :                 const amrex::MultiFab &E_mf);
      71              : 
      72              :     Set::Field<Set::Scalar> density_mf;
      73              :     Set::Field<Set::Scalar> density_old_mf;
      74              : 
      75              :     Set::Field<Set::Scalar> energy_mf;
      76              :     Set::Field<Set::Scalar> energy_old_mf;
      77              : 
      78              :     Set::Field<Set::Scalar> momentum_mf;
      79              :     Set::Field<Set::Scalar> momentum_old_mf;
      80              : 
      81              :     Set::Field<Set::Scalar> velocity_mf;
      82              :     Set::Field<Set::Scalar> pressure_mf;
      83              : 
      84              :     struct {
      85              :         Set::Field<Set::Scalar> density_mf;
      86              :         Set::Field<Set::Scalar> momentum_mf;
      87              :         Set::Field<Set::Scalar> energy_mf;
      88              :         IC::IC<Set::Scalar>* density_ic   = nullptr;
      89              :         IC::IC<Set::Scalar>* momentum_ic  = nullptr;
      90              :         IC::IC<Set::Scalar>* energy_ic    = nullptr;
      91              :     } solid;
      92              : 
      93              : protected:
      94              :     Set::Field<Set::Scalar> eta_mf;
      95              :     Set::Field<Set::Scalar> eta_old_mf;
      96              : private:
      97              :     Set::Field<Set::Scalar> etadot_mf;
      98              : 
      99              :     Set::Field<Set::Scalar> vorticity_mf;
     100              : 
     101              :     Set::Field<Set::Scalar> m0_mf;
     102              :     Set::Field<Set::Scalar> u0_mf;
     103              :     Set::Field<Set::Scalar> q_mf;
     104              :     Set::Field<Set::Scalar> Source_mf;
     105              :     Set::Field<Set::Scalar> flux_mf;
     106              : 
     107              :     BC::BC<Set::Scalar>* density_bc = nullptr;
     108              :     BC::BC<Set::Scalar>* momentum_bc = nullptr;
     109              :     BC::BC<Set::Scalar>* energy_bc = nullptr;
     110              :     BC::BC<Set::Scalar>* eta_bc = nullptr;
     111              : 
     112              :     IC::IC<Set::Scalar>* velocity_ic = nullptr;
     113              :     IC::IC<Set::Scalar>* pressure_ic = nullptr;
     114              :     IC::IC<Set::Scalar>* density_ic  = nullptr;
     115              : 
     116              :     IC::IC<Set::Scalar>* ic_m0 = nullptr;
     117              :     IC::IC<Set::Scalar>* ic_u0 = nullptr;
     118              :     IC::IC<Set::Scalar>* ic_q = nullptr;
     119              : 
     120              :     IC::IC<Set::Scalar>* eta_ic = nullptr;
     121              :     IC::IC<Set::Scalar>* etadot_ic = nullptr;
     122              : 
     123              :     BC::Nothing bc_nothing;
     124              : 
     125              :     BC::Constant neumann_bc_1 = BC::Constant::ZeroNeumann(1);
     126              :     BC::Constant neumann_bc_D = BC::Constant::ZeroNeumann(AMREX_SPACEDIM);
     127              : 
     128              :     Set::Scalar c_max = 0.0;
     129              :     Set::Scalar vx_max = 0.0;
     130              :     Set::Scalar vy_max = 0.0;
     131              : 
     132              :     Set::Scalar eta_refinement_criterion=NAN, omega_refinement_criterion=NAN, gradu_refinement_criterion=NAN, p_refinement_criterion=NAN, rho_refinement_criterion;
     133              :     Set::Scalar gamma=NAN, cfl=NAN, cfl_v=NAN, mu=NAN,  pref=NAN;
     134              : 
     135              :     Set::Scalar small=NAN;
     136              :     Set::Scalar cutoff=NAN;
     137              :     Set::Scalar lagrange=NAN;
     138              : 
     139              :     Solver::Local::Riemann::Riemann *riemannsolver = nullptr;
     140              : 
     141              :     enum IntegrationScheme {
     142              :         ForwardEuler, SSPRK3, RK4
     143              :     };
     144              :     IntegrationScheme scheme;
     145              : 
     146              : };
     147              : }
     148              : 
     149              : #endif
     150              : #endif
        

Generated by: LCOV version 2.0-1