MAST
Multidisciplinary-design Adaptation and Sensitivity Toolkit (MAST)
level_set_boundary_velocity.h
Go to the documentation of this file.
1 /*
2  * MAST: Multidisciplinary-design Adaptation and Sensitivity Toolkit
3  * Copyright (C) 2013-2020 Manav Bhatia and MAST authors
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18  */
19 
20 #ifndef __mast__level_set_boundary_velocity_h__
21 #define __mast__level_set_boundary_velocity_h__
22 
23 // MAST includes
25 
26 
27 namespace MAST {
28 
30  public MAST::FieldFunction<RealVectorX> {
31  public:
32 
33  LevelSetBoundaryVelocity(const unsigned int dim);
34 
35  virtual ~LevelSetBoundaryVelocity();
36 
38  const MAST::MeshFieldFunction& phi);
39 
40  void clear();
41 
42  virtual void derivative (const MAST::FunctionBase& f,
43  const libMesh::Point& p,
44  const Real t,
45  RealVectorX& v) const;
46 
47  void velocity(const MAST::FunctionBase& f,
48  const libMesh::Point& p,
49  const Real t,
50  RealVectorX& v) const;
51 
57 
62 
63  void search_nearest_interface_point(const libMesh::Elem& e,
64  const unsigned int side,
65  const libMesh::Point& p,
66  const Real t,
67  RealVectorX& pt) const;
68 
70  const libMesh::Elem& e,
71  const unsigned int side,
72  const libMesh::Point& p,
73  const Real t,
74  RealVectorX& v) const;
75 
76 
83  void search_nearest_interface_point_old(const libMesh::Point& p,
84  const Real t,
85  const Real length,
86  RealVectorX& pt,
87  bool allow_sub_search = true) const;
88 
96  const libMesh::Point& p,
97  const Real t,
98  const Real length,
99  RealVectorX& v) const;
100 
101  void normal_at_point(const libMesh::Point& p,
102  const Real t,
103  RealVectorX& n) const;
104 
105 
107  const libMesh::Point& p,
108  const Real t,
109  RealVectorX& n) const;
110 
111 
112  protected:
113 
114  Real _evaluate_point_search_obj(const libMesh::Point& p,
115  const Real t,
116  const RealVectorX& dv) const;
117 
118  unsigned int _dim;
120  libMesh::MeshBase* _mesh;
122  };
123 }
124 
125 #endif // __mast__level_set_boundary_velocity_h__
126 
void init(MAST::SystemInitialization &sys, const MAST::MeshFieldFunction &phi)
virtual void derivative(const MAST::FunctionBase &f, const libMesh::Point &p, const Real t, RealVectorX &v) const
calculates the value of the derivative of function with respect to the function f at the specified po...
const MAST::MeshFieldFunction * _phi
This provides a wrapper FieldFunction compatible class that interpolates the solution using libMesh&#39;s...
void attach_level_set_function(const MAST::FieldFunction< Real > &phi)
attaches the level set function phi with this object.
LevelSetBoundaryVelocity(const unsigned int dim)
void search_nearest_interface_point_derivative_old(const MAST::FunctionBase &f, const libMesh::Point &p, const Real t, const Real length, RealVectorX &v) const
serches for a point pt in the vicinity of p on the level set interface, where level set function is z...
libMesh::Real Real
void normal_at_point(const libMesh::Point &p, const Real t, RealVectorX &n) const
void search_nearest_interface_point(const libMesh::Elem &e, const unsigned int side, const libMesh::Point &p, const Real t, RealVectorX &pt) const
void velocity(const MAST::FunctionBase &f, const libMesh::Point &p, const Real t, RealVectorX &v) const
void search_nearest_interface_point_old(const libMesh::Point &p, const Real t, const Real length, RealVectorX &pt, bool allow_sub_search=true) const
serches for a point pt in the vicinity of p on the level set interface, where level set function is z...
This creates the base class for functions that have a saptial and temporal dependence, and provide sensitivity operations with respect to the functions and parameters.
const MAST::FieldFunction< Real > * _level_set_func
Real _evaluate_point_search_obj(const libMesh::Point &p, const Real t, const RealVectorX &dv) const
Matrix< Real, Dynamic, 1 > RealVectorX
void search_nearest_interface_point_derivative(const MAST::FunctionBase &f, const libMesh::Elem &e, const unsigned int side, const libMesh::Point &p, const Real t, RealVectorX &v) const
void clear_level_set_function()
clears the attached level set function
void normal_derivative_at_point(const MAST::FunctionBase &f, const libMesh::Point &p, const Real t, RealVectorX &n) const