![Logo](alamo3.svg) |
Alamo
|
Go to the documentation of this file. 1 #ifndef INTEGRATOR_THERMOELASTIC_H
2 #define INTEGRATOR_THERMOELASTIC_H
7 #include "Numeric/Stencil.H"
13 virtual public Mechanics<Model::Solid::Affine::Isotropic>
44 for (
int lev = 0; lev <= finest_level; ++lev)
46 for (MFIter mfi(*
model_mf[lev],
false); mfi.isValid(); ++mfi)
48 amrex::Box bx = mfi.grownnodaltilebox();
49 amrex::Array4<Model::Solid::Affine::Isotropic>
const &model =
model_mf[lev]->array(mfi);
50 amrex::Array4<const Set::Scalar>
const &eta =
eta_mf[lev]->array(mfi);
51 amrex::Array4<const Set::Scalar>
const &temp =
temp_old_mf[lev]->array(mfi);
52 amrex::ParallelFor(bx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) {
55 for (
int n = 0; n < eta.nComp(); n++)
57 F0 += (eta(i,j,k,n) *
alpha[n]) * tempavg * Set::Matrix::Identity();
59 model(i, j, k).F0 = F0;
74 void Advance(
int a_lev, amrex::Real a_time, amrex::Real a_dt)
override
static AMREX_FORCE_INLINE T CellToNodeAverage(const amrex::Array4< const T > &f, const int &i, const int &j, const int &k, const int &m, std::array< StencilType, AMREX_SPACEDIM > stencil=DefaultType)
AMREX_FORCE_INLINE void RealFillBoundary(amrex::FabArray< amrex::BaseFab< T >> &a_mf, const amrex::Geometry &)
virtual void TimeStepBegin(Set::Scalar a_time, int a_step) override
void TagCellsForRefinement(int lev, amrex::TagBoxArray &a_tags, Set::Scalar, int)
ThermoElastic(IO::ParmParse &pp)
void Initialize(int lev) override
void UpdateModel(int a_step, Set::Scalar a_time) override
Set::Field< Set::Scalar > eta_mf
Set::Field< Model::Solid::Affine::Isotropic > model_mf
static void Parse(ThermoElastic &value, IO::ParmParse &pp)
Eigen::Matrix< amrex::Real, AMREX_SPACEDIM, AMREX_SPACEDIM > Matrix
void TimeStepBegin(Set::Scalar a_time, int a_step) override
void TagCellsForRefinement(int lev, amrex::TagBoxArray &a_tags, Set::Scalar a_time, int a_ngrow) override
void Advance(int lev, Set::Scalar, Set::Scalar dt)
virtual void UpdateModel(int a_step, Set::Scalar time) override
std::vector< Set::Scalar > alpha
virtual void TimeStepBegin(Set::Scalar, int)
Run another system calculation (e.g. implicit solve) before integration step.
Collection of numerical integrator objects.
void Advance(int lev, Set::Scalar time, Set::Scalar dt) override
Set::Field< Set::Scalar > temp_old_mf
void Advance(int a_lev, amrex::Real a_time, amrex::Real a_dt) override
void queryclass(std::string name, T *value, std::string file="", std::string func="", int line=-1)
void Initialize(int lev) override
void TagCellsForRefinement(int a_lev, amrex::TagBoxArray &a_tags, Set::Scalar a_time, int a_ngrow) override