#include <GAS_ParticleForces.h>

Public Member Functions | |
| GET_DATA_FUNC_S (GAS_NAME_GEOMETRY, GeometryName) | |
| GET_DATA_FUNC_B ("dopressure", DoPressure) | |
| GET_DATA_FUNC_B ("computev", ComputeVelocity) | |
| GET_DATA_FUNC_B ("docollision", DoCollisions) | |
| GET_DATA_FUNC_B ("usesdfvelocity", UseSDFVelocity) | |
| GET_DATA_FUNC_B ("usegeovelocity", UseGEOVelocity) | |
| GET_DATA_FUNC_F ("poissonratio", PoissonRatio) | |
| GET_DATA_FUNC_F ("elasticrepulsion", ElasticRepulsion) | |
| GET_DATA_FUNC_F ("repulsionstrength", RepulsionStrength) | |
| GET_DATA_FUNC_F ("viscousdampening", ViscousDampening) | |
| GET_DATA_FUNC_F ("dampeningstrength", DampeningStrength) | |
| GET_DATA_FUNC_F ("contactresistance", ContactResistance) | |
| GET_DATA_FUNC_F ("contactdampening", ContactDampening) | |
| GET_DATA_FUNC_F ("rollingfriction", RollingFriction) | |
| GET_DATA_FUNC_F ("objrollingfriction", ObjRollingFriction) | |
| GET_DATA_FUNC_F ("objimpulseduration", ObjImpulseDuration) | |
| GET_DATA_FUNC_F ("objtranslationimpulsefactor", ObjTranslationImpulseFactor) | |
| GET_DATA_FUNC_F ("objrollingimpulsefactor", ObjRollingImpulseFactor) | |
| bool | shouldMultiThread () |
Protected Member Functions | |
| GAS_ParticleForces (const SIM_DataFactory *factory) | |
| virtual | ~GAS_ParticleForces () |
| virtual bool | solveGasSubclass (SIM_Engine &engine, SIM_Object *obj, SIM_Time time, SIM_Time timestep) |
| virtual bool | postSolveGasSubclass (SIM_Engine &engine, SIM_Object *obj, SIM_Time time, SIM_Time timestep) |
| void | calcForces (SIM_Object *obj, GU_Detail *gdp, const UT_RefArray< GAS_GrainObject > &grains, SIM_Time timestep) |
| void | updateContactDisplacement (SIM_Object *obj, GU_Detail *gdp, const UT_RefArray< GAS_GrainObject > &grains, SIM_Time timestep) |
| UT_Vector3 | computeRepulsiveForce (const UT_Vector3 &p, fpreal overlap, const UT_Vector3 &nml, const UT_Vector3 &relvel, fpreal R, fpreal mass, fpreal beta, fpreal kr, fpreal alpha, fpreal kd, fpreal nu, fpreal mu_s, fpreal mu_d, fpreal dt) const |
| UT_Vector3 | computeRepulsiveForcePP (const UT_Vector3 &p, fpreal overlap, const UT_Vector3 &nml, const UT_Vector3 &relvel, fpreal R, fpreal pmass, fpreal beta, fpreal kr, fpreal alpha, fpreal kd, fpreal nu, fpreal gamma, fpreal mu_s, fpreal mu_d, fpreal kc, SIM_Time timestep, UT_Vector3 &shearD) const |
| UT_Vector3 | computeRepulsiveTorque (const UT_Vector3 &z, const UT_Vector3 &c1, const UT_Vector3 &force, const UT_Vector3 &nml, const UT_Vector3 &angvel, fpreal mu_r, fpreal pmass, SIM_Time timestep) const |
| UT_Vector3 | computeRepulsiveTorquePP (const UT_Vector3 &z, const UT_Vector3 &c1, const UT_Vector3 &force, const UT_Vector3 &nml, const UT_Vector3 &angvel, fpreal pscale, fpreal pmass, fpreal mu_r, fpreal dt) const |
| UT_Vector3 | getContactDisplacement (GEO_AttributeHandle &cg_gah, GEO_AttributeHandle &csj_gah, GEO_AttributeHandle &csk_gah, GEO_AttributeHandle &cd_gah, int cs1, int cg2, int cs2) const |
| void | setContactDisplacement (GEO_AttributeHandle &cg_gah, GEO_AttributeHandle &csj_gah, GEO_AttributeHandle &csk_gah, GEO_AttributeHandle &cd_gah, vector< int > cg, vector< int > csj, vector< int > csk, vector< UT_Vector3 > sd) const |
| int | adjustContactDisplacement (SIM_Object *obj, GU_Detail *gdp, const UT_RefArray< GAS_GrainObject > &grains, SIM_Time timestep) |
| void | resizeContactGrainAttributes (GU_Detail *gdp, int initialsize, int finalsize) const |
| void | applyStiction (UT_Vector3 &totalforce, UT_Vector3 &totaltorque, const UT_Vector3 v1, const UT_Vector3 w1, const UT_Vector3 c1, const UT_Vector3 N, fpreal pscale, fpreal pmass, fpreal kv, fpreal kw, fpreal dt) |
| THREADED_METHOD2 (GAS_ParticleForces, shouldMultiThread(), applyForces, GU_Detail *, gdp, SIM_Time, timestep) void applyForcesPartial(GU_Detail *gdp | |
| THREADED_METHOD1 (GAS_ParticleForces, shouldMultiThread(), clearForces, GU_Detail *, gdp) void clearForcesPartial(GU_Detail *gdp | |
| void | createGrainObjects (SIM_Object *obj, GU_Detail *gdp, UT_RefArray< GAS_GrainObject > &grains) |
| UT_HashGrid< const GAS_GrainSphere * > * | buildHashGrid (const UT_RefArray< GAS_GrainObject > &grains) |
Protected Attributes | |
| SIM_Time | timestep |
| SIM_Time const UT_JobInfo & | info |
| const UT_JobInfo & | info |
Definition at line 39 of file GAS_ParticleForces.h.
| GAS_ParticleForces::GAS_ParticleForces | ( | const SIM_DataFactory * | factory | ) | [explicit, protected] |
| virtual GAS_ParticleForces::~GAS_ParticleForces | ( | ) | [protected, virtual] |
| int GAS_ParticleForces::adjustContactDisplacement | ( | SIM_Object * | obj, | |
| GU_Detail * | gdp, | |||
| const UT_RefArray< GAS_GrainObject > & | grains, | |||
| SIM_Time | timestep | |||
| ) | [protected] |
| void GAS_ParticleForces::applyStiction | ( | UT_Vector3 & | totalforce, | |
| UT_Vector3 & | totaltorque, | |||
| const UT_Vector3 | v1, | |||
| const UT_Vector3 | w1, | |||
| const UT_Vector3 | c1, | |||
| const UT_Vector3 | N, | |||
| fpreal | pscale, | |||
| fpreal | pmass, | |||
| fpreal | kv, | |||
| fpreal | kw, | |||
| fpreal | dt | |||
| ) | [protected] |
| UT_HashGrid<const GAS_GrainSphere *>* GAS_ParticleForces::buildHashGrid | ( | const UT_RefArray< GAS_GrainObject > & | grains | ) | [protected] |
| void GAS_ParticleForces::calcForces | ( | SIM_Object * | obj, | |
| GU_Detail * | gdp, | |||
| const UT_RefArray< GAS_GrainObject > & | grains, | |||
| SIM_Time | timestep | |||
| ) | [protected] |
| UT_Vector3 GAS_ParticleForces::computeRepulsiveForce | ( | const UT_Vector3 & | p, | |
| fpreal | overlap, | |||
| const UT_Vector3 & | nml, | |||
| const UT_Vector3 & | relvel, | |||
| fpreal | R, | |||
| fpreal | mass, | |||
| fpreal | beta, | |||
| fpreal | kr, | |||
| fpreal | alpha, | |||
| fpreal | kd, | |||
| fpreal | nu, | |||
| fpreal | mu_s, | |||
| fpreal | mu_d, | |||
| fpreal | dt | |||
| ) | const [protected] |
Compute the repulsive force between two particles. p is the point of impact, nml the normalized normal of the impact and relvel the relative velocity at the point of impact.
| UT_Vector3 GAS_ParticleForces::computeRepulsiveForcePP | ( | const UT_Vector3 & | p, | |
| fpreal | overlap, | |||
| const UT_Vector3 & | nml, | |||
| const UT_Vector3 & | relvel, | |||
| fpreal | R, | |||
| fpreal | pmass, | |||
| fpreal | beta, | |||
| fpreal | kr, | |||
| fpreal | alpha, | |||
| fpreal | kd, | |||
| fpreal | nu, | |||
| fpreal | gamma, | |||
| fpreal | mu_s, | |||
| fpreal | mu_d, | |||
| fpreal | kc, | |||
| SIM_Time | timestep, | |||
| UT_Vector3 & | shearD | |||
| ) | const [protected] |
| UT_Vector3 GAS_ParticleForces::computeRepulsiveTorque | ( | const UT_Vector3 & | z, | |
| const UT_Vector3 & | c1, | |||
| const UT_Vector3 & | force, | |||
| const UT_Vector3 & | nml, | |||
| const UT_Vector3 & | angvel, | |||
| fpreal | mu_r, | |||
| fpreal | pmass, | |||
| SIM_Time | timestep | |||
| ) | const [protected] |
| UT_Vector3 GAS_ParticleForces::computeRepulsiveTorquePP | ( | const UT_Vector3 & | z, | |
| const UT_Vector3 & | c1, | |||
| const UT_Vector3 & | force, | |||
| const UT_Vector3 & | nml, | |||
| const UT_Vector3 & | angvel, | |||
| fpreal | pscale, | |||
| fpreal | pmass, | |||
| fpreal | mu_r, | |||
| fpreal | dt | |||
| ) | const [protected] |
| void GAS_ParticleForces::createGrainObjects | ( | SIM_Object * | obj, | |
| GU_Detail * | gdp, | |||
| UT_RefArray< GAS_GrainObject > & | grains | |||
| ) | [protected] |
| GAS_ParticleForces::GET_DATA_FUNC_B | ( | "usegeovelocity" | , | |
| UseGEOVelocity | ||||
| ) |
| GAS_ParticleForces::GET_DATA_FUNC_B | ( | "usesdfvelocity" | , | |
| UseSDFVelocity | ||||
| ) |
| GAS_ParticleForces::GET_DATA_FUNC_B | ( | "docollision" | , | |
| DoCollisions | ||||
| ) |
| GAS_ParticleForces::GET_DATA_FUNC_B | ( | "computev" | , | |
| ComputeVelocity | ||||
| ) |
| GAS_ParticleForces::GET_DATA_FUNC_B | ( | "dopressure" | , | |
| DoPressure | ||||
| ) |
| GAS_ParticleForces::GET_DATA_FUNC_F | ( | "objrollingimpulsefactor" | , | |
| ObjRollingImpulseFactor | ||||
| ) |
| GAS_ParticleForces::GET_DATA_FUNC_F | ( | "objtranslationimpulsefactor" | , | |
| ObjTranslationImpulseFactor | ||||
| ) |
| GAS_ParticleForces::GET_DATA_FUNC_F | ( | "objimpulseduration" | , | |
| ObjImpulseDuration | ||||
| ) |
| GAS_ParticleForces::GET_DATA_FUNC_F | ( | "objrollingfriction" | , | |
| ObjRollingFriction | ||||
| ) |
| GAS_ParticleForces::GET_DATA_FUNC_F | ( | "rollingfriction" | , | |
| RollingFriction | ||||
| ) |
| GAS_ParticleForces::GET_DATA_FUNC_F | ( | "contactdampening" | , | |
| ContactDampening | ||||
| ) |
| GAS_ParticleForces::GET_DATA_FUNC_F | ( | "contactresistance" | , | |
| ContactResistance | ||||
| ) |
| GAS_ParticleForces::GET_DATA_FUNC_F | ( | "dampeningstrength" | , | |
| DampeningStrength | ||||
| ) |
| GAS_ParticleForces::GET_DATA_FUNC_F | ( | "viscousdampening" | , | |
| ViscousDampening | ||||
| ) |
| GAS_ParticleForces::GET_DATA_FUNC_F | ( | "repulsionstrength" | , | |
| RepulsionStrength | ||||
| ) |
| GAS_ParticleForces::GET_DATA_FUNC_F | ( | "elasticrepulsion" | , | |
| ElasticRepulsion | ||||
| ) |
| GAS_ParticleForces::GET_DATA_FUNC_F | ( | "poissonratio" | , | |
| PoissonRatio | ||||
| ) |
| GAS_ParticleForces::GET_DATA_FUNC_S | ( | GAS_NAME_GEOMETRY | , | |
| GeometryName | ||||
| ) |
| UT_Vector3 GAS_ParticleForces::getContactDisplacement | ( | GEO_AttributeHandle & | cg_gah, | |
| GEO_AttributeHandle & | csj_gah, | |||
| GEO_AttributeHandle & | csk_gah, | |||
| GEO_AttributeHandle & | cd_gah, | |||
| int | cs1, | |||
| int | cg2, | |||
| int | cs2 | |||
| ) | const [protected] |
| virtual bool GAS_ParticleForces::postSolveGasSubclass | ( | SIM_Engine & | engine, | |
| SIM_Object * | obj, | |||
| SIM_Time | time, | |||
| SIM_Time | timestep | |||
| ) | [protected, virtual] |
Reimplemented from GAS_SubSolver.
| void GAS_ParticleForces::resizeContactGrainAttributes | ( | GU_Detail * | gdp, | |
| int | initialsize, | |||
| int | finalsize | |||
| ) | const [protected] |
| void GAS_ParticleForces::setContactDisplacement | ( | GEO_AttributeHandle & | cg_gah, | |
| GEO_AttributeHandle & | csj_gah, | |||
| GEO_AttributeHandle & | csk_gah, | |||
| GEO_AttributeHandle & | cd_gah, | |||
| vector< int > | cg, | |||
| vector< int > | csj, | |||
| vector< int > | csk, | |||
| vector< UT_Vector3 > | sd | |||
| ) | const [protected] |
| bool GAS_ParticleForces::shouldMultiThread | ( | ) | [inline] |
Definition at line 63 of file GAS_ParticleForces.h.
| virtual bool GAS_ParticleForces::solveGasSubclass | ( | SIM_Engine & | engine, | |
| SIM_Object * | obj, | |||
| SIM_Time | time, | |||
| SIM_Time | timestep | |||
| ) | [protected, virtual] |
Computes a pressure force for the given particle field and either adjusts the velocity directly, or just adds to the force variable.
Implements GAS_SubSolver.
| GAS_ParticleForces::THREADED_METHOD1 | ( | GAS_ParticleForces | , | |
| shouldMultiThread() | , | |||
| clearForces | , | |||
| GU_Detail * | , | |||
| gdp | ||||
| ) | [protected] |
| GAS_ParticleForces::THREADED_METHOD2 | ( | GAS_ParticleForces | , | |
| shouldMultiThread() | , | |||
| applyForces | , | |||
| GU_Detail * | , | |||
| gdp | , | |||
| SIM_Time | , | |||
| timestep | ||||
| ) | [protected] |
| void GAS_ParticleForces::updateContactDisplacement | ( | SIM_Object * | obj, | |
| GU_Detail * | gdp, | |||
| const UT_RefArray< GAS_GrainObject > & | grains, | |||
| SIM_Time | timestep | |||
| ) | [protected] |
const UT_JobInfo& GAS_ParticleForces::info [protected] |
SIM_Time const UT_JobInfo& GAS_ParticleForces::info [protected] |
SIM_Time GAS_ParticleForces::timestep [protected] |
Definition at line 173 of file GAS_ParticleForces.h.
1.5.9