Example #1
0
RandomData::RandomData(FEProblemBase & problem, const RandomInterface & random_interface)
  : _rd_problem(problem),
    _rd_mesh(problem.mesh()),
    _is_nodal(random_interface.isNodal()),
    _reset_on(random_interface.getResetOnTime()),
    _master_seed(random_interface.getMasterSeed()),
    _current_master_seed(std::numeric_limits<unsigned int>::max()),
    _new_seed(0)
{
}
void
MultiAppCopyTransfer::transfer(FEProblemBase & to_problem, FEProblemBase & from_problem)
{
  // Populate the to/from variables needed to perform the transfer
  MooseVariableFE & to_var = to_problem.getVariable(0, _to_var_name);
  MeshBase & to_mesh = to_problem.mesh().getMesh();

  MooseVariableFE & from_var = from_problem.getVariable(0, _from_var_name);
  MeshBase & from_mesh = from_problem.mesh().getMesh();

  // Check integrity
  if (to_var.feType() != from_var.feType())
    paramError("variable",
               "'variable' and 'source_variable' must be the same type (order and family): ",
               libMesh::Utility::enum_to_string<FEFamily>(to_var.feType().family),
               moose::internal::incompatVarMsg(to_var, from_var));

  if ((to_mesh.n_nodes() != from_mesh.n_nodes()) || (to_mesh.n_elem() != from_mesh.n_elem()))
    mooseError("The meshes must be identical to utilize MultiAppCopyTransfer.");

  // Transfer node dofs
  MeshBase::const_node_iterator node_it = to_mesh.local_nodes_begin();
  MeshBase::const_node_iterator node_end = to_mesh.local_nodes_end();
  for (; node_it != node_end; ++node_it)
    transferDofObject(*node_it, from_mesh.node_ptr((*node_it)->id()), to_var, from_var);

  // Transfer elem dofs
  MeshBase::const_element_iterator elem_it = to_mesh.local_elements_begin();
  MeshBase::const_element_iterator elem_end = to_mesh.local_elements_end();
  Elem * to_elem;
  Elem * from_elem;
  for (; elem_it != elem_end; ++elem_it)
  {
    to_elem = *elem_it;
    from_elem = from_mesh.elem_ptr(to_elem->id());
    mooseAssert(to_elem->type() == from_elem->type(), "The elements must be the same type.");
    transferDofObject(to_elem, from_elem, to_var, from_var);
  }

  to_var.sys().solution().close();
  to_var.sys().update();
}