https://mooseframework.inl.gov
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
ACGrGrMulti Class Reference

#include <ACGrGrMulti.h>

Inheritance diagram for ACGrGrMulti:
[legend]

Public Member Functions

 ACGrGrMulti (const InputParameters &parameters)
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Member Functions

virtual Real computeDFDOP (PFFunctionType type) override
 
virtual Real computeQpOffDiagJacobian (unsigned int jvar) override
 
GenericReal< is_ad > computedF0du ()
 

Protected Attributes

const NonlinearVariableName _uname
 
const MaterialProperty< Real > & _dmudu
 
const std::vector< VariableName > _vname
 
std::vector< const MaterialProperty< Real > * > _dmudEtaj
 
std::vector< MaterialPropertyName > _gamma_names
 Names of gammas for each order parameter. More...
 
unsigned int _num_j
 
std::vector< const GenericMaterialProperty< Real, is_ad > *> _prop_gammas
 Values of gammas for each order parameter. More...
 

Detailed Description

Definition at line 49 of file ACGrGrMulti.h.

Constructor & Destructor Documentation

◆ ACGrGrMulti()

ACGrGrMulti::ACGrGrMulti ( const InputParameters parameters)

Definition at line 45 of file ACGrGrMulti.C.

46  : ACGrGrMultiTempl<false>(parameters),
47  _uname(this->template getParam<NonlinearVariableName>("variable")),
48  _dmudu(this->template getMaterialPropertyDerivative<Real>("mu", _uname)),
49  _vname(this->template getParam<std::vector<VariableName>>("v")),
51 {
52  for (unsigned int n = 0; n < _num_j; ++n)
53  _dmudEtaj[n] = &this->template getMaterialPropertyDerivative<Real>("mu", _vname[n]);
54 }
const std::vector< VariableName > _vname
Definition: ACGrGrMulti.h:60
std::vector< const MaterialProperty< Real > * > _dmudEtaj
Definition: ACGrGrMulti.h:61
const NonlinearVariableName _uname
Definition: ACGrGrMulti.h:58
const MaterialProperty< Real > & _dmudu
Definition: ACGrGrMulti.h:59

Member Function Documentation

◆ computedF0du()

GenericReal< is_ad > ACGrGrMultiTempl< is_ad >::computedF0du ( )
protectedinherited

Definition at line 113 of file ACGrGrMulti.C.

Referenced by computeDFDOP(), and computeQpOffDiagJacobian().

114 {
115  GenericReal<is_ad> SumGammaEtaj = 0.0;
116  for (const auto i : make_range(_op_num))
117  SumGammaEtaj += (*_prop_gammas[i])[_qp] * (*_vals[i])[_qp] * (*_vals[i])[_qp];
118 
119  return _u[_qp] * _u[_qp] * _u[_qp] - _u[_qp] + 2.0 * _u[_qp] * SumGammaEtaj;
120 }
Moose::GenericType< Real, is_ad > GenericReal
std::vector< const GenericMaterialProperty< Real, is_ad > *> _prop_gammas
Values of gammas for each order parameter.
Definition: ACGrGrMulti.h:38
IntRange< T > make_range(T beg, T end)

◆ computeDFDOP()

Real ACGrGrMulti::computeDFDOP ( PFFunctionType  type)
overrideprotectedvirtual

Definition at line 57 of file ACGrGrMulti.C.

58 {
59  // Sum all other order parameters
60  Real SumGammaEtaj = 0.0;
61  for (const auto i : make_range(_op_num))
62  SumGammaEtaj += (*_prop_gammas[i])[_qp] * (*_vals[i])[_qp] * (*_vals[i])[_qp];
63 
64  // Calculate either the residual or Jacobian of the grain growth free energy
65  switch (type)
66  {
67  case Residual:
68  {
69  return _mu[_qp] * computedF0du();
70  }
71 
72  case Jacobian:
73  {
74  Real d2f0du2 = 3.0 * _u[_qp] * _u[_qp] - 1.0 + 2.0 * SumGammaEtaj;
75  return _phi[_j][_qp] * (_mu[_qp] * d2f0du2 + _dmudu[_qp] * computedF0du());
76  }
77 
78  default:
79  mooseError("Invalid type passed in");
80  }
81 }
void mooseError(Args &&... args)
GenericReal< is_ad > computedF0du()
Definition: ACGrGrMulti.C:113
std::vector< const GenericMaterialProperty< Real, is_ad > *> _prop_gammas
Values of gammas for each order parameter.
Definition: ACGrGrMulti.h:38
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
IntRange< T > make_range(T beg, T end)
const MaterialProperty< Real > & _dmudu
Definition: ACGrGrMulti.h:59

◆ computeQpOffDiagJacobian()

Real ACGrGrMulti::computeQpOffDiagJacobian ( unsigned int  jvar)
overrideprotectedvirtual

Definition at line 95 of file ACGrGrMulti.C.

96 {
97  for (unsigned int i = 0; i < _op_num; ++i)
98  if (jvar == _vals_var[i])
99  {
100  // Derivative of SumGammaEtaj
101  const Real dSumGammaEtaj = 2.0 * (*_prop_gammas[i])[_qp] * (*_vals[i])[_qp];
102  const Real dDFDOP = _mu[_qp] * 2.0 * _u[_qp] * dSumGammaEtaj;
103 
104  return _L[_qp] * _test[_i][_qp] * _phi[_j][_qp] *
105  (dDFDOP + (*_dmudEtaj[i])[_qp] * computedF0du());
106  }
107 
108  return 0.0;
109 }
GenericReal< is_ad > computedF0du()
Definition: ACGrGrMulti.C:113
std::vector< const MaterialProperty< Real > * > _dmudEtaj
Definition: ACGrGrMulti.h:61
std::vector< const GenericMaterialProperty< Real, is_ad > *> _prop_gammas
Values of gammas for each order parameter.
Definition: ACGrGrMulti.h:38
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real

◆ validParams()

InputParameters ACGrGrMultiTempl< is_ad >::validParams ( )
staticinherited

Definition at line 17 of file ACGrGrMulti.C.

18 {
20  params.addClassDescription("Multi-phase poly-crystalline Allen-Cahn Kernel");
21  params.addRequiredParam<std::vector<MaterialPropertyName>>(
22  "gamma_names",
23  "List of gamma material property names for each other order parameter. Place "
24  "in same order as order parameters (v)!");
25  return params;
26 }
void addRequiredParam(const std::string &name, const std::string &doc_string)
InputParameters validParams()
void addClassDescription(const std::string &doc_string)

Member Data Documentation

◆ _dmudEtaj

std::vector<const MaterialProperty<Real> *> ACGrGrMulti::_dmudEtaj
protected

Definition at line 61 of file ACGrGrMulti.h.

Referenced by ACGrGrMulti(), and computeQpOffDiagJacobian().

◆ _dmudu

const MaterialProperty<Real>& ACGrGrMulti::_dmudu
protected

Definition at line 59 of file ACGrGrMulti.h.

Referenced by computeDFDOP().

◆ _gamma_names

std::vector<MaterialPropertyName> ACGrGrMultiTempl< is_ad >::_gamma_names
protectedinherited

Names of gammas for each order parameter.

Definition at line 34 of file ACGrGrMulti.h.

◆ _num_j

unsigned int ACGrGrMultiTempl< is_ad >::_num_j
protectedinherited

Definition at line 35 of file ACGrGrMulti.h.

Referenced by ACGrGrMulti().

◆ _prop_gammas

std::vector<const GenericMaterialProperty<Real, is_ad> *> ACGrGrMultiTempl< is_ad >::_prop_gammas
protectedinherited

Values of gammas for each order parameter.

Definition at line 38 of file ACGrGrMulti.h.

Referenced by computeDFDOP(), and computeQpOffDiagJacobian().

◆ _uname

const NonlinearVariableName ACGrGrMulti::_uname
protected

Definition at line 58 of file ACGrGrMulti.h.

◆ _vname

const std::vector<VariableName> ACGrGrMulti::_vname
protected

Definition at line 60 of file ACGrGrMulti.h.

Referenced by ACGrGrMulti().


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