LCOV - code coverage report
Current view: top level - src/Integrator - Flame.H (source / functions) Hit Total Coverage
Test: coverage_merged.info Lines: 6 6 100.0 %
Date: 2024-11-18 05:28:54 Functions: 2 2 100.0 %

          Line data    Source code
       1             : #ifndef INTEGRATOR_FLAME_H
       2             : #define INTEGRATOR_FLAME_H
       3             : 
       4             : #include <string>
       5             : #include <limits>
       6             : #include <memory>
       7             : 
       8             : #include "Util/Util.H"
       9             : #include "Integrator/Integrator.H"
      10             : #include "Integrator/Mechanics.H"
      11             : #include "BC/BC.H"
      12             : #include "IC/Voronoi.H"
      13             : #include "IC/IC.H"
      14             : #include "IC/Wedge.H"
      15             : #include "IC/Constant.H"
      16             : #include "IC/Expression.H"
      17             : #include "IC/PSRead.H" 
      18             : #include "Set/Set.H"
      19             : #include "Model/Solid/Affine/Isotropic.H"
      20             : #include "Model/Solid/Finite/NeoHookeanPredeformed.H"
      21             : #include "IO/ParmParse.H"
      22             : #include "BC/Operator/Elastic/Constant.H"
      23             : #include "Solver/Nonlocal/Newton.H"
      24             : 
      25             : 
      26             : 
      27             : namespace Integrator
      28             : {
      29             : 
      30             : class Flame : virtual public Integrator::Integrator,
      31             :     virtual public Base::Mechanics<Model::Solid::Finite::NeoHookeanPredeformed>
      32             : {
      33             : 
      34             :     using model_type = Model::Solid::Finite::NeoHookeanPredeformed;
      35             : 
      36             : public:
      37             :     Flame();
      38             :     Flame(IO::ParmParse& pp);
      39             : 
      40             :     static void Parse(Flame& value, IO::ParmParse& pp);
      41             : 
      42           6 :     virtual ~Flame()
      43           3 :     {
      44           3 :         delete bc_eta;
      45           3 :         delete ic_eta;
      46           3 :         delete ic_phi;
      47           6 :     }
      48             : 
      49             : protected:
      50             :     void Initialize(int lev) override;
      51             :     void TimeStepBegin(Set::Scalar a_time, int a_iter) override;
      52             :     void TimeStepComplete(Set::Scalar a_time, int a_iter) override;
      53             :     void Advance(int lev, Set::Scalar time, Set::Scalar dt) override;
      54             :     void TagCellsForRefinement(int lev, amrex::TagBoxArray& tags, amrex::Real /*time*/, int /*ngrow*/) override;
      55             :     void Regrid(int lev, Set::Scalar time) override;
      56             :     void Integrate(int amrlev, Set::Scalar time, int step,
      57             :         const amrex::MFIter& mfi, const amrex::Box& box) override;
      58             :     void UpdateModel(int a_step, Set::Scalar a_time) override;
      59             : private:
      60             : 
      61             :     Set::Field<Set::Scalar> temp_mf;
      62             :     Set::Field<Set::Scalar> temp_old_mf;
      63             :     Set::Field<Set::Scalar> temps_mf;
      64             :     Set::Field<Set::Scalar> temps_old_mf;
      65             : 
      66             :     Set::Field<Set::Scalar> eta_mf;
      67             :     Set::Field<Set::Scalar> eta_old_mf;
      68             :     Set::Field<Set::Scalar> mob_mf;
      69             :     Set::Field<Set::Scalar> mdot_mf;
      70             : 
      71             :     Set::Field<Set::Scalar> phi_mf;
      72             :     Set::Field<Set::Scalar> field;
      73             :     Set::Field<Set::Scalar> alpha_mf;
      74             :     Set::Field<Set::Scalar> heatflux_mf;
      75             : 
      76             :     Set::Field<Set::Scalar> laser_mf;
      77             : 
      78             :     BC::BC<Set::Scalar>* bc_temp = nullptr;
      79             :     BC::BC<Set::Scalar>* bc_eta = nullptr;
      80             :     IC::IC* ic_phi = nullptr;
      81             :     IC::IC* ic_laser = nullptr;
      82             : 
      83             :     Set::Scalar phi_refinement_criterion = std::numeric_limits<Set::Scalar>::infinity();
      84             :     Set::Scalar m_refinement_criterion = NAN;
      85             :     Set::Scalar t_refinement_criterion = NAN;
      86             :     Set::Scalar t_refinement_restriction = NAN;
      87             :     Set::Scalar zeta = NAN;
      88             :     Set::Scalar zeta_0 =NAN;
      89             :     Set::Scalar small = NAN;
      90             :     Set::Scalar base_time = NAN;
      91             :     IC::IC* ic_eta = nullptr;
      92             :     int ghost_count = NAN;
      93             :     int homogeneousSystem = NAN;
      94             :     bool plot_field = true;
      95             :     int variable_pressure = NAN;
      96             : 
      97             :     struct {
      98             :         Set::Scalar gamma = NAN;
      99             :         Set::Scalar eps = NAN;
     100             :         Set::Scalar lambda = NAN;
     101             :         Set::Scalar kappa = NAN;
     102             :         Set::Scalar w1 = NAN, w12 = NAN, w0 = NAN;
     103             :         Set::Scalar min_eta = 0.001;
     104             :         int evolve = 1;
     105             :     } pf;
     106             : 
     107             :     struct {
     108             :         Set::Scalar P = 1.0;
     109             :         Set::Scalar gamma = 1.4;
     110             :         Set::Scalar Energy = 1;
     111             : 
     112             :         struct {
     113             :             Set::Scalar a1 = NAN, a2 = NAN, a3 = NAN;
     114             :             Set::Scalar b1 = NAN, b2 = NAN, b3 = NAN;
     115             :             Set::Scalar c1 = NAN;
     116             :             int mob_ap = 0;
     117             :             int dependency = 1;
     118             :             Set::Scalar h1 = 1.81, h2 = 1.34;
     119             : 
     120             :         } arrhenius;
     121             :         struct {
     122             :             Set::Scalar r_ap = NAN, r_htpb = NAN, r_comb = NAN;
     123             :             Set::Scalar n_ap = NAN, n_htpb = NAN, n_comb = NAN;
     124             :             Set::Scalar a_fit = 0.0, b_fit = 0.0, c_fit = 0.0;
     125             :         } power;
     126             :     } pressure;
     127             : 
     128             :     struct {
     129             :         bool on = 0;
     130             :         Set::Scalar rho_ap, rho_htpb;
     131             :         Set::Scalar k_ap, k_htpb;
     132             :         Set::Scalar cp_ap, cp_htpb;
     133             :         Set::Scalar q0 = NAN;
     134             :         Set::Scalar bound = NAN;
     135             :         Set::Scalar m_ap, m_htpb, m_comb;
     136             :         Set::Scalar E_ap, E_htpb;
     137             :         Set::Scalar hc = NAN, w1 = NAN;
     138             :         Set::Scalar modeling_ap = NAN, modeling_htpb = NAN;
     139             :         Set::Scalar mlocal_ap = NAN, mlocal_htpb = NAN, mlocal_comb = NAN;
     140             :         Set::Scalar T_fluid = NAN;
     141             :         Set::Scalar massfraction = NAN;
     142             :         Set::Scalar disperssion1 = NAN;
     143             :         Set::Scalar disperssion2 = NAN;
     144             :         Set::Scalar disperssion3 = NAN;
     145             :         IC::IC* ic_temp = nullptr;
     146             :     } thermal;
     147             : 
     148             :     struct {
     149             :         int on = 0;
     150             :         Set::Scalar Tref = NAN;
     151             :         model_type model_ap, model_htpb;
     152             :         Set::Scalar traction = NAN;
     153             :         int phirefinement = NAN;
     154             :     } elastic;
     155             : 
     156             :     // Integrated variables
     157             :     Set::Scalar volume = 0.0;
     158             :     Set::Scalar area = 0.0;
     159             :     Set::Scalar chamber_area = 0.0;
     160             :     Set::Scalar chamber_pressure = 1.0;
     161             :     Set::Scalar massflux = 0.00000001;
     162             : 
     163             :     Set::Scalar x_len = NAN;
     164             :     Set::Scalar y_len = NAN;
     165             : 
     166             :     BC::BC<Set::Scalar>* bc_psi = nullptr;
     167             : };
     168             : }
     169             : 
     170             : #endif

Generated by: LCOV version 1.14