https://mooseframework.inl.gov
ACGrGrMulti.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://mooseframework.inl.gov
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 #pragma once
11 
12 #include "ACGrGrBase.h"
13 #include "ADGrainGrowthBase.h"
14 
21 template <bool is_ad>
22 using ACGrGrMultiBase = typename std::conditional<is_ad, ADGrainGrowthBase, ACGrGrBase>::type;
23 
24 template <bool is_ad>
25 class ACGrGrMultiTempl : public ACGrGrMultiBase<is_ad>
26 {
27 public:
29 
30  ACGrGrMultiTempl(const InputParameters & parameters);
31 
32 protected:
34  std::vector<MaterialPropertyName> _gamma_names;
35  unsigned int _num_j;
36 
38  std::vector<const GenericMaterialProperty<Real, is_ad> *> _prop_gammas;
39 
45 
47 };
48 
49 class ACGrGrMulti : public ACGrGrMultiTempl<false>
50 {
51 public:
52  ACGrGrMulti(const InputParameters & parameters);
53 
54 protected:
55  virtual Real computeDFDOP(PFFunctionType type) override;
56  virtual Real computeQpOffDiagJacobian(unsigned int jvar) override;
57 
58  const NonlinearVariableName _uname;
60  const std::vector<VariableName> _vname;
61  std::vector<const MaterialProperty<Real> *> _dmudEtaj;
62 };
63 
64 class ADACGrGrMulti : public ACGrGrMultiTempl<true>
65 {
66 public:
68 
69 protected:
70  virtual ADReal computeDFDOP() override;
71 };
Moose::GenericType< Real, is_ad > GenericReal
static InputParameters validParams()
Definition: ACGrGrMulti.C:17
const std::vector< VariableName > _vname
Definition: ACGrGrMulti.h:60
virtual Real computeDFDOP(PFFunctionType type) override
Definition: ACGrGrMulti.C:57
std::vector< MaterialPropertyName > _gamma_names
Names of gammas for each order parameter.
Definition: ACGrGrMulti.h:34
virtual Real computeQpOffDiagJacobian(unsigned int jvar) override
Definition: ACGrGrMulti.C:95
unsigned int _num_j
Definition: ACGrGrMulti.h:35
GenericReal< is_ad > computedF0du()
Definition: ACGrGrMulti.C:113
std::vector< const MaterialProperty< Real > * > _dmudEtaj
Definition: ACGrGrMulti.h:61
typename std::conditional< is_ad, ADGrainGrowthBase, ACGrGrBase >::type ACGrGrMultiBase
This kernel calculates the residual for grain growth for a multi-phase, poly-crystal system...
Definition: ACGrGrMulti.h:22
std::vector< const GenericMaterialProperty< Real, is_ad > * > _prop_gammas
Values of gammas for each order parameter.
Definition: ACGrGrMulti.h:38
const NonlinearVariableName _uname
Definition: ACGrGrMulti.h:58
ACGrGrMultiTempl(const InputParameters &parameters)
Definition: ACGrGrMulti.C:29
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
ACGrGrMulti(const InputParameters &parameters)
Definition: ACGrGrMulti.C:45
const MaterialProperty< Real > & _dmudu
Definition: ACGrGrMulti.h:59
virtual ADReal computeDFDOP() override
Definition: ACGrGrMulti.C:84