Inputs
BC
BC::BC
This is the mechanism for impositing boundary conditions on Set::Field objects of
scalar type.
Typical convention is for [prefix] to be given by the field name. For instance,
bc.temp.type.xhi = dirichlet dirichlet dirichlet
bc.temp.val.xhi = 0.0 1.0 0.0
corresponds to the boundary condition for temperature. See the specific integrator for details.
API definitions in src/BC/BC.H
Classes
BC::BCMethods
~BC()define(const amrex::Geometry &a_geom)FillBoundary(amrex::BaseFab< T > &in, const amrex::Box &box, int ngrow, int dcomp, int ncomp, amrex::Real time, Orientation face=Orientation::All, const amrex::Mask *mask=nullptr)=0FillBoundary(amrex::FabArray< amrex::BaseFab< T > > &mf, int dcomp, int ncomp, amrex::Real time, int)FillBoundary(amrex::FabArray< amrex::BaseFab< T > > &mf, int dcomp, int ncomp, amrex::IntVect const &, amrex::Real time, int bccomp)operator()(amrex::FabArray< amrex::BaseFab< T > > &mf, int dcomp, int ncomp, amrex::IntVect const &, amrex::Real time, int bccomp)FillBoundary(amrex::MultiFab &mf, int dcomp, int ncomp, amrex::Real time, int)operator()(amrex::MultiFab &mf, int dcomp, int ncomp, amrex::IntVect const &, amrex::Real time, int bccomp)GetBCRec()=0IsPeriodic()Periodicity() constPeriodicity(const amrex::Box &b)
Variables
amrex::Geometry BC::BC< T >::m_geomUnit BC::BC< T >::unit
BC::Constant
src/BC/Constant.cpp src/BC/Constant.H
This is the most commonly used standard boundary condition implementation. The name “Constant” refers to the invariance of the BC value or character along each face of the simulation domain; however, you may cause a change in the value with time by using a Numeric::Interpolator::Linear string.
The BC on each face is specified with a type string that specifies the nature of
the BC, and a val that specifies the value.
By default, all types are Dirichlet and all values are 0.0.
The complete list of BC types are below:
Dirichlet boundary condition
types can be specified with Dirichlet, dirichlet, EXT_DIR.
Neumann boundary condition
types are specified with Neumann, neumann.
Periodic boundary conditions
can be specified with Periodic, periodic, INT_DIR.
Important: Ensure that your geometry is specified to be periodic using geometry.is_periodic.
For instance, if periodic in x, set to 1 0 0
The BC values can be specified either as a number (e.g. 1.0) or using a linear interpolator
string (e.g. (0,1:2.3,-0.1)).
The number of values and types must be either 0 (for defaults), 1 (to set the same for all field components) or N (where N=number of field components).
Parameter |
Type |
Values |
|---|---|---|
BC type on the lower x edge (2d) face (3d) |
{"dirichlet"} |
|
BC type on the upper x edge (2d) face (3d) |
{"dirichlet"} |
|
BC type on the lower y edge (2d) face (3d) |
{"dirichlet"} |
|
BC type on the upper y edge (2d) face (3d) |
{"dirichlet"} |
|
BC type on the lower z face (processed but ignored in 2d to prevent unused input errors) |
{"dirichlet"} |
|
BC type on the upper z face (processed but ignored in 2d to prevent unused input errors) |
{"dirichlet"} |
|
BC value on the lower x edge (2d) face (3d) |
{"0.0"} |
|
BC value on the upper x edge (2d) face (3d) |
{"0.0"} |
|
BC value on the lower y edge (2d) face (3d) |
{"0.0"} |
|
BC value on the upper y edge (2d) face (3d) |
{"0.0"} |
|
BC value on the lower z face (processed but ignored in 2d to prevent unused input errors) |
{"0.0"} |
|
BC value on the upper z face (processed but ignored in 2d to prevent unused input errors) |
{"0.0"} |
API definitions in src/BC/Constant.H
Classes
BC::ConstantMethods
Constant(int a_ncomp, Unit a_unit=Unit::Less())Constant(int a_ncomp, IO::ParmParse &pp, std::string name)Constant(int a_ncomp, Unit a_unit, IO::ParmParse &pp, std::string name)Constant(int ncomp, amrex::Vector< std::string > bc_hi_str, amrex::Vector< std::string > bc_lo_str, AMREX_D_DECL(amrex::Vector< amrex::Real > _bc_lo_1, amrex::Vector< amrex::Real > _bc_lo_2, amrex::Vector< amrex::Real > _bc_lo_3), AMREX_D_DECL(amrex::Vector< amrex::Real > _bc_hi_1, amrex::Vector< amrex::Real > _bc_hi_2, amrex::Vector< amrex::Real > _bc_hi_3))~Constant()FillBoundary(amrex::BaseFab< Set::Scalar > &in, const amrex::Box &box, int ngrow, int dcomp, int ncomp, amrex::Real time, Orientation face=Orientation::All, const amrex::Mask *mask=nullptr) overrideGetBCRec() overrideIsPeriodic() overridePeriodicity() const overridePeriodicity(const amrex::Box &b) overrideGetBCTypes()FillBoundary(amrex::BaseFab< T > &in, const amrex::Box &box, int ngrow, int dcomp, int ncomp, amrex::Real time, Orientation face=Orientation::All, const amrex::Mask *mask=nullptr)=0FillBoundary(amrex::FabArray< amrex::BaseFab< T > > &mf, int dcomp, int ncomp, amrex::Real time, int)FillBoundary(amrex::FabArray< amrex::BaseFab< T > > &mf, int dcomp, int ncomp, amrex::IntVect const &, amrex::Real time, int bccomp)FillBoundary(amrex::MultiFab &mf, int dcomp, int ncomp, amrex::Real time, int)
Variables
unsigned int BC::Constant::m_ncompUnit BC::Constant::unitstd::array<std::vector<int>, m_nfaces> BC::Constant::m_bc_typestd::array<std::vector<Numeric::Interpolator::Linear<Set::Scalar> >, m_nfaces> BC::Constant::m_bc_val
BC::Expression
src/BC/Expression.cpp src/BC/Expression.H
Boundary condition similar to BC::Constant, except that “values” are given as strings which are functions of x,y,z,t.
Parameter |
Type |
Values |
|---|---|---|
BC type on the lower x edge (2d) face (3d) |
{"dirichlet"} |
|
BC type on the upper x edge (2d) face (3d) |
{"dirichlet"} |
|
BC type on the lower y edge (2d) face (3d) |
{"dirichlet"} |
|
BC type on the upper y edge (2d) face (3d) |
{"dirichlet"} |
|
BC type on the lower z face (processed but ignored in 2d to prevent unused input errors) |
{"dirichlet"} |
|
BC type on the upper z face (processed but ignored in 2d to prevent unused input errors) |
{"dirichlet"} |
API definitions in src/BC/Expression.H
Classes
BC::ExpressionMethods
Expression(int a_ncomp)Expression(int a_ncomp, IO::ParmParse &pp, std::string name)Expression(int a_ncomp, Unit, IO::ParmParse &pp, std::string name)~Expression()FillBoundary(amrex::BaseFab< Set::Scalar > &in, const amrex::Box &box, int ngrow, int dcomp, int ncomp, amrex::Real time, Orientation face=Orientation::All, const amrex::Mask *mask=nullptr) overrideGetBCRec() overrideIsPeriodic() overridePeriodicity() const overridePeriodicity(const amrex::Box &b) overrideGetBCTypes()FillBoundary(amrex::BaseFab< T > &in, const amrex::Box &box, int ngrow, int dcomp, int ncomp, amrex::Real time, Orientation face=Orientation::All, const amrex::Mask *mask=nullptr)=0FillBoundary(amrex::FabArray< amrex::BaseFab< T > > &mf, int dcomp, int ncomp, amrex::Real time, int)FillBoundary(amrex::FabArray< amrex::BaseFab< T > > &mf, int dcomp, int ncomp, amrex::IntVect const &, amrex::Real time, int bccomp)FillBoundary(amrex::MultiFab &mf, int dcomp, int ncomp, amrex::Real time, int)
Variables
unsigned int BC::Expression::m_ncompstd::array<std::vector<int>, m_nfaces> BC::Expression::m_bc_typestd::array<std::vector<amrex::Parser>, m_nfaces> BC::Expression::m_bc_func_parserstd::array<std::vector<amrex::ParserExecutor<4> >, m_nfaces> BC::Expression::m_bc_func
BC::Nothing
Empty BC class, used when specifying boundaries that have no ghost cells/nodes but a BC object is still required.
API definitions in src/BC/Nothing.H
Classes
BC::NothingMethods
Nothing()FillBoundary(amrex::BaseFab< Set::Scalar > &, const amrex::Box &, int, int, int, amrex::Real, Orientation=Orientation::All, const amrex::Mask *=nullptr) overrideGetBCRec() override
BC::Operator
BC::Operator::Operator
The BC::Operator family of BC classes are designed to work with implicit
operators.
They are not the same thing as other BC types and cannot be used in that same
way.
(This is not an ideal taxonomy for BC structures - we may transition other BC types
to be subspaces of BC::Integrator.)
API definitions in src/BC/Operator/Operator.H
Classes
BC::Operator::Elastic
BC::Operator::Elastic::Elastic
src/BC/Operator/Elastic/Elastic.H
Class of BC operators that work with Operator::Elastic.
API definitions in src/BC/Operator/Elastic/Elastic.H
Classes
BC::Operator::Elastic::ElasticMethods
~Elastic()=defaultSetTime(const Set::Scalar a_time)Init(amrex::MultiFab *a_rhs, const amrex::Geometry &a_geom, bool a_homogeneous=false) const =0Init(amrex::FabArray< amrex::BaseFab< Set::Vector > > *a_rhs, const amrex::Geometry &a_geom, bool a_homogeneous=false) const =0Init(Set::Field< Set::Scalar > &a_rhs, const amrex::Vector< amrex::Geometry > &a_geom, bool a_homogeneous=false) constInit(Set::Field< Set::Vector > &a_rhs, const amrex::Vector< amrex::Geometry > &a_geom, bool a_homogeneous=false) constgetType(const int &i, const int &j, const int &k, const amrex::Box &domain)=0operator()(const Set::Vector &u, const Set::Matrix &gradu, const Set::Matrix &sigma, const int &i, const int &j, const int &k, const amrex::Box &domain)=0
Variables
Set::Scalar BC::Operator::Elastic::Elastic::m_time
BC::Operator::Elastic::Constant
src/BC/Operator/Elastic/Constant.H
This BC defines boundary conditions that are constant with respect to space. However they may change in time using the Numeric::Interpolator::Linear method.
In 2D, BCs are prescribed for each edge (4) and corner (4) on the boundary, for a total of 8 possible regions. In 3D, BCs are prescribed for each face (6), each edge (12), and each corner (8), for a total of 26 possible regions. Care must be taken to define BCs for edges/corners consistently with the faces/edges, or you will get poor convergence and inaccurate behavior. (See BC::Operator::Elastic::TensionTest for a reduced BC with streamlined load options.)
To define a boundary condition, you must define both a “type” and a “value” in each direction. The type can be “displacement”, “disp”, “neumann”, “traction”, “trac”. The value is the corresponding value. All BCs are, by default, dirichlet (displacement) with a value of zero.
Parameter |
Type |
Values |
|---|---|---|
3D Corner |
||
3D Corner |
||
3D Corner |
||
3D Corner |
||
3D Corner |
||
3D Corner |
||
3D Corner |
||
3D Corner |
||
3D Edge |
||
3D Edge |
||
3D Edge |
||
3D Edge |
||
3D Edge |
||
3D Edge |
||
3D Edge |
||
3D Edge |
||
3D Edge / 2D Corner |
||
3D Edge / 2D Corner |
||
3D Edge / 2D Corner |
||
3D Edge / 2D Corner |
||
3D Face / 2D Edge |
||
3D Face / 2D Edge |
||
3D Face / 2D Edge |
||
3D Face / 2D Edge |
||
3D Face |
||
3D Face |
||
3D Corner |
||
3D Corner |
||
3D Corner |
||
3D Corner |
||
3D Corner |
||
3D Corner |
||
3D Corner |
||
3D Corner |
||
3D Edge |
||
3D Edge |
||
3D Edge |
||
3D Edge |
||
3D Edge |
||
3D Edge |
||
3D Edge |
||
3D Edge |
||
3D Edge / 2D Corner |
||
3D Edge / 2D Corner |
||
3D Edge / 2D Corner |
||
3D Edge / 2D Corner |
||
3D Face / 2D Edge |
||
3D Face / 2D Edge |
||
3D Face / 2D Edge |
||
3D Face / 2D Edge |
||
3D Face |
||
3D Face |
||
API definitions in src/BC/Operator/Elastic/Constant.H
Classes
BC::Operator::Elastic::ConstantMethods
Constant()Constant(IO::ParmParse &pp, std::string name)~Constant()Set(const Face face, const Direction direction, const Type type, const Set::Scalar value)Set(const Face, const Direction, const Type, const Set::Scalar, amrex::Vector< amrex::MultiFab * > &, const amrex::Vector< amrex::Geometry > &)Set(const Face face, const Direction direction, const Type type, const Set::Scalar value, amrex::Vector< amrex::MultiFab > &a_rhs, const amrex::Vector< amrex::Geometry > &a_geom)Set(const Face face, const Direction direction, const Type type, const Set::Scalar value, amrex::Vector< std::unique_ptr< amrex::MultiFab > > &a_rhs, const amrex::Vector< amrex::Geometry > &a_geom)Init(amrex::FabArray< amrex::BaseFab< Set::Vector > > *a_rhs, const amrex::Geometry &a_geom, bool a_homogeneous=false) constInit(amrex::MultiFab *a_rhs, const amrex::Geometry &a_geom, bool a_homogeneous=false) constgetType(const int &i, const int &j, const int &k, const amrex::Box &domain)operator()(const Set::Vector &u, const Set::Matrix &gradu, const Set::Matrix &sigma, const int &i, const int &j, const int &k, const amrex::Box &domain)set(std::array< Type, AMREX_SPACEDIM > &bc_type, const Set::Vector &u, const Set::Matrix &gradu, const Set::Matrix &sigma, Set::Vector n) constInit(amrex::MultiFab *a_rhs, const amrex::Geometry &a_geom, bool a_homogeneous=false) const=0Init(amrex::FabArray< amrex::BaseFab< Set::Vector > > *a_rhs, const amrex::Geometry &a_geom, bool a_homogeneous=false) const=0Init(Set::Field< Set::Scalar > &a_rhs, const amrex::Vector< amrex::Geometry > &a_geom, bool a_homogeneous=false) constInit(Set::Field< Set::Vector > &a_rhs, const amrex::Vector< amrex::Geometry > &a_geom, bool a_homogeneous=false) const
Variables
std::array<std::array<Type, AMREX_SPACEDIM>, m_nfaces> BC::Operator::Elastic::Constant::m_bc_typestd::array<std::array<Numeric::Interpolator::Linear<Set::Scalar>,AMREX_SPACEDIM>, m_nfaces> BC::Operator::Elastic::Constant::m_bc_val
BC::Operator::Elastic::Expression
src/BC/Operator/Elastic/Expression.H
Use expressions to define space and time varying boundary conditions for elastic problems.
Parameter |
Type |
Values |
|---|---|---|
3D Face / 2D Edge type |
{"disp"} |
|
3D Face / 2D Edge value |
{"0.0"} |
|
3D Face / 2D Edge type |
{"disp"} |
|
3D Face / 2D Edge value |
{"0.0"} |
|
3D Face / 2D Edge type |
{"disp"} |
|
3D Face / 2D Edge value |
{"0.0"} |
|
3D Face / 2D Edge type |
{"disp"} |
|
3D Face / 2D Edge value |
{"0.0"} |
|
3D Face type |
{"disp"} |
|
3D Face value |
{"0.0"} |
|
3D Face type |
{"disp"} |
|
3D Face value |
{"0.0"} |
|
3D Edge / 2D Corner type |
{"disp"} |
|
3D Edge / 2D Corner value |
{"0.0"} |
|
3D Edge / 2D Corner type |
{"disp"} |
|
3D Edge / 2D Corner value |
{"0.0"} |
|
3D Edge / 2D Corner type |
{"disp"} |
|
3D Edge / 2D Corner value |
{"0.0"} |
|
3D Edge / 2D Corner type |
{"disp"} |
|
3D Edge / 2D Corner value |
{"0.0"} |
|
3D Corner type |
{"disp"} |
|
3D Corner value |
{"0.0"} |
|
3D Corner type |
{"disp"} |
|
3D Corner value |
{"0.0"} |
|
3D Corner type |
{"disp"} |
|
3D Corner value |
{"0.0"} |
|
3D Corner type |
{"disp"} |
|
3D Corner value |
{"0.0"} |
|
3D Corner type |
{"disp"} |
|
3D Corner value |
{"0.0"} |
|
3D Corner type |
{"disp"} |
|
3D Corner value |
{"0.0"} |
|
3D Corner type |
{"disp"} |
|
3D Corner value |
{"0.0"} |
|
3D Corner type |
{"disp"} |
|
3D Corner value |
{"0.0"} |
|
3D Edge type |
{"disp"} |
|
3D Edge value |
{"0.0"} |
|
3D Edge type |
{"disp"} |
|
3D Edge value |
{"0.0"} |
|
3D Edge type |
{"disp"} |
|
3D Edge value |
{"0.0"} |
|
3D Edge type |
{"disp"} |
|
3D Edge value |
{"0.0"} |
|
3D Edge type |
{"disp"} |
|
3D Edge value |
{"0.0"} |
|
3D Edge type |
{"disp"} |
|
3D Edge value |
{"0.0"} |
|
3D Edge type |
{"disp"} |
|
3D Edge value |
{"0.0"} |
|
3D Edge type |
{"disp"} |
|
3D Edge value |
{"0.0"} |
API definitions in src/BC/Operator/Elastic/Expression.H
Classes
BC::Operator::Elastic::ExpressionMethods
Expression()~Expression()Init(amrex::FabArray< amrex::BaseFab< Set::Vector > > *a_rhs, const amrex::Geometry &a_geom, bool a_homogeneous=false) const overrideInit(amrex::MultiFab *a_rhs, const amrex::Geometry &a_geom, bool a_homogeneous=false) const overridegetType(const int &i, const int &j, const int &k, const amrex::Box &domain) overrideoperator()(const Set::Vector &u, const Set::Matrix &gradu, const Set::Matrix &sigma, const int &i, const int &j, const int &k, const amrex::Box &domain) overrideset(std::array< Type, AMREX_SPACEDIM > &bc_type, const Set::Vector &u, const Set::Matrix &gradu, const Set::Matrix &sigma, Set::Vector n) constExpression(IO::ParmParse &pp, std::string name)Init(amrex::MultiFab *a_rhs, const amrex::Geometry &a_geom, bool a_homogeneous=false) const=0Init(amrex::FabArray< amrex::BaseFab< Set::Vector > > *a_rhs, const amrex::Geometry &a_geom, bool a_homogeneous=false) const=0Init(Set::Field< Set::Scalar > &a_rhs, const amrex::Vector< amrex::Geometry > &a_geom, bool a_homogeneous=false) constInit(Set::Field< Set::Vector > &a_rhs, const amrex::Vector< amrex::Geometry > &a_geom, bool a_homogeneous=false) const
Variables
std::array<std::array<Type, AMREX_SPACEDIM>, m_nfaces> BC::Operator::Elastic::Expression::m_bc_typestd::array<std::array<amrex::Parser,AMREX_SPACEDIM>, m_nfaces> BC::Operator::Elastic::Expression::m_bc_func_parserstd::array<std::array<amrex::ParserExecutor<4>,AMREX_SPACEDIM>, m_nfaces> BC::Operator::Elastic::Expression::m_bc_func
BC::Operator::Elastic::TensionTest
src/BC/Operator/Elastic/TensionTest.H
A boundary condition for mechanics operators that simplifies frequently-used conditions for uniaxial loading.
Types include:
uniaxial_stress_clamp: fixes both ends and allows for stress concentrations at the corners.uniaxial_kolskyuniaxial_stress: 1D stress problemuniaxial_strain: 1D strain problem
Parameter |
Type |
Values |
|---|---|---|
Tension test type. |
uniaxial_stress_clamp uniaxial_kolsky uniaxial_stress uniaxial_strain |
|
Applied displacement (can be interpolator) |
||
Applied traction (can be interpolator) |
||
API definitions in src/BC/Operator/Elastic/TensionTest.H
Classes
BC::Operator::Elastic::TensionTestMethods
TensionTest()TensionTest(IO::ParmParse &pp, std::string name)~TensionTest()Init(amrex::FabArray< amrex::BaseFab< Set::Vector > > *a_rhs, const amrex::Geometry &a_geom, bool a_homogeneous=false) constInit(amrex::MultiFab *a_rhs, const amrex::Geometry &a_geom, bool a_homogeneous=false) constInit(amrex::MultiFab *a_rhs, const amrex::Geometry &a_geom, bool a_homogeneous=false) const =0Init(amrex::FabArray< amrex::BaseFab< Set::Vector > > *a_rhs, const amrex::Geometry &a_geom, bool a_homogeneous=false) const =0Init(Set::Field< Set::Scalar > &a_rhs, const amrex::Vector< amrex::Geometry > &a_geom, bool a_homogeneous=false) constInit(Set::Field< Set::Vector > &a_rhs, const amrex::Vector< amrex::Geometry > &a_geom, bool a_homogeneous=false) constset(std::array< Type, AMREX_SPACEDIM > &bc_type, const Set::Vector &u, const Set::Matrix &gradu, const Set::Matrix &sigma, Set::Vector n) const
IC
IC::IC
Initial condition (IC) objects are used to set fields to specified values, through mathematical expressions, images, etc. They are often used as initial conditions, but may be used generally to incorporate static or time-dependent values. All IC methods inherit from the base IC class, and are implemented by overriding the “Add” method. (Initialize uses Add after setting the field to zero.)
API definitions in src/IC/IC.H
Classes
IC::IC- Pure abstract object from which all other objects inherit.Methods
IC(amrex::Vector< amrex::Geometry > &_geom)~IC()Add(const int &lev, Set::Field< T > &field, Set::Scalar time)=0Add(const int &lev, Set::Field< T > &field)Initialize(const int &a_lev, Set::Field< T > &a_field, Set::Scalar a_time=0.0)Initialize(const int &a_lev, Set::Field< T > &a_field, Set::Scalar a_time=0.0)SetComp(int a_comp) final
Variables
amrex::Vector<amrex::Geometry>& IC::IC< T >::geomint IC::IC< T >::comp
IC::BMP
Initialize a field using a bitmap image. (2D only)
Note that in GIMP, you must select “do not write color space information” and “24 bit R8 G8 B8” when exporting the BMP file.
Parameter |
Type |
Values |
|---|---|---|
BMP filename. |
file path |
|
How to position image in space |
stretch fitheight fitwidth coord |
|
Location of lower-left corner in the domain |
||
Location of upper-right corner in the domain |
||
Color channel to use |
r g b R G B |
|
Scaling value - minimum |
0.0 |
|
Scaling value - maximum |
255.0 |
|
API definitions in src/IC/BMP.H
Classes
IC::BMPMethods
BMP(amrex::Vector< amrex::Geometry > &_geom)BMP(amrex::Vector< amrex::Geometry > &_geom, IO::ParmParse &pp, std::string name)BMP(amrex::Vector< amrex::Geometry > &_geom, Unit a_unit, IO::ParmParse &pp, std::string name)Define(std::string bmpfilename)Add(const int &lev, Set::Field< Set::Scalar > &a_field, Set::Scalar)
Variables
Util::BMP IC::BMP::bmpFit IC::BMP::fitChannel IC::BMP::channelSet::Scalar IC::BMP::minSet::Scalar IC::BMP::maxSet::Vector IC::BMP::coord_loSet::Vector IC::BMP::coord_hiUnit IC::BMP::unitSet::Scalar IC::BMP::scaling_factor
IC::Constant
Basic IC that just sets the entire field to a constant value. Works with a single or multiple-component field.
Parameter |
Type |
Values |
|---|---|---|
Value (or values if multicomponent) to set field to |
required |
API definitions in src/IC/Constant.H
Classes
IC::ConstantMethods
~Constant()=defaultConstant(amrex::Vector< amrex::Geometry > &_geom)Constant(amrex::Vector< amrex::Geometry > &_geom, IO::ParmParse &pp)Constant(amrex::Vector< amrex::Geometry > &_geom, IO::ParmParse &pp, std::string name)Constant(amrex::Vector< amrex::Geometry > &_geom, Unit a_unit, IO::ParmParse &pp, std::string name)Add(const int &lev, Set::Field< Set::Scalar > &a_field, Set::Scalar) overrideAdd(const int &lev, Set::Field< Set::Vector > &a_field, Set::Scalar) override
Variables
std::vector<Set::Scalar> IC::Constant::m_valueUnit IC::Constant::unit
IC::Ellipsoid
This IC initializes a single-component fab using the formula
The boundary can be mollified using an error function with parameter \(\varepsilon\)
Warning
This IC is redundant with IC::Ellipse and IC::Expression and will probably be consolidated
Parameter |
Type |
Values |
|---|---|---|
Center of the ellipse \(\mathbf{x}_0\) |
||
Matrix defining elipse radii and orientation |
||
"Vector of radii (use instead of A)" |
||
Mollifying value for erf |
||
Value of field inside ellipse |
0.0 |
|
Value of field outside ellipse |
1.0 |
|
Type of mollifier to use (options: dirac, [gaussian]) |
||
API definitions in src/IC/Ellipsoid.H
Classes
Ellipsoid- Initialize an ellipsoidal inclusion.IC::EllipsoidMethods
Ellipsoid(amrex::Vector< amrex::Geometry > &_geom)Ellipsoid(amrex::Vector< amrex::Geometry > &_geom, IO::ParmParse &pp, std::string name)Add(const int &lev, Set::Field< Set::Scalar > &a_field, Set::Scalar)
Variables
Set::Scalar IC::Ellipsoid::in_valueSet::Scalar IC::Ellipsoid::out_valueamrex::Vector<Set::Vector> IC::Ellipsoid::centeramrex::Vector<Set::Scalar> IC::Ellipsoid::epsamrex::Vector<Set::Matrix> IC::Ellipsoid::AMollifier IC::Ellipsoid::moll
IC::Ellipse
If number_of_inclusions is specified, then multiple ellipses are specified.
In this case, each parameter must have number_of_inclusion*M values, where M is the
number of values specified for the single ellipse case.
Parameter |
Type |
Values |
|---|---|---|
Coorinates of ellipse center |
||
Diffuse boundary thickness |
0.0 |
|
DxD square matrix defining an ellipse. |
||
If |
||
Number of ellipses |
||
center of the ellipse |
||
center of the ellipse |
||
either a vector containing ellipse radii, or a matrix defining the ellipse |
||
Same |
||
Array of radii [depricated] |
||
Regularization for smooth boundary |
||
Flip the inside and the outside |
||
API definitions in src/IC/Ellipse.H
Classes
IC::EllipseMethods
Ellipse(amrex::Vector< amrex::Geometry > &_geom)Ellipse(amrex::Vector< amrex::Geometry > &_geom, IO::ParmParse &pp, std::string name)Add(const int &lev, Set::Field< Set::Scalar > &a_field, Set::Scalar)
Variables
int IC::Ellipse::number_of_inclusionsamrex::Vector<Set::Vector> IC::Ellipse::centeramrex::Vector<Set::Matrix> IC::Ellipse::Aamrex::Vector<Set::Scalar> IC::Ellipse::epsint IC::Ellipse::invert
IC::Expression
Initialize a field using a mathematical expression. Expressions are imported as strings and are compiled real-time using the AMReX Parser.
Works for single or multiple-component fields.
Use the regionN (N=0,1,2, etc. up to number of components) to pass expression.
For example:
ic.region0 = "sin(x*y*z)"
ic.region1 = "3.0*(x > 0.5 and y > 0.5)"
for a two-component field. It is up to you to make sure your expressions are parsed correctly; otherwise you will get undefined behavior.
Constants
You can add constants to your expressions using the constant directive.
For instance, in the following code
psi.ic.type=expression
psi.ic.expression.constant.eps = 0.05
psi.ic.expression.constant.R = 0.25
psi.ic.expression.region0 = "0.5 + 0.5*tanh((x^2 + y^2 - R)/eps)"
the constants eps and R are defined by the user and then used
in the subsequent expression.
The variables can have any name made up of characters that is not reserved.
However, if multiple ICs are used, they must be defined each time for each IC.
Parameter |
Type |
Values |
|---|---|---|
coordinate system to use |
cartesian polar |
|
Units of the value that is returned by the expression |
"" |
API definitions in src/IC/Expression.H
Classes
IC::ExpressionMethods
Expression(amrex::Vector< amrex::Geometry > &_geom)Expression(amrex::Vector< amrex::Geometry > &_geom, IO::ParmParse &pp, std::string name)Expression(amrex::Vector< amrex::Geometry > &_geom, Unit a_unit, IO::ParmParse &pp, std::string name)Add(const int &lev, Set::Field< Set::Scalar > &a_field, Set::Scalar a_time=0.0) overrideAdd(const int &lev, Set::Field< Set::Vector > &a_field, Set::Scalar a_time=0.0) override
Variables
std::vector<amrex::Parser> IC::Expression::parserstd::vector<amrex::ParserExecutor<4> > IC::Expression::fExpression::CoordSys IC::Expression::coordUnit IC::Expression::unitSet::Scalar IC::Expression::unitfactor
IC::Laminate
Create a single laminate with specified orientation, thickness, and offset.
Parameter |
Type |
Values |
|---|---|---|
How many laminates (MUST be greater than or equal to 1). |
1 |
|
(x,y,[z]) values for the center point of the laminate |
||
thickness of the laminate |
||
Vector normal to the interface of the laminate |
||
Diffuse thickness |
||
Type of mollifer to use (options: dirac, [gaussian]) |
dirac gaussian |
|
Switch to mode where only one component is used. |
||
Take the complement of the laminate |
||
API definitions in src/IC/Laminate.H
Classes
IC::Laminate- Initialize Laminates in a matrix.Methods
Laminate(amrex::Vector< amrex::Geometry > &_geom)Laminate(amrex::Vector< amrex::Geometry > &_geom, IO::ParmParse &pp, std::string name)Add(const int &lev, Set::Field< Set::Scalar > &a_field, Set::Scalar)
Variables
int IC::Laminate::number_of_inclusionsamrex::Vector<Set::Vector> IC::Laminate::centeramrex::Vector<Set::Vector> IC::Laminate::orientationamrex::Vector<Set::Vector> IC::Laminate::normalamrex::Vector<Set::Scalar> IC::Laminate::epsamrex::Vector<Set::Scalar> IC::Laminate::thicknessMollifier IC::Laminate::mollbool IC::Laminate::singlefabbool IC::Laminate::invert
IC::Notch
Create a simple notch in an otherwise uniformly filled region. (This was created for, and mostly used for, Mode II fracture tests.)
This is an old IC that should be replaced by IC::Expression
Parameter |
Type |
Values |
|---|---|---|
Center of notch |
||
Vector describing notch orientation |
||
Thickness of notch |
||
Length of notch |
||
Radius of notch ends |
||
Magnitude of mollifier |
||
What kind of smoother to use {dirac,gauss,erf,cos} |
||
API definitions in src/IC/Notch.H
Classes
IC::NotchMethods
Notch(amrex::Vector< amrex::Geometry > &_geom)Notch(amrex::Vector< amrex::Geometry > &_geom, IO::ParmParse &pp, std::string name)Add(const int &lev, Set::Field< Set::Scalar > &a_field, Set::Scalar)
Variables
amrex::Vector<Set::Vector> IC::Notch::nCenteramrex::Vector<Set::Vector> IC::Notch::nOrientationamrex::Vector<Set::Vector> IC::Notch::nNormalSet::Scalar IC::Notch::epsSet::Scalar IC::Notch::eps_sqamrex::Vector<Set::Scalar> IC::Notch::nThicknessamrex::Vector<Set::Scalar> IC::Notch::nLengthamrex::Vector<Set::Scalar> IC::Notch::nRadiusMollifier IC::Notch::moll
IC::PSRead
Fill a domain (region where field=0) with packed spheres (regions where field=1). Sphere locations and radii are determined from an xyzr file.
Parameter |
Type |
Values |
|---|---|---|
Diffuseness of the sphere boundary |
||
Location of .xyzr file |
file path |
|
Verbosity (used in parser only) |
||
Coordinate multiplier |
||
Coordinate multiplier |
||
Coordinate offset |
||
API definitions in src/IC/PSRead.H
Classes
IC::PSReadMethods
PSRead(amrex::Vector< amrex::Geometry > &_geom)PSRead(amrex::Vector< amrex::Geometry > &_geom, IO::ParmParse &pp, std::string name)Define()Add(const int &lev, Set::Field< Set::Scalar > &a_phi, Set::Scalar)
Variables
std::vector<Set::Vector> IC::PSRead::Xstd::vector<Set::Scalar> IC::PSRead::RSet::Scalar IC::PSRead::epsSet::Scalar IC::PSRead::multSet::Vector IC::PSRead::x0bool IC::PSRead::invert
IC::PerturbedInterface
Initialize a perturbed interface using Fourier Modes
Notes: 1. todo Extend this class to allow for 3D perturbations, currently only 2D are allowed 2. todo Allow for cosine (or complex exponential) expansions rather than just sin. 3. note This is a two grain only initial condition. 4. note This replaces the depricated “perturbed_bar” initial condition from previous versions
The interface is defined as the \(x=0\) plane (2D), or the \(x=0,z=0\) plane (3D). The equation for the interface is given by \(y(x,z) = \sum_{n\in \{n_1,\ldots,n_N\}} A_n \sin(n\pi x/L_x)\) where \(A_n\) are the amplitudes (stored in #wave_amplitudes), \(n_1,\ldots,n_N\subset\mathbb{Z}_+\) are wave numbers (stored in #wave_numbers), and \(L_x\) is the length in the x direction (obtained using the #geom object).
Grain 1 is defined as being above \(y(x,z)\), Grain 2 is defined as being below.
Parameter |
Type |
Values |
|---|---|---|
Wave numbers |
||
Wave amplitudes |
||
Which axis is normal to the interface (x,y,z) |
||
Interface offset from origin |
||
If true, flip the interface (default:false) |
||
Mollifier (options: dirac, [gaussian]) |
||
Magnitude of mollifier |
||
API definitions in src/IC/PerturbedInterface.H
Classes
IC::PerturbedInterfaceMethods
PerturbedInterface(amrex::Vector< amrex::Geometry > &_geom)PerturbedInterface(amrex::Vector< amrex::Geometry > &_geom, IO::ParmParse &pp, std::string name)PerturbedInterface(amrex::Vector< amrex::Geometry > &_geom, IO::ParmParse &pp)Add(const int &lev, Set::Field< Set::Scalar > &a_field, Set::Scalar)
Variables
Direction IC::PerturbedInterface::normalSet::Scalar IC::PerturbedInterface::offsetamrex::Vector<std::complex<int> > IC::PerturbedInterface::wave_numbers- Store mode amplitudes .amrex::Vector<Set::Scalar> IC::PerturbedInterface::wave_amplitudesstd::vector<Set::Scalar> IC::PerturbedInterface::phisMollifier IC::PerturbedInterface::molSet::Scalar IC::PerturbedInterface::epsint IC::PerturbedInterface::reverse
IC::PNG
Initialize a field using a PNG image. (2D only)
Parameter |
Type |
Values |
|---|---|---|
Color channel to use (options: r, R, g, G, b, B, a, A) |
r g b a R G B A |
API definitions in src/IC/PNG.H
Classes
IC::PNGMethods
~PNG()PNG(amrex::Vector< amrex::Geometry > &_geom)PNG(amrex::Vector< amrex::Geometry > &_geom, IO::ParmParse &pp, std::string name)PNG(amrex::Vector< amrex::Geometry > &_geom, Unit a_unit, IO::ParmParse &pp, std::string name)Add(const int &lev, Set::Field< Set::Scalar > &a_field, Set::Scalar)
Variables
Util::PNG IC::PNG::pngChannel IC::PNG::channelUnit IC::PNG::unit
IC::Random
Set each point in the field to a random value between 0 and 1
Parameter |
Type |
Values |
|---|---|---|
offset from the [0,1] random number range |
0.0 |
|
multiplier for the [0,1] random number range |
1.0 |
API definitions in src/IC/Random.H
Classes
IC::Random- each point to a random value.Methods
Random(amrex::Vector< amrex::Geometry > &_geom, Set::Scalar a_mult)Random(amrex::Vector< amrex::Geometry > &_geom, IO::ParmParse &pp, std::string name)Add(const int &lev, Set::Field< Set::Scalar > &a_field, Set::Scalar)Add(const int &lev, Set::Field< T > &field, Set::Scalar time)=0Add(const int &lev, Set::Field< T > &field)
Variables
Set::Scalar IC::Random::multSet::Scalar IC::Random::offset
IC::Sphere
Initialize a sphere region in which the field (eta=1). Can be a 3D sphere (xyz) or oriented around any of the three axes.
This functionality is replaced by IC::Expression.
Parameter |
Type |
Values |
|---|---|---|
Radius of the sphere |
"1.0" |
|
Vector location of the sphere center |
||
Value of the field inside the sphere |
"1.0" |
|
Value of the field outside teh sphere |
"0.0" |
|
Type - can be cylinder oriented along the x, y, z directions or full sphere. |
xyz yz zx xy |
|
API definitions in src/IC/Sphere.H
Classes
IC::SphereMethods
Sphere(amrex::Vector< amrex::Geometry > &_geom)Sphere(amrex::Vector< amrex::Geometry > &_geom, IO::ParmParse &pp)Sphere(amrex::Vector< amrex::Geometry > &_geom, IO::ParmParse &pp, std::string name)Sphere(amrex::Vector< amrex::Geometry > &_geom, Unit a_unit, IO::ParmParse &pp, std::string name)Sphere(amrex::Vector< amrex::Geometry > &_geom, Set::Scalar _radius, Set::Vector _center, Type _type=Type::XYZ, Set::Scalar _alpha_in=1, Set::Scalar _alpha_out=0)- Constructor defining radius, center, dimension/orientation, and field values within and outside of the area.Define(Set::Scalar a_radius, Set::Vector a_center, Type a_type, Set::Scalar a_alpha_in, Set::Scalar a_alpha_out)Add(const int &lev, Set::Field< Set::Scalar > &a_field, Set::Scalar)
Variables
Set::Vector IC::Sphere::centerSet::Scalar IC::Sphere::radiusSet::Scalar IC::Sphere::alpha_inSet::Scalar IC::Sphere::alpha_outType IC::Sphere::typeUnit IC::Sphere::unit
IC::Trig2
This is an old IC that exist only to support some of the old operator tests. IC::Expression should be used instead. .. dropdown:: API definitions in src/IC/Trig2.H
Classes
IC::Trig2- Initialize using a trigonometric series.Methods
Trig2(amrex::Vector< amrex::Geometry > &_geom, Set::Scalar _alpha=1.0, AMREX_D_DECL(Set::Scalar _theta1=0, Set::Scalar _theta2=0, Set::Scalar _theta3=0), AMREX_D_DECL(int _n1=0, int _n2=0, int _n3=0), int _dim=AMREX_SPACEDIM)
Define(Set::Scalar _alpha=1.0, AMREX_D_DECL(Set::Scalar _theta1=0, Set::Scalar _theta2=0, Set::Scalar _theta3=0), AMREX_D_DECL(int _n1=0, int _n2=0, int _n3=0), int _dim=AMREX_SPACEDIM)
Add(const int &lev, Set::Field< Set::Scalar > &field, Set::Scalar)
AMREX_D_DECL(n1, n2, n3)
AMREX_D_DECL(theta1, theta2, theta3)Variables
int IC::Trig2::dim
Set::Scalar IC::Trig2::alpha
IC::Trig
This is an old-fashioned IC. It is kept because it is still used with the Trig regression test, but it is recommended to use IC::Expression instead.
Parameter |
Type |
Values |
|---|---|---|
Number of real (cosin) waves |
||
Number of imaginary (sin) waves |
||
Spatial dimension |
||
Multiplier |
||
API definitions in src/IC/Trig.H
Classes
IC::Trig- Initialize using a trigonometric series.Methods
Trig(amrex::Vector< amrex::Geometry > &_geom, Set::Scalar _alpha=1.0, AMREX_D_DECL(std::complex< int > _n1=0, std::complex< int > _n2=0, std::complex< int > _n3=0), int _dim=AMREX_SPACEDIM)Trig(amrex::Vector< amrex::Geometry > &_geom, IO::ParmParse &pp, std::string name)Define(Set::Scalar _alpha=1.0, AMREX_D_DECL(std::complex< int > _n1=0, std::complex< int > _n2=0, std::complex< int > _n3=0), int _dim=AMREX_SPACEDIM)Add(const int &lev, Set::Field< Set::Scalar > &a_field, Set::Scalar) overrideAdd(const int &lev, Set::Field< Set::Vector > &a_field, Set::Scalar) overrideAMREX_D_DECL(n1, n2, n3)AMREX_D_DECL(phi1=0.0, phi2=0.0, phi3=0.0)
Variables
int IC::Trig::dimSet::Scalar IC::Trig::alpha
IC::TabulatedInterface
Initialize a 2D interface in a 2 component field defind by (x,y) which are an array of points along the interface.
Parameter |
Type |
Values |
|---|---|---|
x location of points |
||
y location of points |
||
API definitions in src/IC/TabulatedInterface.H
Classes
IC::TabulatedInterface- Initialize a perturbed interface using a linear interpolation.Methods
TabulatedInterface(amrex::Vector< amrex::Geometry > &_geom)TabulatedInterface(amrex::Vector< amrex::Geometry > &_geom, IO::ParmParse &pp)TabulatedInterface(amrex::Vector< amrex::Geometry > &_geom, IO::ParmParse &pp, std::string name)TabulatedInterface(amrex::Vector< amrex::Geometry > &_geom, std::vector< Set::Scalar > a_xs, std::vector< Set::Scalar > a_ys)TabulatedInterface(amrex::Vector< amrex::Geometry > &_geom, std::vector< Set::Scalar > a_xs, std::vector< Set::Scalar > a_ys, Set::Scalar a_alpha1, Set::Scalar a_alpha2, Type a_type=Type::Values)Define(std::vector< Set::Scalar > a_xs, std::vector< Set::Scalar > a_ys, Type a_type=Type::Partition, Set::Scalar a_alpha1=1.0, Set::Scalar a_alpha2=1.0)Add(const int &lev, Set::Field< Set::Scalar > &a_field, Set::Scalar) override
Variables
Type IC::TabulatedInterface::typestd::vector<Set::Scalar> IC::TabulatedInterface::xsstd::vector<Set::Scalar> IC::TabulatedInterface::ysSet::Scalar IC::TabulatedInterface::alpha1Set::Scalar IC::TabulatedInterface::alpha2
IC::Voronoi
Initialize an N component field with a Voronoi tessellation.
(Mostly used by Integrator::PhaseFieldMicrostructure).
Parameter |
Type |
Values |
|---|---|---|
Number of grains |
||
Value to take in the region [1.0] |
||
Random seed to use |
||
API definitions in src/IC/Voronoi.H
Classes
IC::VoronoiMethods
Voronoi(amrex::Vector< amrex::Geometry > &_geom)Voronoi(amrex::Vector< amrex::Geometry > &_geom, IO::ParmParse &pp, std::string name)Voronoi(amrex::Vector< amrex::Geometry > &_geom, int _number_of_grains, Set::Scalar a_alpha)Voronoi(amrex::Vector< amrex::Geometry > &a_geom, int a_number_of_grains)Define(int a_number_of_grains, Set::Scalar a_alpha)Define(int a_number_of_grains, std::vector< Set::Scalar > a_alpha, Type a_type=Type::Values)Add(const int &lev, Set::Field< Set::Scalar > &a_field, Set::Scalar)
Variables
int IC::Voronoi::number_of_grainsint IC::Voronoi::seedstd::vector<Set::Scalar> IC::Voronoi::alphastd::vector<Set::Vector> IC::Voronoi::voronoiType IC::Voronoi::type
IO
IO::FileNameParse
src/IO/FileNameParse.cpp src/IO/FileNameParse.H
This manages the processing of the plot_file input, which defines the output file.
Both variable substitution and time wildcards are supported.
Variable substitution: you can use braces to substitute variable names in the input file.
For example, if your input file contains myinput.value = 3, then you can specify
plot_file = output_{myinput.value} to substitute the input’s value.
Time and dimension wildcards: You can use the following strings:
%Y: 4-digit year%m: 2-digit month (01-12)%d: 2-digit day (00-31)%H: 2 digit hour (00-23)%M: 2 digit minute (00-59)%S: 2 digit second (00-59)%f: 2 digit microsecond (00-59)%D: spatial dimension
So a plot_file = output_%Y%m%d_%H%M%S may resolve to
output_20250307_211201 (etc) depending on the time the
output was created.
.. dropdown:: API definitions in src/IO/FileNameParse.H
Classes
IO::ParmParse
src/IO/ParmParse.cpp src/IO/ParmParse.H
This is a thin wrapper to the amrex::ParmParse class This class exists to add some additional parsing capability, e.g. parsing Set::Matrix and Set::Vector data types.
IO::ParmParse uses static Parse() functions to
perform cascading class-based input parsing.
See the Autodoc and Autotest section for instructions on adding documentation.
This is standard infrastructure code; make sure you know what you ard doing before you change it.
Query directives
Alamo uses different query directives to standardize reading inputs and automatic documentation.
The type of query that is used (query vs query_required, etc) triggers different handlers and different
automatic documentation procedures.
For instance, the use of a query_default causes a default value to be set and added to the metadata
file, and it also serves as a flag for the autodoc system to document that a default value is available.
The following table is a reference for the different kinds of query directives.
BC Type |
Description |
|---|---|
query |
Standard IO for bool, string, Set::Scalarthat does not enforce defaults or required values. Not recommended for general use. |
query_required |
Similar to query, but will abort if no value is specified. Required values are indicated by required. |
query_default |
Similar to query, but will fill with default value if no value is provided. Will also add default value to metadata. Default values are indicated by green badge values, e.g. 0.0. |
query_validate |
For strings, read in a value and enforce that the value is one of a supplied number of values. Optionally make required, or set the default value to the first supplied value. Acceptable options are indicated by blue badge values, e.g. 1.0, 2.0. If a default value is available, it is indicated by a green badge, e.g. 1.0. |
query_file |
Read in a string that defines a file name. Check to make sure that the file exists and is a regular file, and print an informative error message if not (this can be disabled). Also, copy the file to the output directory, with the full path preserved by replacing / with _. (This can also be disabled, but doing so is discouraged.) Default values are not allowed. File paths are indicated by file path. |
queryarr |
Read in an array of numbers into either a standard vector or
into a |
queryclass |
Read a class object with a specified prefix.
How that class is read in is determined by its |
Query macros
A set of preprocessor macros are defined so that you can call a query function using pp_ instead
of pp..
For instance, the following two can be used interchangeably:
pp.query_required("myvar",myvar); /* function version */
pp_query_required("myvar",myvar); /* preprocessor macro version - preferred*/
Using the preprocessor macros enables code location information to be passed to the parser, so that
more informative error messages will be printed out.
Note that the ParmParse object must always be called pp for this to work.
API definitions in src/IO/ParmParse.H
Classes
IO::ParmParseMethods
Define()static_polymorphism_parser(CLASS &value)ParmParse(std::string arg)ParmParse()getPrefix() constignore(std::string name)pushPrefix(const std::string prefix)popPrefix()forbid(std::string name, std::string explanation)contains(std::string name)queryunit(std::string name, Unit &value)queryunit(std::string name, Unit &value, const Unit type)queryunit(std::string name, Set::Scalar &value, const Unit type)query_required(std::string name, T &value)query_required(std::string name, T &value, const Unit type)query_default(std::string name, T &value, T defaultvalue)query_default(std::string name, T &value, std::string defaultvalue, const Unit type)query_validate(std::string name, int &value, std::vector< int > possibleintvals)query_validate(std::string name, std::string &value, std::vector< const char * > possiblecharvals, bool firstbydefault)query_validate(std::string name, std::string &value, std::vector< const char * > possiblecharvals)query_default(std::string name, std::string &value, const char *defaultvalue)query_default(std::string name, int &value, bool defaultvalue)query_file(std::string name, std::string &value, bool copyfile, bool checkfile)query_file(std::string name, std::string &value, bool copyfile)query_file(std::string name, std::string &value)queryarr(std::string name, std::vector< T > &value)queryarr(std::string name, std::vector< Set::Scalar > &value, Unit unit=Unit::Less())queryarr(std::string name, Set::Vector &value, Unit unit=Unit::Less())queryarr(std::string name, Set::Matrix &value, Unit unit=Unit::Less())queryarr_required(std::string name, std::vector< T > &value)queryarr_required(std::string name, std::vector< Set::Scalar > &value, Unit unit=Unit::Less())queryarr_default(std::string name, std::vector< std::string > &value, std::vector< std::string > defaultvalue)queryarr_default(std::string name, Set::Vector &value, Set::Vector defaultvalue)queryarr_default(std::string name, Set::Matrix &value, Set::Matrix defaultvalue)queryarr_default(std::string name, std::vector< double > &value, std::vector< double > defaultvalue)queryarr_default(std::string name, std::vector< double > &value, std::vector< std::string > defaultvalue, Unit unit)queryclass_enumerate(std::string a_name, std::vector< T > &value, int number=1)query_enumerate(std::string a_name, std::vector< T > &value, int number=1)AnyUnusedInputs(bool inscopeonly=true, bool verbose=false)GetUnusedInputs()prefix()full(std::string name)queryclass(std::string name, T *value)queryclass(std::string name, T &value)queryclass(T *value)queryclass(T &value)select(std::string name, PTRTYPE *&ic_eta, Args &&... args)select_default(std::string name, PTRTYPE *&ic_eta, Args &&... args)select_enumerate(std::string a_name, std::vector< PTRTYPE * > &value, Args &&... args)select_main(PTRTYPE *&ic_eta, Args &&... args)select_only(PTRTYPE *&ic_eta, Args &&args)select_only(PTRTYPE *&ic_eta)select(std::string name, CLASS &value)query_exactly(std::vector< std::string > names, std::pair< std::string, Set::Scalar > values[N], std::vector< Unit > units=std::vector< Unit >())
IO::WriteMetaData
src/IO/WriteMetaData.cpp src/IO/WriteMetaData.H
This provide an IO routine for generating run-specific output.
Every Alamo run produces a metadata file and (if applicable) a diff.patch
file that reflects the exact state when the simulation was run.
Note that the file WriteMetaData.cpp file is _always_ recompiled
upon make, in order to pull the latest information about the local
state at build.
This is standard infrastructure code; make sure you know what you ard doing before you change it.
API definitions in src/IO/WriteMetaData.H
Classes
Integrator
Integrator::Integrator
src/Integrator/Integrator.cpp src/Integrator/Integrator.H
Pure abstract class for managing data structures, time integration (with substepping), mesh refinement, and I/O.
Native input file parameters:
max_step = [maximum number of timesteps]
stop_time = [maximum simulation time]
timestep = [time step for coarsest level]
amr.regrid_int = [number of timesteps between regridding]
amr.plot_int = [number of timesteps between dumping output]
amr.plot_file = [base name of output directory]
amr.nsubsteps = [number of temporal substeps at each level. This can be
either a single int (which is then applied to every refinement
level) or an array of ints (equal to amr.max_level)
corresponding to the refinement for each level.]
Inherited input file parameters (from amrex AmrMesh class):
amr.v = [verbosity level]
amr.max_level = [maximum level of refinement]
amr.n_proper =
amr.grid_eff =
amr.n_error_buff =
amr.ref_ratio_vect = [refinement ratios in each direction]
amr.ref_ratio = [refinement ratio in all directions (cannot be used with ref_ratio_vect)]
amr.max_grid_x =
amr.blocking_factor =
amr.n_cell = [number of cells on coarsest level]
amr.refine_grid_layout =
amr.check_input =
Parameter |
Type |
Values |
|---|---|---|
Number of iterations before ending (default is maximum possible int) |
2147483647 |
|
Simulation time before ending |
required |
|
Nominal timestep on amrlev = 0 |
required |
|
Name of restart file to READ from |
||
Name of cell-fab restart file to read from |
||
Name of node-fab restart file to read from |
||
Space-separated list of entries to ignore |
||
Regridding interval in step numbers |
2 |
|
Regridding interval based on coarse level only |
0 |
|
Interval (in timesteps) between plotfiles (Default negative value will cause the plot interval to be ignored.) |
-1 |
|
Interval (in simulation time) between plotfiles (Default negative value will cause the plot dt to be ignored.) |
"-1.0" |
|
Output file: see IO::FileNameParse for wildcards and variable substitution |
"output" |
|
Turn on to write all output in cell fabs (default: off) |
false |
|
Turn off to prevent any cell based output (default: on) |
true |
|
Turn on to write all output in node fabs (default: off) |
false |
|
Turn off to prevent any node based output (default: on) |
true |
|
Abort if a plotfile contains nan or inf. |
true |
|
Specify a maximum level of refinement for output files (NO REFINEMENT) |
-1 |
|
Number of substeps to take on each level (default: 2) |
||
Number of substeps to take on each level (set all levels to this value) |
required |
|
activate dynamic CFL-based timestep |
||
how much information to print |
0 1 |
|
number of previous timesteps for rolling average |
5 |
|
dynamic teimstep CFL condition |
1.0 |
|
minimum timestep size allowed shen stepping dynamically |
timestep |
|
maximum timestep size allowed shen stepping dynamically |
timestep |
|
Integration interval (1) |
1 |
|
Interval (in timesteps) between writing (Default negative value will cause the plot interval to be ignored.) |
-1 |
|
Interval (in simulation time) between writing (Default negative value will cause the plot dt to be ignored.) |
"-1.0" |
|
Use explicit mesh instead of AMR |
0 |
|
API definitions in src/Integrator/Integrator.H
Classes
Integrator::IntegratorMethods
Integrator()- This is the constructor for the intetgrator class, which reads timestep information, simulation output and AMR, initialized time substep, and creates a new directory.~Integrator()- Virtual destructure; make sure delete any pointers that you create here.InitData()- Front-end method to initialize simulation on all levels.Restart(std::string restartfile, bool a_node=false)- Read in output from previous simulation and start simulation at that point - Not currently tested.Evolve()- Front-end method to start simulation.SetFilename(std::string _plot_file)- Simple setter to set filename.GetFilename()- Simple getter to get filename.regrid(int lbase, Set::Scalar time, bool initial=false) override- This overrides an AMReX method just to allow for explicit meshing when desired.InitFromScratch(Set::Scalar time)- This creates a new levels that have not previously been used.AddField(Set::Field< T > &new_field, BC::BC< T > *new_bc, int ncomp, int nghost, std::string name, bool writeout, bool evolving, std::vector< std::string >)RegisterGeneralFab(Set::Field< T > &new_fab, int ncomp, int nghost, bool evolving)RegisterGeneralFab(Set::Field< T > &new_fab, int ncomp, int nghost, std::string a_name, bool evolving)RegisterGeneralFab(Set::Field< T > &new_fab, int ncomp, int nghost, bool writeout, std::string a_name, bool evolving)Initialize(int lev)=0- You must override this function to inherit this class; this function is called before the simulation begins, and is where initial conditions should be applied.Advance(int lev, amrex::Real time, amrex::Real dt)=0- You must override this function to inherit this class; Advance is called every time(sub)step, and implements the evolution of the system in time.TagCellsForRefinement(int lev, amrex::TagBoxArray &tags, amrex::Real time, int ngrow)=0- You must override this function to inherit this class; Advance is called every time(sub)step, and implements the evolution of the system in time.TimeStepBegin(Set::Scalar, int)- This optional function is called at the beginning of every timestep, and can be used to complete additional global solves, e.g.TimeStepComplete(Set::Scalar, int)- This optional function is called at the end of every timestep, and can be used to complete additional global solves, e.g.Integrate(int, Set::Scalar, int, const amrex::MFIter &, const amrex::Box &)- This is a function that is called by to update the variables registered in RegisterIntegratedVariable; you can override this to do your integration.Regrid(int, Set::Scalar)- An optionally overridable method to trigger behavior whenver a regrid occurs.RegisterNewFab(Set::Field< Set::Scalar > &new_fab, BC::BC< Set::Scalar > *new_bc, int ncomp, int nghost, std::string name, bool writeout, bool evolving=true, std::vector< std::string > suffix={})- Add a new cell-based scalar field.RegisterNewFab(Set::Field< Set::Scalar > &new_fab, int ncomp, std::string name, bool writeout, bool evolving=true, std::vector< std::string > suffix={})- Add a new cell-based scalar field (with additional arguments).RegisterNodalFab(Set::Field< Set::Scalar > &new_fab, int ncomp, int nghost, std::string name, bool writeout, bool evolving=true, std::vector< std::string > suffix={})- Add a new node-based scalar field.RegisterNodalFab(Set::Field< Set::Scalar > &new_fab, BC::BC< Set::Scalar > *new_bc, int ncomp, int nghost, std::string name, bool writeout, bool evolving=true, std::vector< std::string > suffix={})- Add a new node-based scalar field (wtih additional arguments)RegisterGeneralFab(Set::Field< T > &new_fab, int ncomp, int nghost, bool evolving=true)- Add a templated nodal field.RegisterGeneralFab(Set::Field< T > &new_fab, int ncomp, int nghost, std::string a_name, bool evolving=true)- Add a templated nodal field (additional arguments)RegisterGeneralFab(Set::Field< T > &new_fab, int ncomp, int nghost, bool writeout, std::string a_name, bool evolving=true)- Add a templated nodal field (additional arguments)AddField(Set::Field< T > &new_field, BC::BC< T > *new_bc, int ncomp, int nghost, std::string, bool writeout, bool evolving, std::vector< std::string > suffix={})- Add a field with arbitrary type (templated with T) and grid location (templated with d).SetFinestLevel(const int a_finestlevel)- Utility to ensure that all fields know what the finest level is.RegisterIntegratedVariable(Set::Scalar *integrated_variable, std::string name, bool extensive=true)- Register a variable to be integrated over the spatial domain using the Integrate function.SetTimestep(Set::Scalar _timestep)- Utility to set the coarse-grid timestep.SetPlotInt(int plot_int)- Utility to set the frequency (in timesteps) of plotfile dumping.SetThermoInt(int a_thermo_int)- Utility to set the frequency (in timesteps) of thermo data calculation.SetThermoPlotInt(int a_thermo_plot_int)- Utility to set the frequency (in timesteps) of thermo data writing to file.SetStopTime(Set::Scalar a_stop_time)- Utility to set the global stop time.DynamicTimestep_SyncTimeStep(int lev, Set::Scalar dt_min)- Params for the dynamic timestp.DynamicTimestep_Reset()DynamicTimestep_Update()IntegrateVariables(Set::Scalar cur_time, int step)WritePlotFile(bool initial=false) constWritePlotFile(std::string prefix, Set::Scalar time, int step) constWritePlotFile(Set::Scalar time, amrex::Vector< int > iter, bool initial=false, std::string prefix="") constMakeNewLevelFromScratch(int lev, amrex::Real time, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm) overrideMakeNewLevelFromCoarse(int lev, amrex::Real time, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm) override- Wrapper to call FillCoarsePatch.RemakeLevel(int lev, amrex::Real time, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm) override- RESETS ALL MULTIFABS AT A GIVEN LEVEL.ClearLevel(int lev) overrideErrorEst(int lev, amrex::TagBoxArray &tags, amrex::Real time, int ngrow) overrideFillPatch(int lev, amrex::Real time, amrex::Vector< std::unique_ptr< amrex::MultiFab > > &source_mf, amrex::MultiFab &destination_multifab, BC::BC< Set::Scalar > &physbc, int icomp)- This is the function that is responsible for updating patch data.CountCells(int lev)- Simple utility to count cells.TimeStep(int lev, amrex::Real time, int iteration)- Timestep marching.FillCoarsePatch(int lev, amrex::Real time, Set::Field< Set::Scalar > &mf, BC::BC< Set::Scalar > &physbc, int icomp, int ncomp)- Fill a fab at current level with the data from one level up.GetData(const int lev, const amrex::Real time, amrex::Vector< amrex::MultiFab * > &data, amrex::Vector< amrex::Real > &datatime)PlotFileName(int lev, std::string prefix="") const
Variables
bool Integrator::Integrator::onint Integrator::Integrator::verboseint Integrator::Integrator::npreviousSet::Scalar Integrator::Integrator::cflSet::Scalar Integrator::Integrator::minSet::Scalar Integrator::Integrator::maxstd::vector<Set::Scalar> Integrator::Integrator::dt_limit_minstd::vector<Set::Scalar> Integrator::Integrator::previous_timestepsint Integrator::Integrator::number_of_fabsstd::vector<Set::Field<Set::Scalar>*> Integrator::Integrator::fab_arraystd::vector<int> Integrator::Integrator::ncomp_arraystd::vector<int> Integrator::Integrator::nghost_arraystd::vector<std::vector<std::string> > Integrator::Integrator::name_arraystd::vector<BC::BC<Set::Scalar>*> Integrator::Integrator::physbc_arraystd::vector<bool> Integrator::Integrator::writeout_arraystd::vector<bool> Integrator::Integrator::evolving_arraybool Integrator::Integrator::anybool Integrator::Integrator::allint Integrator::Integrator::intervalSet::Scalar Integrator::Integrator::dtint Integrator::Integrator::plot_int- How frequently to dump plot file (default: never)Set::Scalar Integrator::Integrator::plot_dtint Integrator::Integrator::numberstd::vector<Set::Scalar*> Integrator::Integrator::varsstd::vector<std::string> Integrator::Integrator::namesstd::vector<bool> Integrator::Integrator::extensivesint Integrator::Integrator::onstd::vector<amrex::Box> Integrator::Integrator::boxstruct Integrator::Integrator Integrator::Integrator::dynamictimestepamrex::Vector<amrex::Real> Integrator::Integrator::t_new- Keep track of current old simulation time on each level.amrex::Vector<int> Integrator::Integrator::istep- Keep track of where each level is.std::string Integrator::Integrator::plot_file- Plotfile name.amrex::Real Integrator::Integrator::timestep- Timestep for the base level of refinement.amrex::Vector<amrex::Real> Integrator::Integrator::dt- Timesteps for each level of refinement.amrex::Vector<int> Integrator::Integrator::nsubsteps- how many substeps on each level?bool Integrator::Integrator::integrate_variables_before_advancebool Integrator::Integrator::integrate_variables_after_advancestruct Integrator::Integrator Integrator::Integrator::nodestruct Integrator::Integrator Integrator::Integrator::cellstd::vector<BaseField*> Integrator::Integrator::m_basefieldsstd::vector<BaseField*> Integrator::Integrator::m_basefields_cellBC::Nothing Integrator::Integrator::bcnothingstruct Integrator::Integrator Integrator::Integrator::thermoint Integrator::Integrator::regrid_int- Determine how often to regrid (default: 2)int Integrator::Integrator::base_regrid_int- Determine how often to regrid based on coarse level only (default: 0)std::string Integrator::Integrator::restart_file_cellstd::string Integrator::Integrator::restart_file_nodestruct Integrator::Integrator Integrator::Integrator::explicitmeshint Integrator::Integrator::abort_on_nanint Integrator::Integrator::max_plot_levelamrex::Vector<amrex::Real> Integrator::Integrator::t_old- Keep track of current old simulation time on each level.int Integrator::Integrator::max_step- Maximum allowable timestep.amrex::Real Integrator::Integrator::tstart- Default start time (default: 0)amrex::Real Integrator::Integrator::stop_time- Default stop time.
Integrator::AllenCahn
This is a simple implementation of an Allen-Cahn equation governed by
where \(\alpha(x,t)\) is the order parameter.
Parameter |
Type |
Values |
|---|---|---|
Criterion for mesh refinement [0.01] |
0.01 |
|
Value for \(\lambda\) (Chemical potential coefficient) |
"1.0" |
|
Force directional growth: 0=no growth, 1=only positive, -1=only negative |
0 1 -1 |
|
Time to start forcing directional growth |
0.0 |
|
Set the initial condition for the alpha field |
sphere constant expression bmp png random psread |
|
Use a constant BC object for temperature value.bc = new BC::Constant(1); :ref:`BC::Constant` parameters |
constant |
API definitions in src/Integrator/AllenCahn.H
Classes
Integrator::AllenCahn- This is the definition of the Allen Cahn class.Methods
AllenCahn()AllenCahn(IO::ParmParse &pp)~AllenCahn()Initialize(int lev)Advance(int lev, Set::Scalar time, Set::Scalar dt)TagCellsForRefinement(int lev, amrex::TagBoxArray &a_tags, Set::Scalar, int)
Variables
Set::Field<Set::Scalar> Integrator::AllenCahn::alpha_mfSet::Field<Set::Scalar> Integrator::AllenCahn::alpha_old_mf- Temperature field variable (current timestep)IC::IC<Set::Scalar>* Integrator::AllenCahn::ic- Temperature field variable (previous timestep)Set::Field<Set::Scalar>& Integrator::AllenCahn::eta_mf- Object used to initialize temperature field.Set::Field<Set::Scalar>& Integrator::AllenCahn::eta_old_mfstruct Integrator::AllenCahn Integrator::AllenCahn::chSet::Scalar Integrator::AllenCahn::LSet::Scalar Integrator::AllenCahn::epsSet::Scalar Integrator::AllenCahn::kappaSet::Scalar Integrator::AllenCahn::lambdaSet::Scalar Integrator::AllenCahn::direction_tstartint Integrator::AllenCahn::directionint Integrator::AllenCahn::number_of_componentsint Integrator::AllenCahn::number_of_ghost_cellsSet::Scalar Integrator::AllenCahn::refinement_thresholdBC::BC<Set::Scalar>* Integrator::AllenCahn::bc
Integrator::BaseField
API definitions in src/Integrator/BaseField.H
Classes
Integrator::BaseFieldMethods
~BaseField()=defaultRemakeLevel(int lev, amrex::Real time, const amrex::BoxArray &cgrids, const amrex::DistributionMapping &dm)=0MakeNewLevelFromCoarse(int lev, amrex::Real time, const amrex::BoxArray &cgrids, const amrex::DistributionMapping &dm)=0MakeNewLevelFromScratch(int lev, amrex::Real t, const amrex::BoxArray &cgrids, const amrex::DistributionMapping &dm)=0SetFinestLevel(const int a_finestlevel)=0FillPatch(const int lev, const Set::Scalar time)=0FillBoundary(const int lev, Set::Scalar time)=0AverageDown(const int lev, amrex::IntVect refRatio)=0NComp()=0Copy(int, amrex::MultiFab &, int, int)=0Name(int)=0setName(std::string a_name)=0setBC(void *a_bc)=0getBC()=0
Variables
bool Integrator::BaseField::writeoutbool Integrator::BaseField::evolvingSet::Hypercube Integrator::BaseField::m_gridtype
Integrator::FieldMethods
Field(Set::Field< T > &a_field, const amrex::Vector< amrex::Geometry > &a_geom, const amrex::Vector< amrex::IntVect > &a_refRatio, int a_ncomp, int a_nghost)FillPatch(int lev, amrex::Real time, amrex::Vector< std::unique_ptr< amrex::FabArray< amrex::BaseFab< T > > > > &source_mf, amrex::FabArray< amrex::BaseFab< T > > &destination_mf, int icomp)FillPatch(int lev, amrex::Real time) overrideFillCoarsePatch(int lev, amrex::Real time, int icomp, int ncomp)RemakeLevel(int lev, amrex::Real time, const amrex::BoxArray &cgrids, const amrex::DistributionMapping &dm) overrideMakeNewLevelFromCoarse(int lev, amrex::Real time, const amrex::BoxArray &cgrids, const amrex::DistributionMapping &dm) overrideMakeNewLevelFromScratch(int lev, amrex::Real, const amrex::BoxArray &cgrids, const amrex::DistributionMapping &dm) overrideSetFinestLevel(const int a_finestlevel) overrideFillBoundary(const int lev, Set::Scalar time) overrideAverageDown(const int lev, amrex::IntVect refRatio) overrideNComp() overrideCopy(int a_lev, amrex::MultiFab &a_dst, int a_dstcomp, int a_nghost) overridesetName(std::string a_name) overrideName(int i) overridesetBC(void *a_bc) overridegetBC() override
Variables
Set::Field<T>& Integrator::Field< T >::m_fieldconst amrex::Vector<amrex::Geometry>& Integrator::Field< T >::m_geomconst amrex::Vector<amrex::IntVect>& Integrator::Field< T >::m_refRatioconst int Integrator::Field< T >::m_ncompconst int Integrator::Field< T >::m_nghostBC::BC<T>* Integrator::Field< T >::m_bcNumeric::Interpolator::NodeBilinear<T> Integrator::Field< T >::node_bilinear
Integrator::Field::EmptyBCMethods
operator()(amrex::FabArray< amrex::BaseFab< T > > &, int, int, amrex::IntVect const &, amrex::Real, int)GetBCRec()
Integrator::CahnHilliard
src/Integrator/CahnHilliard.cpp src/Integrator/CahnHilliard.H
This implements a basic two-phase field model with Cahn-Hilliard kinetics.
The free energy is
The corresponding governing equation under conservative kinetics is
which is integrated using a forward Euler scheme.
This is tested in CahnHilliard
Parameter |
Type |
Values |
|---|---|---|
Interface energy |
0.0005 |
|
Mobility |
1.0 |
|
Regridding criterion |
1E100 |
|
initial condition for \(\eta\) |
random |
|
boundary condition for \(\eta\) |
constant |
|
Which method to use - realspace or spectral method. |
realspace spectral |
API definitions in src/Integrator/CahnHilliard.H
Classes
Integrator::CahnHilliardMethods
CahnHilliard()- Basic constructor (don’t use)~CahnHilliard()- Destroy pointers defined in Parse.CahnHilliard(IO::ParmParse &pp)- Use this constructor.Initialize(int lev) override- values in fields.Advance(int lev, Set::Scalar time, Set::Scalar dt) override- Integrate eta over one timestep on lev.AdvanceSpectral(int lev, Set::Scalar time, Set::Scalar dt)- spectral version of advanceAdvanceReal(int lev, Set::Scalar time, Set::Scalar dt)- realspace version of advanceTagCellsForRefinement(int lev, amrex::TagBoxArray &tags, amrex::Real time, int ngrow) override- Mark any cells that need to be refined.
Variables
Set::Field<Set::Scalar> Integrator::CahnHilliard::etanew_mfSet::Field<Set::Scalar> Integrator::CahnHilliard::etaold_mf- The new value for eta this timestep.Set::Field<Set::Scalar> Integrator::CahnHilliard::intermediate- Last timestep’s value for eta.BC::BC<Set::Scalar>* Integrator::CahnHilliard::bc- Intermediate field used for CH kinetics.IC::IC<Set::Scalar>* Integrator::CahnHilliard::ic- eta’s bc objectSet::Scalar Integrator::CahnHilliard::gamma- eta’s ic objectSet::Scalar Integrator::CahnHilliard::LSet::Scalar Integrator::CahnHilliard::refinement_thresholdstd::string Integrator::CahnHilliard::method
Integrator::Dendrite
This is a BASIC phase field method for dendritic growth as described in “A Numerical Approach to Three-Dimensional Dendritic Solidification” by Ryo Kobayashi (1994) Reference: https://doi.org/10.1080/10586458.1994.10504577
Parameter |
Type |
Values |
|---|---|---|
Pre-multiplier of "m" barrier height |
required |
|
Anisotropy factor |
required |
|
Anisotropic temperature coupling factor |
required |
|
Thermal constant |
1.0 |
|
Diffuse boundary width |
required |
|
Diffusive timescale |
required |
|
Orientation about z axis (Deg) |
0.0 |
|
Refinement criteria for temperature |
0.01 |
|
Refinement criteria for phi |
0.01 |
|
boundary conditions for temperature field |
constant |
|
boundary conditions for \(\phi\) field |
constant |
API definitions in src/Integrator/Dendrite.H
Classes
Integrator::DendriteMethods
Dendrite()Dendrite(IO::ParmParse &pp)~Dendrite()Initialize(int lev)Advance(int lev, Set::Scalar, Set::Scalar dt)TagCellsForRefinement(int lev, amrex::TagBoxArray &a_tags, Set::Scalar, int)
Variables
Set::Field<Set::Scalar> Integrator::Dendrite::temp_mfSet::Field<Set::Scalar> Integrator::Dendrite::temp_old_mfSet::Field<Set::Scalar> Integrator::Dendrite::phi_mfSet::Field<Set::Scalar> Integrator::Dendrite::phi_old_mfSet::Field<Set::Scalar>& Integrator::Dendrite::eta_mfSet::Field<Set::Scalar>& Integrator::Dendrite::eta_old_mfint Integrator::Dendrite::number_of_componentsint Integrator::Dendrite::number_of_ghost_cellsSet::Scalar Integrator::Dendrite::alphaSet::Scalar Integrator::Dendrite::deltaSet::Scalar Integrator::Dendrite::gammaSet::Scalar Integrator::Dendrite::diffusionSet::Scalar Integrator::Dendrite::epsSet::Scalar Integrator::Dendrite::tauSet::Scalar Integrator::Dendrite::thetaSet::Matrix Integrator::Dendrite::RSet::Scalar Integrator::Dendrite::refinement_threshold_tempSet::Scalar Integrator::Dendrite::refinement_threshold_phiIC::IC<Set::Scalar>* Integrator::Dendrite::ic_tempIC::IC<Set::Scalar> * Integrator::Dendrite::ic_phiBC::BC<Set::Scalar>* Integrator::Dendrite::bc_tempBC::BC<Set::Scalar> * Integrator::Dendrite::bc_phi
Integrator::Flame
src/Integrator/Flame.cpp src/Integrator/Flame.H
Parameter |
Type |
Values |
|---|---|---|
Whether to include extra fields (such as mdot, etc) in the plot output |
true |
|
Burn width thickness |
"1.0_m" |
|
Unburned rest energy |
"0.0" |
|
Barrier energy |
"0.0" |
|
Burned rest energy |
"0.0" |
|
Boundary conditions for phase field order params |
constant |
|
phase field initial condition |
laminate constant expression bmp png |
|
Select reduced order model to capture heat feedback |
powerlaw fullfeedback homogenize |
|
Whether to use the Thermal Transport Model |
false |
|
Reference temperature Used to set all other reference temperatures by default. |
"300.0_K" |
|
Effective fluid temperature |
value.thermal.Tref |
|
Temperature boundary condition |
constant |
|
laser initial condition |
constant expression |
|
thermal initial condition |
constant expression bmp png |
|
Constant pressure value |
"1.0_MPa" |
|
Whether to compute the pressure evolution |
false |
|
Refinement criterion for eta field |
"0.001" |
|
Refinement criterion for temperature field |
"0.001_K" |
|
Eta value to restrict the refinament for the temperature field |
"0.1" |
|
Refinement criterion for phi field [infinity] |
1.0e100 |
|
Minimum allowable threshold for $\eta$ |
1.0e-8 |
|
Initial condition for $\phi$ field. |
psread laminate expression constant bmp png |
|
Whether to use Neo-hookean Elastic model |
0 |
|
Body force |
0.0 |
|
Phi refinement criteria |
1 |
|
Reference temperature for thermal expansion (temperature at which the material is strain-free) |
value.thermal.Tref |
|
Set this to true to allow unused inputs without error. (Not recommended.) |
false |
API definitions in src/Integrator/Flame.H
Classes
Integrator::FlameMethods
Flame()Flame(IO::ParmParse &pp)~Flame()Initialize(int lev) overrideTimeStepBegin(Set::Scalar a_time, int a_iter) overrideTimeStepComplete(Set::Scalar a_time, int a_iter) overrideAdvance(int lev, Set::Scalar time, Set::Scalar dt) overrideTagCellsForRefinement(int lev, amrex::TagBoxArray &tags, amrex::Real, int) overrideRegrid(int lev, Set::Scalar time) overrideIntegrate(int amrlev, Set::Scalar time, int step, const amrex::MFIter &mfi, const amrex::Box &box) overrideUpdateModel(int a_step, Set::Scalar a_time) override
Variables
Set::Field<Set::Scalar> Integrator::Flame::temp_mfSet::Field<Set::Scalar> Integrator::Flame::temp_old_mfSet::Field<Set::Scalar> Integrator::Flame::temps_mfSet::Field<Set::Scalar> Integrator::Flame::eta_mfSet::Field<Set::Scalar> Integrator::Flame::eta_old_mfSet::Field<Set::Scalar> Integrator::Flame::mdot_mfSet::Field<Set::Scalar> Integrator::Flame::phi_mfSet::Field<Set::Scalar> Integrator::Flame::fieldSet::Field<Set::Scalar> Integrator::Flame::alpha_mfSet::Field<Set::Scalar> Integrator::Flame::heatflux_mfSet::Field<Set::Scalar> Integrator::Flame::laser_mfBC::BC<Set::Scalar>* Integrator::Flame::bc_tempBC::BC<Set::Scalar>* Integrator::Flame::bc_etaIC::IC<Set::Scalar>* Integrator::Flame::ic_phiIC::IC<Set::Scalar>* Integrator::Flame::ic_laserSet::Scalar Integrator::Flame::phi_refinement_criterionSet::Scalar Integrator::Flame::m_refinement_criterionSet::Scalar Integrator::Flame::t_refinement_criterionSet::Scalar Integrator::Flame::t_refinement_restrictionSet::Scalar Integrator::Flame::smallIC::IC<Set::Scalar>* Integrator::Flame::ic_etabool Integrator::Flame::plot_fieldint Integrator::Flame::variable_pressurestruct Integrator::Flame Integrator::Flame::pfstruct Integrator::Flame Integrator::Flame::thermalstruct Integrator::Flame Integrator::Flame::elasticstruct Integrator::Flame Integrator::Flame::chamberModel::Propellant::Propellant< Model::Propellant::PowerLaw, Model::Propellant::FullFeedback, Model::Propellant::Homogenize> Integrator::Flame::propellantSet::Scalar Integrator::Flame::epsSet::Scalar Integrator::Flame::lambdaSet::Scalar Integrator::Flame::kappaSet::Scalar Integrator::Flame::w1Set::Scalar Integrator::Flame::w12Set::Scalar Integrator::Flame::w0Set::Scalar Integrator::Flame::min_etabool Integrator::Flame::onSet::Scalar Integrator::Flame::hcSet::Scalar Integrator::Flame::TrefSet::Scalar Integrator::Flame::TfluidIC::IC<Set::Scalar>* Integrator::Flame::ic_tempint Integrator::Flame::onSet::Scalar Integrator::Flame::Telasticmodel_type Integrator::Flame::model_apmodel_type Integrator::Flame::model_htpbSet::Scalar Integrator::Flame::tractionint Integrator::Flame::phirefinementSet::Scalar Integrator::Flame::volumeSet::Scalar Integrator::Flame::areaSet::Scalar Integrator::Flame::massfluxSet::Scalar Integrator::Flame::pressure
Integrator::Fracture
This class implements second and fourth order phase field brittle fracture with near singular solver.
This class inherits from the base class Base/Mechanics.H.
See this link
for more information on this implementation.
The energy functional for a second order model is given by .. math:
\mathcal{L}= \int_\Omega \left[\left(g(c) + \eta \right)W_0^+ + W_0^-\right] dV + \int_\Omega G_c \left[ \frac{w(c)}{4\xi} + \xi |\nabla c|^2\right] dV
where \(g(c)\) and \(w(c)\) are interpolation functions specified by the user. The fracture energy \(G_c\) and crack length scale \(xi\) are also read from input file. The tension compression asymmetry is accounted by splitting the strain energy \(W_0\) as .. math:
W_0^pm = frac{1}{2} lambda (operatorname{tr}bm{varepsilon}_pm)^2 + mu operatorname{tr}left(bm{varepsilon}_pm^2right), quad bm{varepsilon_pm} = sum_{i=1}^d left(varepsilon_i right)_pm hat{bm{v}}_iotimeshat{bm{v}}_i
where \(\lambda\) and \(\mu\) are material models for linear elastic isotropic material, \(\bm{\varepsilon}_\pm\) are the positive and negative components of the strain tensor \(\bm{\varepsilon}\) computed through eigenvalue decomposition. The fourth order model adds a laplacian term to the free energy functional. The code performs a staggered solve where it solves the elastic problem implicitly and crack problem explicitly.
Class methods:
Fracture(): Basic constructor. Does nothing, and leaves all values initiated as NAN.Fracture(IO::ParmParse &pp): Calls the parser.static void Parse(Fracture &value, IO::ParmParse &pp)Parses input file, ICs, BCs, and sets up multifabs appropriatelyvoid Initialize(int lev) overrideCalls IC and sets up the initial crack geometry.virtual void UpdateModel(int a_step) overridePerforms degradation by updating the \(\psi\) field using \(g(c)\).void TimeStepBegin(Set::Scalar a_time, int a_step) overrideSolves the elastic problem, performs eigen value decomposition of strain, and computes the positive part of the strain energy.void Advance(int a_lev, amrex::Real a_time, amrex::Real a_dt)Advances the crack field by computing the variational derivative of energy functional with \(c\).void TagCellsForRefinement(int lev, amrex::TagBoxArray &a_tags, Set::Scalar a_time, int a_ngrow) overrideRefines the grid based on the crack field.void Integrate(int amrlev, Set::Scalar time, int step, const amrex::MFIter &mfi, const amrex::Box &a_box) overridePerforms spatial integration of the driving force to check for convergence of crack problemvoid TimeStepComplete(Set::Scalar /*time*/, int /* iter*/)Checks whether the solver should work on crack problem or elastic problem.
Parameter |
Type |
Values |
|---|---|---|
Material field related parsing |
||
Driving force threshold |
1E100 |
|
IC determining material distribution |
laminate ellipse perturbedinterface bmp png expression |
|
Crack related parsing mesh refinement criteria |
0.0001 |
|
constant multiplier for fourth orther model with bilaplacian |
0.0 |
|
relative tolerance for convergence of driving force |
1E-3 |
|
absolute tolerance for convergence of driving force |
1E-3 |
|
Maximum number of solver iterations |
500. |
|
constant multiplier for controlling fracture energy of interface |
1.0 |
|
constant multiplier for second order model with laplacian |
1.0 |
|
unit conversion multiplier between elastic problem and crack problem |
1.0 |
|
API definitions in src/Integrator/Fracture.H
Classes
Integrator::FractureMethods
Fracture()Fracture(IO::ParmParse &pp)Initialize(int lev) overrideUpdateModel(int a_step, Set::Scalar) overrideTimeStepBegin(Set::Scalar, int a_step) overrideAdvance(int a_lev, amrex::Real a_time, amrex::Real a_dt) overrideTagCellsForRefinement(int lev, amrex::TagBoxArray &a_tags, Set::Scalar a_time, int a_ngrow) overrideIntegrate(int amrlev, Set::Scalar time, int step, const amrex::MFIter &mfi, const amrex::Box &a_box) overrideTimeStepComplete(Set::Scalar, int) override
Variables
Set::Field<Set::Scalar> Integrator::Fracture::c_mfSet::Field<Set::Scalar> Integrator::Fracture::c_old_mfSet::Field<Set::Scalar> Integrator::Fracture::energy_pristine_mfSet::Field<Set::Scalar> Integrator::Fracture::history_var_mfSet::Field<Set::Scalar> Integrator::Fracture::driving_force_mfstd::vector<pfczm_crack_type> Integrator::Fracture::cracktypestd::vector<std::string> Integrator::Fracture::ic_typestd::vector<IC::IC<Set::Scalar> *> Integrator::Fracture::icbool Integrator::Fracture::is_icSet::Scalar Integrator::Fracture::scaleModulusMaxSet::Scalar Integrator::Fracture::refinement_thresholdSet::Scalar Integrator::Fracture::mult_lapSet::Scalar Integrator::Fracture::mult_GcSet::Scalar Integrator::Fracture::el_multSet::Scalar Integrator::Fracture::driving_force_referenceSet::Scalar Integrator::Fracture::driving_force_reference_prevSet::Scalar Integrator::Fracture::driving_force_normSet::Scalar Integrator::Fracture::driving_force_refinement_thresholdSet::Scalar Integrator::Fracture::tol_relSet::Scalar Integrator::Fracture::tol_absSet::Scalar Integrator::Fracture::max_iterSet::Scalar Integrator::Fracture::crack_l2_errSet::Scalar Integrator::Fracture::crack_normSet::Scalar Integrator::Fracture::crack_prop_iterSet::Scalar Integrator::Fracture::betaSet::Field<Set::Scalar> Integrator::Fracture::eta_mfSet::Scalar Integrator::Fracture::m_eta_ref_thresholdstd::vector<brittle_model> Integrator::Fracture::modelsIC::IC<Set::Scalar>* Integrator::Fracture::icint Integrator::Fracture::num_matstruct Integrator::Fracture Integrator::Fracture::crackstruct Integrator::Fracture Integrator::Fracture::materialbool Integrator::Fracture::elastic_do_solve_nowbool Integrator::Fracture::increase_load_stepbool Integrator::Fracture::set_initial_df_oncebool Integrator::Fracture::set_new_referenceint Integrator::Fracture::loadstepBC::BC<Set::Scalar>* Integrator::Fracture::bc_psi
Integrator::Hydro
src/Integrator/Hydro.cpp src/Integrator/Hydro.H
Parameter |
Type |
Values |
|---|---|---|
time integration scheme to use |
forwardeuler ssprk3 rk4 |
|
eta-based refinement |
0.01 |
|
vorticity-based refinement |
0.01 |
|
velocity gradient-based refinement |
0.01 |
|
pressure-based refinement |
1e100 |
|
density-based refinement |
1e100 |
|
gamma for gamma law |
required |
|
cfl condition |
required |
|
cfl condition |
1E100 |
|
linear viscosity coefficient |
required |
|
pp_query_default("Pfactor", value.Pfactor,1.0); // (to be removed) test factor for viscous source reference pressure for Roe solver |
1.0 |
|
Boundary condition for density |
constant expression |
|
Boundary condition for energy |
constant expression |
|
Boundary condition for momentum |
constant expression |
|
Boundary condition for phase field order parameter |
constant expression |
|
small regularization value |
1E-8 |
|
cutoff value |
-1E100 |
|
lagrange no-penetration factor |
0.0 |
|
eta initial condition |
constant laminate expression bmp png |
|
velocity initial condition |
constant expression |
|
solid pressure initial condition |
constant expression |
|
density initial condition type |
constant expression |
|
solid momentum initial condition |
constant expression |
|
solid density initial condition |
constant expression |
|
solid energy initial condition |
constant expression |
|
diffuse boundary prescribed mass flux |
constant expression |
|
diffuse boundary prescribed velocity |
constant expression |
|
diffuse boundary prescribed heat flux |
constant expression |
|
Riemann solver |
roe hlle hllc |
|
Set this to true to allow unused inputs without error. (Not recommended.) |
false |
API definitions in src/Integrator/Hydro.H
Classes
Integrator::HeatConduction
src/Integrator/HeatConduction.H
This implements a basic heat conduction method in Alamo. The partial differential equation to be solved is
where \(T\) is temperature, \(t\) is time, and \(alpha\) is the thermal diffusivity. Integration is performed explicitly in time using forward Euler, and differentiation is performed using the finite difference method.
Parameter |
Type |
Values |
|---|---|---|
Diffusion coefficient \(\alpha\). *This is an example of a required input variable - - program will terminate unless it is provided.* |
required |
|
Criterion for mesh refinement. *This is an example of a default input variable. The default value is provided here, not in the definition of the variable.* |
"0.01_K" |
|
Initial condition type. |
constant sphere expression |
|
Select BC object for temperature |
constant expression |
|
Select between using a realspace solve or the spectral method |
realspace spectral |
API definitions in src/Integrator/HeatConduction.H
Classes
Integrator::HeatConductionMethods
HeatConduction(int a_nghost=2)HeatConduction(IO::ParmParse &pp)~HeatConduction()Initialize(int lev)Advance(int lev, Set::Scalar time, Set::Scalar dt)AdvanceSpectral(int, Set::Scalar, Set::Scalar)TagCellsForRefinement(int lev, amrex::TagBoxArray &a_tags, Set::Scalar, int)
Variables
Set::Field<Set::Scalar> Integrator::HeatConduction::temp_mfSet::Field<Set::Scalar> Integrator::HeatConduction::temp_old_mfstd::string Integrator::HeatConduction::methodconst int Integrator::HeatConduction::number_of_componentsconst int Integrator::HeatConduction::number_of_ghost_cellsSet::Scalar Integrator::HeatConduction::alphaSet::Scalar Integrator::HeatConduction::refinement_thresholdIC::IC<Set::Scalar>* Integrator::HeatConduction::icBC::BC<Set::Scalar>* Integrator::HeatConduction::bc
Integrator::Mechanics
This is a general purpose integrator that focuses on solving
elasticity/mechanics equations in the absence of other multiphysics
simulations.
It is enabled by alamo.program=mechanics if used on its own, in
which case there is no prefix.
If it is being used by another integrator, see that integrator to determine
the value of [prefix] (often equal to elastic).
This integrator inherits from Integrator::Base::Mechanics; see documentation for that integrator for additional parameters.
Model setup There are two basic tools for setting up a mechanics problem in this integrator.
The
etafield: this is used to mix models of different types. Usenmodelsto specify how many material models to use, and then specify each model asmodel1,model2, etc. The type of moel is specified using thealamo.program.mechanics.modelinput.Once you have done this, you must determine the spatial distribution of each model. This is done by choosing an IC for the eta field with
ic.type. TheIC::Expressionis the most general and recommended. The models are then mixed linearly, i.e.\[W_{\textrm{eff}} = \sum_{i=1}^N W_i\,\eta_i(\mathbf{x})\]See the Eshelby test for an example of model mixing.
The
psifield: this is used specifically for cases where a “void” region is desired. Its usage is similar to theetacase, and is conceptually similar in that it scales the model field to near-zero in order to mimic the (lack of) mechanical behavior in an empty region. It is important to usepsihere, for reasons that are discussed in detail in this paper. The initialization ofpsiis similar to that foreta.See the PlateHole and RubberPlateHole for canonical exmaples. The Integrator::Fracture and Integrator::TopOp integrators are examples of integrators that leverage the psi property.
Body forces currently have limited support due to the relatively low number of times they are needed. See the Integrator::Base::Mechanics documentation for detail. See the TrigTest test for examples of current body force implementation.
Boundary conditions are implemented using the BC::Operator::Elastic classes. See the documentation on these classes for more detail. See any of the mechanics-based tests for examples of boundary condition application.
Parameter |
Type |
Values |
|---|---|---|
Number of elastic model varieties |
1 |
|
Refinement threshold for eta field |
0.01 |
|
Refinement threshold for strain gradient |
0.01 |
|
Explicity impose neumann condition on model at domain boundaries (2d only) |
false |
|
Select the initial condition for eta |
constant ellipse voronoi bmp png expression psread |
|
Whether to re-initialize eta when re-gridding occurs. Default is false unless eta ic is set, then default is. true. |
true |
|
Select initial condition for psi field |
ellipse constant expression psread png |
|
Whether to re-initialize psi when re-gridding occurs. Default is false unless a psi ic is set, then default is true. |
true |
|
Read in IC for the "normal traction" field (applied at diffuse boundaries) |
ellipse constant expression psread |
API definitions in src/Integrator/Mechanics.H
Classes
Integrator::MechanicsMethods
Mechanics()Mechanics(IO::ParmParse &pp)~Mechanics()Initialize(int lev) overrideUpdateModel(int a_step, Set::Scalar time) overrideTagCellsForRefinement(int lev, amrex::TagBoxArray &a_tags, Set::Scalar a_time, int a_ngrow) overrideRegrid(int lev, Set::Scalar time) override
Variables
Set::Field<Set::Scalar> Integrator::Mechanics< MODEL >::eta_mfSet::Scalar Integrator::Mechanics< MODEL >::m_eta_ref_thresholdstd::vector<MODEL> Integrator::Mechanics< MODEL >::modelsIC::IC<Set::Scalar>* Integrator::Mechanics< MODEL >::ic_etaIC::IC<Set::Scalar>* Integrator::Mechanics< MODEL >::ic_psiIC::IC<Set::Scalar>* Integrator::Mechanics< MODEL >::ic_trac_normalBC::BC<Set::Scalar>* Integrator::Mechanics< MODEL >::bc_psiBC::BC<Set::Scalar>* Integrator::Mechanics< MODEL >::bc_trac_normalbool Integrator::Mechanics< MODEL >::psi_reset_on_regridbool Integrator::Mechanics< MODEL >::eta_reset_on_regridbool Integrator::Mechanics< MODEL >::model_neumann_boundarySet::Field<Set::Scalar> Integrator::Mechanics< MODEL >::trac_normal_mf
Integrator::PhaseFieldMicrostructure
src/Integrator/PhaseFieldMicrostructure.cpp src/Integrator/PhaseFieldMicrostructure.H
file PhaseFieldMicrostructure.H
Parameter |
Type |
Values |
|---|---|---|
Number of grain fields (may be more if using different IC) |
2 |
|
Mobility |
required |
|
Phase field \(\gamma\) |
required |
|
Initial GB energy if not using anisotropy |
required |
|
Mobility |
required |
|
Determine whether to use elastic driving force |
false |
|
Multiplier of elastic energy |
1.0 |
|
Value used for thresholding kinetic relation |
0.0 |
|
Whether to include chemical potential in threshold |
false |
|
Whether to include boundary energy in threshold |
false |
|
Whether to include corner regularization in threshold |
false |
|
Whether to include lagrange multiplier in threshold |
false |
|
Whether to include mechanical driving force in threshold |
false |
|
Type of thresholding to use |
continuous chop |
|
Maximum AMR level |
required |
|
Phase field refinement threshold |
0.1 |
|
Reading this is redundant but necessary because of the way the code was originally structured (need to fix eventually) |
disable static dynamic |
|
Elasticity |
0.0 |
|
Mixing order |
1 2 |
|
Force Neumann BCs on the model |
false |
|
Lagrange multiplier method for enforcing volumes |
false |
|
Lagrange multiplier value |
required |
|
Prescribed volume |
required |
|
Lagrange multipler start time |
0.0 |
|
synthetic driving force (SDF) |
false |
|
value of SDF for each grain |
||
time to begin applying SDF |
0.0 |
|
Turn on |
false |
|
Regularization para m |
required |
|
Time to turn on anisotropy |
required |
|
Modify timestep when turned on |
required |
|
Modify plot_int when turned on |
-1 |
|
Modify plot_dt when turned on |
-1.0 |
|
Modify thermo int when turned on |
-1 |
|
Modify thermo plot int when turned on |
-1 |
|
Frequency of elastic calculation |
-1 |
|
Type of regularization to use |
k12 wilmore |
|
Type of GB to use |
abssin sin read sh |
|
Thermal fluctuations |
||
fluctuation amplitude |
||
fluctuation stadard deviation |
||
time to start applying fluctuation |
||
Disconnection generation |
||
Shear coupling matrices |
false |
|
Boundary condition for eta |
constant |
|
Initial condition for the order parameter eta |
constant perturbedinterface voronoi expression sphere ellipse random |
|
Anisotropic mobility |
0 |
|
simulation time when anisotropic kinetics is activated |
0.0 |
|
file containing anisotropic mobility data |
file path |
|
file containing anisotropic mobility data |
file path |
|
API definitions in src/Integrator/PhaseFieldMicrostructure.H
Classes
Integrator::PhaseFieldMicrostructure- Solve the Allen-Cahn evolution equation for microstructure with parameters , where n corresponds to the number of grains.Methods
PhaseFieldMicrostructure()PhaseFieldMicrostructure(IO::ParmParse &pp)~PhaseFieldMicrostructure()Advance(int lev, Real time, Real dt) override- Evolve phase field in time.Initialize(int lev) overrideTagCellsForRefinement(int lev, amrex::TagBoxArray &tags, amrex::Real time, int ngrow) overrideTimeStepBegin(amrex::Real time, int iter) overrideTimeStepComplete(amrex::Real time, int iter) overrideIntegrate(int amrlev, Set::Scalar time, int step, const amrex::MFIter &mfi, const amrex::Box &box) overrideUpdateEigenstrain(int lev)UpdateEigenstrain()UpdateModel(int, Set::Scalar) override
Variables
const std::string Integrator::PhaseFieldMicrostructure< model_type >::nameSet::Scalar Integrator::PhaseFieldMicrostructure< model_type >::MSet::Scalar Integrator::PhaseFieldMicrostructure< model_type >::LSet::Scalar Integrator::PhaseFieldMicrostructure< model_type >::muSet::Scalar Integrator::PhaseFieldMicrostructure< model_type >::gammaSet::Scalar Integrator::PhaseFieldMicrostructure< model_type >::sigma0Set::Scalar Integrator::PhaseFieldMicrostructure< model_type >::l_gbbool Integrator::PhaseFieldMicrostructure< model_type >::elastic_dfSet::Scalar Integrator::PhaseFieldMicrostructure< model_type >::elastic_multbool Integrator::PhaseFieldMicrostructure< model_type >::onbool Integrator::PhaseFieldMicrostructure< model_type >::chempotbool Integrator::PhaseFieldMicrostructure< model_type >::boundarybool Integrator::PhaseFieldMicrostructure< model_type >::cornerbool Integrator::PhaseFieldMicrostructure< model_type >::lagrangebool Integrator::PhaseFieldMicrostructure< model_type >::mechanicsbool Integrator::PhaseFieldMicrostructure< model_type >::sdfSet::Scalar Integrator::PhaseFieldMicrostructure< model_type >::valueThresholdType Integrator::PhaseFieldMicrostructure< model_type >::typestruct Integrator::PhaseFieldMicrostructure Integrator::PhaseFieldMicrostructure< model_type >::thresholdint Integrator::PhaseFieldMicrostructure< model_type >::onSet::Scalar Integrator::PhaseFieldMicrostructure< model_type >::tstartNumeric::Interpolator::Linear<Set::Scalar> Integrator::PhaseFieldMicrostructure< model_type >::mobilityNumeric::Interpolator::Linear<Set::Scalar> Integrator::PhaseFieldMicrostructure< model_type >::thresholdSet::Field<Set::Scalar> Integrator::PhaseFieldMicrostructure< model_type >::L_mfSet::Field<Set::Scalar> Integrator::PhaseFieldMicrostructure< model_type >::threshold_mfSet::Scalar Integrator::PhaseFieldMicrostructure< model_type >::betaSet::Scalar Integrator::PhaseFieldMicrostructure< model_type >::timestepint Integrator::PhaseFieldMicrostructure< model_type >::plot_intSet::Scalar Integrator::PhaseFieldMicrostructure< model_type >::plot_dtint Integrator::PhaseFieldMicrostructure< model_type >::thermo_intint Integrator::PhaseFieldMicrostructure< model_type >::thermo_plot_intSet::Scalar Integrator::PhaseFieldMicrostructure< model_type >::theta0Set::Scalar Integrator::PhaseFieldMicrostructure< model_type >::sigma1Set::Scalar Integrator::PhaseFieldMicrostructure< model_type >::phi0int Integrator::PhaseFieldMicrostructure< model_type >::elastic_intSet::Scalar Integrator::PhaseFieldMicrostructure< model_type >::vol0Set::Scalar Integrator::PhaseFieldMicrostructure< model_type >::lambdastd::vector<Numeric::Interpolator::Linear<Set::Scalar> > Integrator::PhaseFieldMicrostructure< model_type >::valSet::Scalar Integrator::PhaseFieldMicrostructure< model_type >::ampSet::Scalar Integrator::PhaseFieldMicrostructure< model_type >::sdstd::normal_distribution<double> Integrator::PhaseFieldMicrostructure< model_type >::norm_diststd::default_random_engine Integrator::PhaseFieldMicrostructure< model_type >::rand_num_genModel::Defect::Disconnection Integrator::PhaseFieldMicrostructure< model_type >::modelstd::vector<Set::Matrix> Integrator::PhaseFieldMicrostructure< model_type >::Fgbstd::vector<model_type> Integrator::PhaseFieldMicrostructure< model_type >::modelint Integrator::PhaseFieldMicrostructure< model_type >::model_mix_orderbool Integrator::PhaseFieldMicrostructure< model_type >::model_neumann_boundaryint Integrator::PhaseFieldMicrostructure< model_type >::number_of_grainsint Integrator::PhaseFieldMicrostructure< model_type >::number_of_ghost_cellsSet::Scalar Integrator::PhaseFieldMicrostructure< model_type >::ref_thresholdSet::Field<Set::Scalar> Integrator::PhaseFieldMicrostructure< model_type >::eta_mfSet::Field<Set::Scalar> Integrator::PhaseFieldMicrostructure< model_type >::eta_old_mfSet::Field<Set::Scalar> Integrator::PhaseFieldMicrostructure< model_type >::driving_force_mfSet::Field<Set::Scalar> Integrator::PhaseFieldMicrostructure< model_type >::driving_force_threshold_mfSet::Field<Set::Scalar> Integrator::PhaseFieldMicrostructure< model_type >::fluct_mfSet::Field<Set::Scalar> Integrator::PhaseFieldMicrostructure< model_type >::totaldf_mfBC::BC<Set::Scalar>* Integrator::PhaseFieldMicrostructure< model_type >::mybcRegularizationType Integrator::PhaseFieldMicrostructure< model_type >::regularizationstruct Integrator::PhaseFieldMicrostructure Integrator::PhaseFieldMicrostructure< model_type >::pfstruct Integrator::PhaseFieldMicrostructure Integrator::PhaseFieldMicrostructure< model_type >::anisotropic_kineticsstruct Integrator::PhaseFieldMicrostructure Integrator::PhaseFieldMicrostructure< model_type >::anisotropystruct Integrator::PhaseFieldMicrostructure Integrator::PhaseFieldMicrostructure< model_type >::lagrangestruct Integrator::PhaseFieldMicrostructure Integrator::PhaseFieldMicrostructure< model_type >::sdfstruct Integrator::PhaseFieldMicrostructure Integrator::PhaseFieldMicrostructure< model_type >::fluctuationstruct Integrator::PhaseFieldMicrostructure Integrator::PhaseFieldMicrostructure< model_type >::disconnectionstruct Integrator::PhaseFieldMicrostructure Integrator::PhaseFieldMicrostructure< model_type >::shearcouplestd::string Integrator::PhaseFieldMicrostructure< model_type >::gb_typestd::string Integrator::PhaseFieldMicrostructure< model_type >::filenameModel::Interface::GB::GB* Integrator::PhaseFieldMicrostructure< model_type >::boundaryIC::IC<Set::Scalar>* Integrator::PhaseFieldMicrostructure< model_type >::icSet::Scalar Integrator::PhaseFieldMicrostructure< model_type >::volumeSet::Scalar Integrator::PhaseFieldMicrostructure< model_type >::areaSet::Scalar Integrator::PhaseFieldMicrostructure< model_type >::gbenergySet::Scalar Integrator::PhaseFieldMicrostructure< model_type >::realgbenergySet::Scalar Integrator::PhaseFieldMicrostructure< model_type >::regenergystruct Integrator::PhaseFieldMicrostructure Integrator::PhaseFieldMicrostructure< model_type >::mechanics
Integrator::PFC
src/Integrator/PFC.cpp src/Integrator/PFC.H
Basic implementation of the phase field crystal model of Elder et al, 2002.
Free energy functional is:
Order parameter evolves with Cahn-Hilliard kinetics:
The variational derivative is
The semi-implicit spectral update is
Parameter |
Type |
Values |
|---|---|---|
frequency term |
required |
|
chemical potential width |
required |
|
initial condition for \(\eta\) |
random |
|
boundary condition for \(\eta\) |
constant |
API definitions in src/Integrator/PFC.H
Classes
Integrator::PFCMethods
PFC()- Basic constructor (don’t use)~PFC()- Destroy pointers defined in Parse.PFC(IO::ParmParse &pp)- Use this constructor.Initialize(int lev) override- values in fields.Advance(int lev, Set::Scalar time, Set::Scalar dt) override- Integrate eta over one timestep on lev.TagCellsForRefinement(int lev, amrex::TagBoxArray &tags, amrex::Real time, int ngrow) override- Mark any cells that need to be refined.
Variables
Set::Field<Set::Scalar> Integrator::PFC::eta_mfSet::Field<Set::Scalar> Integrator::PFC::grad_chempot_mf- Order parameter field.BC::BC<Set::Scalar>* Integrator::PFC::bc- to calculate FFT of nonlinar part.IC::IC<Set::Scalar>* Integrator::PFC::ic- eta’s bc objectSet::Scalar Integrator::PFC::q0- eta’s ic objectSet::Scalar Integrator::PFC::eps
Integrator::SFI
Parameter |
Type |
Values |
|---|---|---|
time to activate hydro integrator |
0.0 |
|
If true, set hydro_eta to 1-pf_eta |
false |
API definitions in src/Integrator/SFI.H
Classes
Integrator::SutureCrack
Parameter |
Type |
Values |
|---|---|---|
Crack type to use {notch} |
||
API definitions in src/Integrator/SutureCrack.H
Classes
Integrator::SutureCrackMethods
SutureCrack()Initialize(int ilev) overrideTimeStepBegin(Set::Scalar, int iter) overrideAdvance(int lev, Set::Scalar, Set::Scalar dt) overrideTagCellsForRefinement(int lev, amrex::TagBoxArray &a_tags, amrex::Real, int) overrideIntegrate(int amrlev, Set::Scalar, int, const amrex::MFIter &mfi, const amrex::Box &box)TimeStepComplete(amrex::Real, int)
Variables
int Integrator::SutureCrack::number_of_ghost_nodes- Number of ghost nodes.int Integrator::SutureCrack::number_of_materialsint Integrator::SutureCrack::nlevelsstruct Integrator::SutureCrack Integrator::SutureCrack::elasticstruct Integrator::SutureCrack Integrator::SutureCrack::crackstruct Integrator::SutureCrack Integrator::SutureCrack::materialstruct Integrator::SutureCrack Integrator::SutureCrack::solstruct Integrator::SutureCrack Integrator::SutureCrack::loadingSet::Field<Set::Scalar> Integrator::SutureCrack::disp- displacement fieldSet::Field<Set::Scalar> Integrator::SutureCrack::strain- total strain field (gradient of displacement)Set::Field<Set::Scalar> Integrator::SutureCrack::stress- stress fieldSet::Field<Set::Scalar> Integrator::SutureCrack::rhs- rhs fab for elastic solutionSet::Field<Set::Scalar> Integrator::SutureCrack::residual- residual field for solverSet::Field<Set::Scalar> Integrator::SutureCrack::energy- total elastic energySet::Field<Set::Scalar> Integrator::SutureCrack::energy_pristine- energy of the prisitne material as if no crack is presentSet::Field<Set::Scalar> Integrator::SutureCrack::energy_pristine_old- energy of the pristine material for previous time step.BC::Operator::Elastic::Constant Integrator::SutureCrack::brittlebc- elastic if using brittle fractureSet::Scalar Integrator::SutureCrack::df_mult- mulitplier for elastic driving force.bool Integrator::SutureCrack::do_solve_nowSet::Field<Set::Scalar> Integrator::SutureCrack::field- crack field at current time stepSet::Field<Set::Scalar> Integrator::SutureCrack::field_old- crack field at previous time stepSet::Field<Set::Scalar> Integrator::SutureCrack::driving_force- crack driving forces.Set::Scalar Integrator::SutureCrack::driving_force_referenceSet::Scalar Integrator::SutureCrack::driving_force_normSet::Scalar Integrator::SutureCrack::driving_force_tolerance_relSet::Scalar Integrator::SutureCrack::driving_force_tolerance_absModel::Interface::Crack::Crack* Integrator::SutureCrack::cracktype- type of crack. See Crack/Constant or Crack/Sinstd::string Integrator::SutureCrack::ic_type- crack type. See IC/Notch and IC/EllipsoidIC::IC* Integrator::SutureCrack::ic- crack . See IC/Notch and IC/Ellipsoidbool Integrator::SutureCrack::is_icSet::Scalar Integrator::SutureCrack::scaleModulusMax- material modulus ratio inside crack (default = 0.02).Set::Scalar Integrator::SutureCrack::refinement_thresholdSet::Scalar Integrator::SutureCrack::mult_df_Gc- Multiplier for Gc/zeta term.Set::Scalar Integrator::SutureCrack::mult_df_lap- Multiplier for the laplacian term.suture_fracture_model_type Integrator::SutureCrack::brittlemodeltypeSet::Field<Set::Scalar> Integrator::SutureCrack::modulus_fieldSet::Field<suture_fracture_model_type> Integrator::SutureCrack::brittlemodelstd::string Integrator::SutureCrack::input_materialSet::Scalar Integrator::SutureCrack::bottom_tolint Integrator::SutureCrack::intervalstd::string Integrator::SutureCrack::typeint Integrator::SutureCrack::max_iterint Integrator::SutureCrack::max_fmg_iterint Integrator::SutureCrack::bottom_max_iterint Integrator::SutureCrack::max_fixed_iterint Integrator::SutureCrack::verboseint Integrator::SutureCrack::cgverboseSet::Scalar Integrator::SutureCrack::tol_relSet::Scalar Integrator::SutureCrack::tol_absSet::Scalar Integrator::SutureCrack::cg_tol_relSet::Scalar Integrator::SutureCrack::cg_tol_absSet::Scalar Integrator::SutureCrack::tstartSet::Scalar Integrator::SutureCrack::tendstd::string Integrator::SutureCrack::bottom_solverint Integrator::SutureCrack::linop_maxorderbool Integrator::SutureCrack::use_fsmoothint Integrator::SutureCrack::max_coarsening_levelbool Integrator::SutureCrack::agglomerationbool Integrator::SutureCrack::consolidationint Integrator::SutureCrack::pre_smoothint Integrator::SutureCrack::post_smoothSet::Vector Integrator::SutureCrack::body_forceSet::Scalar Integrator::SutureCrack::val
Integrator::ThermoElastic
src/Integrator/ThermoElastic.H
Parameter |
Type |
Values |
|---|---|---|
Diffusion coefficient |
||
API definitions in src/Integrator/ThermoElastic.H
Classes
Integrator::ThermoElasticMethods
ThermoElastic()~ThermoElastic()=defaultThermoElastic(IO::ParmParse &pp)Initialize(int lev) overrideUpdateModel(int a_step, Set::Scalar a_time) overrideTimeStepBegin(Set::Scalar a_time, int a_step) overrideAdvance(int a_lev, amrex::Real a_time, amrex::Real a_dt) overrideTagCellsForRefinement(int a_lev, amrex::TagBoxArray &a_tags, Set::Scalar a_time, int a_ngrow) override
Variables
std::vector<Set::Scalar> Integrator::ThermoElastic::alpha
Integrator::TopOp
Parameter |
Type |
Values |
|---|---|---|
Initial condition for psi field |
ellipse constant |
|
Refinement threshold based on eta |
0.01 |
|
\(\alpha\) parameter |
1.0 |
|
\(\beta\) parameter |
1.0 |
|
\(\gamma\) parameter |
1.0 |
|
Prescribed volume fraction |
0.5 |
|
Prescribed total vlume |
0.5 |
API definitions in src/Integrator/TopOp.H
Classes
Integrator::TopOpMethods
TopOp()TopOp(IO::ParmParse &pp)~TopOp()Initialize(int lev) overrideUpdateModel(int a_step, Set::Scalar) overrideAdvance(int lev, Set::Scalar time, Set::Scalar dt) overrideIntegrate(int amrlev, Set::Scalar time, int step, const amrex::MFIter &mfi, const amrex::Box &box) overrideTagCellsForRefinement(int lev, amrex::TagBoxArray &a_tags, Set::Scalar a_time, int a_ngrow) override
Variables
MODEL Integrator::TopOp< MODEL >::modelIC::IC<Set::Scalar>* Integrator::TopOp< MODEL >::ic_psiBC::BC<Set::Scalar>* Integrator::TopOp< MODEL >::bc_psiSet::Scalar Integrator::TopOp< MODEL >::m_eta_ref_thresholdSet::Field<Set::Scalar> Integrator::TopOp< MODEL >::psi_old_mfSet::Scalar Integrator::TopOp< MODEL >::alphaSet::Scalar Integrator::TopOp< MODEL >::betaSet::Scalar Integrator::TopOp< MODEL >::gammaNumeric::Interpolator::Linear<Set::Scalar> Integrator::TopOp< MODEL >::LSet::Scalar Integrator::TopOp< MODEL >::volume0Numeric::Interpolator::Linear<Set::Scalar> Integrator::TopOp< MODEL >::lambdaSet::Scalar Integrator::TopOp< MODEL >::volumeSet::Scalar Integrator::TopOp< MODEL >::w_chem_potentialSet::Scalar Integrator::TopOp< MODEL >::w_bndrySet::Scalar Integrator::TopOp< MODEL >::w_elastic
Integrator::Base
Integrator::Base::Mechanics
src/Integrator/Base/Mechanics.H
Parameter |
Type |
Values |
|---|---|---|
Type of mecahnics to use. Static: do full implicit solve. Dynamic: evolve dynamic equations with explicit dynamics Disable: do nothing. |
disable static dynamic |
|
Treat mechanics fields as changing in time. [false] You should use this if you care about other physics driven by the output of this integrator. |
false |
|
Include displacement field in output |
true |
|
Include right-hand side in output |
true |
|
Include \(\psi\) field in output |
true |
|
Include stress in output |
true |
|
Include strain in output |
true |
|
Dashpot damping (damps velocity) |
0.0 |
|
Newtonian viscous damping (damps velocity gradient) |
0.0 |
|
Initializer for RHS |
none expression |
|
Select the mechanical boundary conditions |
constant tensiontest expression |
|
Print out model variables (if enabled by model) |
false |
|
initial condition for right hand side (body force) |
constant expression trig |
|
Timestep interval for elastic solves (default - solve every time) |
0 |
|
Maximum multigrid coarsening level (default - none, maximum coarsening) |
-1 |
|
Whether to include residual output field |
false |
|
Whether to refine based on elastic solution |
0.01 |
|
Set this to true to zero out the displacement before each solve. (This is a temporary fix - we need to figure out why this is needed.) |
false |
|
Time to start doing the elastic solve (by default, start immediately) |
-1.0 |
API definitions in src/Integrator/Base/Mechanics.H
Classes
Integrator::Base::MechanicsMethods
Mechanics()~Mechanics()Initialize(int lev) override- Use the #ic object to initialize::Temp.UpdateModel(int a_step, Set::Scalar a_time)=0TimeStepBegin(Set::Scalar a_time, int a_step) overrideAdvance(int lev, Set::Scalar time, Set::Scalar dt) overrideIntegrate(int amrlev, Set::Scalar, int, const amrex::MFIter &mfi, const amrex::Box &a_box) overrideTagCellsForRefinement(int lev, amrex::TagBoxArray &a_tags, Set::Scalar, int) override
Variables
Set::Field<MODEL> Integrator::Base::Mechanics< MODEL >::model_mfSet::Field<MATRIX4> Integrator::Base::Mechanics< MODEL >::ddw_mfSet::Field<Set::Scalar> Integrator::Base::Mechanics< MODEL >::psi_mfbool Integrator::Base::Mechanics< MODEL >::psi_onint Integrator::Base::Mechanics< MODEL >::m_intervalType Integrator::Base::Mechanics< MODEL >::m_typeSet::Field<Set::Vector> Integrator::Base::Mechanics< MODEL >::disp_mfSet::Field<Set::Vector> Integrator::Base::Mechanics< MODEL >::rhs_mfSet::Field<Set::Vector> Integrator::Base::Mechanics< MODEL >::res_mfSet::Field<Set::Matrix> Integrator::Base::Mechanics< MODEL >::stress_mfSet::Field<Set::Matrix> Integrator::Base::Mechanics< MODEL >::strain_mfSet::Field<Set::Vector> Integrator::Base::Mechanics< MODEL >::disp_old_mfSet::Field<Set::Vector> Integrator::Base::Mechanics< MODEL >::vel_mfSet::Field<Set::Vector> Integrator::Base::Mechanics< MODEL >::vel_old_mfSet::Scalar Integrator::Base::Mechanics< MODEL >::rhoSet::Scalar Integrator::Base::Mechanics< MODEL >::mu_dashpotSet::Scalar Integrator::Base::Mechanics< MODEL >::mu_newtonSet::Vector Integrator::Base::Mechanics< MODEL >::trac_hi[AMREX_SPACEDIM]Set::Vector Integrator::Base::Mechanics< MODEL >::disp_hi[AMREX_SPACEDIM]IC::IC<Set::Vector>* Integrator::Base::Mechanics< MODEL >::ic_rhsIC::IC<Set::Vector>* Integrator::Base::Mechanics< MODEL >::velocity_icSolver::Nonlocal::Newton<MODEL> Integrator::Base::Mechanics< MODEL >::solverBC::Operator::Elastic::Elastic* Integrator::Base::Mechanics< MODEL >::bcSet::Scalar Integrator::Base::Mechanics< MODEL >::m_elastic_ref_thresholdbool Integrator::Base::Mechanics< MODEL >::m_print_modelbool Integrator::Base::Mechanics< MODEL >::m_print_residualbool Integrator::Base::Mechanics< MODEL >::m_time_evolvingint Integrator::Base::Mechanics< MODEL >::m_max_coarsening_levelbool Integrator::Base::Mechanics< MODEL >::m_zero_out_displacementbool Integrator::Base::Mechanics< MODEL >::plot_dispbool Integrator::Base::Mechanics< MODEL >::plot_stressbool Integrator::Base::Mechanics< MODEL >::plot_strainbool Integrator::Base::Mechanics< MODEL >::plot_psibool Integrator::Base::Mechanics< MODEL >::plot_rhsSet::Scalar Integrator::Base::Mechanics< MODEL >::tstart
Model
Model::Model
In Alamo, any type of constitutive behavior is encapsulated in a “Model”. There is a broad range of model types, and so there is no abstract Model class. Rather, the base Model classes are stored in subsets of Model.
API definitions in src/Model/Model.H
Classes
Model::Defect
Model::Defect::Disconnection
src/Model/Defect/Disconnection.H
This simulates the creation of “disconnection pairs” at a GB by perturbing the order parameter \(\eta\) with a gaussian.
Disconnections can be nucleated randomly, or they can be added in a controlled way through the “fixed” option.
See the following reference for further details
Mahi Gokuli and Brandon Runnels. Multiphase field modeling of grain boundary migration mediated by emergent disconnections. Acta Materialia, 217:117149, 2021.
Parameter |
Type |
Values |
|---|---|---|
time to start applying disconnections |
0.0 |
|
nucleation energy |
0.0 |
|
characteristic time |
1.0 |
|
temperature |
0.0 |
|
characteristic size |
0.0 |
|
interval between generation events |
required |
|
regularization epsilon |
1E-20 |
|
whether to manually specify disconnection nucleation points |
||
array of x locations |
||
array of y locations |
||
array of order parameter number |
||
time to appear |
||
verbosity |
false |
|
API definitions in src/Model/Defect/Disconnection.H
Classes
Model::Defect::DisconnectionMethods
Disconnection()~Disconnection()Nucleate(Set::Field< Set::Scalar > &eta_mf, std::vector< amrex::Geometry > &geom, Set::Scalar timestep, Set::Scalar time, int iter)- This operates on an entire field, and manages all of the MPI communication necessary for consistent nucleation.
Variables
bool Model::Defect::Disconnection::verboseSet::Scalar Model::Defect::Disconnection::tstartSet::Scalar Model::Defect::Disconnection::nucleation_energySet::Scalar Model::Defect::Disconnection::tau_volSet::Scalar Model::Defect::Disconnection::tempSet::Scalar Model::Defect::Disconnection::box_sizeSet::Scalar Model::Defect::Disconnection::epsilonint Model::Defect::Disconnection::intervalstd::uniform_real_distribution<double> Model::Defect::Disconnection::unif_diststd::uniform_int_distribution<int> Model::Defect::Disconnection::int_dist- random number distribution for spatial locationstd::default_random_engine Model::Defect::Disconnection::rand_num_gen- random number generator for phasestruct Model::Defect::Disconnection Model::Defect::Disconnection::fixed- generator objectconst Set::Scalar Model::Defect::Disconnection::K_b- list of nucleation site phases (up or down)int Model::Defect::Disconnection::onstd::vector< Set::Scalar > Model::Defect::Disconnection::sitexstd::vector< Set::Scalar > Model::Defect::Disconnection::sitey- list of nucleation site x coordinatesstd::vector< int > Model::Defect::Disconnection::phases- list of nucleation stie y coordinatesstd::vector<Set::Scalar> Model::Defect::Disconnection::timestd::vector<bool> Model::Defect::Disconnection::done
Model::Interface
Model::Interface::Crack
Model::Interface::Crack::Crack
src/Model/Interface/Crack/Crack.H
API definitions in src/Model/Interface/Crack/Crack.H
Classes
Model::Interface::Crack::CrackMethods
Crack()w_phi(Set::Scalar c, Set::Scalar)g_phi(Set::Scalar c, Set::Scalar p=0.)Dw_phi(Set::Scalar c, Set::Scalar)Dg_phi(Set::Scalar c, Set::Scalar p=0.)Dg2_phi(Set::Scalar c)Gc(Set::Scalar theta)=0DGc(Set::Scalar theta)=0DDGc(Set::Scalar theta)=0Zeta(Set::Scalar theta)=0Mobility(Set::Scalar theta)=0DrivingForceThreshold(Set::Scalar theta)=0ExportToFile(std::string filename, amrex::Real dTheta)SetGType(const GType a_type)SetWType(const WType a_type)SetG2Type(const G2Type)SetDuctileExponent(const Set::Scalar m)SetPFCZMConstants(const Set::Scalar a_pf_czm_order, const Set::Scalar a_pf_czm_a0)
Variables
GType Model::Interface::Crack::Crack::g_typeG2Type Model::Interface::Crack::Crack::g2_typeWType Model::Interface::Crack::Crack::w_typeSet::Scalar Model::Interface::Crack::Crack::m_d_exponentSet::Scalar Model::Interface::Crack::Crack::m_pf_czm_orderSet::Scalar Model::Interface::Crack::Crack::m_pf_czm_a0
Model::Interface::Crack::Constant
src/Model/Interface/Crack/Constant.H
Parameter |
Type |
Values |
|---|---|---|
Fracture energy |
||
Lengthscale regularization |
||
Mobility (speed) |
||
Threshold |
||
Type of g function to use {square, multiwell, 4c3, squarep, squarepexp, cubicm} |
||
Type o w function to use {square, multiwell, multiwell2, 4c3} |
||
Ductile exponent |
||
API definitions in src/Model/Interface/Crack/Constant.H
Classes
Model::Interface::Crack::ConstantMethods
Constant()Gc(Set::Scalar)DGc(Set::Scalar)DDGc(Set::Scalar)Zeta(Set::Scalar)Mobility(Set::Scalar)DrivingForceThreshold(Set::Scalar)
Variables
Set::Scalar Model::Interface::Crack::Constant::_GcSet::Scalar Model::Interface::Crack::Constant::zetaSet::Scalar Model::Interface::Crack::Constant::mobilitySet::Scalar Model::Interface::Crack::Constant::threshold
Model::Interface::Crack::PFCZM
src/Model/Interface/Crack/PFCZM.H
Parameter |
Type |
Values |
|---|---|---|
Order 1, 1.5, or 2 (Wu 2024, JMPS) |
1.0 |
|
Fracture energy in N/m |
1.0e3 |
|
Lengthscale regularization in m |
1.e-5 |
|
Toggle to determine mixed mode |
false |
|
Young's modulus |
2.e11 |
|
Poisson's ratio $\nu$ |
0.3 |
|
type of failure surface degradation function. For now, we only have linear softening |
wang2023 mohr mc columb |
|
Fracture strength |
1.e6 |
|
$\chi$ value |
1.0 |
|
Compressive strength |
4.e8 |
|
cohesion coefficient for MC FS type |
1.0 |
|
friction coefficient for MC FS type |
0.5 |
|
Young's modulus |
2.e11 |
|
fracture strength beyond which softening starts [Pa] |
1.e6 |
|
Mobility (speed) |
1.0e-2 |
|
Threshold |
0.0 |
|
degradation function. For now, we only have linear softening |
wu_linear |
|
geometric function. no choice except for the optimal one for now. |
wu |
API definitions in src/Model/Interface/Crack/PFCZM.H
Classes
Model::Interface::Crack::PFCZMMethods
PFCZM()=default~PFCZM()=defaultGc(Set::Scalar)c_alpha()l_w()mixed_mode()failure_surface()GcI_bar()GcII_bar()chi()beta_bar()sig_t()tau_s()cohesion()friction()DGc(Set::Scalar)DDGc(Set::Scalar)Zeta(Set::Scalar)Mobility(Set::Scalar)DrivingForceThreshold(Set::Scalar)
Variables
Set::Scalar Model::Interface::Crack::PFCZM::_GcSet::Scalar Model::Interface::Crack::PFCZM::_c_alphaSet::Scalar Model::Interface::Crack::PFCZM::_l_wSet::Scalar Model::Interface::Crack::PFCZM::zetaSet::Scalar Model::Interface::Crack::PFCZM::mobilitySet::Scalar Model::Interface::Crack::PFCZM::thresholdSet::Scalar Model::Interface::Crack::PFCZM::czm_a0Set::Scalar Model::Interface::Crack::PFCZM::czm_orderbool Model::Interface::Crack::PFCZM::_mixed_modeFSType Model::Interface::Crack::PFCZM::_failure_surfaceSet::Scalar Model::Interface::Crack::PFCZM::_GcI_barSet::Scalar Model::Interface::Crack::PFCZM::_GcII_barSet::Scalar Model::Interface::Crack::PFCZM::_chiSet::Scalar Model::Interface::Crack::PFCZM::k1Set::Scalar Model::Interface::Crack::PFCZM::_beta_barSet::Scalar Model::Interface::Crack::PFCZM::_sig_tSet::Scalar Model::Interface::Crack::PFCZM::_tau_sSet::Scalar Model::Interface::Crack::PFCZM::_cohesionSet::Scalar Model::Interface::Crack::PFCZM::_friction
Model::Interface::Crack::Sin
src/Model/Interface/Crack/Sin.H
Parameter |
Type |
Values |
|---|---|---|
Min Gc (fracture energy) value |
||
Max Gc (fracture energy)value |
||
Angle offset |
||
Regularization |
||
Crack mobiilty |
||
Threshold for kinetics |
||
Type of g function to use {square, multiwell, 4c3, squarep, squarepexp, cubicm} |
||
Type o w function to use {square, multiwell, multiwell2, 4c3} |
||
Ductile exponent |
||
API definitions in src/Model/Interface/Crack/Sin.H
Classes
Model::Interface::Crack::SinMethods
Sin()Gc(Set::Scalar theta)DGc(Set::Scalar theta)DDGc(Set::Scalar theta)Zeta(Set::Scalar)Mobility(Set::Scalar)DrivingForceThreshold(Set::Scalar)
Variables
Set::Scalar Model::Interface::Crack::Sin::zetaSet::Scalar Model::Interface::Crack::Sin::mobilitySet::Scalar Model::Interface::Crack::Sin::Gc0Set::Scalar Model::Interface::Crack::Sin::Gc1Set::Scalar Model::Interface::Crack::Sin::theta0Set::Scalar Model::Interface::Crack::Sin::threshold
Model::Interface::GB
Model::Interface::GB::GB
API definitions in src/Model/Interface/GB/GB.H
Classes
Model::Interface::GB::GBMethods
GB()~GB()W(const Set::Scalar theta) const =0DW(const Set::Scalar theta) const =0DDW(const Set::Scalar theta) const =0W(const Set::Vector &a_n) constDW(const Set::Vector &, const Set::Vector &) constDDW(const Set::Vector &, const Set::Vector &) constExportToFile(std::string filename, amrex::Real dTheta)DrivingForce(const Set::Vector &Deta, const Set::Matrix &DDeta, const Set::Matrix4< AMREX_SPACEDIM, Set::Sym::Full > &DDDDeta)
Variables
Regularization Model::Interface::GB::GB::regularization
Model::Interface::GB::AbsSin
src/Model/Interface/GB/AbsSin.H
Parameter |
Type |
Values |
|---|---|---|
Angle offset (degrees) |
||
Minimum energy |
||
Energy multiplier |
||
API definitions in src/Model/Interface/GB/AbsSin.H
Classes
Model::Interface::GB::AbsSinMethods
AbsSin()AbsSin(IO::ParmParse &pp)AbsSin(IO::ParmParse &pp, std::string name)AbsSin(amrex::Real _theta0, amrex::Real _sigma0, amrex::Real _sigma1)Define(amrex::Real _theta0, amrex::Real _sigma0, amrex::Real _sigma1)Randomize()W(const Set::Scalar theta) constDW(const Set::Scalar theta) constDDW(const Set::Scalar theta) const
Variables
Set::Scalar Model::Interface::GB::AbsSin::theta0Set::Scalar Model::Interface::GB::AbsSin::sigma0Set::Scalar Model::Interface::GB::AbsSin::sigma1
Model::Interface::GB::Read
Parameter |
Type |
Values |
|---|---|---|
Filename containing GB data |
file path |
API definitions in src/Model/Interface/GB/Read.H
Classes
Model::Interface::GB::Read- Reads the data from a file and computes energies and its derivates.Methods
Read()- in data.Read(IO::ParmParse &pp)Read(IO::ParmParse &pp, std::string name)Read(std::string filename)Define(std::string filename)W(const Set::Scalar theta) constDW(const Set::Scalar theta) constDDW(const Set::Scalar theta) const
Variables
Numeric::Interpolator::Linear<Set::Scalar> Model::Interface::GB::Read::m_wNumeric::Interpolator::Linear<Set::Scalar> Model::Interface::GB::Read::m_dwNumeric::Interpolator::Linear<Set::Scalar> Model::Interface::GB::Read::m_ddw
Model::Interface::GB::Sin
Parameter |
Type |
Values |
|---|---|---|
Theta offset (degrees) |
||
Minimum energy |
||
Energy multiplier |
||
Frequency number (integer) |
||
API definitions in src/Model/Interface/GB/Sin.H
Classes
Model::Interface::GB::SinMethods
Sin()Sin(IO::ParmParse &pp)Sin(IO::ParmParse &pp, std::string name)Sin(amrex::Real _theta0, amrex::Real _sigma0, amrex::Real _sigma1)Define(amrex::Real _theta0, amrex::Real _sigma0, amrex::Real _sigma1)Randomize()W(const Set::Scalar theta) constDW(const Set::Scalar theta) constDDW(const Set::Scalar theta) const
Variables
Set::Scalar Model::Interface::GB::Sin::theta0Set::Scalar Model::Interface::GB::Sin::sigma0Set::Scalar Model::Interface::GB::Sin::sigma1Set::Scalar Model::Interface::GB::Sin::n
Model::Interface::GB::SH
Parameter |
Type |
Values |
|---|---|---|
Theta offset (degrees) |
||
Phi offset (radians) |
||
Minimum energy value |
||
Energy multiplier |
||
Type of regularization to use: {wilhelm,k23} |
||
API definitions in src/Model/Interface/GB/SH.H
Classes
Model::Interface::GB::SH- A 2D interface model class.Methods
SH()SH(IO::ParmParse &pp)SH(IO::ParmParse &pp, std::string name)SH(const amrex::Real a_theta0, const amrex::Real a_phi0, const amrex::Real a_sigma0, const amrex::Real a_sigma1)Define(const amrex::Real a_theta0, const amrex::Real a_phi0, const amrex::Real a_sigma0, const amrex::Real a_sigma1)Randomize()W(const Set::Scalar a_theta, const Set::Scalar a_phi) constDW(const Set::Scalar a_theta, const Set::Scalar a_phi) constW(const Set::Vector &a_n) const overrideDW(const Set::Vector &a_n, const Set::Vector &t_n) const overrideDDW(const Set::Vector &a_n, const Set::Vector &t_n) const overrideW(const Set::Scalar) const overrideDW(const Set::Scalar) const overrideDDW(const Set::Scalar) const override
Variables
Set::Scalar Model::Interface::GB::SH::theta0Set::Scalar Model::Interface::GB::SH::phi0Set::Scalar Model::Interface::GB::SH::sigma0Set::Scalar Model::Interface::GB::SH::sigma1
Model::Propellant
Model::Propellant::Propellant
src/Model/Propellant/Propellant.H
This header defines the Model::Propellant::Propellant class, which introduces a static
dispatch mechanism to replicate traditional dynamic polymorphism without incurring the performance
cost of virtual table lookups.
The Propellant class acts as the static equivalent of a pure abstract interface for
composite solid propellant models. Each function (e.g., get_K, get_cp,
get_L) statically dispatches to the appropriate underlying implementation, encapsulating
key thermophysical properties such as density, thermal conductivity, and specific heat. The
set_pressure and get_* functions are resolved at compile-time for GPU
compatibility and runtime performance.
This system enables polymorphic behavior without relying on runtime virtual functions, making it suitable for high-performance computing environments.
API definitions in src/Model/Propellant/Propellant.H
Classes
Model::Propellant::PropellantMethods
set_pressure(Set::Scalar P)get_K(const Set::Scalar phi)get_rho(const Set::Scalar phi)get_cp(const Set::Scalar phi)get_qdot(const Set::Scalar mdot, const Set::Scalar phi)get_L(const Set::Scalar phi, const Set::Scalar T)
Variables
std::tuple<OBJ...> Model::Propellant::Propellant< OBJ >::objint Model::Propellant::Propellant< OBJ >::selected
Model::Propellant::FullFeedback
src/Model/Propellant/FullFeedback.H
This SCP model implements the method described in the following paper
Maycon Meier, Emma Schmidt, Patrick Martinez, J Matt Quinlan, and Brandon Runnels. Diffuse interface method for solid composite propellant ignition and regression. Combustion and Flame, 259:113120, 2024.
This method imitates inheritance Propellant::Propellant using static polymorphism
Parameter |
Type |
Values |
|---|---|---|
AP/HTPB interface length |
"10.0_um" |
|
Reference interface length for heat integration |
"10.0_um" |
|
Constant offset for $\zeta$ adjustment with pressure |
"45.0_um" |
|
Scaling factors for $\zeta$ adjustment with pressure |
"-6.42_um" |
|
Surrogate heat flux model paramater - AP |
required |
|
Surrogate heat flux model paramater - HTPB |
required |
|
Surrogate heat flux model paramater - Total |
required |
|
Surrogate heat flux model paramater - AP |
required |
|
Surrogate heat flux model paramater - HTPB |
required |
|
Surrogate heat flux model paramater - Total |
required |
|
Surrogate heat flux model paramater - Total |
required |
|
Whether to use pressure to determined the reference Zeta |
true |
|
Reference pressure for pressure nondimensionalization |
"1_MPa" |
|
AP Density |
required |
|
HTPB Density |
required |
|
AP Thermal Conductivity |
required |
|
HTPB Thermal Conductivity |
required |
|
AP Specific Heat |
required |
|
HTPB Specific Heat |
required |
|
AP Pre-exponential factor for Arrhenius Law |
required |
|
HTPB Pre-exponential factor for Arrhenius Law |
required |
|
COMBINED AP Activation Energy, divided by Rg, for Arrhenius Law (has units of temperature) |
required |
|
COMBINED HTPB Activation Energy, divided by Rg, for Arrhenius Law(has units of temperature) |
required |
|
Whether to include pressure to the arrhenius law [??]n |
false |
|
HTPB Activation Energy for Arrhenius Law |
"0.0" |
API definitions in src/Model/Propellant/FullFeedback.H
Classes
Model::Propellant::FullFeedbackMethods
FullFeedback()=defaultFullFeedback(IO::ParmParse &pp, std::string name)set_pressure(const Set::Scalar a_P)get_qdot(const Set::Scalar mdot, const Set::Scalar phi)get_K(const Set::Scalar phi)get_rho(const Set::Scalar phi)get_cp(const Set::Scalar phi)get_L(Set::Scalar phi, Set::Scalar T)
Variables
Set::Scalar Model::Propellant::FullFeedback::zetaSet::Scalar Model::Propellant::FullFeedback::zeta_0Set::Scalar Model::Propellant::FullFeedback::a1Set::Scalar Model::Propellant::FullFeedback::a2Set::Scalar Model::Propellant::FullFeedback::a3Set::Scalar Model::Propellant::FullFeedback::b1Set::Scalar Model::Propellant::FullFeedback::b2Set::Scalar Model::Propellant::FullFeedback::b3Set::Scalar Model::Propellant::FullFeedback::c1bool Model::Propellant::FullFeedback::arrhenius_dependencySet::Scalar Model::Propellant::FullFeedback::mlocal_apSet::Scalar Model::Propellant::FullFeedback::mlocal_combSet::Scalar Model::Propellant::FullFeedback::mlocal_htpbSet::Scalar Model::Propellant::FullFeedback::k_apSet::Scalar Model::Propellant::FullFeedback::k_htpbSet::Scalar Model::Propellant::FullFeedback::rho_apSet::Scalar Model::Propellant::FullFeedback::rho_htpbSet::Scalar Model::Propellant::FullFeedback::cp_apSet::Scalar Model::Propellant::FullFeedback::cp_htpbint Model::Propellant::FullFeedback::mob_apSet::Scalar Model::Propellant::FullFeedback::m_apSet::Scalar Model::Propellant::FullFeedback::m_htpbSet::Scalar Model::Propellant::FullFeedback::m_combSet::Scalar Model::Propellant::FullFeedback::E_apSet::Scalar Model::Propellant::FullFeedback::E_htpbSet::Scalar Model::Propellant::FullFeedback::boundSet::Scalar Model::Propellant::FullFeedback::PrefSet::Scalar Model::Propellant::FullFeedback::PbarSet::Scalar Model::Propellant::FullFeedback::zeta_1Set::Scalar Model::Propellant::FullFeedback::zeta_2Set::Scalar Model::Propellant::FullFeedback::zeta_fit_aSet::Scalar Model::Propellant::FullFeedback::zeta_fit_bSet::Scalar Model::Propellant::FullFeedback::k1Set::Scalar Model::Propellant::FullFeedback::k2Set::Scalar Model::Propellant::FullFeedback::k3Set::Scalar Model::Propellant::FullFeedback::k4
Model::Propellant::Homogenize
src/Model/Propellant/Homogenize.H
Parameter |
Type |
Values |
|---|---|---|
K; dispersion variables are use to create an inert region for the void grain case. An inert region is one that dissipates energy fast enough to remove regression and thermal strain effects. |
||
rho; dispersion variables are use to create an inert region for the void grain case. An inert region is one that dissipates energy fast enough to remove regression and thermal strain effects. |
||
cp; dispersion variables are use to create an inert region for the void grain case. An inert region is one that dissipates energy fast enough to remove regression and thermal strain effects. |
||
AP Density |
required |
|
HTPB Density |
required |
|
AP Thermal Conductivity |
required |
|
HTPB Thermal Conductivity |
required |
|
AP Specific Heat |
required |
|
HTPB Specific Heat |
required |
|
Surgate heat flux model paramater - Homogenized |
1.81 |
|
Surgate heat flux model paramater - Homogenized |
1.34 |
|
AP/HTPB ratio for homogenized domain |
0.8 |
|
AP mass flux reference value |
0.0 |
|
AP Pre-exponential factor for Arrhenius Law |
required |
|
HTPB Pre-exponential factor for Arrhenius Law |
required |
|
AP Activation Energy for Arrhenius Law |
required |
|
HTPB Activation Energy for Arrhenius Law |
required |
|
Whether to include pressure to the arrhenius law [??] |
false |
|
HTPB Activation Energy for Arrhenius Law |
0.0 |
|
API definitions in src/Model/Propellant/Homogenize.H
Classes
Model::Propellant::HomogenizeMethods
Homogenize()=defaultHomogenize(IO::ParmParse &pp, std::string name)set_pressure(const Set::Scalar P)get_qdot(const Set::Scalar mdot, const Set::Scalar phi)get_K(const Set::Scalar phi)get_rho(const Set::Scalar phi)get_cp(const Set::Scalar phi)get_L(Set::Scalar phi, Set::Scalar T)
Variables
Set::Scalar Model::Propellant::Homogenize::PSet::Scalar Model::Propellant::Homogenize::massfractionSet::Scalar Model::Propellant::Homogenize::dispersion1Set::Scalar Model::Propellant::Homogenize::dispersion2Set::Scalar Model::Propellant::Homogenize::dispersion3Set::Scalar Model::Propellant::Homogenize::k_apSet::Scalar Model::Propellant::Homogenize::k_htpbSet::Scalar Model::Propellant::Homogenize::rho_apSet::Scalar Model::Propellant::Homogenize::rho_htpbSet::Scalar Model::Propellant::Homogenize::cp_apSet::Scalar Model::Propellant::Homogenize::cp_htpbSet::Scalar Model::Propellant::Homogenize::h1Set::Scalar Model::Propellant::Homogenize::h2Set::Scalar Model::Propellant::Homogenize::mlocal_apbool Model::Propellant::Homogenize::mob_apSet::Scalar Model::Propellant::Homogenize::m_apSet::Scalar Model::Propellant::Homogenize::m_htpbSet::Scalar Model::Propellant::Homogenize::m_combSet::Scalar Model::Propellant::Homogenize::E_apSet::Scalar Model::Propellant::Homogenize::E_htpbSet::Scalar Model::Propellant::Homogenize::boundSet::Scalar Model::Propellant::Homogenize::k4Set::Scalar Model::Propellant::Homogenize::mlocal_htpb
Model::Propellant::PowerLaw
src/Model/Propellant/PowerLaw.H
This SCP model implements the method described in the following paper
Baburaj Kanagarajan, J Matt Quinlan, and Brandon Runnels. A diffuse interface method for solid-phase modeling of regression behavior in solid composite propellants. Combustion and Flame, 2022.
This method imitates inheritance Propellant::Propellant using static polymorphism
Parameter |
Type |
Values |
|---|---|---|
Scaling factor for mobility |
required |
|
AP power pressure law parameter (r*P^n) |
required |
|
HTPB power pressure law parameter (r*P^n) |
required |
|
AP/HTPB power pressure law parameter (r*P^n) |
required |
|
AP power pressure law parameter (r*P^n) |
required |
|
HTPB power pressure law parameter (r*P^n) |
required |
|
AP/HTPB power pressure law parameter (r*P^n) |
required |
|
jump in chemical potential |
1.0 |
API definitions in src/Model/Propellant/PowerLaw.H
Classes
Model::Propellant::PowerLawMethods
PowerLaw()=defaultPowerLaw(IO::ParmParse &pp, std::string name)set_pressure(const Set::Scalar P)get_K(const Set::Scalar)get_rho(const Set::Scalar)get_cp(const Set::Scalar)get_qdot(const Set::Scalar, const Set::Scalar)get_L(Set::Scalar phi, Set::Scalar)
Variables
Set::Scalar Model::Propellant::PowerLaw::gammaSet::Scalar Model::Propellant::PowerLaw::r_apSet::Scalar Model::Propellant::PowerLaw::r_htpbSet::Scalar Model::Propellant::PowerLaw::r_combSet::Scalar Model::Propellant::PowerLaw::n_apSet::Scalar Model::Propellant::PowerLaw::n_htpbSet::Scalar Model::Propellant::PowerLaw::n_combSet::Scalar Model::Propellant::PowerLaw::fmod_apSet::Scalar Model::Propellant::PowerLaw::fmod_htpbSet::Scalar Model::Propellant::PowerLaw::fmod_combSet::Scalar Model::Propellant::PowerLaw::deltaw
Model::Solid
Model::Solid::Solid
Solid models are used with the Integrator::Mechanics integrator, which
implements the Solver::Nonlocal::Newton elasticity solver.
All solid models inherit from the Model::Solid base class, which requires
all of the necessary components to be used in a mechanics solve.
Model classes have basically two functions:
Provide energy (W), stress (DW), and modulus (DDW) based on a kinematic variable
Evolve internal variables in time.
API definitions in src/Model/Solid/Solid.H
Classes
Model::Solid::SolidMethods
Solid()~Solid()W(const Set::Matrix &) constDW(const Set::Matrix &) constDDW(const Set::Matrix &) constAdvance(Set::Scalar, Set::Matrix, Set::Matrix, Set::Scalar)ContainsNan()Print(std::ostream &out) const
Model::Solid::ExtClassOperators
src/Model/Solid/ExtClassOperators.H
API definitions in src/Model/Solid/ExtClassOperators.H
Classes
Model::Solid::InClassOperators
src/Model/Solid/InClassOperators.H
API definitions in src/Model/Solid/InClassOperators.H
Classes
Model::Solid::Affine
Model::Solid::Affine::Affine
src/Model/Solid/Affine/Affine.H
“Affine” generally means “linear with an offset”. Here we use “affine” to refer to models that are elastic with an eigenstrain, i.e.
The quantity \(\varepsilon_0\) is any kind of eigenstrain - examples include thermal strain, plastic strain, or viscous strain. This class can be used directly, where the eigenstrain is read in or set by the integrator. There are also classes (particularly visco/plastic models) that inherit from this type of model.
API definitions in src/Model/Solid/Affine/Affine.H
Classes
Model::Solid::Affine::AffineMethods
SetF0(Set::Matrix a_F0)
Variables
Set::Matrix4<AMREX_SPACEDIM,SYM> Model::Solid::Affine::Affine< SYM >::ddwSet::Matrix Model::Solid::Affine::Affine< SYM >::F0
Model::Solid::Affine::Cubic
src/Model/Solid/Affine/Cubic.H
This class extends Model::Solid::Linear::Cubic by adding an eigenstrain \(\mathbf{F}_0\).
Parameter |
Type |
Values |
|---|---|---|
Eigenstrain |
||
API definitions in src/Model/Solid/Affine/Cubic.H
Classes
Model::Solid::Affine::CubicMethods
Cubic()Cubic(Linear::Cubic base)~Cubic()Define(Set::Scalar C11, Set::Scalar C12, Set::Scalar C44, Set::Scalar phi1, Set::Scalar Phi, Set::Scalar phi2, Set::Matrix a_F0=Set::Matrix::Zero())Define(Set::Scalar C11, Set::Scalar C12, Set::Scalar C44, Eigen::Matrix3d R, Set::Matrix a_F0=Set::Matrix::Zero())W(const Set::Matrix &gradu) const overrideDW(const Set::Matrix &gradu) const overrideDDW(const Set::Matrix &gradu) const overridePrint(std::ostream &out) const overrideSetF0(Set::Matrix &a_F0)
Variables
Set::Matrix Model::Solid::Affine::Cubic::F0
Model::Solid::Affine::Hexagonal
src/Model/Solid/Affine/Hexagonal.H
This model implements an affine hexagonal material:
where \(W_{aff}\) is the present model, \(\mathbf{F}_0\) is the eigenstrain, and \(W_{lin}\) is the cubic model defined in Model::Solid::Linear::Hexagonal.
Parameter |
Type |
Values |
|---|---|---|
Eigenstrain matrix. Can be defined in 2D or 3D. |
||
API definitions in src/Model/Solid/Affine/Hexagonal.H
Classes
Model::Solid::Affine::HexagonalMethods
Hexagonal()Hexagonal(Linear::Hexagonal base)~Hexagonal()Define(Set::Scalar C11, Set::Scalar C12, Set::Scalar C13, Set::Scalar C33, Set::Scalar C44, Set::Scalar phi1, Set::Scalar Phi, Set::Scalar phi2, Set::Matrix a_F0=Set::Matrix::Zero())Define(Set::Scalar C11, Set::Scalar C12, Set::Scalar C13, Set::Scalar C33, Set::Scalar C44, Eigen::Matrix3d R, Set::Matrix a_F0=Set::Matrix::Zero())W(const Set::Matrix &gradu) const overrideDW(const Set::Matrix &gradu) const overrideDDW(const Set::Matrix &gradu) const overridePrint(std::ostream &out) const overrideSetF0(Set::Matrix &a_F0)
Variables
Set::Matrix Model::Solid::Affine::Hexagonal::F0
Model::Solid::Affine::Isotropic
src/Model/Solid/Affine/Isotropic.H
Parameter |
Type |
Values |
|---|---|---|
Eigendeformation gradient |
||
API definitions in src/Model/Solid/Affine/Isotropic.H
Classes
Model::Solid::Affine::IsotropicMethods
Isotropic()Isotropic(Affine< Set::Sym::Isotropic > base)Isotropic(Set::Scalar a_mu, Set::Scalar a_lambda, Set::Matrix a_F0=Set::Matrix::Zero())Define(Set::Scalar a_mu, Set::Scalar a_lambda, Set::Matrix a_F0)Define(Set::Scalar a_mu, Set::Scalar a_lambda)W(const Set::Matrix &F) const overrideDW(const Set::Matrix &F) const overrideDDW(const Set::Matrix &) const overridePrint(std::ostream &out) const overrideContainsNan() override
Model::Solid::Affine::J2
This models an isotropic elastic-perfectly-plastic, non-time-dependent solid model.
The energy and derivatives are:
where \(\mathbb{C}\) is an isotropic Set::Matrix4 and \(\varepsilon_p\) is
is stored in the F0 eigenstrain.
The plastic strain is evolved according to the following:
Calculate the deviatoric stress \(\sigma_v=\sigma - \frac{1}{3}tr(\sigma)\mathbf{I}\)
Calculate \(J_2=\sqrt{\frac{3}{2}\sigma_v:\sigma_v}\)
If \(J_2<\sigma_0\) then quit - no plasticity occurs
Calculate \(\Delta\sigma = (1-\frac{\sigma_0}{J_2})\), which projects the stress back on the yield surface.
Convert to change in plastic strain, \(\Delta\varepsilon=\mathbb{C}^{-1}\Delta\sigma\)
Update plastic strain: \(\varepsilon_p += \Delta\varepsilon\)
Notes:
This does not implement any kind of hardening model. Rate hardening, isotropic hardening, and kinematic hardening have yet to be implemneted.
Parameter |
Type |
Values |
|---|---|---|
J2 Yield criterion |
1.0 |
|
Hardening coefficient (negative value disables rate hardening) |
-1.0 |
|
Rate coefficient (negative value disables rate hardening) |
-1.0 |
API definitions in src/Model/Solid/Affine/J2.H
Classes
Model::Solid::Affine::J2Methods
J2()Advance(Set::Scalar dt, Set::Matrix eps, Set::Matrix, Set::Scalar) override
Variables
Set::Scalar Model::Solid::Affine::J2::sigma0Set::Scalar Model::Solid::Affine::J2::hardeningSet::Scalar Model::Solid::Affine::J2::ratecoeffSet::Scalar Model::Solid::Affine::J2::alpha
Model::Solid::Affine::J2Plastic
src/Model/Solid/Affine/J2Plastic.H
Parameter |
Type |
Values |
|---|---|---|
Yield strength |
||
hardening parameter |
||
$\theta$ |
||
API definitions in src/Model/Solid/Affine/J2Plastic.H
Classes
Model::Solid::Affine::J2PlasticMethods
J2Plastic()DefineSlipSystem(Set::Scalar a_yield, Set::Scalar a_hardening, Set::Scalar a_theta)YieldSurface()PlasticEnergy()Advance(Set::Scalar, Set::Matrix eps, Set::Matrix) override
Variables
Set::Matrix Model::Solid::Affine::J2Plastic::betaSet::Matrix Model::Solid::Affine::J2Plastic::strain_prevSet::Scalar Model::Solid::Affine::J2Plastic::alphaSet::Scalar Model::Solid::Affine::J2Plastic::thetaSet::Scalar Model::Solid::Affine::J2Plastic::yield_strengthSet::Scalar Model::Solid::Affine::J2Plastic::hardening_modulus
Model::Solid::Finite
Model::Solid::Finite::CrystalPlastic
src/Model/Solid/Finite/CrystalPlastic.H
A basic and relatively untested implementation of finite-deformation FCC crystal plasticity. Use with caution.
Inherits from Model::Solid::Finite::PseudoLinear::Cubic to provide elastic response.
Plastic flow modeled as:
where \(\mathbf{F}=\mathbf{F}^e\mathbf{F}^p\) and \(\gamma_n\) are slips on system \(n\).
Power law rate hardening is used in the integration of slips:
Parameter |
Type |
Values |
|---|---|---|
Critical resolved shear stress \(\tau_{crss}\) |
||
Rate hardening coefficient \(\dot{\gamma}_0\) |
1.0 |
|
Inverse of the hardening exponent \(\frac{1}{m}\) |
0.5 |
|
Time to activate plastic slip |
0.0 |
|
API definitions in src/Model/Solid/Finite/CrystalPlastic.H
Classes
Model::Solid::Finite::CrystalPlasticMethods
CrystalPlastic()~CrystalPlastic()W(const Set::Matrix &F) const overrideDW(const Set::Matrix &F) const overrideDDW(const Set::Matrix &F) const overrideAdvance(Set::Scalar dt, Set::Matrix, Set::Matrix P, Set::Scalar time) override
Variables
Set::Matrix3d Model::Solid::Finite::CrystalPlastic::FpEigen::Matrix<Set::Scalar,12,1> Model::Solid::Finite::CrystalPlastic::gammaSet::Scalar Model::Solid::Finite::CrystalPlastic::m_rate_invEigen::Matrix<Set::Scalar,12,1> Model::Solid::Finite::CrystalPlastic::tau_crssSet::Scalar Model::Solid::Finite::CrystalPlastic::gammadot0Set::Scalar Model::Solid::Finite::CrystalPlastic::tstart
Model::Solid::Finite::NeoHookean
src/Model/Solid/Finite/NeoHookean.H
Parameter |
Type |
Values |
|---|
API definitions in src/Model/Solid/Finite/NeoHookean.H
Classes
Model::Solid::Finite::NeoHookeanMethods
NeoHookean()NeoHookean(Solid< Set::Sym::Major > base)~NeoHookean()W(const Set::Matrix &a_F) const overrideDW(const Set::Matrix &a_F) const overrideDDW(const Set::Matrix &a_F) const overridePrint(std::ostream &out) const override
Variables
Set::Scalar Model::Solid::Finite::NeoHookean::muSet::Scalar Model::Solid::Finite::NeoHookean::kappa
Model::Solid::Finite::NeoHookeanPredeformed
src/Model/Solid/Finite/NeoHookeanPredeformed.H
Parameter |
Type |
Values |
|---|
API definitions in src/Model/Solid/Finite/NeoHookeanPredeformed.H
Classes
Model::Solid::Finite::NeoHookeanPredeformedMethods
NeoHookeanPredeformed()NeoHookeanPredeformed(NeoHookean base)~NeoHookeanPredeformed()W(const Set::Matrix &F) const overrideDW(const Set::Matrix &F) const overrideDDW(const Set::Matrix &F) const overridePrint(std::ostream &out) const override
Variables
Set::Matrix Model::Solid::Finite::NeoHookeanPredeformed::F0
Model::Solid::Finite::PseudoAffine
Model::Solid::Finite::PseudoAffine::Cubic
src/Model/Solid/Finite/PseudoAffine/Cubic.H
Parameter |
Type |
Values |
|---|---|---|
Large-strain eigendeformation (Identity = no deformation) |
||
Small-strain eigendeformation (Zero = no deformation) |
||
API definitions in src/Model/Solid/Finite/PseudoAffine/Cubic.H
Classes
Model::Solid::Finite::PseudoAffine::CubicMethods
Cubic()Cubic(PseudoLinear::Cubic base)~Cubic()W(const Set::Matrix &F) const overrideDW(const Set::Matrix &F) const overrideDDW(const Set::Matrix &F) const override
Variables
Set::Matrix Model::Solid::Finite::PseudoAffine::Cubic::F0
Model::Solid::Finite::PseudoLinear
Model::Solid::Finite::PseudoLinear::Cubic
src/Model/Solid/Finite/PseudoLinear/Cubic.H
Parameter |
Type |
Values |
|---|---|---|
Elastic constant |
1.68 |
|
Elastic constant |
1.21 |
|
Elastic constant |
0.75 |
|
Bunge Euler angle \(\phi_1\) |
0.0 |
|
Bunge Euler angle \(\Phi\) |
0.0 |
|
Bunge Euler angle \(\phi_2\) |
0.0 |
API definitions in src/Model/Solid/Finite/PseudoLinear/Cubic.H
Classes
Model::Solid::Finite::PseudoLinear::CubicMethods
Cubic()~Cubic()W(const Set::Matrix &F) const overrideDW(const Set::Matrix &F) const overrideDDW(const Set::Matrix &F) const overridePrint(std::ostream &out) const override
Variables
Set::Scalar Model::Solid::Finite::PseudoLinear::Cubic::C11Set::Scalar Model::Solid::Finite::PseudoLinear::Cubic::C12Set::Scalar Model::Solid::Finite::PseudoLinear::Cubic::C44Set::Quaternion Model::Solid::Finite::PseudoLinear::Cubic::q
Model::Solid::Linear
Model::Solid::Linear::Cubic
src/Model/Solid/Linear/Cubic.H
This class implements basic cubic elasticity. For a discussion on cubic elasticity, please see this link.
Parameter |
Type |
Values |
|---|---|---|
Elastic constant |
1.68 |
|
Elastic constant |
1.21 |
|
Elastic constant |
0.75 |
|
specify whether using radians or degrees |
radians degrees |
|
Bunge Euler angle \(\phi_1\) about x axis |
0.0 |
|
Bunge Euler angle \(\Phi\) about z axis |
0.0 |
|
Bunge Euler angle \(\phi_2\) about x axis |
0.0 |
API definitions in src/Model/Solid/Linear/Cubic.H
Classes
Model::Solid::Linear::CubicMethods
Cubic()Cubic(Solid< Set::Sym::MajorMinor > base)~Cubic()Define(Set::Scalar C11, Set::Scalar C12, Set::Scalar C44, Set::Scalar phi1, Set::Scalar Phi, Set::Scalar phi2)Define(Set::Scalar C11, Set::Scalar C12, Set::Scalar C44, Eigen::Matrix3d R)W(const Set::Matrix &gradu) const overrideDW(const Set::Matrix &gradu) const overrideDDW(const Set::Matrix &) const overridePrint(std::ostream &out) const override
Variables
Set::Matrix4<AMREX_SPACEDIM,Set::Sym::MajorMinor> Model::Solid::Linear::Cubic::ddw
Model::Solid::Linear::Hexagonal
src/Model/Solid/Linear/Hexagonal.H
This class implements elasticity for a linear material with hexagonal symmetry. The elastic modulus tensor \(\mathbb{C}\) has major and minor symmetry but not cubic symmetry, so the symmetry class for this material is MajorMinor The five elastic constants in the unrotated system are \(C_{11},C_{12},C_{13},C_{33},C_{44}\), and the resulting elastic modulus tensor is
Rotations can be specified using Bunge euler angles to generate a rotation matrix \(\mathbf{R}\). The rotated modulus tensor \(\mathbb{C}^{rot}\) is then
Parameter |
Type |
Values |
|---|---|---|
Elastic constant |
required |
|
Elastic constant |
required |
|
Elastic constant |
required |
|
Elastic constant |
required |
|
Elastic constant |
required |
|
Bunge Euler angle \(\phi_1\) |
0.0 |
|
Bunge Euler angle \(\Phi\) |
0.0 |
|
Bunge Euler angle \(\phi_2\) |
0.0 |
API definitions in src/Model/Solid/Linear/Hexagonal.H
Classes
Model::Solid::Linear::HexagonalMethods
Hexagonal()Hexagonal(Solid< Set::Sym::MajorMinor > base)~Hexagonal()Define(Set::Scalar C11, Set::Scalar C12, Set::Scalar C13, Set::Scalar C33, Set::Scalar C44, Set::Scalar phi1, Set::Scalar Phi, Set::Scalar phi2)Define(Set::Scalar C11, Set::Scalar C12, Set::Scalar C13, Set::Scalar C33, Set::Scalar C44, Eigen::Matrix3d R)W(const Set::Matrix &gradu) const overrideDW(const Set::Matrix &gradu) const overrideDDW(const Set::Matrix &) const overridePrint(std::ostream &out) const override
Variables
Set::Matrix4<AMREX_SPACEDIM,Set::Sym::MajorMinor> Model::Solid::Linear::Hexagonal::ddw
Model::Solid::Linear::Isotropic
src/Model/Solid/Linear/Isotropic.H
This model implements an isotropic linear elastic material. See this link for more information about the theory.
Free energy for a linear material is defined as
For an isotropic material, stress and strain are related through
where \(\lambda\) and \(\mu\) are the Lame constant and shear modulus, respectively.
Users can specify these either through (lame and shear)
OR (lambda and mu) OR (E and nu).
Class methods:
Isotropic(): Basic constructor. Does nothing, and leaves all values initiated as NAN.Isotropic(Solid<Set::Sym::Isotropic> base)Basic constructor. Does nothing gut allows for inheritance.Isotropic(Set::Scalar a_mu, Set::Scalar a_lambda)BAD old-fashioned constructor. Do not use!~Isotropic()Simple destructor. Don’t need to change it.void Define(Set::Scalar a_mu, Set::Scalar a_lambda)BAD old-fashioned way of doing things. UseParseinstead.Set::Scalar W(const Set::Matrix & gradu) const overrideReturns elastic free energy densitySet::Matrix DW(const Set::Matrix & gradu) const overrideReturns first derivative of free energy, the stress tensorSet::Matrix4<...> DDW(const Set::Matrix & ) const overrideReturns second derivative of free energy, the modulus tensorvirtual void Print(std::ostream &out) const overridePrints the modulus tensor object to output stream (usually the terminal)static Isotropic Random()Static method that generates a random yet acceptable model.static Isotropic Zero()Static method that generates a “zero” element (so that there is no effect under addition)static void Parse(Isotropic & value, IO::ParmParse & pp)Parser where all the IO occurs
Parameter |
Type |
Values |
|---|---|---|
Whether or not to use the `plane stress |
false |
API definitions in src/Model/Solid/Linear/Isotropic.H
Classes
Model::Solid::Linear::IsotropicMethods
Isotropic()Isotropic(Solid< Set::Sym::Isotropic > base)Isotropic(Set::Scalar a_mu, Set::Scalar a_lambda)~Isotropic()Define(Set::Scalar a_mu, Set::Scalar a_lambda)W(const Set::Matrix &gradu) const overrideDW(const Set::Matrix &gradu) const overrideDDW(const Set::Matrix &) const overridePrint(std::ostream &out) const override
Variables
Set::Matrix4<AMREX_SPACEDIM,Set::Sym::Isotropic> Model::Solid::Linear::Isotropic::ddw
Model::Solid::Linear::Laplacian
src/Model/Solid/Linear/Laplacian.H
Parameter |
Type |
Values |
|---|---|---|
Coefficient for the Laplacian |
1.0 |
API definitions in src/Model/Solid/Linear/Laplacian.H
Classes
Model::Solid::Linear::Laplacian- implements the following elastic model.Methods
Laplacian()Laplacian(Set::Scalar alpha)Laplacian(Solid< Set::Sym::Diagonal > base)~Laplacian()Define(Set::Scalar alpha=1.0)W(const Set::Matrix &gradu) const overrideDW(const Set::Matrix &gradu) const overrideDDW(const Set::Matrix &) const override
Variables
Set::Matrix4<AMREX_SPACEDIM,Set::Sym::Diagonal> Model::Solid::Linear::Laplacian::ddw
Model::Solid::Linear::Transverse
src/Model/Solid/Linear/Transverse.H
Transversely Isotropic Elasticity Model. This file implements a transversely isotropic elasticity model for the materials that exhibit isotropic behavior in a plane and a distinct response in the perpendicular direction. The stiffness tensor is defined using elastic constants (C11, C12, C13, C33, C44) and an orientation provided either by Bunge Euler angles (phi1, Phi, phi2) or a rotation matrix. Reference: http://solidmechanics.org/text/Chapter3_2/Chapter3_2.htm#Sect3_2_16
Parameter |
Type |
Values |
|---|---|---|
Elastic constant |
1.68 |
|
Elastic constant |
1.21 |
|
Elastic constant |
0.75 |
|
Elastic constant |
1.68 |
|
Elastic constant |
1.68 |
|
Bunge Euler angle :math:\phi_1 |
small |
|
Bunge Euler angle :math:\Phi |
small |
|
Bunge Euler angle :math:\phi_2 |
small |
API definitions in src/Model/Solid/Linear/Transverse.H
Classes
Model::Solid::Linear::TransverseMethods
Transverse()Transverse(Solid< Set::Sym::MajorMinor > base)~Transverse()Define(Set::Scalar C11, Set::Scalar C12, Set::Scalar C13, Set::Scalar C33, Set::Scalar C44, Set::Scalar phi1, Set::Scalar Phi, Set::Scalar phi2)Define(Set::Scalar C11, Set::Scalar C12, Set::Scalar C13, Set::Scalar C33, Set::Scalar C44, Eigen::Matrix3d R=Eigen::Matrix3d::Identity())W(const Set::Matrix &gradu) const overrideDW(const Set::Matrix &gradu) const overrideDDW(const Set::Matrix &) const overridePrint(std::ostream &out) const override
Variables
Set::Matrix4<AMREX_SPACEDIM, Set::Sym::MajorMinor> Model::Solid::Linear::Transverse::ddw
Numeric
Numeric::Function
API definitions in src/Numeric/Function.H
Classes
Numeric::Function::PolynomialNumeric::Function::Polynomial< 3 >Methods
Polynomial(Set::Scalar a0, Set::Scalar a1, Set::Scalar a2, Set::Scalar a3)operator()(const Set::Scalar x) const
Variables
std::array<Set::Scalar, 4> Numeric::Function::Polynomial< 3 >::a
Numeric::Function::Polynomial< 4 >Methods
Polynomial(Set::Scalar a0, Set::Scalar a1, Set::Scalar a2, Set::Scalar a3, Set::Scalar a4)operator()(const Set::Scalar x) constD() const
Variables
std::array<Set::Scalar, 5> Numeric::Function::Polynomial< 4 >::a
Numeric::Stencil
API definitions in src/Numeric/Stencil.H
Classes
Numeric::InterpolateNumeric::StencilNumeric::Stencil< T, 0, 0, 1 >Numeric::Stencil< T, 0, 0, 2 >Numeric::Stencil< T, 0, 0, 4 >Numeric::Stencil< T, 0, 1, 0 >Numeric::Stencil< T, 0, 1, 1 >Numeric::Stencil< T, 0, 1, 3 >- Compute.Numeric::Stencil< T, 0, 2, 0 >Numeric::Stencil< T, 0, 2, 2 >- Compute.Numeric::Stencil< T, 0, 3, 1 >- Compute.Numeric::Stencil< T, 0, 4, 0 >Numeric::Stencil< T, 1, 0, 0 >Numeric::Stencil< T, 1, 0, 1 >Numeric::Stencil< T, 1, 0, 3 >- Compute.Numeric::Stencil< T, 1, 1, 0 >Numeric::Stencil< T, 1, 1, 2 >- Compute.Numeric::Stencil< T, 1, 2, 1 >- Compute.Numeric::Stencil< T, 1, 3, 0 >- Compute.Numeric::Stencil< T, 2, 0, 0 >Numeric::Stencil< T, 2, 0, 2 >- Compute.Numeric::Stencil< T, 2, 1, 1 >- Compute.Numeric::Stencil< T, 2, 2, 0 >- Compute.Numeric::Stencil< T, 3, 0, 1 >- Compute.Numeric::Stencil< T, 3, 1, 0 >- Compute.Numeric::Stencil< T, 4, 0, 0 >
Numeric::Interpolator
Numeric::Interpolator::Interpolator
src/Numeric/Interpolator/Interpolator.H
This namespace has evolved to contain some general Interpolator routines that are actually unrelated. The Numeric::Interpolator::Linear is an I/O utility. The Numeric::Interpolator::NodeBilinear is a low-level AMReX override that the average user (or even coder) will probably not need to touch.
API definitions in src/Numeric/Interpolator/Interpolator.H
Classes
Numeric::Interpolator::InterpolatorMethods
Interpolator()
Numeric::Interpolator::Linear
src/Numeric/Interpolator/Linear.H
This is a general-purpose routine for specifying time-interpolated quantities in an input file. Interpolators obey the following syntax:
(t1,t2,..,tn;v1,v2,...,vn)
where tn are times and vn are values at those times.
Note: do not include whitespace in an interpolator, this will mess with the parser.
Interpolators can usually be used in place of regular numbers, but only when supported by the calling parse function.
For instance, the BC::Operator::Elastic::TensionTest allows the user to specify fixed displacement; for instance, to specify a value of 0.1:
bc.tenstion_test.disp = 0.1
However, it may be desirable to change the value over time. In this case, one may specify an interpolator string instead:
bc.tenstion_test.disp = (1.0,1.5,2.0;0.0,0.1,0.0)
This will cause the displacement value to be zero for t<1.0;
ramp to 0.1 as 1.0<t<2.0;
ramp back to 0.0 as 2.0<t<3.0;
and then remain at the constant value of 3.0 for t>3.0.
Parameter |
Type |
Values |
|---|---|---|
Interpolator string used when Parsed from queryclass. |
||
API definitions in src/Numeric/Interpolator/Linear.H
Classes
Numeric::Interpolator::LinearMethods
Linear()~Linear()Linear(const Set::Scalar &a_val)Linear(const std::string a_str, Unit unit_time=Unit::Less(), Unit unit_data=Unit::Less())Linear(const std::vector< T > _data_points, const std::vector< Set::Scalar > _interval_points)define(const std::string a_str, Unit a_unit_time, Unit a_unit_val)define(const std::vector< T > _data_points, const std::vector< Set::Scalar > _interval_points)operator()(const Set::Scalar point) constRead(std::string filename, int derivative)
Variables
std::vector<T> Numeric::Interpolator::Linear< T >::data_pointsstd::vector<Set::Scalar> Numeric::Interpolator::Linear< T >::interval_pointsbool Numeric::Interpolator::Linear< T >::uniform
Numeric::Interpolator::NodeBilinear
src/Numeric/Interpolator/NodeBilinear.H
Provide an interpolator function that can work with templated fields.
Warning: This is a low-level class used to add templating functionality to unerlying AMReX classes. Edit at your own risk!
API definitions in src/Numeric/Interpolator/NodeBilinear.H
Classes
Numeric::Interpolator::NodeBilinearMethods
interp(const amrex::BaseFab< T > &crse, int crse_comp, amrex::BaseFab< T > &fine, int fine_comp, int ncomp, const amrex::Box &fine_region, const amrex::IntVect &ratio, const amrex::Geometry &, const amrex::Geometry &, amrex::Vector< amrex::BCRec > const &, int, int, amrex::RunOn runon)interp_face(const amrex::BaseFab< T > &, const int, amrex::BaseFab< T > &, const int, const int, const amrex::Box &, const amrex::IntVect &, const amrex::IArrayBox &, const amrex::Geometry &, const amrex::Geometry &, amrex::Vector< amrex::BCRec > const &, const int, amrex::RunOn)
Numeric::Interpolator::Test
src/Numeric/Interpolator/Test.cpp src/Numeric/Interpolator/Test.H
API definitions in src/Numeric/Interpolator/Test.H
Classes
Numeric::Interpolator::TestMethods
Match(int)Match(int verbose)
Operator
Operator::Operator
src/Operator/Operator.cpp src/Operator/Operator.H
API definitions in src/Operator/Operator.H
Classes
Operator::OperatorOperator::Operator< Grid::Cell >Methods
Operator()~Operator()Operator(const Operator &)=deleteOperator(Operator &&)=deleteoperator=(const Operator &)=deleteoperator=(Operator &&)=deletedefine(amrex::Vector< amrex::Geometry > a_geom, const amrex::Vector< amrex::BoxArray > &a_grids, const amrex::Vector< amrex::DistributionMapping > &a_dmap, BC::BC< Set::Scalar > &a_bc, const amrex::LPInfo &a_info=amrex::LPInfo(), const amrex::Vector< amrex::FabFactory< amrex::FArrayBox > const * > &a_factory={})updateSolBC(int amrlev, const amrex::MultiFab &crse_bcdata) constupdateCorBC(int amrlev, const amrex::MultiFab &crse_bcdata) constprepareForSolve() overrideFapply(int amrlev, int mglev, amrex::MultiFab &out, const amrex::MultiFab &in) const override=0Fsmooth(int amrlev, int mglev, amrex::MultiFab &sol, const amrex::MultiFab &rsh, int redblack) const override=0FFlux(int amrlev, const MFIter &mfi, const Array< FArrayBox *, AMREX_SPACEDIM > &flux, const FArrayBox &sol, Location loc, const int face_only=0) const override=0RegisterNewFab(amrex::Vector< amrex::MultiFab > &input)RegisterNewFab(amrex::Vector< std::unique_ptr< amrex::MultiFab > > &input)GetFab(const int num, const int amrlev, const int mglev, const amrex::MFIter &mfi)isSingular(int) const finalisBottomSingular() const finalgetAScalar() const finalgetBScalar() const finalgetACoeffs(int, int) const finalgetBCoeffs(int, int) const finalmakeNLinOp(int) const finalaverageDownCoeffs()averageDownCoeffsSameAmrLevel(amrex::Vector< amrex::MultiFab > &)GetFab(const int num, const int amrlev, const int mglev, const amrex::MFIter &mfi) const
Variables
BC::BC<Set::Scalar>* Operator::Operator< Grid::Cell >::m_bcamrex::Vector<std::unique_ptr<amrex::MLMGBndry> > Operator::Operator< Grid::Cell >::m_bndry_solamrex::Vector<std::unique_ptr<amrex::BndryRegister> > Operator::Operator< Grid::Cell >::m_crse_sol_bramrex::Vector<std::unique_ptr<amrex::MLMGBndry> > Operator::Operator< Grid::Cell >::m_bndry_coramrex::Vector<std::unique_ptr<amrex::BndryRegister> > Operator::Operator< Grid::Cell >::m_crse_cor_bramrex::Vector<amrex::Vector<std::unique_ptr<BndryCondLoc> > > Operator::Operator< Grid::Cell >::m_bcondlocamrex::Vector<amrex::Vector<amrex::BndryRegister> > Operator::Operator< Grid::Cell >::m_undrrelxramrex::Vector<amrex::Vector<std::array<amrex::MultiMask,2*AMREX_SPACEDIM> > > Operator::Operator< Grid::Cell >::m_maskvalsint Operator::Operator< Grid::Cell >::m_num_a_fabsamrex::Vector<amrex::Vector<amrex::Vector<amrex::MultiFab> > > Operator::Operator< Grid::Cell >::m_a_coeffs
Operator::Operator< Grid::Cell >::BndryCondLocMethods
BndryCondLoc(const amrex::BoxArray &ba, const amrex::DistributionMapping &dm)setLOBndryConds(const amrex::Geometry &geom, const amrex::Real *dx, const amrex::Array< BCType, AMREX_SPACEDIM > &lobc, const amrex::Array< BCType, AMREX_SPACEDIM > &hibc, int ratio, const amrex::RealVect &a_loc)bndryConds(const amrex::MFIter &mfi) constbndryLocs(const amrex::MFIter &mfi) const
Variables
amrex::LayoutData<BCTuple> Operator::Operator< Grid::Cell >::BndryCondLoc::bcondamrex::LayoutData<RealTuple> Operator::Operator< Grid::Cell >::BndryCondLoc::bcloc
Operator::Operator< Grid::Node >Methods
Operator()Operator(const amrex::Vector< amrex::Geometry > &a_geom, const amrex::Vector< amrex::BoxArray > &a_grids, const Vector< DistributionMapping > &a_dmap, const LPInfo &a_info=LPInfo(), const Vector< FabFactory< FArrayBox > const * > &a_factory={})~Operator()Operator(const Operator &)=deleteOperator(Operator &&)=deleteoperator=(const Operator &)=deleteoperator=(Operator &&)=deletedefine(const Vector< Geometry > &a_geom, const Vector< BoxArray > &a_grids, const Vector< DistributionMapping > &a_dmap, const LPInfo &a_info=LPInfo(), const Vector< FabFactory< FArrayBox > const * > &a_factory={})Geom(int amr_lev, int mglev=0) const noexceptReflux(int crse_amrlev, MultiFab &res, const MultiFab &crse_sol, const MultiFab &crse_rhs, MultiFab &fine_res, MultiFab &fine_sol, const MultiFab &fine_rhs)Apply(int amrlev, int mglev, MultiFab &out, const MultiFab &in) constSetOmega(Set::Scalar a_omega)SetAverageDownCoeffs(bool)SetNormalizeDDW(bool a_normalize_ddw)RegisterNewFab(amrex::Vector< amrex::MultiFab > &input)RegisterNewFab(amrex::Vector< std::unique_ptr< amrex::MultiFab > > &input)GetFab(const int num, const int amrlev, const int mglev, const amrex::MFIter &mfi) constSetHomogeneous(bool)getNGrow(int=0, int=0) const override finalsolutionResidual(int amrlev, MultiFab &resid, MultiFab &x, const MultiFab &b, const MultiFab *crse_bcdata=nullptr) override finalcorrectionResidual(int amrlev, int mglev, MultiFab &resid, MultiFab &x, const MultiFab &b, BCMode bc_mode, const MultiFab *crse_bcdata=nullptr) override finalFapply(int amrlev, int mglev, MultiFab &out, const MultiFab &in) const override=0averageDownCoeffs()=0Diagonal(bool recompute=false)Diagonal(int amrlev, int mglev, amrex::MultiFab &diag)Fsmooth(int amrlev, int mglev, MultiFab &x, const MultiFab &b) const overridenormalize(int amrlev, int mglev, MultiFab &mf) const overridereflux(int crse_amrlev, MultiFab &res, const MultiFab &crse_sol, const MultiFab &crse_rhs, MultiFab &fine_res, MultiFab &fine_sol, const MultiFab &fine_rhs) const overriderestriction(int amrlev, int cmglev, MultiFab &crse, MultiFab &fine) const finalinterpolation(int amrlev, int fmglev, MultiFab &fine, const MultiFab &crse) const override finalaverageDownSolutionRHS(int camrlev, MultiFab &crse_sol, MultiFab &crse_rhs, const MultiFab &fine_sol, const MultiFab &fine_rhs) finalprepareForSolve() overrideisSingular(int amrlev) const finalisBottomSingular() const finalapplyBC(int amrlev, int mglev, MultiFab &phi, BCMode bc_mode, amrex::MLLinOp::StateMode, bool skip_fillboundary=false) const finalfixUpResidualMask(int amrlev, iMultiFab &resmsk) final
Variables
bool Operator::Operator< Grid::Node >::m_is_bottom_singularbool Operator::Operator< Grid::Node >::m_masks_builtint Operator::Operator< Grid::Node >::m_num_a_fabsbool Operator::Operator< Grid::Node >::m_diagonal_computedamrex::Vector<amrex::Vector<amrex::Vector<amrex::MultiFab> > > Operator::Operator< Grid::Node >::m_a_coeffsamrex::Vector<amrex::Vector<std::unique_ptr<amrex::MultiFab> > > Operator::Operator< Grid::Node >::m_diagSet::Scalar Operator::Operator< Grid::Node >::m_omegabool Operator::Operator< Grid::Node >::m_normalize_ddw
Operator::Diagonal
src/Operator/Diagonal.cpp src/Operator/Diagonal.H
API definitions in src/Operator/Diagonal.H
Classes
Operator::DiagonalMethods
Diagonal()Diagonal(const Vector< Geometry > &a_geom, const Vector< BoxArray > &a_grids, const Vector< DistributionMapping > &a_dmap, const LPInfo &a_info)~Diagonal()Diagonal(const Diagonal &)=deleteDiagonal(Diagonal &&)=deleteoperator=(const Diagonal &)=deleteoperator=(Diagonal &&)=deleteFapply(int amrlev, int mglev, MultiFab &out, const MultiFab &in) const override finalFsmooth(int amrlev, int mglev, MultiFab &sol, const MultiFab &rsh) const override finalgetNComp() const overridenormalize(int, int, MultiFab &) const override finalreflux(int, MultiFab &, const MultiFab &, const MultiFab &, MultiFab &, MultiFab &, const MultiFab &) const override
Operator::Elastic
src/Operator/Elastic.cpp src/Operator/Elastic.H
Parameter |
Type |
Values |
|---|---|---|
Regularization offset value used in near-singular elastic solves. It should be small - if it is too large, you will get better convergence but less correct values! |
||
API definitions in src/Operator/Elastic.H
Classes
Operator::ElasticMethods
Elastic()Elastic(const Vector< Geometry > &a_geom, const Vector< BoxArray > &a_grids, const Vector< DistributionMapping > &a_dmap, const LPInfo &a_info)~Elastic()Elastic(const Elastic &)=deleteElastic(Elastic &&)=deleteoperator=(const Elastic &)=deleteoperator=(Elastic &&)=deletedefine(const Vector< Geometry > &a_geom, const Vector< BoxArray > &a_grids, const Vector< DistributionMapping > &a_dmap, const LPInfo &a_info=LPInfo(), const Vector< FabFactory< FArrayBox > const * > &a_factory={})SetHomogeneous(bool a_homogeneous) overrideSetModel(Set::Matrix4< AMREX_SPACEDIM, SYM > &a_model)SetModel(int amrlev, const MultiTab &a_model)SetModel(const amrex::Vector< MultiTab > &a_model)SetModel(const Set::Field< Set::Matrix4< AMREX_SPACEDIM, SYM > > &a_model)SetPsi(int amrlev, const amrex::MultiFab &a_psi)SetPsi(int amrlev, const amrex::MultiFab &a_psi, const Set::Scalar &a_psi_small)SetBC(::BC::Operator::Elastic::Elastic *a_bc)- The different types of Boundary Condtiions are listed in the documentation.GetBC()Strain(int amrlev, amrex::MultiFab &epsfab, const amrex::MultiFab &ufab, bool voigt=false) const- Compute strain given the displacement field by.Stress(int amrlev, amrex::MultiFab &sigmafab, const amrex::MultiFab &ufab, bool voigt=false, bool a_homogeneous=false)- Compute stress given the displacement field by.Energy(int amrlev, amrex::MultiFab &energy, const amrex::MultiFab &u, bool a_homogeneous=false)- Compute energy density given the displacement field by.SetBC(const std::array< std::array< BC, AMREX_SPACEDIM >, AMREX_SPACEDIM > &a_bc_lo, const std::array< std::array< BC, AMREX_SPACEDIM >, AMREX_SPACEDIM > &a_bc_hi)- This function is depricated and should not be used.Error0x(int amrlev, int mglev, MultiFab &R0x, const MultiFab &x) constSetTesting(bool a_testing)SetUniform(bool a_uniform)SetAverageDownCoeffs(bool a_average_down_coeffs) overrideDiagonal(int amrlev, int mglev, amrex::MultiFab &diag) overrideFapply(int amrlev, int mglev, MultiFab &out, const MultiFab &in) const override finalFFlux(int amrlev, const MFIter &mfi, const std::array< FArrayBox *, AMREX_SPACEDIM > &flux, const FArrayBox &sol, const int face_only=0) const finalgetNComp() const overrideisCrossStencil() constprepareForSolve() overrideaverageDownCoeffs() overrideaverageDownCoeffsDifferentAmrLevels(int fine_amrlev)averageDownCoeffsSameAmrLevel(int amrlev)- Update coarse-level AMR coefficients with data from fine level.FillBoundaryCoeff(MultiTab &sigma, const Geometry &geom)FillBoundaryCoeff(MultiFab &psi, const Geometry &geom)
Variables
std::array<std::array<BC,AMREX_SPACEDIM>, AMREX_SPACEDIM> Operator::Elastic< SYM >::m_bc_lo- Simple arrays storing boundary conditions for each component and each face.std::array<std::array<BC,AMREX_SPACEDIM>, AMREX_SPACEDIM> Operator::Elastic< SYM >::m_bc_hiamrex::Vector<Set::Field<Set::Matrix4<AMREX_SPACEDIM,SYM> > > Operator::Elastic< SYM >::m_ddw_mf- This is a multifab-type object containing objects of type Model::Solid::Elastic::Isotropic::Isotropic (or some other model type).amrex::Vector<Set::Field<Set::Scalar> > Operator::Elastic< SYM >::m_psi_mfSet::Scalar Operator::Elastic< SYM >::m_psi_smallbool Operator::Elastic< SYM >::m_psi_setbool Operator::Elastic< SYM >::m_testingbool Operator::Elastic< SYM >::m_uniformbool Operator::Elastic< SYM >::m_homogeneousbool Operator::Elastic< SYM >::m_average_down_coeffs::BC::Operator::Elastic::Elastic* Operator::Elastic< SYM >::m_bcbool Operator::Elastic< SYM >::m_model_setbool Operator::Elastic< SYM >::m_bc_set
Operator::Implicit
Operator::Implicit::Implicit
src/Operator/Implicit/Implicit.cpp src/Operator/Implicit/Implicit.H
API definitions in src/Operator/Implicit/Implicit.H
Classes
Operator::Implicit::ImplicitMethods
Implicit()Implicit(const Vector< Geometry > &a_geom, const Vector< BoxArray > &a_grids, const Vector< DistributionMapping > &a_dmap, BC::BC< Set::Scalar > &a_bc, const LPInfo &a_info)~Implicit()Implicit(const Implicit &)=deleteImplicit(Implicit &&)=deleteoperator=(const Implicit &)=deleteoperator=(Implicit &&)=deleteFapply(int amrlev, int mglev, MultiFab &out, const MultiFab &in) const finalFsmooth(int amrlev, int mglev, MultiFab &sol, const MultiFab &rsh, int redblack) const finalFFlux(int amrlev, const MFIter &mfi, const Array< FArrayBox *, AMREX_SPACEDIM > &flux, const FArrayBox &sol, Location loc, const int face_only=0) constgetNComp() constisCrossStencil() const
Set
Set::Set
The Set namespace defines the Alamo datatypes.
This includes scalars (Set::Scalar), vectors (Set::Vector), and nD tensors (Set::Tensor).
Scalars are an alias for AMReX Real.
Vectors and tensors are an alias for the Tuxfamily Eigen vectors and matrices, and so you can use
Eigen operations on them (like A.determinant(), etc.)
See the Eigen documentation for more.
The Set namespace defines the Matrix4 datatype for fourth order tensors.
These can have isotropic, major, minor, majorminor, etc., symmetries.
The Set namespace also defines the Field datatype, which is where most data is stored.
It is templated so that Set::Field<Set::Scalar> is a field of scalars, Set::Field<Set::Vector>
is a vector field, etc.
One can also have, for instance, a field of models, like Set::Field<Model::Solid::Linear::Iostropic>.
API definitions in src/Set/Set.H
Classes
Set::FieldMethods
Field()Field(int a_levs, const amrex::Vector< amrex::BoxArray > &a_grids, const amrex::Vector< amrex::DistributionMapping > &a_dmap, int a_ncomp, int a_nghost)Field(int size)Define(int a_levs, const amrex::Vector< amrex::BoxArray > &a_grids, const amrex::Vector< amrex::DistributionMapping > &a_dmap, int a_ncomp, int a_nghost)Define(int a_lev, const amrex::BoxArray &a_grid, const amrex::DistributionMapping &a_dmap, int a_ncomp, int a_nghost)Copy(int, amrex::MultiFab &, int, int) constCopyFrom(int, amrex::MultiFab &, int, int) constAdd(int, amrex::MultiFab &, int, int) constAddFrom(int, amrex::MultiFab &, int, int) constNComp() constName(int) constPatch(int lev, amrex::MFIter &mfi) const &NComp() constName(int i) constCopy(int a_lev, amrex::MultiFab &a_dst, int a_dstcomp, int a_nghost) constNComp() constName(int i) constCopy(int a_lev, amrex::MultiFab &a_dst, int a_dstcomp, int a_nghost) constNComp() constName(int i) constCopy(int a_lev, amrex::MultiFab &a_dst, int a_dstcomp, int a_nghost) constNComp() constName(int i) constCopy(int a_lev, amrex::MultiFab &a_dst, int a_dstcomp, int a_nghost) constNComp() constName(int i) constCopy(int a_lev, amrex::MultiFab &a_dst, int a_dstcomp, int a_nghost) constNComp() constName(int i) constCopy(int a_lev, amrex::MultiFab &a_dst, int a_dstcomp, int a_nghost) constNComp() constName(int i) constCopy(int a_lev, amrex::MultiFab &a_dst, int a_dstcomp, int a_nghost) constNComp() constName(int i) constCopy(int a_lev, amrex::MultiFab &a_dst, int a_dstcomp, int a_nghost) constNComp() constName(int i) constCopy(int a_lev, amrex::MultiFab &a_dst, int a_dstcomp, int a_nghost) constCopy(int a_lev, amrex::MultiFab &a_dst, int a_dstcomp, int a_nghost) constCopyFrom(int a_lev, amrex::MultiFab &a_src, int a_dstcomp, int a_nghost) constAdd(int a_lev, amrex::MultiFab &a_dst, int a_dstcomp, int a_nghost) constAddFrom(int a_lev, amrex::MultiFab &a_src, int a_srccomp, int a_nghost) constNComp() constName(int i) constCopy(int a_lev, amrex::MultiFab &a_dst, int a_dstcomp, int a_nghost) constNComp() constName(int i) const
Variables
int Set::Field< T >::finest_levelstd::string Set::Field< T >::nameamrex::Array4<T> Set::Field< T >::empty
Set::Field< Set::Scalar >Methods
Field()Field(int size)Define(int a_levs, const amrex::Vector< amrex::BoxArray > &a_grids, const amrex::Vector< amrex::DistributionMapping > &a_dmap, int a_ncomp, int a_nghost)Define(int a_lev, const amrex::BoxArray &a_grid, const amrex::DistributionMapping &a_dmap, int a_ncomp, int a_nghost)Copy(int, amrex::MultiFab &, int, int) constNComp() constPatch(const int lev, const amrex::MFIter &mfi) const &
Variables
int Set::Field< Set::Scalar >::finest_levelamrex::Array4<Set::Scalar> Set::Field< Set::Scalar >::empty
Set::Base
API definitions in src/Set/Base.H
Classes
Set::Matrix4Set::QuaternionMethods
Quaternion()Quaternion(Set::Scalar w, Set::Scalar x, Set::Scalar y, Set::Scalar z)Quaternion(const Eigen::Matrix3d &R)Quaternion(Eigen::Quaterniond &q)operator=(const Eigen::Quaterniond &rhs)operator+=(const Quaternion &rhs)
Set::Eigen_Amrex
API definitions in src/Set/Eigen_Amrex.H
Classes
Set::Matrix4
API definitions in src/Set/Matrix4.H
Classes
Set::Matrix4_MajorMinor
API definitions in src/Set/Matrix4_MajorMinor.H
Classes
Set::Matrix4< 2, Sym::MajorMinor >- Data structure for a 4th order 3D tensor with major and minor symmetry.Methods
Matrix4()operator()(const int i, const int j, const int k, const int l) constoperator()(const int i, const int j, const int k, const int l)Print(std::ostream &os)Norm()contains_nan() constoperator+=(Matrix4< 2, Sym::MajorMinor > a)operator-=(Matrix4< 2, Sym::MajorMinor > a)operator*=(Matrix4< 2, Sym::MajorMinor > a)operator/=(Matrix4< 2, Sym::MajorMinor > a)operator*=(Set::Scalar alpha)operator/=(Set::Scalar alpha)
Variables
Scalar Set::Matrix4< 2, Sym::MajorMinor >::data[6]
Set::Matrix4< 3, Sym::MajorMinor >- Data structure for a 4th order 3D tensor with major and minor symmetry.Methods
Matrix4()operator()(const int i, const int j, const int k, const int l) constoperator()(const int i, const int j, const int k, const int l)Print(std::ostream &os)Norm()contains_nan() constoperator+=(Matrix4< 3, Sym::MajorMinor > a)operator-=(Matrix4< 3, Sym::MajorMinor > a)operator*=(Matrix4< 3, Sym::MajorMinor > a)operator/=(Matrix4< 3, Sym::MajorMinor > a)operator*=(Set::Scalar alpha)operator/=(Set::Scalar alpha)
Variables
Scalar Set::Matrix4< 3, Sym::MajorMinor >::data[21]
Set::Matrix3
API definitions in src/Set/Matrix3.H
Classes
Set::Matrix3Methods
operator()(const int i, const int j, const int k)operator()(const int i, const int j, const int k) constoperator[](const int i)norm()operator+=(Matrix3 a)operator-=(Matrix3 a)operator*=(Set::Scalar alpha)operator/=(Set::Scalar alpha)
Variables
Set::Matrix Set::Matrix3::data[AMREX_SPACEDIM]
Set::Matrix4_Isotropic
The isotropic tensor is defined to be
The inverse (“compliance”) tensor is
Replacing E, nu with Lame constants gives:
- For reference: http://solidmechanics.org/text/Chapter3_2/Chapter3_2.htm
API definitions in src/Set/Matrix4_Isotropic.H
Classes
Set::Matrix4< AMREX_SPACEDIM, Sym::Isotropic >Methods
Matrix4()Matrix4(Set::Scalar a_lambda, Set::Scalar a_mu)operator()(const int i, const int j, const int k, const int l) const- Note: for the Isotropic this routine works for ! If you try to assign a value using this with, say.Randomize()Print(std::ostream &os)Lambda() constMu() constYoungs() constNu() constInverse() constoperator+=(const Matrix4< AMREX_SPACEDIM, Sym::Isotropic > &a)operator-=(const Matrix4< AMREX_SPACEDIM, Sym::Isotropic > &a)operator*=(const Matrix4< AMREX_SPACEDIM, Sym::Isotropic > &a)operator/=(const Matrix4< AMREX_SPACEDIM, Sym::Isotropic > &a)operator*=(const Set::Scalar &alpha)operator/=(const Set::Scalar &alpha)Norm()contains_nan() const
Variables
Set::Scalar Set::Matrix4< AMREX_SPACEDIM, Sym::Isotropic >::lambdaSet::Scalar Set::Matrix4< AMREX_SPACEDIM, Sym::Isotropic >::mu
Set::Matrix4_Major
API definitions in src/Set/Matrix4_Major.H
Classes
Set::Matrix4< 2, Sym::Major >Methods
Matrix4()operator()(const int i, const int j, const int k, const int l) constoperator()(const int i, const int j, const int k, const int l)Print(std::ostream &os)operator+=(const Matrix4< 2, Sym::Major > &a)operator-=(const Matrix4< 2, Sym::Major > &a)operator*=(const Matrix4< 2, Sym::Major > &a)operator/=(const Matrix4< 2, Sym::Major > &a)operator*=(const Set::Scalar &alpha)operator/=(const Set::Scalar &alpha)Norm()contains_nan() const
Variables
Scalar Set::Matrix4< 2, Sym::Major >::data[10]
Set::Matrix4< 3, Sym::Major >Methods
Matrix4()operator()(const int i, const int j, const int k, const int l)operator()(const int i, const int j, const int k, const int l) constNorm()Print(std::ostream &os)operator+=(const Matrix4< 3, Sym::Major > &a)operator-=(const Matrix4< 3, Sym::Major > &a)operator*=(const Matrix4< 3, Sym::Major > &a)operator/=(const Matrix4< 3, Sym::Major > &a)operator*=(const Set::Scalar &alpha)operator/=(const Set::Scalar &alpha)norm()contains_nan() const
Variables
Scalar Set::Matrix4< 3, Sym::Major >::data[45]
Set::Matrix4_Diagonal
API definitions in src/Set/Matrix4_Diagonal.H
Classes
Set::Matrix4< AMREX_SPACEDIM, Sym::Diagonal >Methods
Matrix4()Matrix4(Set::Matrix a_A)operator()(const int i, const int j, const int k, const int l) constRandomize()Print(std::ostream &os)operator+=(const Matrix4< AMREX_SPACEDIM, Sym::Diagonal > &a)operator-=(const Matrix4< AMREX_SPACEDIM, Sym::Diagonal > &a)operator*=(const Set::Scalar &alpha)operator/=(const Set::Scalar &alpha)Norm()contains_nan() const
Variables
Set::Matrix Set::Matrix4< AMREX_SPACEDIM, Sym::Diagonal >::A
Set::Matrix4_Full
API definitions in src/Set/Matrix4_Full.H
Classes
Set::Matrix4< 2, Sym::Full >- Data structure for a symmetrix 4th order 3D tensor.Methods
Matrix4()operator()(const int i, const int j, const int k, const int l)operator()(const int i, const int j, const int k, const int l) constPrint(std::ostream &)contains_nan() const
Variables
Scalar Set::Matrix4< 2, Sym::Full >::data[5]
Set::Matrix4< 3, Sym::Full >Methods
Matrix4()operator()(const int i, const int j, const int k, const int l)operator()(const int i, const int j, const int k, const int l) constPrint(std::ostream &os)contains_nan() const
Variables
Scalar Set::Matrix4< 3, Sym::Full >::data[15]
Solver
Solver::Local
Solver::Local::CG
API definitions in src/Solver/Local/CG.H
Classes
Solver::Local::Riemann
Solver::Local::Riemann::Riemann
src/Solver/Local/Riemann/Riemann.H
API definitions in src/Solver/Local/Riemann/Riemann.H
Classes
Solver::Local::Riemann::FluxMethods
Flux()Flux(Set::Scalar a_mass, Set::Scalar a_momentum_normal, Set::Scalar a_momentum_tangent, Set::Scalar a_energy)Flux(const State &in)operator+=(const Flux &a)operator-=(const Flux &a)operator*=(const Set::Scalar alpha)operator/=(const Set::Scalar alpha)
Variables
Set::Scalar Solver::Local::Riemann::Flux::massSet::Scalar Solver::Local::Riemann::Flux::momentum_normalSet::Scalar Solver::Local::Riemann::Flux::momentum_tangentSet::Scalar Solver::Local::Riemann::Flux::energy
Solver::Local::Riemann::RiemannMethods
Solve(State lo, State hi, Set::Scalar gamma, Set::Scalar p_ref, Set::Scalar small)=0~Riemann()=default
Solver::Local::Riemann::StateMethods
State()State(Set::Scalar a_rho, Set::Scalar a_M_normal, Set::Scalar a_M_tangent, Set::Scalar a_E)State(Set::Patch< const Set::Scalar > density_mf, Set::Patch< const Set::Scalar > momentum_mf, Set::Patch< const Set::Scalar > energy_mf, int i, int j, int k, int direction)operator+=(const State &a)operator-=(const State &a)operator*=(const Set::Scalar alpha)operator/=(const Set::Scalar alpha)
Variables
Set::Scalar Solver::Local::Riemann::State::rhoSet::Scalar Solver::Local::Riemann::State::M_normalSet::Scalar Solver::Local::Riemann::State::M_tangentSet::Scalar Solver::Local::Riemann::State::E
Solver::Local::Riemann::HLLE
src/Solver/Local/Riemann/HLLE.H
Parameter |
Type |
Values |
|---|---|---|
toggle to apply a low mach correction approximation |
false |
|
cutoff value if using the low mach approximation |
0.1 |
API definitions in src/Solver/Local/Riemann/HLLE.H
Classes
Solver::Local::Riemann::HLLEMethods
HLLE(IO::ParmParse &pp, std::string name)HLLE(IO::ParmParse &pp)HLLE()Solve(State lo, State hi, Set::Scalar gamma, Set::Scalar p_ref, Set::Scalar small) override
Variables
int Solver::Local::Riemann::HLLE::lowmachSet::Scalar Solver::Local::Riemann::HLLE::cutoff
Solver::Local::Riemann::HLLC
src/Solver/Local/Riemann/HLLC.H
HLLC flux calculation based on equations 10.67 - 10.73 of _Riemann solvers and numerical methods for fluid dynamics_ by E.F.Toro.
API definitions in src/Solver/Local/Riemann/HLLC.H
Classes
Solver::Local::Riemann::HLLCMethods
HLLC(IO::ParmParse &pp, std::string name)HLLC(IO::ParmParse &pp)HLLC()Solve(State lo, State hi, Set::Scalar gamma, Set::Scalar p_ref, Set::Scalar small) override
Solver::Local::Riemann::Roe
src/Solver/Local/Riemann/Roe.H
This implements the Riemann Roe solver.
Notation and algorithm follow the presentation in Section 5.3.3 of Computational Gasdynamics by Culbert B. Laney (page 88)
- This solver uses an optional entropy fix
Option 1: chimeracfd method https://chimeracfd.com/programming/gryphon/fluxroe.html Option 2: Eq. 4.3.67 in Computational Fluid Dynamics for Engineers and Scientists by Sreenivas Jayanti
Parameter |
Type |
Values |
|---|---|---|
enable to dump diagnostic data if the roe solver fails |
1 |
|
apply entropy fix if tru |
false |
|
Apply the lowmach fix descripte in Rieper 2010 "A low-Mach number fix for Roe’s approximate Riemann solver" |
false |
API definitions in src/Solver/Local/Riemann/Roe.H
Classes
Solver::Local::Riemann::Roe- based on Gas Dynamics - Culbert B. Laney.Methods
Roe(IO::ParmParse &pp, std::string name)Roe(IO::ParmParse &pp)Roe()Solve(State lo, State hi, Set::Scalar gamma, Set::Scalar p_ref, Set::Scalar small) override
Variables
int Solver::Local::Riemann::Roe::verboseint Solver::Local::Riemann::Roe::entropy_fixint Solver::Local::Riemann::Roe::lowmachSet::Scalar Solver::Local::Riemann::Roe::phi
Solver::Nonlocal
Solver::Nonlocal::Linear
Parameter |
Type |
Values |
|---|---|---|
Max number of iterations to perform before erroring out |
||
Max number of iterations on the bottom solver |
||
Max number of F-cycle iterations to perform |
||
Number of fixed iterations to perform before exiting gracefully |
||
Verbosity of the solver (1-5) |
||
Number of smoothing operations before bottom solve (2) |
||
Number of smoothing operations after bottom solve (2) |
||
Number of final smoothing operations when smoother is used as bottom solver (8) |
||
Additional smoothing after bottom CG solver (0) |
||
The method that is used for the multigrid bottom solve (cg, bicgstab, smoother) |
||
Relative tolerance on bottom solver |
||
Absolute tolerance on bottom solver |
||
Relative tolerance |
||
Absolute tolerance |
||
Omega (used in gauss-seidel solver) |
||
Whether to average down coefficients or use the ones given. (Setting this to true is important for fracture.) |
||
Whether to normalize DDW when calculating the diagonal. This is primarily used when DDW is near-singular - like when there is a "void" region or when doing phase field fracture. |
||
If set to true, output diagnostic multifab information whenever the MLMG solver fails to converge. (Note: you must also set |
||
If set to false, MLMG will not die if convergence criterion is not reached. (Note: you must also set |
||
API definitions in src/Solver/Nonlocal/Linear.H
Classes
Solver::Nonlocal::Linear- Multigrid solver for multicomponent, multi-level operators.Methods
Linear()Linear(Operator::Operator< Grid::Node > &a_lp)~Linear()Define(Operator::Operator< Grid::Node > &a_lp)Clear()solveaffine(amrex::Vector< std::unique_ptr< amrex::MultiFab > > &a_sol, amrex::Vector< std::unique_ptr< amrex::MultiFab > > &a_rhs, Real a_tol_rel, Real a_tol_abs, bool copyrhs=false, const char *checkpoint_file=nullptr)solve(amrex::Vector< std::unique_ptr< amrex::MultiFab > > &a_sol, amrex::Vector< std::unique_ptr< amrex::MultiFab > > &a_rhs, Real a_tol_rel, Real a_tol_abs, const char *checkpoint_file=nullptr)solve(amrex::Vector< std::unique_ptr< amrex::MultiFab > > &a_sol, amrex::Vector< std::unique_ptr< amrex::MultiFab > > &a_rhs)apply(amrex::Vector< std::unique_ptr< amrex::MultiFab > > &a_rhs, amrex::Vector< std::unique_ptr< amrex::MultiFab > > &a_sol)setMaxIter(const int a_max_iter)setBottomMaxIter(const int a_bottom_max_iter)setMaxFmgIter(const int a_max_fmg_iter)setFixedIter(const int a_fixed_iter)setVerbose(const int a_verbose)setPreSmooth(const int a_pre_smooth)setPostSmooth(const int a_post_smooth)dumpOnConvergenceFail(const amrex::Vector< amrex::MultiFab * > &a_sol_mf, const amrex::Vector< amrex::MultiFab const * > &a_rhs_mf)PrepareMLMG(amrex::MLMG &mlmg)
Variables
int Solver::Nonlocal::Linear::max_iterint Solver::Nonlocal::Linear::bottom_max_iterint Solver::Nonlocal::Linear::max_fmg_iterint Solver::Nonlocal::Linear::fixed_iterint Solver::Nonlocal::Linear::verboseint Solver::Nonlocal::Linear::pre_smoothint Solver::Nonlocal::Linear::post_smoothint Solver::Nonlocal::Linear::final_smoothint Solver::Nonlocal::Linear::bottom_smoothstd::string Solver::Nonlocal::Linear::bottom_solverSet::Scalar Solver::Nonlocal::Linear::cg_tol_relSet::Scalar Solver::Nonlocal::Linear::cg_tol_absSet::Scalar Solver::Nonlocal::Linear::bottom_tol_relSet::Scalar Solver::Nonlocal::Linear::bottom_tol_absSet::Scalar Solver::Nonlocal::Linear::tol_relSet::Scalar Solver::Nonlocal::Linear::tol_absSet::Scalar Solver::Nonlocal::Linear::omegabool Solver::Nonlocal::Linear::average_down_coeffsbool Solver::Nonlocal::Linear::normalize_ddwOperator::Operator<Grid::Node>* Solver::Nonlocal::Linear::linopamrex::MLMG* Solver::Nonlocal::Linear::mlmgbool Solver::Nonlocal::Linear::m_definedbool Solver::Nonlocal::Linear::m_dump_on_failbool Solver::Nonlocal::Linear::m_abort_on_fail
Solver::Nonlocal::Newton
Parameter |
Type |
Values |
|---|---|---|
Number of newton-raphson iterations. |
||
Tolerance to use for newton-raphson convergence |
||
API definitions in src/Solver/Nonlocal/Newton.H
Classes
Solver::Nonlocal::NewtonMethods
Newton()Newton(Operator::Elastic< T::sym > &a_op)~Newton()Define(Operator::Elastic< T::sym > &a_op)Clear()setNRIters(int a_nriters)setPsi(Set::Field< Set::Scalar > &a_psi)solve(const Set::Field< Set::Vector > &a_u_mf, const Set::Field< Set::Vector > &a_b_mf, Set::Field< T > &a_model_mf, Real a_tol_rel, Real a_tol_abs, const char *checkpoint_file=nullptr)solve(const Set::Field< Set::Scalar > &a_u_mf, const Set::Field< Set::Scalar > &a_b_mf, Set::Field< T > &a_model_mf, Real a_tol_rel, Real a_tol_abs, const char *checkpoint_file=nullptr)solve(const Set::Field< Set::Scalar > &a_u_mf, const Set::Field< Set::Scalar > &a_b_mf, Set::Field< T > &a_model_mf)compResidual(Set::Field< Set::Scalar > &a_res_mf, Set::Field< Set::Scalar > &a_u_mf, Set::Field< Set::Scalar > &a_b_mf, Set::Field< T > &a_model_mf)compResidual(Set::Field< Set::Vector > &a_res_mf, Set::Field< Set::Vector > &a_u_mf, Set::Field< Set::Vector > &a_b_mf, Set::Field< T > &a_model_mf)compLinearSolverResidual(Set::Field< Set::Vector > &a_res_mf, Set::Field< Set::Vector > &a_u_mf, Set::Field< Set::Vector > &a_b_mf)W(Set::Field< Set::Scalar > &a_w_mf, Set::Field< Set::Scalar > &a_u_mf, Set::Field< T > &a_model_mf)DW(Set::Field< Set::Scalar > &a_dw_mf, Set::Field< Set::Scalar > &a_u_mf, Set::Field< T > &a_model_mf)prepareForSolve(const Set::Field< Set::Scalar > &a_u_mf, const Set::Field< Set::Scalar > &a_b_mf, Set::Field< Set::Scalar > &a_rhs_mf, Set::Field< Set::Matrix > &a_dw_mf, Set::Field< Set::Matrix4< AMREX_SPACEDIM, T::sym > > &a_ddw_mf, Set::Field< T > &a_model_mf)prepareForSolve(const Set::Field< Set::Vector > &a_u_mf, const Set::Field< Set::Vector > &a_b_mf, Set::Field< Set::Scalar > &a_rhs_mf, Set::Field< Set::Matrix > &a_dw_mf, Set::Field< Set::Matrix4< AMREX_SPACEDIM, T::sym > > &a_ddw_mf, Set::Field< T > &a_model_mf)
Variables
int Solver::Nonlocal::Newton< T >::m_nritersSet::Scalar Solver::Nonlocal::Newton< T >::m_nrtoleranceOperator::Elastic<T::sym>* Solver::Nonlocal::Newton< T >::m_elasticSet::Field<Set::Scalar>* Solver::Nonlocal::Newton< T >::m_psi
Test
Test::Model
Test::Model::Interface
Test::Model::Interface::GB
Test::Model::Interface::GB::GB
src/Test/Model/Interface/GB/GB.H
API definitions in src/Test/Model/Interface/GB/GB.H
Classes
Test::Model::Interface::GB::GBMethods
GB()DerivativeTest1(int verbose)DerivativeTest2(int verbose)
Test::Numeric
Test::Numeric::Stencil
API definitions in src/Test/Numeric/Stencil.H
Classes
Test::Numeric::StencilMethods
Stencil()~Stencil()Define(amrex::IntVect _ncells)Define(int _ncells)Derivative(int verbose, std::string plotfile="")WritePlotFile(std::string plotfile)
Variables
amrex::IntVect Test::Numeric::Stencil::ncellsconst Set::Scalar Test::Numeric::Stencil::Lconst int Test::Numeric::Stencil::ncompconst int Test::Numeric::Stencil::nghostamrex::Vector<amrex::Geometry> Test::Numeric::Stencil::geomamrex::Vector<amrex::BoxArray> Test::Numeric::Stencil::gridsamrex::Vector<amrex::DistributionMapping> Test::Numeric::Stencil::dmapSet::Field<Set::Scalar> Test::Numeric::Stencil::phiSet::Field<Set::Scalar> Test::Numeric::Stencil::DphiExactSet::Field<Set::Scalar> Test::Numeric::Stencil::DphiNumericamrex::Vector<std::string> Test::Numeric::Stencil::varnames
Test::Set
Test::Set::Matrix4
API definitions in src/Test/Set/Matrix4.H
Classes
Test::Set::Matrix4Methods
SymmetryTest(int)
Unit
Unit::Unit
API definitions in src/Unit/Unit.H
Classes
UnitMethods
Unit(const std::pair< double, std::array< int, 7 > > &p)isType(const Unit &test) constoperator*(const Unit &rhs)operator/(const Unit &rhs)operator^(const int &rhs)normalized_value() constnormalized_unitstring() const
Unit::Test
API definitions in src/Unit/Test.H
Classes
Util
Util::Util
src/Util/Util.cpp src/Util/Util.H
Parameter |
Type |
Values |
|---|---|---|
Name of directory containing all output data |
||
Set the system length unit |
"m" |
|
Set the system time unit |
"s" |
|
Location of the lower+left+bottom corner |
||
Location of the upper_right_top corner |
||
API definitions in src/Util/Util.H
Classes
Util::BMP
API definitions in src/Util/BMP.H
Classes
Util::BMPMethods
BMP()Define(std::string filename)operator()(int i, int j)min()max()
Variables
int Util::BMP::nxint Util::BMP::nystd::vector<std::array<int,3> > Util::BMP::data
Util::Color
API definitions in src/Util/Color.H
Classes
Util::MPI
API definitions in src/Util/MPI.H
Classes
Util::PNG
Parameter |
Type |
Values |
|---|---|---|
BMP filename. |
file path |
|
how to position the image |
stretch fitheight fitwidth coord |
|
Lower-left coordinates of image in domain |
||
Upper-right coordinates of image in domain |
||
Desired minimum value to scale pixels by |
0.0 |
|
Desired maximum value to scale pixels by |
255.0 |
|
API definitions in src/Util/PNG.H
Classes
Util::PNGMethods
PNG()PNG(IO::ParmParse &pp, std::string name)~PNG()setDomain(Set::Vector &_lo, Set::Vector &_hi)operator()(int I, int J)operator()(Set::Vector &x)
Variables
int Util::PNG::png_widthint Util::PNG::png_heightpng_byte Util::PNG::color_typepng_byte Util::PNG::bit_depthpng_bytep* Util::PNG::row_pointersSet::Vector Util::PNG::coord_loSet::Vector Util::PNG::coord_hiFit Util::PNG::fitSet::Scalar Util::PNG::minSet::Scalar Util::PNG::maxbool Util::PNG::domain_definedSet::Vector Util::PNG::domain_loSet::Vector Util::PNG::domain_hi
Util::String
API definitions in src/Util/String.H
Classes
Util::Hash
Util::Hash::Hash
API definitions in src/Util/Hash/Hash.H
Classes
Util::Hash::SHA256Methods
SHA256()update(const uint8_t *data, size_t length)update(const std::string &data)final()reset()transform()pad()
Variables
std::array<uint32_t, 8> Util::Hash::SHA256::state_uint8_t Util::Hash::SHA256::data_[64]uint32_t Util::Hash::SHA256::datalen_uint64_t Util::Hash::SHA256::bitlen_const std::array<uint32_t, 64> Util::Hash::SHA256::k_