https://mooseframework.inl.gov
Loading...
Searching...
No Matches
ComputeBoundaryInitialConditionThread.C
Go to the documentation of this file.
1//* This file is part of the MOOSE framework
2//* https://mooseframework.inl.gov
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
23
30
32 FEProblemBase & fe_problem, const std::set<VariableName> * target_vars)
33 : ThreadedNodeLoop<ConstBndNodeRange, ConstBndNodeRange::const_iterator>(fe_problem),
34 _target_vars(target_vars)
35{
36}
37
38void
40{
41 const BndNode * bnode = *nd;
42
43 Node * node = bnode->_node;
44 BoundaryID boundary_id = bnode->_bnd_id;
45
46 for (const auto nl_sys_num : make_range(_fe_problem.numNonlinearSystems()))
47 _fe_problem.assembly(_tid, nl_sys_num).reinit(node);
48
50
51 if (warehouse.hasActiveBoundaryObjects(boundary_id, _tid))
52 {
53 const auto & ics = warehouse.getActiveBoundaryObjects(boundary_id, _tid);
54 for (const auto & ic : ics)
55 {
56 // Skip or include initial conditions based on target variable usage
57 const auto & var_name = ic->variable().name();
58 if (_target_vars && !_target_vars->count(var_name))
59 continue;
60
61 if (node->processor_id() == _fe_problem.processor_id())
62 ic->computeNodal(*node);
63 }
64 }
65}
66
67void
boundary_id_type BoundaryID
void reinit(const Elem *elem)
Reinitialize objects (JxW, q_points, ...) for an elements.
Definition Assembly.C:1821
void join(const ComputeBoundaryInitialConditionThread &)
void onNode(ConstBndNodeRange::const_iterator &nd)
const std::set< VariableName > * _target_vars
the names of target variables for which the initial conditions are applied
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
virtual std::size_t numNonlinearSystems() const override
const InitialConditionWarehouse & getInitialConditionWarehouse() const
Return InitialCondition storage.
virtual Assembly & assembly(const THREAD_ID tid, const unsigned int sys_num) override
Warehouse for storing initial conditions.
const std::map< BoundaryID, std::vector< std::shared_ptr< T > > > & getActiveBoundaryObjects(THREAD_ID tid=0) const
bool hasActiveBoundaryObjects(THREAD_ID tid=0) const
processor_id_type processor_id() const
vec_type::const_iterator const_iterator
BoundaryID _bnd_id
boundary id for the node
Definition BndNode.h:26
libMesh::Node * _node
pointer to the node
Definition BndNode.h:24