LCOV - code coverage report
Current view: top level - src/Model/Solid/Linear - Laplacian.H (source / functions) Coverage Total Hit
Test: coverage_merged.info Lines: 100.0 % 22 22
Test Date: 2025-04-03 04:02:21 Functions: 92.9 % 14 13

            Line data    Source code
       1              : #ifndef MODEL_SOLID_LINEAR_LAPLACIAN_H_
       2              : #define MODEL_SOLID_LINEAR_LAPLACIAN_H_
       3              : 
       4              : #include <AMReX.H>
       5              : #include <AMReX_REAL.H>
       6              : #include <eigen3/Eigen/Core>
       7              : 
       8              : #include "IO/ParmParse.H"
       9              : #include "Util/Util.H"
      10              : #include "Set/Set.H"
      11              : 
      12              : namespace Model
      13              : {
      14              : namespace Solid
      15              : {
      16              : namespace Linear
      17              : {
      18              : ///
      19              : /// Isotropic implements the following elastic model
      20              : /// \f[ \mathbb{C}_{ijkl} = \alpha\delta_{ik}\delta_{jl}  \f]
      21              : /// corresponding to the elastic model
      22              : /// \f[ \sigma_{ij} = \alpha\delta_{ik}\delta_{jl}u_{k,l} = \alpha u_{i,j} \f]
      23              : /// \f[ f_{i} = \mathbb{C}_{ijkl}u_{k,jl} = \alpha\delta_{ik}\delta_{jl}u_{k,jl} = \alpha u_{i,jj} \f]
      24              : ///
      25              : class Laplacian : public Model::Solid::Solid<Set::Sym::Diagonal>
      26              : {
      27              : public:
      28        18054 :     Laplacian() { Define(); } ;
      29         8516 :     Laplacian(Set::Scalar alpha) { Define(alpha); } ;
      30              :     Laplacian(Solid<Set::Sym::Diagonal> base) : Solid<Set::Sym::Diagonal>(base) {};
      31        35074 :     ~Laplacian() {} ;
      32        26574 :     void Define(Set::Scalar alpha = 1.0)
      33              :     {
      34        53148 :         ddw = alpha*Set::Matrix4<AMREX_SPACEDIM,Set::Sym::Diagonal>(Set::Matrix::Ones());
      35        26574 :     }
      36          260 :     Set::Scalar W(const Set::Matrix & gradu) const override
      37              :     {
      38          520 :         return ( 0.5 * gradu.transpose() * (ddw*gradu) ).trace();
      39              :     }
      40        18886 :     Set::Matrix DW(const Set::Matrix & gradu) const override
      41              :     {
      42        37772 :         return ddw*gradu;
      43              :     }
      44         8483 :     Set::Matrix4<AMREX_SPACEDIM,Set::Sym::Diagonal> DDW(const Set::Matrix & /*gradu*/) const override
      45              :     {
      46         8483 :         return ddw;
      47              :     }
      48              : public:
      49         8472 :     static Laplacian Zero()
      50              :     {
      51         8472 :         return Laplacian(0.0);
      52              :     }
      53            4 :     static void Parse(Laplacian value,IO::ParmParse pp)
      54              :     {
      55            4 :         Set::Scalar alpha = NAN;
      56              :         // Coefficient for the Laplacian
      57           20 :         pp_query_default("alpha",alpha,1.0);
      58            4 :         value.Define(alpha);
      59            4 :     }
      60              :     
      61              :     Set::Matrix4<AMREX_SPACEDIM,Set::Sym::Diagonal> ddw;
      62              :     static const KinematicVariable kinvar = KinematicVariable::gradu;
      63           44 :     static Laplacian Random()
      64              :     {
      65           44 :         Set::Scalar alpha = (Util::Random() + 0.1)/1.1;
      66           44 :         return Laplacian(alpha);
      67              :     }
      68              : 
      69              : #define OP_CLASS Laplacian
      70              : #define OP_VARS X(ddw)
      71              : #include "Model/Solid/InClassOperators.H"
      72              : };
      73              : #include "Model/Solid/ExtClassOperators.H"
      74              : 
      75              : }
      76              : }
      77              : }
      78              : #endif
        

Generated by: LCOV version 2.0-1