www.mooseframework.org
PointValueAtXFEMInterface.h
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 
10 #pragma once
11 
12 #include "GeneralUserObject.h"
13 #include "ElementPairLocator.h"
14 #include "MooseVariableFE.h"
15 
16 #include "libmesh/vector_value.h"
17 
18 // Forward Declarations
20 class XFEM;
22 
23 template <>
25 
26 class PointValueAtXFEMInterface : public GeneralUserObject
27 {
28 public:
29  PointValueAtXFEMInterface(const InputParameters & parameters);
30 
32 
33  virtual void initialize() override;
34  virtual void execute() override;
35  virtual void finalize() override;
36 
40  std::map<unsigned int, Real> getValueAtPositiveLevelSet() const
41  {
43  };
44 
48  std::map<unsigned int, Real> getValueAtNegativeLevelSet() const
49  {
51  };
52 
56  std::map<unsigned int, RealVectorValue> getGradientAtPositiveLevelSet() const
57  {
59  };
60 
64  std::map<unsigned int, RealVectorValue> getGradientAtNegativeLevelSet() const
65  {
67  };
68 
69  unsigned int numberPoints() const { return _points.size(); };
70 
71 protected:
79  const Elem * getElemContainingPoint(const Point & p, bool positive_level_set);
80 
82  MooseMesh & _mesh;
83 
85  std::vector<Point> _points;
86 
88  std::unique_ptr<PointLocatorBase> _pl;
89 
91  std::shared_ptr<XFEM> _xfem;
92 
94  const ElementPairLocator::ElementPairList * _elem_pairs;
95 
98 
100  MooseVariableFEBase * _var;
101 
103  const unsigned int _level_set_var_number;
104 
106  const System & _system;
107 
109  const NumericVector<Number> * _solution;
110 
112  std::map<unsigned int, Real> _values_positive_level_set_side;
113 
115  std::map<unsigned int, Real> _values_negative_level_set_side;
116 
118  std::map<unsigned int, RealVectorValue> _grad_values_positive_level_set_side;
119 
121  std::map<unsigned int, RealVectorValue> _grad_values_negative_level_set_side;
122 };
123 
PointValueAtXFEMInterface::_geo_cut
const LineSegmentCutSetUserObject * _geo_cut
Pointer to LineSegmentCutSetUserObject object.
Definition: PointValueAtXFEMInterface.h:97
PointValueAtXFEMInterface::execute
virtual void execute() override
Definition: PointValueAtXFEMInterface.C:70
PointValueAtXFEMInterface::_mesh
MooseMesh & _mesh
The Mesh we're using.
Definition: PointValueAtXFEMInterface.h:82
PointValueAtXFEMInterface::finalize
virtual void finalize() override
Definition: PointValueAtXFEMInterface.C:131
PointValueAtXFEMInterface::_system
const System & _system
System reference.
Definition: PointValueAtXFEMInterface.h:106
PointValueAtXFEMInterface::getValueAtNegativeLevelSet
std::map< unsigned int, Real > getValueAtNegativeLevelSet() const
get the map that stores the point index and its values at the negative level set side
Definition: PointValueAtXFEMInterface.h:48
PointValueAtXFEMInterface::PointValueAtXFEMInterface
PointValueAtXFEMInterface(const InputParameters &parameters)
Definition: PointValueAtXFEMInterface.C:38
PointValueAtXFEMInterface::numberPoints
unsigned int numberPoints() const
Definition: PointValueAtXFEMInterface.h:69
PointValueAtXFEMInterface::_pl
std::unique_ptr< PointLocatorBase > _pl
Pointer to PointLocatorBase object.
Definition: PointValueAtXFEMInterface.h:88
PointValueAtXFEMInterface::_xfem
std::shared_ptr< XFEM > _xfem
Pointer to the XFEM controller object.
Definition: PointValueAtXFEMInterface.h:91
PointValueAtXFEMInterface::_values_positive_level_set_side
std::map< unsigned int, Real > _values_positive_level_set_side
Mapping from point index and its values at the positive level set side.
Definition: PointValueAtXFEMInterface.h:112
PointValueAtXFEMInterface::getGradientAtPositiveLevelSet
std::map< unsigned int, RealVectorValue > getGradientAtPositiveLevelSet() const
get the map that stores the point index and its gradient at the positive level set side
Definition: PointValueAtXFEMInterface.h:56
PointValueAtXFEMInterface::_var
MooseVariableFEBase * _var
Pointer to MooseVariableFEBase object.
Definition: PointValueAtXFEMInterface.h:100
PointValueAtXFEMInterface::getValueAtPositiveLevelSet
std::map< unsigned int, Real > getValueAtPositiveLevelSet() const
get the map that stores the point index and its values at the positive level set side
Definition: PointValueAtXFEMInterface.h:40
PointValueAtXFEMInterface::_solution
const NumericVector< Number > * _solution
The subproblem solution vector.
Definition: PointValueAtXFEMInterface.h:109
PointValueAtXFEMInterface::_elem_pairs
const ElementPairLocator::ElementPairList * _elem_pairs
Pointer to ElementPairList object.
Definition: PointValueAtXFEMInterface.h:94
PointValueAtXFEMInterface::getElemContainingPoint
const Elem * getElemContainingPoint(const Point &p, bool positive_level_set)
Find the element in the element pairs that contains the point in its physical domain.
Definition: PointValueAtXFEMInterface.C:140
PointValueAtXFEMInterface::_points
std::vector< Point > _points
The points to evaluate at.
Definition: PointValueAtXFEMInterface.h:85
PointValueAtXFEMInterface::_level_set_var_number
const unsigned int _level_set_var_number
The variable number of the level set variable we are operating on.
Definition: PointValueAtXFEMInterface.h:103
PointValueAtXFEMInterface::initialize
virtual void initialize() override
Definition: PointValueAtXFEMInterface.C:50
PointValueAtXFEMInterface::~PointValueAtXFEMInterface
virtual ~PointValueAtXFEMInterface()
Definition: PointValueAtXFEMInterface.h:31
LineSegmentCutSetUserObject
Definition: LineSegmentCutSetUserObject.h:20
PointValueAtXFEMInterface::_grad_values_negative_level_set_side
std::map< unsigned int, RealVectorValue > _grad_values_negative_level_set_side
Mapping from point index and its gradient at the negative level set side.
Definition: PointValueAtXFEMInterface.h:121
PointValueAtXFEMInterface::getGradientAtNegativeLevelSet
std::map< unsigned int, RealVectorValue > getGradientAtNegativeLevelSet() const
get the map that stores the point index and its graident at the negative level set side
Definition: PointValueAtXFEMInterface.h:64
PointValueAtXFEMInterface::_values_negative_level_set_side
std::map< unsigned int, Real > _values_negative_level_set_side
Mapping from point index and its values at the negative level set side.
Definition: PointValueAtXFEMInterface.h:115
PointValueAtXFEMInterface
Definition: PointValueAtXFEMInterface.h:26
XFEM
This is the XFEM class.
Definition: XFEM.h:61
PointValueAtXFEMInterface::_grad_values_positive_level_set_side
std::map< unsigned int, RealVectorValue > _grad_values_positive_level_set_side
Mapping from point index and its gradient at the positive level set side.
Definition: PointValueAtXFEMInterface.h:118
validParams< PointValueAtXFEMInterface >
InputParameters validParams< PointValueAtXFEMInterface >()
Definition: PointValueAtXFEMInterface.C:24