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/Finite/PseudoLinear/Cubic.H"
18 : #include "Model/Solid/Finite/PseudoAffine/Cubic.H"
19 : #include "Model/Solid/Linear/Laplacian.H"
20 : #include "Model/Solid/Affine/J2.H"
21 : #include "Model/Solid/Affine/Hexagonal.H"
22 :
23 : #include "Integrator/Mechanics.H"
24 : #include "Model/Solid/Finite/CrystalPlastic.H"
25 :
26 40 : int main (int argc, char* argv[])
27 : {
28 40 : Util::Initialize(argc,argv);
29 :
30 40 : std::string program = "mechanics";
31 40 : IO::ParmParse pp;
32 40 : pp_query("alamo.program",program);
33 40 : srand(2);
34 :
35 40 : Integrator::Integrator *integrator = nullptr;
36 40 : if (program == "mechanics")
37 : {
38 40 : std::string model = "linear.isotropic";
39 40 : pp_query("alamo.program.mechanics.model",model);
40 40 : if (model == "linear.isotropic") integrator = new Integrator::Mechanics<Model::Solid::Linear::Isotropic>(pp);
41 32 : else if (model == "linear.cubic") integrator = new Integrator::Mechanics<Model::Solid::Linear::Cubic>(pp);
42 32 : else if (model == "affine.cubic") integrator = new Integrator::Mechanics<Model::Solid::Affine::Cubic>(pp);
43 30 : else if (model == "affine.hexagonal") integrator = new Integrator::Mechanics<Model::Solid::Affine::Hexagonal>(pp);
44 29 : else if (model == "affine.isotropic") integrator = new Integrator::Mechanics<Model::Solid::Affine::Isotropic>(pp);
45 18 : else if (model == "linear.laplacian") integrator = new Integrator::Mechanics<Model::Solid::Linear::Laplacian>(pp);
46 13 : else if (model == "finite.neohookean") integrator = new Integrator::Mechanics<Model::Solid::Finite::NeoHookean>(pp);
47 5 : else if (model == "finite.neohookeanpre") integrator = new Integrator::Mechanics<Model::Solid::Finite::NeoHookeanPredeformed>(pp);
48 4 : else if (model == "finite.pseudolinear.cubic") integrator = new Integrator::Mechanics<Model::Solid::Finite::PseudoLinear::Cubic>(pp);
49 3 : else if (model == "finite.pseudoaffine.cubic") integrator = new Integrator::Mechanics<Model::Solid::Finite::PseudoAffine::Cubic>(pp);
50 3 : else if (model == "affine.j2") integrator = new Integrator::Mechanics<Model::Solid::Affine::J2>(pp);
51 0 : else if (model == "finite.crystalplastic") integrator = new Integrator::Mechanics<Model::Solid::Finite::CrystalPlastic>(pp);
52 0 : else Util::Abort(INFO,model," is not a valid model");
53 40 : }
54 0 : else Util::Abort(INFO,"Error: \"",program,"\" is not a valid program.");
55 :
56 40 : integrator->InitData();
57 40 : integrator->Evolve();
58 18 : delete integrator;
59 :
60 18 : Util::Finalize();
61 18 : }
|