www.mooseframework.org
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
ComputeBoundaryInitialConditionThread Class Reference

#include <ComputeBoundaryInitialConditionThread.h>

Inheritance diagram for ComputeBoundaryInitialConditionThread:
[legend]

Public Member Functions

 ComputeBoundaryInitialConditionThread (FEProblemBase &fe_problem)
 
 ComputeBoundaryInitialConditionThread (ComputeBoundaryInitialConditionThread &x, Threads::split split)
 
void onNode (ConstBndNodeRange::const_iterator &nd)
 Called for each node. More...
 
void join (const ComputeBoundaryInitialConditionThread &)
 
void operator() (const ConstBndNodeRange &range)
 
virtual void pre ()
 Called before the node range loop. More...
 
virtual void post ()
 Called after the node range loop. More...
 
virtual void postNode (ConstBndNodeRange::const_iterator &node_it)
 Called after the node assembly is done (including surface assembling) More...
 
virtual void caughtMooseException (MooseException &e)
 Called if a MooseException is caught anywhere during the computation. More...
 
virtual bool keepGoing ()
 Whether or not the loop should continue. More...
 

Protected Member Functions

virtual void printGeneralExecutionInformation () const
 Print information about the loop, mostly order of execution of objects. More...
 

Protected Attributes

FEProblemBase_fe_problem
 
THREAD_ID _tid
 

Detailed Description

Definition at line 20 of file ComputeBoundaryInitialConditionThread.h.

Constructor & Destructor Documentation

◆ ComputeBoundaryInitialConditionThread() [1/2]

ComputeBoundaryInitialConditionThread::ComputeBoundaryInitialConditionThread ( FEProblemBase fe_problem)

◆ ComputeBoundaryInitialConditionThread() [2/2]

ComputeBoundaryInitialConditionThread::ComputeBoundaryInitialConditionThread ( ComputeBoundaryInitialConditionThread x,
Threads::split  split 
)

Member Function Documentation

◆ caughtMooseException()

virtual void ThreadedNodeLoop< ConstBndNodeRange , ConstBndNodeRange::const_iterator >::caughtMooseException ( MooseException e)
inlinevirtualinherited

Called if a MooseException is caught anywhere during the computation.

The single input parameter taken is a MooseException object.

Definition at line 56 of file ThreadedNodeLoop.h.

57  {
58  Threads::spin_mutex::scoped_lock lock(threaded_node_mutex);
59 
60  std::string what(e.what());
62  };
virtual const char * what() const
Get out the error message.
virtual void setException(const std::string &message)
Set an exception, which is stored at this point by toggling a member variable in this class...
static Threads::spin_mutex threaded_node_mutex

◆ join()

void ComputeBoundaryInitialConditionThread::join ( const ComputeBoundaryInitialConditionThread )

Definition at line 53 of file ComputeBoundaryInitialConditionThread.C.

54 {
55 }

◆ keepGoing()

virtual bool ThreadedNodeLoop< ConstBndNodeRange , ConstBndNodeRange::const_iterator >::keepGoing ( )
inlinevirtualinherited

Whether or not the loop should continue.

Returns
true to keep going, false to stop.

Definition at line 69 of file ThreadedNodeLoop.h.

69 { return !_fe_problem.hasException(); }
virtual bool hasException()
Whether or not an exception has occurred.

◆ onNode()

void ComputeBoundaryInitialConditionThread::onNode ( ConstBndNodeRange::const_iterator &  node_it)
virtual

Called for each node.

Reimplemented from ThreadedNodeLoop< ConstBndNodeRange, ConstBndNodeRange::const_iterator >.

Definition at line 31 of file ComputeBoundaryInitialConditionThread.C.

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 }
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
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
IntRange< T > make_range(T beg, T end)
processor_id_type processor_id() const

◆ operator()()

void ThreadedNodeLoop< ConstBndNodeRange , ConstBndNodeRange::const_iterator >::operator() ( const ConstBndNodeRange range)
inherited

Definition at line 94 of file ThreadedNodeLoop.h.

95 {
96  try
97  {
98  ParallelUniqueId puid;
99  _tid = puid.id;
100 
101  pre();
103 
104  for (IteratorType nd = range.begin(); nd != range.end(); ++nd)
105  {
106  if (!keepGoing())
107  break;
108 
109  onNode(nd);
110 
111  postNode(nd);
112  }
113 
114  post();
115  }
116  catch (MooseException & e)
117  {
119  }
120 }
virtual void printGeneralExecutionInformation() const
Print information about the loop, mostly order of execution of objects.
virtual void caughtMooseException(MooseException &e)
Called if a MooseException is caught anywhere during the computation.
virtual bool keepGoing()
Whether or not the loop should continue.
Provides a way for users to bail out of the current solve.
virtual void postNode(ConstBndNodeRange::const_iterator &node_it)
Called after the node assembly is done (including surface assembling)
virtual void onNode(ConstBndNodeRange::const_iterator &node_it)
Called for each node.

◆ post()

void ThreadedNodeLoop< ConstBndNodeRange , ConstBndNodeRange::const_iterator >::post ( )
virtualinherited

Called after the node range loop.

Definition at line 130 of file ThreadedNodeLoop.h.

131 {
132 }

◆ postNode()

void ThreadedNodeLoop< ConstBndNodeRange , ConstBndNodeRange::const_iterator >::postNode ( ConstBndNodeRange::const_iterator &  node_it)
virtualinherited

Called after the node assembly is done (including surface assembling)

Parameters
node- active node

Definition at line 142 of file ThreadedNodeLoop.h.

143 {
144 }

◆ pre()

void ThreadedNodeLoop< ConstBndNodeRange , ConstBndNodeRange::const_iterator >::pre ( )
virtualinherited

Called before the node range loop.

Reimplemented in ComputeNodalKernelBCJacobiansThread, and ComputeNodalKernelBcsThread.

Definition at line 124 of file ThreadedNodeLoop.h.

125 {
126 }

◆ printGeneralExecutionInformation()

virtual void ThreadedNodeLoop< ConstBndNodeRange , ConstBndNodeRange::const_iterator >::printGeneralExecutionInformation ( ) const
inlineprotectedvirtualinherited

Print information about the loop, mostly order of execution of objects.

Reimplemented in ComputeNodalKernelBCJacobiansThread, ComputeNodalAuxBcsThread< AuxKernelType >, and ComputeNodalKernelBcsThread.

Definition at line 76 of file ThreadedNodeLoop.h.

76 {}

Member Data Documentation

◆ _fe_problem

FEProblemBase& ThreadedNodeLoop< ConstBndNodeRange , ConstBndNodeRange::const_iterator >::_fe_problem
protectedinherited

Definition at line 72 of file ThreadedNodeLoop.h.

Referenced by onNode(), and BoundaryNodeIntegrityCheckThread::onNode().

◆ _tid

THREAD_ID ThreadedNodeLoop< ConstBndNodeRange , ConstBndNodeRange::const_iterator >::_tid
protectedinherited

The documentation for this class was generated from the following files: