コード例 #1
0
ファイル: ImplicitODEy.C プロジェクト: zachmprince/moose
ImplicitODEy::ImplicitODEy(const InputParameters & parameters)
  : // You must call the constructor of the base class first
    ODEKernel(parameters),
    // get the coupled variable number and values
    _x_var(coupledScalar("x")),
    _x(coupledScalarValue("x"))
{
}
コード例 #2
0
OneDEqualValueConstraintBC::OneDEqualValueConstraintBC(const InputParameters & parameters) :
    IntegratedBC(parameters),
    _lambda(coupledScalarValue("lambda")),
    _lambda_var_number(coupledScalar("lambda")),
    _component(getParam<unsigned int>("component")),
    _vg(getParam<Real>("vg"))
{
}
コード例 #3
0
GeneralizedPlaneStrainOffDiag::GeneralizedPlaneStrainOffDiag(const InputParameters & parameters)
  : DerivativeMaterialInterface<Kernel>(parameters),
    _base_name(isParamValid("base_name") ? getParam<std::string>("base_name") + "_" : ""),
    _Jacobian_mult(getMaterialProperty<RankFourTensor>(_base_name + "Jacobian_mult")),
    _eigenstrain_names(getParam<std::vector<MaterialPropertyName>>("eigenstrain_names")),
    _deigenstrain_dT(_eigenstrain_names.size()),
    _scalar_out_of_plane_strain_var(coupledScalar("scalar_out_of_plane_strain")),
    _temp_var(isParamValid("temperature")
                  ? &_subproblem.getVariable(_tid, getParam<NonlinearVariableName>("temperature"))
                  : NULL)
{
  const std::vector<NonlinearVariableName> & nl_vnames(
      getParam<std::vector<NonlinearVariableName>>("displacements"));
  if (nl_vnames.size() > 2)
    mooseError("GeneralizedPlaneStrainOffDiag only works for 1D axisymmetric or 2D Cartesian "
               "generalized plane strain cases!");

  for (unsigned int i = 0; i < nl_vnames.size(); ++i)
    _disp_var.push_back(&_subproblem.getVariable(_tid, nl_vnames[i]));

  for (unsigned int i = 0; i < _deigenstrain_dT.size(); ++i)
    _deigenstrain_dT[i] = &getMaterialPropertyDerivative<RankTwoTensor>(
        _base_name + _eigenstrain_names[i], _temp_var->name());
}
コード例 #4
0
ファイル: ParsedODEKernel.C プロジェクト: FHilty/moose
ParsedODEKernel::ParsedODEKernel(const InputParameters & parameters)
  : ODEKernel(parameters),
    FunctionParserUtils(parameters),
    _function(getParam<std::string>("function")),
    _nargs(coupledScalarComponents("args")),
    _args(_nargs),
    _arg_names(_nargs),
    _func_dFdarg(_nargs),
    _number_of_nl_variables(_sys.nVariables()),
    _arg_index(_number_of_nl_variables, -1)
{
  // build variables argument (start with variable the kernel is operating on)
  std::string variables = _var.name();

  // add additional coupled variables
  for (unsigned int i = 0; i < _nargs; ++i)
  {
    _arg_names[i] = getScalarVar("args", i)->name();
    variables += "," + _arg_names[i];
    _args[i] = &coupledScalarValue("args", i);

    // populate number -> arg index lookup table skipping aux variables
    unsigned int number = coupledScalar("args", i);
    if (number < _number_of_nl_variables)
      _arg_index[number] = i;
  }

  // base function object
  _func_F = ADFunctionPtr(new ADFunction());

  // set FParser interneal feature flags
  setParserFeatureFlags(_func_F);

  // add the constant expressions
  addFParserConstants(_func_F,
                      getParam<std::vector<std::string>>("constant_names"),
                      getParam<std::vector<std::string>>("constant_expressions"));

  // parse function
  if (_func_F->Parse(_function, variables) >= 0)
    mooseError("Invalid function\n",
               _function,
               "\nin ParsedODEKernel ",
               name(),
               ".\n",
               _func_F->ErrorMsg());

  // on-diagonal derivative
  _func_dFdu = ADFunctionPtr(new ADFunction(*_func_F));

  if (_func_dFdu->AutoDiff(_var.name()) != -1)
    mooseError("Failed to take first derivative w.r.t. ", _var.name());

  // off-diagonal derivatives
  for (unsigned int i = 0; i < _nargs; ++i)
  {
    _func_dFdarg[i] = ADFunctionPtr(new ADFunction(*_func_F));

    if (_func_dFdarg[i]->AutoDiff(_arg_names[i]) != -1)
      mooseError("Failed to take first derivative w.r.t. ", _arg_names[i]);
  }

  // optimize
  if (!_disable_fpoptimizer)
  {
    _func_F->Optimize();
    _func_dFdu->Optimize();
    for (unsigned int i = 0; i < _nargs; ++i)
      _func_dFdarg[i]->Optimize();
  }

  // just-in-time compile
  if (_enable_jit)
  {
    _func_F->JITCompile();
    _func_dFdu->JITCompile();
    for (unsigned int i = 0; i < _nargs; ++i)
      _func_dFdarg[i]->JITCompile();
  }

  // reserve storage for parameter passing buffer
  _func_params.resize(_nargs + 1);
}
コード例 #5
0
ファイル: ScalarVarBC.C プロジェクト: AhmedAly83/moose
ScalarVarBC::ScalarVarBC(const InputParameters & parameters) :
    IntegratedBC(parameters),
    _alpha_var(coupledScalar("alpha")),
    _alpha(coupledScalarValue("alpha"))
{
}
コード例 #6
0
ファイル: ScalarVarBC.C プロジェクト: ChaliZhg/moose
ScalarVarBC::ScalarVarBC(const std::string & name, InputParameters parameters) :
    IntegratedBC(name, parameters),
    _alpha_var(coupledScalar("alpha")),
    _alpha(coupledScalarValue("alpha"))
{
}