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

            Line data    Source code
       1              : #ifndef INTEGRATOR_FLAME_H
       2              : #define INTEGRATOR_FLAME_H
       3              : 
       4              : #include <limits>
       5              : 
       6              : #include "Integrator/Integrator.H"
       7              : #include "BC/BC.H"
       8              : #include "IC/IC.H"
       9              : #include "Set/Set.H"
      10              : #include "Model/Solid/Finite/NeoHookeanPredeformed.H"
      11              : #include "IO/ParmParse.H"
      12              : 
      13              : #include "Base/Mechanics.H"
      14              : 
      15              : #include "Model/Propellant/PowerLaw.H"
      16              : #include "Model/Propellant/FullFeedback.H"
      17              : #include "Model/Propellant/Homogenize.H"
      18              : 
      19              : namespace Integrator
      20              : {
      21              : 
      22              : class Flame : virtual public Integrator::Integrator,
      23              :     virtual public Base::Mechanics<Model::Solid::Finite::NeoHookeanPredeformed>
      24              : {
      25              : 
      26              :     using model_type = Model::Solid::Finite::NeoHookeanPredeformed;
      27              : 
      28              : public:
      29              :     static constexpr const char* name = "flame";
      30              : 
      31              :     Flame();
      32              :     Flame(IO::ParmParse& pp);
      33              : 
      34              :     static void Forbids(IO::ParmParse& pp);
      35              : 
      36              :     static void Parse(Flame& value, IO::ParmParse& pp);
      37              : 
      38            6 :     virtual ~Flame()
      39            3 :     {
      40            3 :         delete ic_eta;
      41            3 :         delete ic_phi;
      42            3 :         delete thermal.ic_temp;
      43            3 :         delete ic_laser;
      44            3 :         delete bc_eta;
      45            3 :         delete bc_temp;
      46            6 :     }
      47              : 
      48              : protected:
      49              :     void Initialize(int lev) override;
      50              :     void TimeStepBegin(Set::Scalar a_time, int a_iter) override;
      51              :     void TimeStepComplete(Set::Scalar a_time, int a_iter) override;
      52              :     void Advance(int lev, Set::Scalar time, Set::Scalar dt) override;
      53              :     void TagCellsForRefinement(int lev, amrex::TagBoxArray& tags, amrex::Real /*time*/, int /*ngrow*/) override;
      54              :     void Regrid(int lev, Set::Scalar time) override;
      55              :     void Integrate(int amrlev, Set::Scalar time, int step,
      56              :         const amrex::MFIter& mfi, const amrex::Box& box) override;
      57              :     void UpdateModel(int a_step, Set::Scalar a_time) override;
      58              : private:
      59              : 
      60              :     Set::Field<Set::Scalar> temp_mf;
      61              :     Set::Field<Set::Scalar> temp_old_mf;
      62              :     Set::Field<Set::Scalar> temps_mf;
      63              : 
      64              :     Set::Field<Set::Scalar> eta_mf;
      65              :     Set::Field<Set::Scalar> eta_old_mf;
      66              :     Set::Field<Set::Scalar> mdot_mf;
      67              : 
      68              :     Set::Field<Set::Scalar> phi_mf;
      69              :     Set::Field<Set::Scalar> field;
      70              :     Set::Field<Set::Scalar> alpha_mf;
      71              :     Set::Field<Set::Scalar> heatflux_mf;
      72              : 
      73              :     Set::Field<Set::Scalar> laser_mf;
      74              : 
      75              :     BC::BC<Set::Scalar>* bc_temp = nullptr;
      76              :     BC::BC<Set::Scalar>* bc_eta = nullptr;
      77              :     IC::IC<Set::Scalar>* ic_phi = nullptr;
      78              :     IC::IC<Set::Scalar>* ic_laser = nullptr;
      79              : 
      80              :     Set::Scalar phi_refinement_criterion = std::numeric_limits<Set::Scalar>::infinity();
      81              :     Set::Scalar m_refinement_criterion = NAN;
      82              :     Set::Scalar t_refinement_criterion = NAN;
      83              :     Set::Scalar t_refinement_restriction = NAN;
      84              :     Set::Scalar small = NAN;
      85              :     IC::IC<Set::Scalar>* ic_eta = nullptr;
      86              :     bool plot_field = true;
      87              :     int variable_pressure = -1;
      88              : 
      89              :     // Phase field model variables
      90              :     struct {
      91              :         Set::Scalar eps = NAN;
      92              :         Set::Scalar lambda = NAN;
      93              :         Set::Scalar kappa = NAN;
      94              :         Set::Scalar w1 = NAN, w12 = NAN, w0 = NAN;
      95              :         Set::Scalar min_eta = 0.001;
      96              :     } pf;
      97              : 
      98              :     // Thermal transport variables
      99              :     struct {
     100              :         bool on = 0;
     101              :         Set::Scalar hc = NAN, w1 = NAN;
     102              :         Set::Scalar Tref = NAN;
     103              :         Set::Scalar Tfluid = NAN;
     104              :         IC::IC<Set::Scalar>* ic_temp = nullptr;
     105              :     } thermal;
     106              : 
     107              :     // Thermoelastic variables
     108              :     struct {
     109              :         int on = 0;
     110              :         Set::Scalar Telastic = NAN;
     111              :         model_type model_ap, model_htpb;
     112              :         Set::Scalar traction = NAN;
     113              :         int phirefinement = -1;
     114              :     } elastic;
     115              : 
     116              :     // Chamber state variables (not inputs)
     117              :     struct {
     118              :         // Integrated variables
     119              :         Set::Scalar volume = 0.0;
     120              :         Set::Scalar area = 0.0;
     121              :         Set::Scalar massflux = 0.0;
     122              :         // Intensive variables
     123              :         Set::Scalar pressure = NAN;
     124              :     } chamber;
     125              : 
     126              : 
     127              :     // Propellant model
     128              :     Model::Propellant::Propellant<
     129              :         Model::Propellant::PowerLaw,
     130              :         Model::Propellant::FullFeedback,
     131              :         Model::Propellant::Homogenize> propellant;
     132              : };
     133              : }
     134              : 
     135              : #endif
        

Generated by: LCOV version 2.0-1