LCOV - code coverage report
Current view: top level - src - mechanics.cc (source / functions) Coverage Total Hit
Test: coverage_merged.info Lines: 77.3 % 44 34
Test Date: 2025-06-26 20:08:28 Functions: 100.0 % 1 1

            Line data    Source code
       1              : #include <iostream>
       2              : #include <fstream>
       3              : #include <iomanip>
       4              : 
       5              : #include "Util/Util.H"
       6              : #include "IO/ParmParse.H"
       7              : #include "IO/FileNameParse.H"
       8              : #include "IO/WriteMetaData.H"
       9              : #include "AMReX_ParmParse.H"
      10              : 
      11              : #include "Model/Solid/Linear/Isotropic.H"
      12              : #include "Model/Solid/Affine/Isotropic.H"
      13              : #include "Model/Solid/Linear/Cubic.H"
      14              : #include "Model/Solid/Affine/Cubic.H"
      15              : #include "Model/Solid/Finite/NeoHookean.H"
      16              : #include "Model/Solid/Finite/NeoHookeanPredeformed.H"
      17              : #include "Model/Solid/Linear/Transverse.H"
      18              : #include "Model/Solid/Finite/PseudoLinear/Cubic.H"
      19              : #include "Model/Solid/Finite/PseudoAffine/Cubic.H"
      20              : #include "Model/Solid/Linear/Laplacian.H"
      21              : #include "Model/Solid/Affine/J2.H"
      22              : #include "Model/Solid/Affine/Hexagonal.H"
      23              : 
      24              : #include "Integrator/Mechanics.H"
      25              : #include "Model/Solid/Finite/CrystalPlastic.H"
      26              : 
      27           18 : int main (int argc, char* argv[])
      28              : {
      29           18 :     Util::Initialize(argc,argv);
      30              : 
      31           18 :     std::string program;
      32           18 :     IO::ParmParse pp;
      33              :     // which integrator to use (can only be mechanics)
      34          126 :     pp.query_validate("alamo.program",program,{"mechanics"});
      35           18 :     srand(2);
      36              : 
      37           18 :     Integrator::Integrator *integrator = nullptr;
      38              : 
      39           18 :     if (program == "mechanics")
      40              :     {
      41           36 :         std::string model = "linear.isotropic";
      42              :         // which mechanics model to use
      43           90 :         pp.query_default("alamo.program.mechanics.model",model,"linear.isotropic");
      44           18 :         if (model == "linear.isotropic")
      45            6 :             pp.select_only<Integrator::Mechanics<Model::Solid::Linear::Isotropic>>(integrator);
      46           12 :         else if (model == "linear.cubic")
      47            0 :             pp.select_only<Integrator::Mechanics<Model::Solid::Linear::Cubic>>(integrator);
      48           12 :         else if (model == "affine.cubic")
      49            0 :             pp.select_only<Integrator::Mechanics<Model::Solid::Affine::Cubic>>(integrator);
      50           12 :         else if (model == "affine.hexagonal")
      51            1 :             pp.select_only<Integrator::Mechanics<Model::Solid::Affine::Hexagonal>>(integrator);
      52           11 :         else if (model == "affine.isotropic")
      53            3 :             pp.select_only<Integrator::Mechanics<Model::Solid::Affine::Isotropic>>(integrator);
      54            8 :         else if (model == "linear.laplacian")
      55            4 :             pp.select_only<Integrator::Mechanics<Model::Solid::Linear::Laplacian>>(integrator);
      56            4 :         else if (model == "finite.neohookean")
      57            3 :             pp.select_only<Integrator::Mechanics<Model::Solid::Finite::NeoHookean>>(integrator);
      58            1 :         else if (model == "finite.neohookeanpre")
      59            0 :             pp.select_only<Integrator::Mechanics<Model::Solid::Finite::NeoHookeanPredeformed>>(integrator);
      60            1 :         else if (model == "linear.transverse")
      61            0 :             pp.select_only<Integrator::Mechanics<Model::Solid::Linear::Transverse> >(integrator);
      62            1 :         else if (model == "finite.pseudolinear.cubic")
      63            0 :             pp.select_only<Integrator::Mechanics<Model::Solid::Finite::PseudoLinear::Cubic>>(integrator);
      64            1 :         else if (model == "finite.pseudoaffine.cubic")
      65            0 :             pp.select_only<Integrator::Mechanics<Model::Solid::Finite::PseudoAffine::Cubic>>(integrator);
      66            1 :         else if (model == "affine.j2")
      67            1 :             pp.select_only<Integrator::Mechanics<Model::Solid::Affine::J2>>(integrator);
      68            0 :         else if (model == "finite.crystalplastic")
      69            0 :             pp.select_only<Integrator::Mechanics<Model::Solid::Finite::CrystalPlastic>>(integrator);
      70            0 :         else Util::Abort(INFO,model," is not a valid model");
      71           18 :     }
      72            0 :     else Util::Abort(INFO,"Error: \"",program,"\" is not a valid program.");
      73              : 
      74           18 :     integrator->InitData();
      75           18 :     integrator->Evolve();
      76           18 :     delete integrator;
      77              : 
      78           18 :     Util::Finalize();
      79           18 : } 
        

Generated by: LCOV version 2.0-1