gmsh-TingyuanDoc  0.1
An Open-Source Timing-driven Analytical Mixed-size FPGA Placer
FuncHeaviside.h
Go to the documentation of this file.
1 // Gmsh - Copyright (C) 1997-2022 C. Geuzaine, J.-F. Remacle
2 //
3 // See the LICENSE.txt file in the Gmsh root directory for license information.
4 // Please report all issues on https://gitlab.onelab.info/gmsh/gmsh/issues.
5 //
6 // Contributor(s):
7 // Boris Sedji
8 //
9 
10 #ifndef FUNCHEAVISIDE_H
11 #define FUNCHEAVISIDE_H
12 
13 #include "simpleFunction.h"
14 #include "gmshLevelset.h"
15 
16 class FuncHeaviside : public simpleFunctionOnElement<double> {
17 private:
19 
20 public:
21  FuncHeaviside(gLevelset *ls) : _ls(ls) {}
22  virtual double operator()(double x, double y, double z) const
23  {
24  if(_ls->isInsideDomain(x, y, z))
25  return 1;
26  else
27  return -1;
28  }
29  virtual double operator()(double x, double y, double z, MElement *e) const
30  {
31  if(_ls->isInsideDomain(x, y, z))
32  return 1;
33  else
34  return -1;
35  }
36  virtual void gradient(double x, double y, double z, double &dfdx,
37  double &dfdy, double &dfdz) const
38  {
39  dfdx = dfdy = dfdz = 0.0;
40  }
41  virtual void gradient(double x, double y, double z, double &dfdx,
42  double &dfdy, double &dfdz, MElement *e) const
43  {
44  dfdx = dfdy = dfdz = 0.0;
45  }
46 };
47 
48 #endif
FuncHeaviside::FuncHeaviside
FuncHeaviside(gLevelset *ls)
Definition: FuncHeaviside.h:21
simpleFunctionOnElement
Definition: simpleFunction.h:60
FuncHeaviside::operator()
virtual double operator()(double x, double y, double z, MElement *e) const
Definition: FuncHeaviside.h:29
FuncHeaviside::_ls
gLevelset * _ls
Definition: FuncHeaviside.h:18
gLevelset::isInsideDomain
bool isInsideDomain(const double &x, const double &y, const double &z) const
Definition: gmshLevelset.h:89
FuncHeaviside::gradient
virtual void gradient(double x, double y, double z, double &dfdx, double &dfdy, double &dfdz) const
Definition: FuncHeaviside.h:36
FuncHeaviside::gradient
virtual void gradient(double x, double y, double z, double &dfdx, double &dfdy, double &dfdz, MElement *e) const
Definition: FuncHeaviside.h:41
gLevelset
Definition: gmshLevelset.h:64
MElement
Definition: MElement.h:30
FuncHeaviside::operator()
virtual double operator()(double x, double y, double z) const
Definition: FuncHeaviside.h:22
FuncHeaviside
Definition: FuncHeaviside.h:16
simpleFunction.h
z
const double z
Definition: GaussQuadratureQuad.cpp:56
gmshLevelset.h