KKSPhaseChemicalPotential::KKSPhaseChemicalPotential(const InputParameters & parameters)
  : DerivativeMaterialInterface<JvarMapKernelInterface<Kernel>>(parameters),
    _cb_var(coupled("cb")),
    _cb_name(getVar("cb", 0)->name()),
    // first derivatives
    _dfadca(getMaterialPropertyDerivative<Real>("fa_name", _var.name())),
    _dfbdcb(getMaterialPropertyDerivative<Real>("fb_name", _cb_name)),
    // second derivatives d2F/dx*dca for jacobian diagonal elements
    _d2fadca2(getMaterialPropertyDerivative<Real>("fa_name", _var.name(), _var.name())),
    _d2fbdcbca(getMaterialPropertyDerivative<Real>("fb_name", _cb_name, _var.name()))
{
  MooseVariable * arg;
  unsigned int i;

#ifdef DEBUG
  _console << "KKSPhaseChemicalPotential(" << name() << ") " << _var.name() << ' ' << _cb_name
           << '\n';
#endif

  unsigned int nvar = _coupled_moose_vars.size();
  _d2fadcadarg.resize(nvar);
  _d2fbdcbdarg.resize(nvar);

  for (i = 0; i < nvar; ++i)
  {
    // get the moose variable
    arg = _coupled_moose_vars[i];

    // lookup table for the material properties representing the derivatives needed for the
    // off-diagonal jacobian
    _d2fadcadarg[i] = &getMaterialPropertyDerivative<Real>("fa_name", _var.name(), arg->name());
    _d2fbdcbdarg[i] = &getMaterialPropertyDerivative<Real>("fb_name", _cb_name, arg->name());
  }
}
Example #2
0
KKSACBulkC::KKSACBulkC(const InputParameters & parameters) :
    KKSACBulkBase(parameters),
    _ca_name(getVar("ca", 0)->name()),
    _ca_var(coupled("ca")),
    _ca(coupledValue("ca")),
    _cb_name(getVar("cb", 0)->name()),
    _cb_var(coupled("cb")),
    _cb(coupledValue("cb")),
    _prop_h(getMaterialProperty<Real>("h")),
    _prop_dFadca(getMaterialPropertyDerivative<Real>("fa_name", _ca_name)),
    _prop_d2Fadca2(getMaterialPropertyDerivative<Real>("fa_name", _ca_name, _ca_name)),
    _prop_d2Fbdcb2(getMaterialPropertyDerivative<Real>("fb_name", _cb_name, _cb_name))
{
  //Resize to number of coupled variables (_nvar from KKSACBulkBase constructor)
  _prop_d2Fadcadarg.resize(_nvar);

  // Iterate over all coupled variables
  for (unsigned int i = 0; i < _nvar; ++i)
  {
    MooseVariable *cvar = _coupled_moose_vars[i];

    // get second partial derivatives wrt ca and other coupled variable
    _prop_d2Fadcadarg[i] = &getMaterialPropertyDerivative<Real>("fa_name", _ca_name, cvar->name());
  }
}
Example #3
0
KKSSplitCHCRes::KKSSplitCHCRes(const InputParameters & parameters) :
    DerivativeMaterialInterface<JvarMapKernelInterface<SplitCHBase> >(parameters),
    // number of coupled variables (ca, args_a[])
    _nvar(_coupled_moose_vars.size()),
    _ca_var(coupled("ca")),
    _ca_name(getVar("ca", 0)->name()),
    _cb_var(coupled("cb")),
    _cb_name(getVar("cb", 0)->name()),
    _prop_h(getMaterialProperty<Real>("h_name")),
    _first_derivative_Fa(getMaterialPropertyDerivative<Real>("fa_name", _ca_name)),
    _second_derivative_Fa(getMaterialPropertyDerivative<Real>("fa_name", _ca_name, _ca_name)),
    _second_derivative_Fb(getMaterialPropertyDerivative<Real>("fb_name", _cb_name, _cb_name)),
    _w_var(coupled("w")),
    _w(coupledValue("w"))
{
  // reserve space for derivatives
  _d2Fadcadarg.resize(_nvar);

  // Iterate over all coupled variables
  for (unsigned int i = 0; i < _nvar; ++i)
  {
    MooseVariable *cvar = this->_coupled_moose_vars[i];

    // get the second derivative material property
    _d2Fadcadarg[i] = &getMaterialPropertyDerivative<Real>("fa_name", _ca_name, cvar->name());
  }
}
Example #4
0
KKSACBulkBase::KKSACBulkBase(const InputParameters & parameters) :
    ACBulk<Real>(parameters),
    // number of coupled variables (ca, args_a[])
    _nvar(_coupled_moose_vars.size()),
    _eta_name(_var.name()),
    _prop_Fa(getMaterialProperty<Real>("fa_name")),
    _prop_Fb(getMaterialProperty<Real>("fb_name")),
    _prop_dFa(getMaterialPropertyDerivative<Real>("fa_name", _eta_name)),
    _prop_dFb(getMaterialPropertyDerivative<Real>("fb_name", _eta_name)),
    _prop_dh(getMaterialPropertyDerivative<Real>("h_name", _eta_name)),
    _prop_d2h(getMaterialPropertyDerivative<Real>("h_name", _eta_name, _eta_name))
{
  // reserve space for derivatives
  _derivatives_Fa.resize(_nvar);
  _derivatives_Fb.resize(_nvar);
  _grad_args.resize(_nvar);

  // Iterate over all coupled variables
  for (unsigned int i = 0; i < _nvar; ++i)
  {
    MooseVariable *cvar = _coupled_moose_vars[i];

    // get the first derivatives of Fa and Fb material property
    _derivatives_Fa[i] = &getMaterialPropertyDerivative<Real>("fa_name", cvar->name());
    _derivatives_Fb[i] = &getMaterialPropertyDerivative<Real>("fb_name", cvar->name());

    // get the gradient
    _grad_args[i] = &(cvar->gradSln());
  }
}
Example #5
0
KKSCHBulk::KKSCHBulk(const InputParameters & parameters)
  : CHBulk<Real>(parameters),
    // number of coupled variables (ca, args_a[])
    _nvar(_coupled_moose_vars.size()),
    _ca_var(coupled("ca")),
    _ca_name(getVar("ca", 0)->name()),
    _cb_var(coupled("cb")),
    _cb_name(getVar("cb", 0)->name()),
    _prop_h(getMaterialProperty<Real>("h_name")),
    _second_derivative_Fa(getMaterialPropertyDerivative<Real>("fa_name", _ca_name, _ca_name)),
    _second_derivative_Fb(getMaterialPropertyDerivative<Real>("fb_name", _cb_name, _cb_name))
{
  // reserve space for derivatives
  _second_derivatives.resize(_nvar);
  _third_derivatives.resize(_nvar);
  _third_derivatives_ca.resize(_nvar);
  _grad_args.resize(_nvar);

  // Iterate over all coupled variables
  for (unsigned int i = 0; i < _nvar; ++i)
  {
    MooseVariable * cvar = _coupled_moose_vars[i];

    // get the second derivative material property (TODO:warn)
    _second_derivatives[i] =
        &getMaterialPropertyDerivative<Real>("fa_name", _ca_name, cvar->name());

    // get the third derivative material properties
    _third_derivatives[i].resize(_nvar);
    for (unsigned int j = 0; j < _nvar; ++j)
      _third_derivatives[i][j] = &getMaterialPropertyDerivative<Real>(
          "fa_name", _ca_name, cvar->name(), _coupled_moose_vars[j]->name());

    // third derivative for the on-diagonal jacobian
    _third_derivatives_ca[i] =
        &getMaterialPropertyDerivative<Real>("fa_name", _ca_name, cvar->name(), _ca_name);

    // get the gradient
    _grad_args[i] = &(cvar->gradSln());
  }
}
Example #6
0
MatReaction::MatReaction(const InputParameters & parameters)
  : DerivativeMaterialInterface<JvarMapKernelInterface<Kernel>>(parameters),
    _is_coupled(isCoupled("v")),
    _v_name(_is_coupled ? getVar("v", 0)->name() : _var.name()),
    _v(_is_coupled ? coupledValue("v") : _u),
    _v_var(_is_coupled ? coupled("v") : _var.number()),
    _L(getMaterialProperty<Real>("mob_name")),
    _eta_name(_var.name()),
    _dLdop(getMaterialPropertyDerivative<Real>("mob_name", _eta_name)),
    _dLdv(getMaterialPropertyDerivative<Real>("mob_name", _v_name)),
    _nvar(_coupled_moose_vars.size()),
    _dLdarg(_nvar)
{
  // Get reaction rate derivatives
  for (unsigned int i = 0; i < _nvar; ++i)
  {
    MooseVariable * ivar = _coupled_moose_vars[i];
    _dLdarg[i] = &getMaterialPropertyDerivative<Real>("mob_name", ivar->name());
  }
}