Alamo
alamo.cc
Go to the documentation of this file.
1// This is the main entry point for alamo and is a general-purpose launcher for
2// many of the main integrators.
3// Check the possible values for :code:`alamo.program` below to see the possible
4// integrators that can be launched.
5//
6
7#include <iostream>
8#include <fstream>
9#include <iomanip>
10
11#include "Util/Util.H"
12#include "IO/ParmParse.H"
13#include "IO/FileNameParse.H"
14#include "IO/WriteMetaData.H"
15#include "AMReX_ParmParse.H"
16
20
25#include "Integrator/Flame.H"
27#include "Integrator/Fracture.H"
29#include "Integrator/Dendrite.H"
30#include "Integrator/PFC.H"
31
32int main (int argc, char* argv[])
33{
34 Util::Initialize(argc,argv);
35
36 std::string program;
38 // This input determines which integrator is used.
39 pp.query_validate( "alamo.program", program,
40 {"microstructure", "flame", "heat", "dendrite","allencahn","cahnhilliard","pfc"});
41 srand(2);
42
43 Integrator::Integrator *integrator = nullptr;
44
45 pp.query_switch("alamo.program", {
46 {"microstructure", [&] ()
47 {
48 std::string model;
49 // This input determines which elastic model is used - only if using
50 // the PhaseFieldMicrostructure integrator.
51 pp.query_validate( "alamo.program.microstructure.model",model,
52 {"affine.cubic","affine.hexagonal","finite.pseudoaffine.cubic"});
53
54 pp.query_switch("alamo.program.microstructure.model", {
55 {"affine.cubic", [&]()
56 {
58 }},
59 {"affine.hexagonal", [&]()
60 {
62 }},
63 {"finite.pseudoaffine.cubic", [&]()
64 {
66 }}
67 });
68 }},
69 {"flame", [&] () {pp.select_only<Integrator::Flame>(integrator);}} ,
70 {"heat", [&] () {pp.select_only<Integrator::HeatConduction>(integrator);}},
71 {"fracture", [&] () {pp.select_only<Integrator::Fracture>(integrator);}},
72 {"dendrite", [&] () {pp.select_only<Integrator::Dendrite>(integrator);}},
73 {"allencahn", [&] () {pp.select_only<Integrator::AllenCahn>(integrator);}},
74 {"cahnhilliard", [&] () {pp.select_only<Integrator::CahnHilliard>(integrator);}},
75 {"pfc", [&] () {pp.select_only<Integrator::PFC>(integrator);}}
76 });
77
78
79 integrator->InitData();
80 integrator->Evolve();
81 delete integrator;
82
84}
int main(int argc, char *argv[])
Definition alamo.cc:32
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
This is the definition of the Allen Cahn class.
Definition AllenCahn.H:47
void InitData()
Front-end method to initialize simulation on all levels.
void Evolve()
Front-end method to start simulation.
Solve the Allen-Cahn evolution equation for microstructure with parameters , where n corresponds to t...
void Finalize()
Definition Util.cpp:385
void Initialize()
Definition Util.cpp:219