www.mooseframework.org
UpdateDisplacedMeshThread.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 UPDATEDISPLACEDMESHTHREAD_H
16 #define UPDATEDISPLACEDMESHTHREAD_H
17 
18 // MOOSE includes
19 #include "MooseMesh.h"
20 #include "ThreadedNodeLoop.h"
21 
22 // Forward declarations
23 class DisplacedProblem;
25 
26 // libMesh forward declarations
27 namespace libMesh
28 {
29 template <typename T>
30 class NumericVector;
31 }
32 
33 class UpdateDisplacedMeshThread : public ThreadedNodeLoop<NodeRange, NodeRange::const_iterator>
34 {
35 public:
36  UpdateDisplacedMeshThread(FEProblemBase & fe_problem, DisplacedProblem & displaced_problem);
37 
38  UpdateDisplacedMeshThread(UpdateDisplacedMeshThread & x, Threads::split split);
39 
40  virtual void onNode(NodeRange::const_iterator & nd) override;
41 
42  void join(const UpdateDisplacedMeshThread & /*y*/);
43 
44 protected:
45  void init();
46 
49  const NumericVector<Number> & _nl_soln;
50  const NumericVector<Number> & _aux_soln;
51 
52  // Solution vectors with expanded ghosting, for ReplicatedMesh or
53  // for DistributedMesh cases where the standard algebraic ghosting
54  // doesn't reach as far as the geometric ghosting
55  std::shared_ptr<NumericVector<Number>> _nl_ghosted_soln;
56  std::shared_ptr<NumericVector<Number>> _aux_ghosted_soln;
57 
58 private:
59  std::vector<unsigned int> _var_nums;
60  std::vector<unsigned int> _var_nums_directions;
61 
62  std::vector<unsigned int> _aux_var_nums;
63  std::vector<unsigned int> _aux_var_nums_directions;
64 
65  unsigned int _num_var_nums;
66  unsigned int _num_aux_var_nums;
67 
69  unsigned int _aux_system_number;
70 };
71 
72 #endif /* UPDATEDISPLACEDMESHTHREAD_H */
std::vector< unsigned int > _aux_var_nums_directions
const NumericVector< Number > & _nl_soln
The following methods are specializations for using the libMesh::Parallel::packed_range_* routines fo...
static PetscErrorCode Vec x
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
std::vector< unsigned int > _var_nums
const NumericVector< Number > & _aux_soln
std::shared_ptr< NumericVector< Number > > _nl_ghosted_soln
MooseMesh wraps a libMesh::Mesh object and enhances its capabilities by caching additional data and s...
Definition: MooseMesh.h:74
std::shared_ptr< NumericVector< Number > > _aux_ghosted_soln
std::vector< unsigned int > _var_nums_directions
std::vector< unsigned int > _aux_var_nums