HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
GAS_IntegrateShallowWaterEquations.h
Go to the documentation of this file.
1 /*
2  * PROPRIETARY INFORMATION. This software is proprietary to
3  * Side Effects Software Inc., and is not to be reproduced,
4  * transmitted, or disclosed in any way without written permission.
5  *
6  * NAME: GAS_IntegrateShallowWaterEquations.h ( GAS Library, C++)
7  *
8  * COMMENTS:
9  * Integrates the shallow water equations (without the velocity's advective
10  * part).
11  */
12 
13 #ifndef __GAS_IntegrateShallowWaterEquations__
14 #define __GAS_IntegrateShallowWaterEquations__
15 
16 #include "GAS_SubSolver.h"
17 #include "GAS_Utils.h"
18 
20 {
21 public:
22  GET_DATA_FUNC_S(GAS_NAME_VELOCITY, VelocityName);
23  GET_DATA_FUNC_S("depth", DepthName);
24  GET_DATA_FUNC_S("bottom", BottomName);
25 
26  GET_DATA_FUNC_F("gravity", Gravity);
27  GET_DATA_FUNC_F("veldiffusion", VelDiffusion);
28  GET_DATA_FUNC_B("clampvel", ClampVelocities);
29  GET_DATA_FUNC_F("maxvel", MaximumVelocity);
30 
31  GET_DATA_FUNC_B("usesource", UseSource);
32  GET_DATA_FUNC_F("sourcescale", SourceScale);
33  GET_DATA_FUNC_S("source", SourceName);
34  GET_DATA_FUNC_B("sourceadd", AdditiveSource);
35  GET_DATA_FUNC_B("usesink", UseSink);
36  GET_DATA_FUNC_S("sink", SinkName);
37  GET_DATA_FUNC_F("depthdiffusion", DepthDiffusion);
38  GET_DATA_FUNC_B("clampsurfvel", ClampSurfaceVel);
39  GET_DATA_FUNC_F("maxsurfvel", MaximumSurfaceVel);
40 
41  GET_DATA_FUNC_B("dampdepth", DampDepth);
42  GET_DATA_FUNC_F("dampinglayer", DampingLayerSize);
43  GET_DATA_FUNC_F("dampingstrength", DampingLayerStrength);
44  GET_DATA_FUNC_B("dampaxis1m", DampAxis1M);
45  GET_DATA_FUNC_B("dampaxis1p", DampAxis1P);
46  GET_DATA_FUNC_B("dampaxis2m", DampAxis2M);
47  GET_DATA_FUNC_B("dampaxis2p", DampAxis2P);
48 
51 
52 protected:
53  explicit GAS_IntegrateShallowWaterEquations(const SIM_DataFactory* factory);
55 
56  bool solveGasSubclass(SIM_Engine& engine,
57  SIM_Object* obj,
58  SIM_Time time,
59  SIM_Time timestep) override;
60 
61  bool integrateVelocity(SIM_Object* obj,
62  const SIM_ScalarField* depth,
63  const SIM_ScalarField* bottom,
64  SIM_VectorField* vel,
65  float dt,
66  int axis_2d) const;
67  bool integrateDepth(SIM_Object* obj,
68  SIM_ScalarField* depth,
69  const SIM_VectorField* vel,
70  float dt,
71  int axis_2d) const;
72  bool dampenInLayer(SIM_Object* obj,
73  SIM_ScalarField* depth,
74  SIM_VectorField* vel,
75  float dt,
76  int axis_2d) const;
77 
78 private:
79  static const SIM_DopDescription* getDopDescription();
80 
84  "Gas Integrate Shallow Water Equations",
85  getDopDescription());
86 };
87 
88 #endif
89 
#define DECLARE_STANDARD_GETCASTTOTYPE()
Definition: SIM_DataUtils.h:50
GT_API const UT_StringHolder time
#define GAS_NAME_USETIMESTEP
Definition: GAS_Utils.h:39
#define GAS_API
Definition: GAS_API.h:10
virtual bool solveGasSubclass(SIM_Engine &engine, SIM_Object *obj, SIM_Time time, SIM_Time timestep)=0
#define GAS_NAME_VELOCITY
Definition: GAS_Utils.h:42
#define DECLARE_DATAFACTORY(DataClass, SuperClass, Description, DopParms)
Definition: SIM_DataUtils.h:63
GLint GLint GLsizei GLsizei GLsizei depth
Definition: glcorearb.h:476
GLint GLint bottom
Definition: glcorearb.h:2005
#define GET_DATA_FUNC_B(DataName, FuncName)
#define GET_DATA_FUNC_F(DataName, FuncName)
This class holds a three dimensional scalar field.
#define GAS_NAME_TIMESCALE
Definition: GAS_Utils.h:40
This class holds a three dimensional vector field.
#define GET_DATA_FUNC_S(DataName, FuncName)