#include <GAS_SubSolver.h>

Definition at line 49 of file GAS_SubSolver.h.
Definition at line 250 of file GAS_SubSolver.h.
Definition at line 227 of file GAS_SubSolver.h.
| TIMESCALE_NONE | |
| TIMESCALE_ADD | |
| TIMESCALE_MULT | |
| TIMESCALE_BOTH | |
| TIMESCALE_DIVIDE | |
| TIMESCALE_SCALEMULT | |
| NUM_TIMESCALE |
Definition at line 239 of file GAS_SubSolver.h.
| GAS_SubSolver::GAS_SubSolver | ( | const SIM_DataFactory * | factory | ) | [explicit, protected] |
| virtual GAS_SubSolver::~GAS_SubSolver | ( | ) | [protected, virtual] |
Applies the effect of the given LENGTHSCALE_NAMES to the quantitity given
| static void GAS_SubSolver::applyTimeScale | ( | fpreal & | add, | |
| fpreal & | mul, | |||
| fpreal | timestep, | |||
| int | timescale | |||
| ) | [static] |
Applies the effect of TIMESCALE_NAMES to the additive and multiplicative values.
Scales value exponentially for timestep t. v' = e ^ (ln(v) * t)
| void GAS_SubSolver::buildRelationshipField | ( | SIM_ScalarField * | mask, | |
| SIM_VectorField * | vel, | |||
| SIM_IndexField * | index, | |||
| UT_DMatrix4 | masktoworld, | |||
| SIM_Object * | srcobj, | |||
| bool | usepoint, | |||
| bool | usesdf, | |||
| bool | allownonsdf, | |||
| bool | negate, | |||
| fpreal | particlebandwidth, | |||
| fpreal | bandwidth | |||
| ) |
Builds a relationship field, storing distance to each object in the destination field, along with the OBJID and object velocity in the optional index and vector fields. The negate flag controls the sign of the generated fields, collision have "inside object" as negative so have a negate of true. Mask should already be initialized as we only write to new values that are more-in the relevant object. To trigger a bandwidth, initialize mask to the max dist you want to write. The given fields must all be aligned. Bandwidth is how many voxels to border particles by for our lookup.
| bool GAS_SubSolver::buildSPH | ( | GAS_SPH & | sph, | |
| const SIM_Object * | obj | |||
| ) | const |
| bool GAS_SubSolver::buildSPH | ( | GAS_SPH & | sph, | |
| const SIM_Geometry * | geo | |||
| ) | const |
Builds the GAS_SPH data structure, either directly from the given SIM_Geometry or by using any SIM_PointNeighbourList attached as NeighbourList. The object version looks for Geometry/NeighbourList Returns false if failed, either due to null geometry or missing vital attributes.
| fpreal GAS_SubSolver::calculateTimestep | ( | GU_ConstDetailHandle | gdh, | |
| fpreal | cflcond | |||
| ) | const [protected] |
Determines the appropriate timestep dependent on the geometry data. The size of the particles is used as the limitting factor for CFL condition. If no particle scale or velocity exists, returns infinite.
| fpreal GAS_SubSolver::calculateTimestep | ( | SIM_Engine & | engine, | |
| const SIM_VectorField * | velocity, | |||
| fpreal | cflcond | |||
| ) | const [protected] |
Determines the appropriate timestep dependent on the velocity field.
| void GAS_SubSolver::clearForces | ( | GU_Detail * | gdp | ) | const [inline] |
Definition at line 287 of file GAS_SubSolver.h.
| const SIM_IndexField* GAS_SubSolver::getConstIndexField | ( | SIM_Object * | obj, | |
| const char * | name, | |||
| bool | silent = false | |||
| ) |
| const SIM_MatrixField* GAS_SubSolver::getConstMatrixField | ( | SIM_Object * | obj, | |
| const char * | name, | |||
| bool | silent = false | |||
| ) |
| const SIM_Position* GAS_SubSolver::getConstPosFromField | ( | SIM_Object * | obj, | |
| const char * | name | |||
| ) |
| const SIM_ScalarField* GAS_SubSolver::getConstScalarField | ( | SIM_Object * | obj, | |
| const char * | name, | |||
| bool | silent = false | |||
| ) |
| const SIM_VectorField* GAS_SubSolver::getConstVectorField | ( | SIM_Object * | obj, | |
| const char * | name, | |||
| bool | silent = false | |||
| ) |
| const SIM_Geometry* GAS_SubSolver::getGeometry | ( | SIM_Object * | obj, | |
| const char * | name, | |||
| bool | silent = false | |||
| ) |
Retrieves the SIM_DATA specified by the option* given by the name. Ie, look up in our options, find the data name, look up a data matching the name, return resulting data Reports message if a field is missing unless silent is set.
| SIM_GeometryCopy* GAS_SubSolver::getGeometryCopy | ( | SIM_Object * | obj, | |
| const char * | name, | |||
| bool | silent = false | |||
| ) |
| SIM_Geometry* GAS_SubSolver::getGeometryNonConst | ( | SIM_Object * | obj, | |
| const char * | name, | |||
| bool | silent = false | |||
| ) |
| void GAS_SubSolver::getGeometryToWorld | ( | UT_DMatrix4 & | xform, | |
| SIM_Object * | obj, | |||
| const char * | geopath | |||
| ) |
Builds the transform mapping geo -> world.
| SIM_IndexField* GAS_SubSolver::getIndexField | ( | SIM_Object * | obj, | |
| const char * | name, | |||
| bool | silent = false | |||
| ) |
| void GAS_SubSolver::getMatchingConstData | ( | SIM_ConstDataArray & | data, | |
| UT_StringArray & | datanames, | |||
| SIM_Object * | obj, | |||
| const char * | name | |||
| ) |
| void GAS_SubSolver::getMatchingData | ( | SIM_DataArray & | data, | |
| UT_StringArray & | datanames, | |||
| SIM_Object * | obj, | |||
| const char * | name | |||
| ) |
| void GAS_SubSolver::getMatchingData | ( | SIM_DataArray & | data, | |
| SIM_Object * | obj, | |||
| const char * | name | |||
| ) |
Retrieves all of the SIM_DATAs that match the pattern stored in the option given by name.
| SIM_MatrixField* GAS_SubSolver::getMatrixField | ( | SIM_Object * | obj, | |
| const char * | name, | |||
| bool | silent = false | |||
| ) |
| SIM_GeometryCopy* GAS_SubSolver::getOrCreateGeometry | ( | SIM_Object * | obj, | |
| const char * | name | |||
| ) |
Returns the matching SIM_Data. If it doesn't exist, creates a new one. The resulting data is not guaranteed to exist - a bad name could end up prohibitting creation.
| SIM_IndexField* GAS_SubSolver::getOrCreateIndexField | ( | SIM_Object * | obj, | |
| const char * | name | |||
| ) |
| SIM_MatrixField* GAS_SubSolver::getOrCreateMatrixField | ( | SIM_Object * | obj, | |
| const char * | name | |||
| ) |
| SIM_ScalarField* GAS_SubSolver::getOrCreateScalarField | ( | SIM_Object * | obj, | |
| const char * | name | |||
| ) |
| SIM_VectorField* GAS_SubSolver::getOrCreateVectorField | ( | SIM_Object * | obj, | |
| const char * | name | |||
| ) |
| virtual fpreal GAS_SubSolver::getPropertyAtPointSubclass | ( | const SIM_Object & | object, | |
| int | ptnum, | |||
| const SIM_Property & | property | |||
| ) | const [protected, virtual] |
Gets the value of some physical property for the supplied object at a given point on the object's geometry.
Reimplemented from SIM_Solver.
| virtual fpreal GAS_SubSolver::getPropertyAtPositionSubclass | ( | const SIM_Object & | object, | |
| const UT_Vector3 & | worldspacepos, | |||
| const SIM_Property & | property | |||
| ) | const [protected, virtual] |
| fpreal GAS_SubSolver::getPropertyFromState | ( | const SIM_Object & | object, | |
| const SIM_Property & | property | |||
| ) | const [protected] |
Get a property value by looking at the Physical Parms of an object.
| virtual SIM_PropertyResolver* GAS_SubSolver::getPropertyResolverSubclass | ( | const SIM_Object & | object, | |
| const SIM_Property & | property | |||
| ) | const [protected, virtual] |
| SIM_ScalarField* GAS_SubSolver::getScalarField | ( | SIM_Object * | obj, | |
| const char * | name, | |||
| bool | silent = false | |||
| ) |
| SIM_VectorField* GAS_SubSolver::getVectorField | ( | SIM_Object * | obj, | |
| const char * | name, | |||
| bool | silent = false | |||
| ) |
| void GAS_SubSolver::getWorldToGeometry | ( | UT_DMatrix4 & | xform, | |
| SIM_Object * | obj, | |||
| const char * | geopath | |||
| ) |
Builds the transform mapping world -> geo.
| void GAS_SubSolver::matchField | ( | SIM_IndexField * | field, | |
| const SIM_ScalarField * | reffield | |||
| ) |
| void GAS_SubSolver::matchField | ( | SIM_MatrixField * | field, | |
| const SIM_ScalarField * | reffield | |||
| ) |
| void GAS_SubSolver::matchField | ( | SIM_VectorField * | field, | |
| const SIM_ScalarField * | reffield | |||
| ) |
| void GAS_SubSolver::matchField | ( | SIM_ScalarField * | field, | |
| const SIM_ScalarField * | reffield | |||
| ) |
Makes the given field match the reference field in terms of bounding box & voxel count. A no-op if reffield or field is null.
Performs the requires mixing.
| virtual bool GAS_SubSolver::postSolveGasSubclass | ( | SIM_Engine & | engine, | |
| SIM_Object * | obj, | |||
| SIM_Time | time, | |||
| SIM_Time | timestep | |||
| ) | [inline, protected, virtual] |
| virtual SIM_Result GAS_SubSolver::postSolveObjectsSubclass | ( | SIM_Engine & | engine, | |
| SIM_ObjectArray & | objects, | |||
| SIM_ObjectArray & | newobjects, | |||
| SIM_ObjectArray & | feedbacktoobjects, | |||
| const SIM_Time & | timestep | |||
| ) | [virtual] |
| virtual bool GAS_SubSolver::solveGas | ( | SIM_Engine & | engine, | |
| SIM_Object * | obj, | |||
| SIM_Time | time, | |||
| SIM_Time | timestep | |||
| ) | [virtual] |
Applies this subsolver for a single timestep. Returns true on success
| virtual bool GAS_SubSolver::solveGasSubclass | ( | SIM_Engine & | engine, | |
| SIM_Object * | obj, | |||
| SIM_Time | time, | |||
| SIM_Time | timestep | |||
| ) | [protected, pure virtual] |
Applies this subsolver for a single timestep. Returns true on success
Implemented in GAS_AdjustElasticity, GAS_AdjustParticleCoordinates, GAS_Advect, GAS_Analysis, GAS_BuildCollisionMask, GAS_BuildRelationshipMask, GAS_Buoyancy, GAS_Calculate, GAS_ComputeParticleAttributes, GAS_CorrectByMarkers, GAS_Cross, GAS_Diffuse, GAS_DSD, GAS_EachDataSolver, GAS_Elasticity, GAS_EnforceBoundary, GAS_ExternalForces, GAS_Extrapolate, GAS_Feedback, GAS_FieldToParticle, GAS_FieldVex, GAS_GeometryToSDF, GAS_Integrator, GAS_Lookup, GAS_MatchField, GAS_NetFetchData, GAS_NetFieldBorderExchange, GAS_NetSliceBalance, GAS_NetSliceExchange, GAS_ParticleForces, GAS_ParticleMoveToIso, GAS_ParticleNeighbourUpdate, GAS_ParticlePressure, GAS_ParticleSeparate, GAS_ParticleToField, GAS_ParticleToSDF, GAS_ProjectNonDivergent, GAS_Reduce, GAS_ReduceLocal, GAS_ReinitializeSDF, GAS_ResizeField, GAS_Rest, GAS_SandForces, GAS_SeedMarkers, GAS_SeedParticles, GAS_SPHDensity, GAS_SPHForces, GAS_StrainForces, GAS_StrainIntegrate, GAS_SubStep, GAS_SurfaceSnap, GAS_SurfaceTension, GAS_VelocityStretch, GAS_VorticleForces, GAS_Wavelets, and HDK_Sample::SIM_GasAdd.
| virtual SIM_Result GAS_SubSolver::solveObjectsSubclass | ( | SIM_Engine & | engine, | |
| SIM_ObjectArray & | objects, | |||
| SIM_ObjectArray & | newobjects, | |||
| SIM_ObjectArray & | feedbacktoobjects, | |||
| const SIM_Time & | timestep | |||
| ) | [virtual] |
Merely calls solve on each object.
Implements SIM_Solver.
Reimplemented in GAS_EachDataSolver, GAS_Integrator, and GAS_SubStep.
| GAS_SubSolver::THREADED_METHOD1 | ( | GAS_SubSolver | , | |
| parms.mask-> | shouldMultiThread(), | |||
| buildRelationshipFieldInternal | , | |||
| const RelationshipParms & | , | |||
| parms | ||||
| ) | const [protected] |
Builds a relationship field after most stuff has been setup.
| GAS_SubSolver::THREADED_METHOD2_CONST | ( | GAS_SubSolver | , | |
| gdp-> | points).entries(, | |||
| 1000 | , | |||
| clearForces | , | |||
| GU_Detail * | , | |||
| gdp | , | |||
| bool | , | |||
| cleartorque | ||||
| ) |
Zeros out the force and optionaly torque attributes.
| GAS_SubSolver::THREADED_METHOD5_CONST | ( | GAS_SubSolver | , | |
| gdp-> | points).entries(, | |||
| 1000 | , | |||
| applyForces | , | |||
| GU_Detail * | , | |||
| gdp | , | |||
| SIM_Time | , | |||
| timestep | , | |||
| bool | , | |||
| densityscale | , | |||
| bool | , | |||
| doorient | , | |||
| bool | , | |||
| updatepos | ||||
| ) |
Integrates the force into the velocity/angvel. Optionally also adjusts the position by the effect of the acceleration (*not* the effect of the velocity!)
Definition at line 284 of file GAS_SubSolver.h.
| SIM_Time bool bool bool const UT_JobInfo& info GAS_SubSolver::const |
Reimplemented in GAS_FieldVex, GAS_SeedMarkers, and GAS_SeedMarkers.
Definition at line 302 of file GAS_SubSolver.h.
Reimplemented in GAS_FieldVex, GAS_SeedMarkers, and GAS_SeedMarkers.
Definition at line 284 of file GAS_SubSolver.h.
Definition at line 302 of file GAS_SubSolver.h.
| SIM_Time bool bool GAS_SubSolver::doorient |
Definition at line 302 of file GAS_SubSolver.h.
const UT_JobInfo& GAS_SubSolver::info [protected] |
Reimplemented in GAS_AdjustElasticity, GAS_Advect, GAS_Advect, GAS_Calculate, GAS_Calculate, GAS_Calculate, GAS_Calculate, GAS_ComputeParticleAttributes, GAS_Diffuse, GAS_Diffuse, GAS_Elasticity, GAS_ExternalForces, GAS_ExternalForces, GAS_FieldToParticle, GAS_ParticlePressure, GAS_ParticlePressure, GAS_ParticleSeparate, GAS_ParticleToSDF, GAS_SPHDensity, GAS_SPHForces, GAS_SPHForces, GAS_VelocityStretch, GAS_VelocityStretch, GAS_VelocityStretch, GAS_VorticleForces, and GAS_VorticleForces.
Definition at line 224 of file GAS_SubSolver.h.
PRM_ChoiceList GAS_SubSolver::ourLengthScaleMenu [static, protected] |
Definition at line 327 of file GAS_SubSolver.h.
PRM_Name GAS_SubSolver::ourLengthScaleMethods[NUM_LENGTHSCALE+1] [static, protected] |
Definition at line 326 of file GAS_SubSolver.h.
PRM_ChoiceList GAS_SubSolver::ourMixMethodMenu [static, protected] |
Definition at line 321 of file GAS_SubSolver.h.
PRM_Name GAS_SubSolver::ourMixMethods[NUM_MIX+1] [static, protected] |
PRM_ChoiceList GAS_SubSolver::ourTimeScaleMenu [static, protected] |
Definition at line 324 of file GAS_SubSolver.h.
PRM_Name GAS_SubSolver::ourTimeScaleMethods[NUM_TIMESCALE+1] [static, protected] |
Definition at line 323 of file GAS_SubSolver.h.
Reimplemented in GAS_AdjustElasticity, GAS_Advect, GAS_Advect, GAS_Diffuse, GAS_Elasticity, GAS_ExternalForces, GAS_ExternalForces, GAS_FieldToParticle, GAS_ParticlePressure, GAS_VorticleForces, and GAS_VorticleForces.
Definition at line 302 of file GAS_SubSolver.h.
| SIM_Time bool bool bool GAS_SubSolver::updatepos |
Definition at line 302 of file GAS_SubSolver.h.
1.5.9