www.mooseframework.org
ComputeUserObjectsThread.h
Go to the documentation of this file.
1 /****************************************************************/
2 /* DO NOT MODIFY THIS HEADER */
3 /* MOOSE - Multiphysics Object Oriented Simulation Environment */
4 /* */
5 /* (c) 2010 Battelle Energy Alliance, LLC */
6 /* ALL RIGHTS RESERVED */
7 /* */
8 /* Prepared by Battelle Energy Alliance, LLC */
9 /* Under Contract No. DE-AC07-05ID14517 */
10 /* With the U. S. Department of Energy */
11 /* */
12 /* See COPYRIGHT for full restrictions */
13 /****************************************************************/
14 
15 #ifndef COMPUTEUSEROBJECTSTHREAD_H
16 #define COMPUTEUSEROBJECTSTHREAD_H
17 
18 // MOOSE includes
19 #include "ThreadedElementLoop.h"
20 
21 #include "libmesh/elem_range.h"
22 
23 // libMesh forward declarations
24 namespace libMesh
25 {
26 template <typename T>
27 class NumericVector;
28 }
29 
33 class ComputeUserObjectsThread : public ThreadedElementLoop<ConstElemRange>
34 {
35 public:
37  FEProblemBase & problem,
38  SystemBase & sys,
39  const MooseObjectWarehouse<ElementUserObject> & elemental_user_objects,
40  const MooseObjectWarehouse<SideUserObject> & side_user_objects,
41  const MooseObjectWarehouse<InternalSideUserObject> & internal_side_user_objects);
42  // Splitting Constructor
44 
45  virtual ~ComputeUserObjectsThread();
46 
47  virtual void onElement(const Elem * elem) override;
48  virtual void onBoundary(const Elem * elem, unsigned int side, BoundaryID bnd_id) override;
49  virtual void onInternalSide(const Elem * elem, unsigned int side) override;
50  virtual void post() override;
51  virtual void subdomainChanged() override;
52 
53  void join(const ComputeUserObjectsThread & /*y*/);
54 
55 protected:
56  const NumericVector<Number> & _soln;
57 
64 };
65 
66 #endif // COMPUTEUSEROBJECTSTHREAD_H
Base class for assembly-like calculations.
const MooseObjectWarehouse< InternalSideUserObject > & _internal_side_user_objects
The following methods are specializations for using the libMesh::Parallel::packed_range_* routines fo...
static PetscErrorCode Vec x
Base class for a system (of equations)
Definition: SystemBase.h:91
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
const MooseObjectWarehouse< SideUserObject > & _side_user_objects
const MooseObjectWarehouse< ElementUserObject > & _elemental_user_objects
const NumericVector< Number > & _soln
Class for threaded computation of UserObjects.
boundary_id_type BoundaryID
Definition: MooseTypes.h:75