Ejemplo n.º 1
0
void
AddAuxVariableAction::act()
{
  if (_current_task == "add_aux_variable")
  {
    // Name of variable being added
    std::string var_name = getShortName();

    // Blocks from the input
    std::set<SubdomainID> blocks = getSubdomainIDs();

    // Scalar variable
    if (_scalar_var)
      _problem->addAuxScalarVariable(var_name, _fe_type.order);

    // Non-scalar variable
    else
    {
      // Check that the order is valid (CONSTANT, FIRST, or SECOND)
      if (_fe_type.order > 9)
        mooseError("Non-scalar AuxVariables must be CONSTANT, FIRST, SECOND, THIRD, FOURTH, FIFTH, SIXTH, SEVENTH, EIGHTH or NINTH order (" << _fe_type.order << " supplied)");

      if (blocks.empty())
        _problem->addAuxVariable(var_name, _fe_type);
      else
        _problem->addAuxVariable(var_name, _fe_type, &blocks);
    }
  }

  // Create the initial condition
  if (_current_task == "add_ic")
    setInitialCondition();
}
Ejemplo n.º 2
0
void
AddAuxVariableAction::act()
{
  // Name of variable being added
  std::string var_name = name();

  // Blocks from the input
  std::set<SubdomainID> blocks = getSubdomainIDs();

  // Scalar variable
  if (_scalar_var)
    _problem->addAuxScalarVariable(var_name, _fe_type.order);

  // Non-scalar variable
  else
  {
    // Check that the order is valid (CONSTANT, FIRST, or SECOND)
    if (_fe_type.order > 9)
      mooseError("Non-scalar AuxVariables must be CONSTANT, FIRST, SECOND, THIRD, FOURTH, FIFTH, "
                 "SIXTH, SEVENTH, EIGHTH or NINTH order (",
                 _fe_type.order,
                 " supplied)");

    if (blocks.empty())
      _problem->addAuxVariable(var_name, _fe_type);
    else
      _problem->addAuxVariable(var_name, _fe_type, &blocks);
  }

  // Create the initial condition
  if (isParamValid("initial_condition"))
    createInitialConditionAction();
}
Ejemplo n.º 3
0
void
AddVariableAction::act()
{
  if (_current_action == "add_variable")
  {
    // Get necessary data for creating a variable
    std::string var_name = getShortName();
    std::set<SubdomainID> blocks = getSubdomainIDs();
    Real scale_factor = isParamValid("scaling") ? getParam<Real>("scaling") : 1;

    // Scalar variable
    if (_scalar_var)
      _problem->addScalarVariable(var_name, _fe_type.order, scale_factor);

    // Block restricted variable
    else if (blocks.empty())
      _problem->addVariable(var_name, _fe_type, scale_factor);

    // Non-block restricted variable
    else
      _problem->addVariable(var_name, _fe_type, scale_factor, &blocks);

    if (getParam<bool>("eigen"))
    {
      EigenSystem & esys(static_cast<EigenSystem &>(_problem->getNonlinearSystem()));
      esys.markEigenVariable(var_name);
    }
  }

  // Set the initial condition
  if (_current_action == "add_ic")
    setInitialCondition();
}
Ejemplo n.º 4
0
void
AddVariableAction::addVariable(std::string & var_name)
{
  std::set<SubdomainID> blocks = getSubdomainIDs();
  Real scale_factor = isParamValid("scaling") ? getParam<Real>("scaling") : 1;

  // Scalar variable
  if (_scalar_var)
    _problem->addScalarVariable(var_name, _fe_type.order, scale_factor);

  // Block restricted variable
  else if (blocks.empty())
    _problem->addVariable(var_name, _fe_type, scale_factor);

  // Non-block restricted variable
  else
    _problem->addVariable(var_name, _fe_type, scale_factor, &blocks);

  if (getParam<bool>("eigen"))
  {
    EigenSystem & esys(static_cast<EigenSystem &>(_problem->getNonlinearSystem()));
    esys.markEigenVariable(var_name);
  }
}