LCOV - code coverage report
Current view: top level - src/BC/Operator/Elastic - Elastic.H (source / functions) Hit Total Coverage
Test: coverage_merged.info Lines: 5 9 55.6 %
Date: 2024-11-18 05:28:54 Functions: 3 4 75.0 %

          Line data    Source code
       1             : //
       2             : // Class of BC operators that work with :ref:`Operator::Elastic`.
       3             : //
       4             : 
       5             : #ifndef BC_OPERATOR_ELASTIC_H
       6             : #define BC_OPERATOR_ELASTIC_H
       7             : 
       8             : // #include "Operator/Elastic.H"
       9             : #include "IO/ParmParse.H"
      10             : #include "Numeric/Interpolator/Linear.H"
      11             : 
      12             : namespace BC
      13             : {
      14             : namespace Operator
      15             : {
      16             : namespace Elastic
      17             : {
      18             : class Elastic
      19             : {
      20             : public:
      21             :     static const int min = 1, max = 2;
      22             : 
      23             : public:
      24             :     enum Type {Displacement, Traction, Periodic, Neumann, None}; 
      25             : 
      26             :     #if AMREX_SPACEDIM==2
      27             :     enum Face{
      28             :         XLO, YLO, XHI, YHI, 
      29             :         XLO_YLO, XLO_YHI, XHI_YLO, XHI_YHI,
      30             :         INT
      31             :     };
      32             :     #elif AMREX_SPACEDIM==3
      33             :     enum Face{
      34             :         XLO, YLO, ZLO, XHI, YHI, ZHI, // 6
      35             :         YLO_ZLO, YLO_ZHI, YHI_ZLO, YHI_ZHI, // 12
      36             :         ZLO_XLO, ZLO_XHI, ZHI_XLO, ZHI_XHI,
      37             :         XLO_YLO, XLO_YHI, XHI_YLO, XHI_YHI,
      38             :         XLO_YLO_ZLO, XLO_YLO_ZHI, XLO_YHI_ZLO, XLO_YHI_ZHI, // 8
      39             :         XHI_YLO_ZLO, XHI_YLO_ZHI, XHI_YHI_ZLO, XHI_YHI_ZHI,
      40             :         INT
      41             :     };
      42             :     #endif
      43             : 
      44             :     enum Direction {AMREX_D_DECL(X=0,Y=1,Z=2)}; 
      45             : 
      46             :     void 
      47         426 :     SetTime(const Set::Scalar a_time) {m_time = a_time;}
      48             : 
      49             :     virtual void
      50             :     Init(amrex::MultiFab * a_rhs,
      51             :         const amrex::Geometry &a_geom,
      52             :         bool a_homogeneous = false) const = 0;
      53             : 
      54             :     virtual void
      55             :     Init(amrex::FabArray<amrex::BaseFab<Set::Vector>> * a_rhs,
      56             :         const amrex::Geometry &a_geom,
      57             :         bool a_homogeneous = false) const = 0;
      58             : 
      59             :     void
      60           0 :     Init(Set::Field<Set::Scalar> &a_rhs,
      61             :         const amrex::Vector<amrex::Geometry> &a_geom,
      62             :         bool a_homogeneous = false) const
      63             :     {
      64           0 :         for (int ilev = 0; ilev <= a_rhs.finest_level; ilev++)
      65           0 :             Init(a_rhs[ilev].get(),a_geom[ilev],a_homogeneous);
      66           0 :     }
      67             : 
      68             :     void
      69         426 :     Init(Set::Field<Set::Vector> &a_rhs,
      70             :         const amrex::Vector<amrex::Geometry> &a_geom,
      71             :         bool a_homogeneous = false) const
      72             :     {
      73         898 :         for (int ilev = 0; ilev <= a_rhs.finest_level; ilev++)
      74         472 :             Init(a_rhs[ilev].get(),a_geom[ilev],a_homogeneous);
      75         426 :     }
      76             : 
      77             : #define SQRT3INV 0.57735026919
      78             : #define SQRT2INV 0.70710678118
      79             : 
      80             :     virtual
      81             :     std::array<Type,AMREX_SPACEDIM> getType (
      82             :                 const int &i, const int &j, const int &k,
      83             :                 const amrex::Box &domain) = 0;
      84             : 
      85             :     virtual
      86             :     Set::Vector operator () (const Set::Vector &u,
      87             :                 const Set::Matrix &gradu,
      88             :                 const Set::Matrix &sigma,
      89             :                 const int &i, const int &j, const int &k,
      90             :                 const amrex::Box &domain) = 0;
      91             : 
      92             : protected:
      93             :     Set::Scalar m_time = 0.0;
      94             : };
      95             : }
      96             : }
      97             : }
      98             : #endif

Generated by: LCOV version 1.14