https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
ExternalForceDensityMaterial Class Reference

This Material calculates the force density acting on a particle/grain due to interaction between particles. More...

#include <ExternalForceDensityMaterial.h>

Inheritance diagram for ExternalForceDensityMaterial:
[legend]

Public Types

typedef DerivativeMaterialPropertyNameInterface::SymbolName SymbolName
 

Public Member Functions

 ExternalForceDensityMaterial (const InputParameters &parameters)
 
const GenericMaterialProperty< U, is_ad > & getDefaultMaterialProperty (const std::string &name)
 
const GenericMaterialProperty< U, is_ad > & getDefaultMaterialPropertyByName (const std::string &name)
 
void validateDerivativeMaterialPropertyBase (const std::string &base)
 
const MaterialPropertyName derivativePropertyName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) const
 
const MaterialPropertyName derivativePropertyNameFirst (const MaterialPropertyName &base, const SymbolName &c1) const
 
const MaterialPropertyName derivativePropertyNameSecond (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const
 
const MaterialPropertyName derivativePropertyNameThird (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2, const SymbolName &c3) const
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, unsigned int v2, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, unsigned int v1, unsigned int v2=libMesh::invalid_uint, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, unsigned int v2, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, unsigned int v1, unsigned int v2=libMesh::invalid_uint, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
void validateCoupling (const MaterialPropertyName &base, const std::vector< VariableName > &c, bool validate_aux=true)
 
void validateCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
void validateCoupling (const MaterialPropertyName &base, const std::vector< VariableName > &c, bool validate_aux=true)
 
void validateCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
void validateNonlinearCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
void validateNonlinearCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
const MaterialPropertyName propertyName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) const
 
const MaterialPropertyName propertyName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) const
 
const MaterialPropertyName propertyNameFirst (const MaterialPropertyName &base, const SymbolName &c1) const
 
const MaterialPropertyName propertyNameFirst (const MaterialPropertyName &base, const SymbolName &c1) const
 
const MaterialPropertyName propertyNameSecond (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const
 
const MaterialPropertyName propertyNameSecond (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const
 
const MaterialPropertyName propertyNameThird (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2, const SymbolName &c3) const
 
const MaterialPropertyName propertyNameThird (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2, const SymbolName &c3) const
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Member Functions

virtual void computeQpProperties ()
 

Private Member Functions

bool haveMaterialProperty (const std::string &prop_name)
 
std::vector< VariableName > buildVariableVector (const VariableName &c1, const VariableName &c2, const VariableName &c3)
 
void validateCouplingHelper (const MaterialPropertyName &base, const std::vector< VariableName > &c, const System &system, std::vector< VariableName > &missing)
 
bool isNotObjectVariable (const VariableName &name)
 

Private Attributes

const Function_force_x
 
const Function_force_y
 
const Function_force_z
 
const VariableValue_c
 concentration field considered to be the density of particles
 
VariableName _c_name
 
const Real _k
 stiffness constant
 
const unsigned int _op_num
 
const std::vector< const VariableValue * > _vals
 
const std::vector< VariableName > _vals_name
 
MaterialProperty< std::vector< RealGradient > > & _dF
 force density material
 
MaterialProperty< std::vector< RealGradient > > * _dFdc
 first order derivative of force density material w.r.t c
 
std::vector< MaterialProperty< std::vector< RealGradient > > * > _dFdeta
 
FEProblemBase_dmi_fe_problem
 

Detailed Description

This Material calculates the force density acting on a particle/grain due to interaction between particles.

Definition at line 22 of file ExternalForceDensityMaterial.h.

Constructor & Destructor Documentation

◆ ExternalForceDensityMaterial()

ExternalForceDensityMaterial::ExternalForceDensityMaterial ( const InputParameters parameters)

Definition at line 30 of file ExternalForceDensityMaterial.C.

32 _force_x(getFunction("force_x")),
33 _force_y(getFunction("force_y")),
34 _force_z(getFunction("force_z")),
35 _c(coupledValue("c")),
36 _c_name(coupledName("c", 0)),
37 _k(getParam<Real>("k")),
38 _op_num(coupledComponents(
39 "etas")), // determine number of grains from the number of names passed in.
40 _vals(coupledValues("etas")),
41 _vals_name(coupledNames("etas")),
42 _dF(declareProperty<std::vector<RealGradient>>("force_density_ext")),
43 _dFdc(isCoupledConstant(_c_name) ? nullptr
45 "force_density_ext", _c_name)),
47{
48 // Loop through grains and load derivatives
49 for (unsigned int i = 0; i < _op_num; ++i)
50 if (!isCoupledConstant(_vals_name[i]))
51 _dFdeta[i] =
52 &declarePropertyDerivative<std::vector<RealGradient>>("force_density_ext", _vals_name[i]);
53}
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative(const std::string &base, const std::vector< VariableName > &c)
std::vector< MaterialProperty< std::vector< RealGradient > > * > _dFdeta
const std::vector< const VariableValue * > _vals
const std::vector< VariableName > _vals_name
MaterialProperty< std::vector< RealGradient > > & _dF
force density material
MaterialProperty< std::vector< RealGradient > > * _dFdc
first order derivative of force density material w.r.t c
const VariableValue & _c
concentration field considered to be the density of particles
RealVectorValue RealGradient

Member Function Documentation

◆ computeQpProperties()

void ExternalForceDensityMaterial::computeQpProperties ( )
protectedvirtual

Definition at line 56 of file ExternalForceDensityMaterial.C.

57{
58 _dF[_qp].resize(_op_num);
59 if (_dFdc)
60 (*_dFdc)[_qp].resize(_op_num);
61
62 for (unsigned int i = 0; i < _op_num; ++i)
63 {
64 _dF[_qp][i](0) = _k * _c[_qp] * _force_x.value(_t, _q_point[_qp]) * (*_vals[i])[_qp];
65 _dF[_qp][i](1) = _k * _c[_qp] * _force_y.value(_t, _q_point[_qp]) * (*_vals[i])[_qp];
66 _dF[_qp][i](2) = _k * _c[_qp] * _force_z.value(_t, _q_point[_qp]) * (*_vals[i])[_qp];
67
68 if (_dFdc)
69 {
70 (*_dFdc)[_qp][i](0) = _k * _force_x.value(_t, _q_point[_qp]) * (*_vals[i])[_qp];
71 (*_dFdc)[_qp][i](1) = _k * _force_y.value(_t, _q_point[_qp]) * (*_vals[i])[_qp];
72 (*_dFdc)[_qp][i](2) = _k * _force_z.value(_t, _q_point[_qp]) * (*_vals[i])[_qp];
73 }
74 }
75
76 for (unsigned int i = 0; i < _op_num; ++i)
77 {
78 if (_dFdeta[i])
79 {
80 (*_dFdeta[i])[_qp].resize(_op_num);
81 for (unsigned int j = 0; j < _op_num; ++j)
82 {
83 (*_dFdeta[i])[_qp][j](0) = _k * _c[_qp] * _force_x.value(_t, _q_point[_qp]);
84 (*_dFdeta[i])[_qp][j](1) = _k * _c[_qp] * _force_y.value(_t, _q_point[_qp]);
85 (*_dFdeta[i])[_qp][j](2) = _k * _c[_qp] * _force_z.value(_t, _q_point[_qp]);
86 }
87 }
88 }
89}
virtual Real value(Real t, const Point &p) const
virtual void resize(const std::size_t size) override final

◆ validParams()

InputParameters ExternalForceDensityMaterial::validParams ( )
static

Definition at line 16 of file ExternalForceDensityMaterial.C.

17{
19 params.addClassDescription("Providing external applied force density to grains");
20 params.addParam<FunctionName>("force_x", 0.0, "The forcing function in x direction.");
21 params.addParam<FunctionName>("force_y", 0.0, "The forcing function in y direction.");
22 params.addParam<FunctionName>("force_z", 0.0, "The forcing function in z direction.");
24 "etas", "var_name_base", "op_num", "Array of coupled order parameters");
25 params.addCoupledVar("c", "Concentration field");
26 params.addParam<Real>("k", 1.0, "stiffness constant multiplier");
27 return params;
28}
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)
void addCoupledVar(const std::string &name, const std::string &doc_string)
void addRequiredCoupledVarWithAutoBuild(const std::string &name, const std::string &base_name, const std::string &num_name, const std::string &doc_string)
static InputParameters validParams()
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real

Member Data Documentation

◆ _c

const VariableValue& ExternalForceDensityMaterial::_c
private

concentration field considered to be the density of particles

Definition at line 38 of file ExternalForceDensityMaterial.h.

Referenced by computeQpProperties().

◆ _c_name

VariableName ExternalForceDensityMaterial::_c_name
private

Definition at line 39 of file ExternalForceDensityMaterial.h.

◆ _dF

MaterialProperty<std::vector<RealGradient> >& ExternalForceDensityMaterial::_dF
private

force density material

Definition at line 48 of file ExternalForceDensityMaterial.h.

Referenced by computeQpProperties().

◆ _dFdc

MaterialProperty<std::vector<RealGradient> >* ExternalForceDensityMaterial::_dFdc
private

first order derivative of force density material w.r.t c

Definition at line 50 of file ExternalForceDensityMaterial.h.

Referenced by computeQpProperties().

◆ _dFdeta

std::vector<MaterialProperty<std::vector<RealGradient> > *> ExternalForceDensityMaterial::_dFdeta
private

◆ _force_x

const Function& ExternalForceDensityMaterial::_force_x
private

Definition at line 33 of file ExternalForceDensityMaterial.h.

Referenced by computeQpProperties().

◆ _force_y

const Function& ExternalForceDensityMaterial::_force_y
private

Definition at line 34 of file ExternalForceDensityMaterial.h.

Referenced by computeQpProperties().

◆ _force_z

const Function& ExternalForceDensityMaterial::_force_z
private

Definition at line 35 of file ExternalForceDensityMaterial.h.

Referenced by computeQpProperties().

◆ _k

const Real ExternalForceDensityMaterial::_k
private

stiffness constant

Definition at line 41 of file ExternalForceDensityMaterial.h.

Referenced by computeQpProperties().

◆ _op_num

const unsigned int ExternalForceDensityMaterial::_op_num
private

◆ _vals

const std::vector<const VariableValue *> ExternalForceDensityMaterial::_vals
private

Definition at line 44 of file ExternalForceDensityMaterial.h.

Referenced by computeQpProperties().

◆ _vals_name

const std::vector<VariableName> ExternalForceDensityMaterial::_vals_name
private

Definition at line 45 of file ExternalForceDensityMaterial.h.

Referenced by ExternalForceDensityMaterial().


The documentation for this class was generated from the following files: