Alamo
src
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
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
int
main
(
int
argc,
char
* argv[])
28
{
29
Util::Initialize
(argc,argv);
30
31
std::string program;
32
IO::ParmParse
pp;
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
59
Util::Finalize
();
60
}
Cubic.H
Hexagonal.H
Isotropic.H
CrystalPlastic.H
FileNameParse.H
Cubic.H
Cubic.H
J2.H
Laplacian.H
Cubic.H
Isotropic.H
Mechanics.H
NeoHookeanPredeformed.H
NeoHookean.H
ParmParse.H
Transverse.H
Util.H
WriteMetaData.H
IO::ParmParse
Definition
ParmParse.H:137
IO::ParmParse::query_validate
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
IO::ParmParse::query_switch
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
IO::ParmParse::select_only
void select_only(PTRTYPE *&ic_eta, Args &&args)
Definition
ParmParse.H:2175
Integrator::Integrator
Definition
Integrator.H:76
Integrator::Integrator::InitData
void InitData()
Front-end method to initialize simulation on all levels.
Definition
Integrator.cpp:495
Integrator::Integrator::Evolve
void Evolve()
Front-end method to start simulation.
Definition
Integrator.cpp:1083
Integrator::Mechanics
Definition
Mechanics.H:103
main
int main(int argc, char *argv[])
Definition
mechanics.cc:27
Util::Finalize
void Finalize()
Definition
Util.cpp:385
Util::Initialize
void Initialize()
Definition
Util.cpp:219
Generated by
1.9.8