Alamo
mechanics.cc
Go to the documentation of this file.
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
23
26
27int main (int argc, char* argv[])
28{
29 Util::Initialize(argc,argv);
30
31 std::string program;
33 // which integrator to use (can only be mechanics)
34 pp.query_validate("alamo.program",program,{"mechanics"});
35 srand(2);
36
37 Integrator::Integrator *integrator = nullptr;
38
39 pp.query_switch("alamo.program.mechanics.model",{
40 {"linear.isotropic", [&]() {pp.select_only<Integrator::Mechanics<Model::Solid::Linear::Isotropic>>(integrator); }},
41 { "linear.cubic", [&]() {pp.select_only<Integrator::Mechanics<Model::Solid::Linear::Cubic>>(integrator); }},
42 { "affine.cubic", [&]() {pp.select_only<Integrator::Mechanics<Model::Solid::Affine::Cubic>>(integrator); }},
43 { "affine.hexagonal", [&]() {pp.select_only<Integrator::Mechanics<Model::Solid::Affine::Hexagonal>>(integrator); }},
44 { "affine.isotropic", [&]() {pp.select_only<Integrator::Mechanics<Model::Solid::Affine::Isotropic>>(integrator); }},
45 { "linear.laplacian", [&]() {pp.select_only<Integrator::Mechanics<Model::Solid::Linear::Laplacian>>(integrator); }},
46 { "finite.neohookean", [&]() {pp.select_only<Integrator::Mechanics<Model::Solid::Finite::NeoHookean>>(integrator); }},
47 { "finite.neohookeanpre", [&]() {pp.select_only<Integrator::Mechanics<Model::Solid::Finite::NeoHookeanPredeformed>>(integrator); }},
48 { "linear.transverse", [&]() {pp.select_only<Integrator::Mechanics<Model::Solid::Linear::Transverse> >(integrator); }},
49 { "finite.pseudolinear.cubic",[&]() {pp.select_only<Integrator::Mechanics<Model::Solid::Finite::PseudoLinear::Cubic>>(integrator); }},
50 { "finite.pseudoaffine.cubic",[&]() {pp.select_only<Integrator::Mechanics<Model::Solid::Finite::PseudoAffine::Cubic>>(integrator); }},
51 { "affine.j2", [&]() {pp.select_only<Integrator::Mechanics<Model::Solid::Affine::J2>>(integrator); }},
52 { "finite.crystalplastic", [&]() {pp.select_only<Integrator::Mechanics<Model::Solid::Finite::CrystalPlastic>>(integrator); }}
53 });
54
55 integrator->InitData();
56 integrator->Evolve();
57 delete integrator;
58
60}
int query_validate(std::string name, int &value, std::vector< int > possibleintvals, const std::source_location &location=std::source_location::current())
Definition ParmParse.H:569
int query_switch(std::string name, std::initializer_list< std::pair< std::string, std::function< void()> > > cases, const std::source_location &location=std::source_location::current())
Definition ParmParse.H:714
void select_only(PTRTYPE *&ic_eta, Args &&args)
Definition ParmParse.H:2175
void InitData()
Front-end method to initialize simulation on all levels.
void Evolve()
Front-end method to start simulation.
int main(int argc, char *argv[])
Definition mechanics.cc:27
void Finalize()
Definition Util.cpp:385
void Initialize()
Definition Util.cpp:219