Example #1
0
UpdateErrorVectorsThread::UpdateErrorVectorsThread(
    FEProblemBase & fe_problem,
    const std::map<std::string, std::unique_ptr<ErrorVector>> & indicator_field_to_error_vector)
  : ThreadedElementLoop<ConstElemRange>(fe_problem),
    _indicator_field_to_error_vector(indicator_field_to_error_vector),
    _aux_sys(fe_problem.getAuxiliarySystem()),
    _system_number(_aux_sys.number()),
    _adaptivity(fe_problem.adaptivity()),
    _solution(_aux_sys.solution())
{
  // Build up this map once so we don't have to do these lookups over and over again
  for (const auto & it : _indicator_field_to_error_vector)
  {
    unsigned int var_num = _aux_sys.getVariable(0, it.first).number();
    _indicator_field_number_to_error_vector.emplace(var_num, it.second.get());
  }
}
Example #2
0
ComputeIndicatorThread::ComputeIndicatorThread(FEProblemBase & fe_problem, bool finalize)
  : ThreadedElementLoop<ConstElemRange>(fe_problem),
    _fe_problem(fe_problem),
    _aux_sys(fe_problem.getAuxiliarySystem()),
    _indicator_whs(_fe_problem.getIndicatorWarehouse()),
    _internal_side_indicators(_fe_problem.getInternalSideIndicatorWarehouse()),
    _finalize(finalize)
{
}
ComputeElemAuxVarsThread::ComputeElemAuxVarsThread(FEProblemBase & problem,
                                                   const MooseObjectWarehouse<AuxKernel> & storage,
                                                   bool need_materials)
  : ThreadedElementLoop<ConstElemRange>(problem),
    _aux_sys(problem.getAuxiliarySystem()),
    _aux_kernels(storage),
    _need_materials(need_materials)
{
}
ComputeNodalKernelBCJacobiansThread::ComputeNodalKernelBCJacobiansThread(FEProblemBase & fe_problem,
        const MooseObjectWarehouse<NodalKernel> & nodal_kernels,
        SparseMatrix<Number> & jacobian) :
    ThreadedNodeLoop<ConstBndNodeRange, ConstBndNodeRange::const_iterator>(fe_problem),
    _aux_sys(fe_problem.getAuxiliarySystem()),
    _nodal_kernels(nodal_kernels),
    _jacobian(jacobian),
    _num_cached(0)
{
}
Example #5
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();
}
Example #7
0
AuxiliarySystem::AuxiliarySystem(FEProblemBase & subproblem, const std::string & name) :
    SystemBase(subproblem, name, Moose::VAR_AUXILIARY),
    _fe_problem(subproblem),
    _sys(subproblem.es().add_system<TransientExplicitSystem>(name)),
    _serialized_solution(*NumericVector<Number>::build(_fe_problem.comm()).release()),
    _u_dot(addVector("u_dot", true, GHOSTED)),
    _need_serialized_solution(false)
{
  _nodal_vars.resize(libMesh::n_threads());
  _elem_vars.resize(libMesh::n_threads());
}
ComputeResidualThread::ComputeResidualThread(FEProblemBase & fe_problem, Moose::KernelType type)
  : ThreadedElementLoop<ConstElemRange>(fe_problem),
    _nl(fe_problem.getNonlinearSystemBase()),
    _kernel_type(type),
    _num_cached(0),
    _integrated_bcs(_nl.getIntegratedBCWarehouse()),
    _dg_kernels(_nl.getDGKernelWarehouse()),
    _interface_kernels(_nl.getInterfaceKernelWarehouse()),
    _kernels(_nl.getKernelWarehouse())
{
}
ComputeNodalKernelBcsThread::ComputeNodalKernelBcsThread(
    FEProblemBase & fe_problem,
    MooseObjectTagWarehouse<NodalKernel> & nodal_kernels,
    const std::set<TagID> & tags)
  : ThreadedNodeLoop<ConstBndNodeRange, ConstBndNodeRange::const_iterator>(fe_problem),
    _fe_problem(fe_problem),
    _aux_sys(fe_problem.getAuxiliarySystem()),
    _tags(tags),
    _nodal_kernels(nodal_kernels),
    _num_cached(0)
{
}
Example #10
0
AuxiliarySystem::AuxiliarySystem(FEProblemBase & subproblem, const std::string & name)
  : SystemBase(subproblem, name, Moose::VAR_AUXILIARY),
    PerfGraphInterface(subproblem.getMooseApp().perfGraph(), "AuxiliarySystem"),
    _fe_problem(subproblem),
    _sys(subproblem.es().add_system<TransientExplicitSystem>(name)),
    _current_solution(NULL),
    _serialized_solution(*NumericVector<Number>::build(_fe_problem.comm()).release()),
    _solution_previous_nl(NULL),
    _u_dot(NULL),
    _u_dotdot(NULL),
    _u_dot_old(NULL),
    _u_dotdot_old(NULL),
    _need_serialized_solution(false),
    _aux_scalar_storage(_app.getExecuteOnEnum()),
    _nodal_aux_storage(_app.getExecuteOnEnum()),
    _elemental_aux_storage(_app.getExecuteOnEnum()),
    _compute_scalar_vars_timer(registerTimedSection("computeScalarVars", 1)),
    _compute_nodal_vars_timer(registerTimedSection("computeNodalVars", 1)),
    _compute_elemental_vars_timer(registerTimedSection("computeElementalVars", 1))
{
  _nodal_vars.resize(libMesh::n_threads());
  _elem_vars.resize(libMesh::n_threads());
}
Example #11
0
VectorPostprocessorData::VectorPostprocessorData(FEProblemBase & fe_problem)
  : Restartable(fe_problem.getMooseApp(), "values", "VectorPostprocessorData", 0),
    ParallelObject(fe_problem)
{
}