VariableValue & Coupleable::coupledValueOlder(const std::string & var_name, unsigned int comp) { if (!isCoupled(var_name)) // Need to generate a "default value" filled VariableValue { VariableValue * value = _default_value[var_name]; if (value == NULL) { value = new VariableValue(_coupleable_max_qps, _coupleable_params.defaultCoupledValue(var_name)); _default_value[var_name] = value; } return *_default_value[var_name]; } validateExecutionerType(var_name); coupledCallback(var_name, true); MooseVariable * var = getVar(var_name, comp); if (_nodal) { if (_c_is_implicit) return var->nodalSlnOlder(); else mooseError("Older values not available for explicit schemes"); } else { if (_c_is_implicit) return var->slnOlder(); else mooseError("Older values not available for explicit schemes"); } }
const VariableValue & Coupleable::coupledValueOld(const std::string & var_name, unsigned int comp) { if (!isCoupled(var_name)) return *getDefaultValue(var_name); validateExecutionerType(var_name); coupledCallback(var_name, true); MooseVariable * var = getVar(var_name, comp); if (!_coupleable_neighbor) { if (_nodal) return (_c_is_implicit) ? var->nodalSlnOld() : var->nodalSlnOlder(); else return (_c_is_implicit) ? var->slnOld() : var->slnOlder(); } else { if (_nodal) return (_c_is_implicit) ? var->nodalSlnOldNeighbor() : var->nodalSlnOlderNeighbor(); else return (_c_is_implicit) ? var->slnOldNeighbor() : var->slnOlderNeighbor(); } }
VariableValue & ScalarCoupleable::coupledScalarDotDu(const std::string & var_name, unsigned int comp) { checkVar(var_name); validateExecutionerType(var_name, "coupledScalarDotDu"); MooseVariableScalar * var = getScalarVar(var_name, comp); return var->duDotDu(); }
const DenseVector<Number> & NeighborCoupleable::coupledNeighborSolutionDoFsOld(const std::string & var_name, unsigned int comp) { if (_neighbor_nodal) mooseError("nodal objects should not call coupledSolutionDoFsOld"); validateExecutionerType(var_name, "coupledNeighborSolutionDoFsOld"); MooseVariable * var = getVar(var_name, comp); return (_c_is_implicit) ? var->solutionDoFsOldNeighbor() : var->solutionDoFsOlderNeighbor(); }
const VariableGradient & NeighborCoupleable::coupledNeighborGradientOld(const std::string & var_name, unsigned int comp) { if (_neighbor_nodal) mooseError("Nodal variables do not have gradients"); validateExecutionerType(var_name, "coupledNeighborGradientOld"); MooseVariable * var = getVar(var_name, comp); return (_c_is_implicit) ? var->gradSlnOldNeighbor() : var->gradSlnOlderNeighbor(); }
const VariableValue & NeighborCoupleable::coupledNeighborValueOld(const std::string & var_name, unsigned int comp) { validateExecutionerType(var_name, "coupledNeighborValueOld"); MooseVariable * var = getVar(var_name, comp); if (_neighbor_nodal) return (_c_is_implicit) ? var->nodalValueOldNeighbor() : var->nodalValueOlderNeighbor(); else return (_c_is_implicit) ? var->slnOldNeighbor() : var->slnOlderNeighbor(); }
VariableSecond & Coupleable::coupledSecondOld(const std::string & var_name, unsigned int comp) { coupledCallback(var_name, true); if (_nodal) mooseError("Nodal variables do not have second derivatives"); validateExecutionerType(var_name); MooseVariable * var = getVar(var_name, comp); return (_c_is_implicit) ? var->secondSlnOld() : var->secondSlnOlder(); }
VariableValue & ScalarCoupleable::coupledScalarValueOld(const std::string & var_name, unsigned int comp) { checkVar(var_name); if (!isCoupledScalar(var_name, comp)) return *getDefaultValue(var_name); validateExecutionerType(var_name, "coupledScalarValueOld"); MooseVariableScalar * var = getScalarVar(var_name, comp); return (_sc_is_implicit) ? var->slnOld() : var->slnOlder(); }
const VariableGradient & NeighborCoupleable::coupledNeighborGradientOlder(const std::string & var_name, unsigned int comp) { if (_neighbor_nodal) mooseError("Nodal variables do not have gradients"); validateExecutionerType(var_name, "coupledNeighborGradientOlder"); MooseVariable * var = getVar(var_name, comp); if (_c_is_implicit) return var->gradSlnOlderNeighbor(); else mooseError("Older values not available for explicit schemes"); }
VariableValue & ScalarCoupleable::coupledScalarValueOlder(const std::string & var_name, unsigned int comp) { checkVar(var_name); if (!isCoupledScalar(var_name, comp)) return *getDefaultValue(var_name); validateExecutionerType(var_name, "coupledScalarValueOlder"); MooseVariableScalar * var = getScalarVar(var_name, comp); if (_sc_is_implicit) return var->slnOlder(); else mooseError("Older values not available for explicit schemes"); }
VariableGradient & Coupleable::coupledGradientOld(const std::string & var_name, unsigned int comp) { if (!isCoupled(var_name)) // Return default 0 return _default_gradient; coupledCallback(var_name, true); if (_nodal) mooseError("Nodal variables do not have gradients"); validateExecutionerType(var_name); MooseVariable * var = getVar(var_name, comp); return (_c_is_implicit) ? var->gradSlnOld() : var->gradSlnOlder(); }
const DenseVector<Number> & NeighborCoupleable::coupledNeighborSolutionDoFsOlder(const std::string & var_name, unsigned int comp) { if (_neighbor_nodal) mooseError("nodal objects should not call coupledSolutionDoFsOlder"); validateExecutionerType(var_name, "coupledNeighborSolutionDoFsOlder"); MooseVariable * var = getVar(var_name, comp); if (_c_is_implicit) return var->solutionDoFsOlderNeighbor(); else mooseError("Older values not available for explicit schemes"); }
const VariableSecond & Coupleable::coupledSecondOld(const std::string & var_name, unsigned int comp) { if (!isCoupled(var_name)) // Return default 0 return _default_second; coupledCallback(var_name, true); if (_nodal) mooseError("Nodal variables do not have second derivatives"); validateExecutionerType(var_name); MooseVariable * var = getVar(var_name, comp); if (!_coupleable_neighbor) return (_c_is_implicit) ? var->secondSlnOld() : var->secondSlnOlder(); else return (_c_is_implicit) ? var->secondSlnOldNeighbor() : var->secondSlnOlderNeighbor(); }
VariableSecond & Coupleable::coupledSecondOlder(const std::string & var_name, unsigned int comp) { if (!isCoupled(var_name)) // Return default 0 return _default_second; coupledCallback(var_name, true); if (_nodal) mooseError("Nodal variables do not have second derivatives"); validateExecutionerType(var_name); MooseVariable * var = getVar(var_name, comp); if (_c_is_implicit) return var->secondSlnOlder(); else mooseError("Older values not available for explicit schemes"); }
const VariableValue & Coupleable::coupledValueOlder(const std::string & var_name, unsigned int comp) { if (!isCoupled(var_name)) return *getDefaultValue(var_name); validateExecutionerType(var_name); coupledCallback(var_name, true); MooseVariable * var = getVar(var_name, comp); if (!_coupleable_neighbor) { if (_nodal) { if (_c_is_implicit) return var->nodalSlnOlder(); else mooseError("Older values not available for explicit schemes"); } else { if (_c_is_implicit) return var->slnOlder(); else mooseError("Older values not available for explicit schemes"); } } else { if (_nodal) { if (_c_is_implicit) return var->nodalSlnOlderNeighbor(); else mooseError("Older values not available for explicit schemes"); } else { if (_c_is_implicit) return var->slnOlderNeighbor(); else mooseError("Older values not available for explicit schemes"); } } }
const DenseVector<Number> & Coupleable::coupledSolutionDoFsOld(const std::string & var_name, unsigned int comp) { // default coupling is not available for elemental solutions if (!isCoupled(var_name)) mooseError("invalid variable name for coupledSolutionDoFsOld"); if (_nodal) mooseError("nodal objects should not call coupledSolutionDoFsOld"); validateExecutionerType(var_name); coupledCallback(var_name, true); MooseVariable * var = getVar(var_name, comp); if (!_coupleable_neighbor) return (_c_is_implicit) ? var->solutionDoFsOld() : var->solutionDoFsOlder(); else return (_c_is_implicit) ? var->solutionDoFsOldNeighbor() : var->solutionDoFsOlderNeighbor(); }
VariableValue & Coupleable::coupledNodalValueOld(const std::string & var_name, unsigned int comp) { if (!isCoupled(var_name)) // Need to generate a "default value" filled VariableValue { VariableValue * value = _default_value[var_name]; if (value == NULL) { value = new VariableValue(_coupleable_max_qps, _coupleable_params.defaultCoupledValue(var_name)); _default_value[var_name] = value; } return *_default_value[var_name]; } validateExecutionerType(var_name); coupledCallback(var_name, true); MooseVariable * var = getVar(var_name, comp); return (_c_is_implicit) ? var->nodalValueOld() : var->nodalValueOlder(); }
const VariableValue & NeighborCoupleable::coupledNeighborValueOlder(const std::string & var_name, unsigned int comp) { validateExecutionerType(var_name, "coupledNeighborValueOlder"); MooseVariable * var = getVar(var_name, comp); if (_neighbor_nodal) { if (_c_is_implicit) return var->nodalValueOlderNeighbor(); else mooseError("Older values not available for explicit schemes"); } else { if (_c_is_implicit) return var->slnOlderNeighbor(); else mooseError("Older values not available for explicit schemes"); } }
const VariableGradient & Coupleable::coupledGradientOlder(const std::string & var_name, unsigned int comp) { if (!isCoupled(var_name)) // Return default 0 return _default_gradient; coupledCallback(var_name, true); if (_nodal) mooseError("Nodal variables do not have gradients"); validateExecutionerType(var_name); MooseVariable * var = getVar(var_name, comp); if (_c_is_implicit) { if (!_coupleable_neighbor) return var->gradSlnOlder(); else return var->gradSlnOlderNeighbor(); } else mooseError("Older values not available for explicit schemes"); }