00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __GAS_ParticleToField__
00020 #define __GAS_ParticleToField__
00021
00022 #include "GAS_API.h"
00023
00024 #include "GAS_SubSolver.h"
00025 #include "GAS_Utils.h"
00026
00027 #include <SIM/SIM_RawField.h>
00028
00029 #include <UT/UT_ThreadedAlgorithm.h>
00030
00031 class GEO_PointTree;
00032
00033 class GAS_API GAS_ParticleToField : public GAS_SubSolver
00034 {
00035 public:
00036 GET_DATA_FUNC_S(GAS_NAME_FIELD, FieldName);
00037 GET_DATA_FUNC_S(GAS_NAME_GEOMETRY, GeometryName);
00038
00039 GET_DATA_FUNC_B("useattrib", UseAttribute);
00040 GET_DATA_FUNC_S("attrib", Attribute);
00041 GET_DATA_FUNC_F("threshold", Threshold);
00042 GET_DATA_FUNC_B("accumulate", Accumulate);
00043 GET_DATA_FUNC_B("scalebyvolume", ScaleByVoxelVolume);
00044 GET_DATA_FUNC_B("extrapolate", Extrapolate);
00045 GET_DATA_FUNC_B("usemaxextrapolate", UseMaxExtrapolate);
00046 GET_DATA_FUNC_F("maxextrapolate", MaxExtrapolate);
00047 GET_DATA_FUNC_B("usemaxextrapolatedist", UseMaxExtrapolateDist);
00048 GET_DATA_FUNC_F("maxextrapolatedist", MaxExtrapolateDist);
00049 GET_DATA_FUNC_F("bandwidth", Bandwidth);
00050
00051 GET_DATA_FUNC_I("calculationtype", CalculationType);
00052 GET_DATA_FUNC_F("dstpreadd", DstPreAdd);
00053 GET_DATA_FUNC_F("dstpremul", DstPreMul);
00054 GET_DATA_FUNC_F("srcpreadd", SrcPreAdd);
00055 GET_DATA_FUNC_F("srcpremul", SrcPreMul);
00056 GET_DATA_FUNC_F("postadd", PostAdd);
00057 GET_DATA_FUNC_F("postmul", PostMul);
00058
00059 GET_DATA_FUNC_I("srctimescale", SrcTimeScale);
00060 GET_DATA_FUNC_I("dsttimescale", DstTimeScale);
00061 GET_DATA_FUNC_I("posttimescale", PostTimeScale);
00062
00063 protected:
00064 explicit GAS_ParticleToField(const SIM_DataFactory *factory);
00065 virtual ~GAS_ParticleToField();
00066
00067
00068
00069 virtual bool solveGasSubclass(SIM_Engine &engine,
00070 SIM_Object *obj,
00071 SIM_Time time,
00072 SIM_Time timestep);
00073
00074 void particleToField(SIM_Object *obj,
00075 SIM_RawField *destfield,
00076 const GU_Detail *particles,
00077 GEO_PointTree *&pointtree,
00078 fpreal timestep,
00079 const char *attributename,
00080 int offset,
00081 const UT_DMatrix4 &xform);
00082
00083
00084 private:
00085 static const SIM_DopDescription *getDopDescription();
00086
00087 DECLARE_STANDARD_GETCASTTOTYPE();
00088 DECLARE_DATAFACTORY(GAS_ParticleToField,
00089 GAS_SubSolver,
00090 "Gas Particle To Field",
00091 getDopDescription());
00092 };
00093
00094 #endif
00095