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()); } }
VariableGradient & Coupleable::coupledGradient(const std::string & var_name, unsigned int comp) { coupledCallback(var_name, false); if (_nodal) mooseError("Nodal variables do not have gradients"); MooseVariable * var = getVar(var_name, comp); return (_c_is_implicit) ? var->gradSln() : var->gradSlnOld(); }
const VariableGradient & Coupleable::coupledGradient(const std::string & var_name, unsigned int comp) { if (!isCoupled(var_name)) // Return default 0 return _default_gradient; coupledCallback(var_name, false); if (_nodal) mooseError("Nodal variables do not have gradients"); MooseVariable * var = getVar(var_name, comp); if (!_coupleable_neighbor) return (_c_is_implicit) ? var->gradSln() : var->gradSlnOld(); else return (_c_is_implicit) ? var->gradSlnNeighbor() : var->gradSlnOldNeighbor(); }
KKSCHBulk::KKSCHBulk(const std::string & name, InputParameters parameters) : DerivativeMaterialInterface<JvarMapInterface<CHBulk> >(name, parameters), // number of coupled variables (ca, args_a[]) _nvar(_coupled_moose_vars.size()), _Fa_name(getParam<std::string>("fa_name")), _Fb_name(getParam<std::string>("fb_name")), _h_name(getParam<std::string>("h_name")), _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 = this->_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()); } }
Real MultiAppSamplePostprocessorTransferFlux::getValue(MooseVariable & variable) const { return - _mat_prop * variable.gradSln()[0] * _normal[0]; }