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

This Material calculates the advection velocity, it's divergence and derivatives acting on a particle/grain. More...

#include <GrainAdvectionVelocity.h>

Inheritance diagram for GrainAdvectionVelocity:
[legend]

Public Types

typedef DerivativeMaterialPropertyNameInterface::SymbolName SymbolName
 

Public Member Functions

 GrainAdvectionVelocity (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 ()
 

Protected Attributes

const GrainTrackerInterface_grain_tracker
 getting userobject for calculating grain centers and volumes
 
const GrainForceAndTorqueInterface_grain_force_torque
 getting userobject for calculating grain forces and torques
 
const VectorPostprocessorValue_grain_volumes
 The grain volumes.
 
const std::vector< RealGradient > & _grain_forces
 
const std::vector< RealGradient > & _grain_torques
 

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 Real _mt
 constant value corresponding to grain translation
 
const Real _mr
 constant value corresponding to grain rotation
 
const unsigned int _op_num
 
const std::string _base_name
 type of force density material
 
MaterialProperty< std::vector< RealGradient > > & _velocity_advection
 Material storing advection velocities of grains.
 
FEProblemBase_dmi_fe_problem
 

Detailed Description

This Material calculates the advection velocity, it's divergence and derivatives acting on a particle/grain.

Definition at line 23 of file GrainAdvectionVelocity.h.

Constructor & Destructor Documentation

◆ GrainAdvectionVelocity()

GrainAdvectionVelocity::GrainAdvectionVelocity ( const InputParameters parameters)

Definition at line 38 of file GrainAdvectionVelocity.C.

40 _grain_tracker(getUserObject<GrainTrackerInterface>("grain_data")),
41 _grain_force_torque(getUserObject<GrainForceAndTorqueInterface>("grain_force")),
42 _grain_volumes(getVectorPostprocessorValue("grain_volumes", "feature_volumes")),
45 _mt(getParam<Real>("translation_constant")),
46 _mr(getParam<Real>("rotation_constant")),
47 _op_num(coupledComponents("etas")),
48 _base_name(isParamValid("base_name") ? getParam<std::string>("base_name") + "_" : ""),
50 declareProperty<std::vector<RealGradient>>(_base_name + "advection_velocity"))
51{
52 mooseDeprecated("Use GrainAdvectionAux for visualizing advection velocities.");
53}
void mooseDeprecated(Args &&... args)
const GrainTrackerInterface & _grain_tracker
getting userobject for calculating grain centers and volumes
const GrainForceAndTorqueInterface & _grain_force_torque
getting userobject for calculating grain forces and torques
const std::vector< RealGradient > & _grain_forces
const VectorPostprocessorValue & _grain_volumes
The grain volumes.
const Real _mr
constant value corresponding to grain rotation
const std::string _base_name
type of force density material
MaterialProperty< std::vector< RealGradient > > & _velocity_advection
Material storing advection velocities of grains.
const Real _mt
constant value corresponding to grain translation
const std::vector< RealGradient > & _grain_torques
virtual const std::vector< RealGradient > & getTorqueValues() const =0
virtual const std::vector< RealGradient > & getForceValues() const =0
RealVectorValue RealGradient

Member Function Documentation

◆ computeQpProperties()

void GrainAdvectionVelocity::computeQpProperties ( )
protectedvirtual

Definition at line 56 of file GrainAdvectionVelocity.C.

57{
58 auto grain_num = _grain_tracker.getTotalFeatureCount();
59 const auto & op_to_grains = _grain_tracker.getVarToFeatureVector(_current_elem->id());
60
61 _velocity_advection[_qp].resize(grain_num);
62
63 for (unsigned int i = 0; i < _grain_volumes.size(); ++i)
64 {
65 mooseAssert(i < _grain_volumes.size(), "grain index is out of bounds");
66 const auto volume = _grain_volumes[i];
67 const auto centroid = _grain_tracker.getGrainCentroid(i);
68
69 for (unsigned int j = 0; j < _op_num; ++j)
70 if (i == op_to_grains[j])
71 {
72 const RealGradient velocity_translation = _mt / volume * _grain_forces[i];
73 const RealGradient velocity_rotation =
74 _mr / volume * (_grain_torques[i].cross(_current_elem->vertex_average() - centroid));
75
76 _velocity_advection[_qp][i] = velocity_translation + velocity_rotation;
77 }
78 }
79}
virtual std::size_t getTotalFeatureCount() const =0
Returns a number large enough to contain the largest ID for all grains in use.
virtual const std::vector< unsigned int > & getVarToFeatureVector(dof_id_type elem_id) const =0
Returns a list of active unique feature ids for a particular element.
virtual Point getGrainCentroid(unsigned int grain_id) const =0
Returns the centroid for the given grain number.
virtual void resize(const std::size_t size) override final
Real volume(const MeshBase &mesh, unsigned int dim=libMesh::invalid_uint)

◆ validParams()

InputParameters GrainAdvectionVelocity::validParams ( )
static

Definition at line 15 of file GrainAdvectionVelocity.C.

16{
19 "Calculation the advection velocity of grain due to rigid body translation and rotation");
21 "etas", "var_name_base", "op_num", "Array of other coupled order parameters");
22 params.addCoupledVar("c", "Concentration field");
23 params.addParam<Real>(
24 "translation_constant", 500, "constant value characterizing grain translation");
25 params.addParam<Real>("rotation_constant", 1.0, "constant value characterizing grain rotation");
26 params.addParam<std::string>("base_name",
27 "Optional parameter that allows the user to define "
28 "type of force density under consideration");
29 params.addParam<UserObjectName>("grain_data",
30 "UserObject for getting the center of mass of grains");
31 params.addParam<UserObjectName>("grain_force",
32 "userobject for getting force and torque acting on grains");
33 params.addParam<VectorPostprocessorName>("grain_volumes",
34 "The feature volume VectorPostprocessorValue.");
35 return params;
36}
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

◆ _base_name

const std::string GrainAdvectionVelocity::_base_name
private

type of force density material

Definition at line 54 of file GrainAdvectionVelocity.h.

◆ _grain_force_torque

const GrainForceAndTorqueInterface& GrainAdvectionVelocity::_grain_force_torque
protected

getting userobject for calculating grain forces and torques

Definition at line 37 of file GrainAdvectionVelocity.h.

◆ _grain_forces

const std::vector<RealGradient>& GrainAdvectionVelocity::_grain_forces
protected

Definition at line 42 of file GrainAdvectionVelocity.h.

Referenced by computeQpProperties().

◆ _grain_torques

const std::vector<RealGradient>& GrainAdvectionVelocity::_grain_torques
protected

Definition at line 43 of file GrainAdvectionVelocity.h.

Referenced by computeQpProperties().

◆ _grain_tracker

const GrainTrackerInterface& GrainAdvectionVelocity::_grain_tracker
protected

getting userobject for calculating grain centers and volumes

Definition at line 34 of file GrainAdvectionVelocity.h.

Referenced by computeQpProperties().

◆ _grain_volumes

const VectorPostprocessorValue& GrainAdvectionVelocity::_grain_volumes
protected

The grain volumes.

Definition at line 40 of file GrainAdvectionVelocity.h.

Referenced by computeQpProperties().

◆ _mr

const Real GrainAdvectionVelocity::_mr
private

constant value corresponding to grain rotation

Definition at line 49 of file GrainAdvectionVelocity.h.

Referenced by computeQpProperties().

◆ _mt

const Real GrainAdvectionVelocity::_mt
private

constant value corresponding to grain translation

Definition at line 47 of file GrainAdvectionVelocity.h.

Referenced by computeQpProperties().

◆ _op_num

const unsigned int GrainAdvectionVelocity::_op_num
private

Definition at line 51 of file GrainAdvectionVelocity.h.

Referenced by computeQpProperties().

◆ _velocity_advection

MaterialProperty<std::vector<RealGradient> >& GrainAdvectionVelocity::_velocity_advection
private

Material storing advection velocities of grains.

Definition at line 57 of file GrainAdvectionVelocity.h.

Referenced by computeQpProperties().


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