www.mooseframework.org
ComputeBoundaryInitialConditionThread.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
11 
12 // MOOSE includes
13 #include "Assembly.h"
14 #include "InitialCondition.h"
15 #include "MooseVariableFE.h"
16 #include "SystemBase.h"
17 
19  FEProblemBase & fe_problem)
20  : ThreadedNodeLoop<ConstBndNodeRange, ConstBndNodeRange::const_iterator>(fe_problem)
21 {
22 }
23 
25  ComputeBoundaryInitialConditionThread & x, Threads::split split)
27 {
28 }
29 
30 void
31 ComputeBoundaryInitialConditionThread::onNode(ConstBndNodeRange::const_iterator & nd)
32 {
33  const BndNode * bnode = *nd;
34 
35  Node * node = bnode->_node;
36  BoundaryID boundary_id = bnode->_bnd_id;
37 
38  for (const auto nl_sys_num : make_range(_fe_problem.numNonlinearSystems()))
39  _fe_problem.assembly(_tid, nl_sys_num).reinit(node);
40 
42 
43  if (warehouse.hasActiveBoundaryObjects(boundary_id, _tid))
44  {
45  const auto & ics = warehouse.getActiveBoundaryObjects(boundary_id, _tid);
46  for (const auto & ic : ics)
47  if (node->processor_id() == _fe_problem.processor_id())
48  ic->computeNodal(*node);
49  }
50 }
51 
52 void
54 {
55 }
virtual std::size_t numNonlinearSystems() const override
Warehouse for storing initial conditions.
const InitialConditionWarehouse & getInitialConditionWarehouse() const
Return InitialCondition storage.
BoundaryID _bnd_id
boundary id for the node
Definition: BndNode.h:26
Node * _node
pointer to the node
Definition: BndNode.h:24
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
void reinit(const Elem *elem)
Reinitialize objects (JxW, q_points, ...) for an elements.
Definition: Assembly.C:1811
virtual Assembly & assembly(const THREAD_ID tid, const unsigned int sys_num) override
bool hasActiveBoundaryObjects(THREAD_ID tid=0) const
boundary_id_type BoundaryID
const std::map< BoundaryID, std::vector< std::shared_ptr< T > > > & getActiveBoundaryObjects(THREAD_ID tid=0) const
tbb::split split
void onNode(ConstBndNodeRange::const_iterator &nd)
Called for each node.
IntRange< T > make_range(T beg, T end)
StoredRange< MooseMesh::const_bnd_node_iterator, const BndNode * > ConstBndNodeRange
Some useful StoredRange typedefs.
Definition: MooseMesh.h:2026
processor_id_type processor_id() const
void join(const ComputeBoundaryInitialConditionThread &)