HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
GAS_SubStep Member List

This is the complete list of members for GAS_SubStep, including all inherited members.

addError(const SIM_RootData *root, int errorcode, const char *errorparm, UT_ErrorSeverity severity) const SIM_Data
addGuideDep(DEP_MicroNode &src) const SIM_Data
addOPInterest(OP_Node *node) const SIM_Data
appendFullDataPath(const SIM_Data *subdata, bool useobjectid, UT_String &datapath) const SIM_Data
applyLengthScale(float val, float width, int scaletype)GAS_SubSolverstatic
applyTimeScale(float &add, float &mul, float timestep, int timescale)GAS_SubSolverstatic
applyTimeScalePow(float value, float t)GAS_SubSolverstatic
buildGuideGeometrySubclass(const SIM_RootData &root, const SIM_Options &options, const GU_DetailHandle &gdh, UT_DMatrix4 *xform, const SIM_Time &t) const SIM_Dataprotectedvirtual
buildGuideOptions(SIM_Options &options, const SIM_Time &time) const SIM_Data
buildRelationshipField(SIM_ScalarField *mask, SIM_VectorField *vel, SIM_IndexField *index, const SIM_ScalarField *stencil, UT_DMatrix4 masktoworld, const SIM_Object *srcobj, bool usepoint, bool usesdf, bool allownonsdf, bool negate, fpreal particlebandwidth, fpreal bandwidth, fpreal velscale=1, const UT_Vector3 &wind=UT_Vector3(0.0f))GAS_SubSolver
buildSPH(GAS_SPH &sph, const SIM_Geometry *geo) const GAS_SubSolver
buildSPH(GAS_SPH &sph, const SIM_Object *obj) const GAS_SubSolver
buildSubDataPath(const SIM_Data *subdata, UT_String &pathto) const SIM_Data
calculateTimestep(SIM_Engine &engine, const SIM_VectorField *velocity, fpreal cflcond, UT_Vector3 *maxvel=0) const GAS_SubSolverprotected
calculateTimestep(GU_ConstDetailHandle gdh, fpreal cflcond, fpreal *maxspeed=0, fpreal *minradius=0) const GAS_SubSolverprotected
castConstPointerToType(const SIM_Data *data, const UT_StringRef &datatype)SIM_Datastatic
castPointerToType(SIM_Data *data, const UT_StringRef &datatype)SIM_Datastatic
clearForces(GU_Detail *gdp, bool cleartorque=false) const GAS_SubSolver
clearForces(GU_Detail *gdp, const GA_PointGroup *grp, bool cleartorque) const GAS_SubSolver
clearStartTime()SIM_Solverprotected
constGAS_SubSolver
copyCreationInfoFrom(const SIM_Data *source)SIM_Data
createGuideObjectSubclass() const SIM_Dataprotectedvirtual
createNamedSubData(const char *dataname, const char *datatype, int creationflags, UT_String *newdatanameptr=NULL)SIM_Data
createQueryObjectSubclass() const SIM_Dataprotectedvirtual
createUniqueSubDataName(const SIM_Data *subdata, UT_String &dataname) const SIM_Data
deleteGuideObjectIfNotBuilding() const SIM_Dataprotected
deleteQueryObjectIfNotBuilding() const SIM_Dataprotected
densityscaleGAS_SubSolver
doorientGAS_SubSolver
filterConstSubData(SIM_ConstDataArray &dp, UT_StringArray *names, const SIM_DataFilter &filter, const char *startfrom, const SIM_DataFilter &recurseFilter) const SIM_Data
filterSubData(SIM_DataArray &ncdp, UT_StringArray *names, const SIM_DataFilter &ncfilter, const char *startfrom, const SIM_DataFilter &recursefilter)SIM_Data
findReferenceBBox(const SIM_Object *, const char *parmname, const char *groupparmname, UT_Vector3 &center, UT_Vector3 &size, UT_DMatrix4 &xform)GAS_SubSolver
forEachConstSubData(SIM_EachDataCallback &cb, const SIM_DataFilter &filter, const char *startfrom, const SIM_DataFilter &recurseFilter) const SIM_Data
forEachSubData(SIM_EachDataCallback &cb, const SIM_DataFilter &filter, const char *startfrom, const SIM_DataFilter &recurseFilter)SIM_Data
GAS_SubSolver(const SIM_DataFactory *factory)GAS_SubSolverexplicitprotected
GAS_SubStep(const SIM_DataFactory *factory)GAS_SubStepexplicitprotected
GET_DATA_FUNC_B("createsubstepdata", CreateSubstepData)GAS_SubStep
GET_DATA_FUNC_B("cflonce", CFLOnce)GAS_SubStep
GET_DATA_FUNC_B("quantize", Quantize)GAS_SubStep
GET_DATA_FUNC_I(GAS_NAME_TRACKERPORT, TrackerPort)GAS_SubStep
GET_DATA_FUNC_I("slice", Slice)GAS_SubStep
GET_DATA_FUNC_I("numslice", NumSlice)GAS_SubStep
GET_DATA_FUNC_S(GAS_NAME_VELOCITY, VelocityName)GAS_SubStep
GET_DATA_FUNC_S(GAS_NAME_GEOMETRY, GeometryName)GAS_SubStep
GET_DATA_FUNC_S(GAS_NAME_TRACKERADDR, TrackerAddress)GAS_SubStep
GET_DATA_FUNC_S(GAS_NAME_JOBNAME, JobName)GAS_SubStep
getAlternateRepresentationOf() const SIM_Datainlineprotected
getCastToType(const UT_StringRef &datatype) const SIM_Dataprotectedvirtual
getCHOPNode(const char *path, bool addinterest) const SIM_Data
getConstIndexField(const SIM_Object *obj, const char *name, bool silent=false)GAS_SubSolver
getConstMatrixField(const SIM_Object *obj, const char *name, bool silent=false)GAS_SubSolver
getConstNamedSubData(const char *dataname) const SIM_Data
getConstPointerToType(const UT_StringRef &datatype) const SIM_Data
getConstPosFromField(const SIM_Object *obj, const char *name)GAS_SubSolver
getConstScalarField(const SIM_Object *obj, const char *name, bool silent=false)GAS_SubSolver
getConstSolverSubdata(SIM_ConstSolverArray &subsolvers, UT_StringArray *subsolvernames) const SIM_Solverprotected
getConstSubData(int index) const SIM_Data
getConstUserOptions() const SIM_Datainline
getConstVectorField(const SIM_Object *obj, const char *name, bool silent=false)GAS_SubSolver
getCOP2Node(const char *path, bool addinterest) const SIM_Data
getCreationTime() const SIM_Data
getCreatorId() const SIM_Data
getCreatorIndex() const SIM_Data
getCreatorNode() const SIM_Data
getDataType() const SIM_Data
getDataTypeFromFile(const char *filename, UT_String &datatype)SIM_Datastatic
getDataTypeFromStream(UT_IStream &is, UT_String &datatype)SIM_Datastatic
getDataTypeSubclass() const SIM_Dataprotectedvirtual
getDataTypeSuperclasses(UT_StringArray &)SIM_Datainlineprotectedstatic
getDefaultCollider(const SIM_Object &object, const UT_String &colliderlabel, UT_String &collidertype, bool &colliderreverseobjectroles) const SIM_Solver
getDefaultColliderLabel(const SIM_Object &object, UT_String &label) const SIM_Solver
getDefaultColliderLabelSubclass(const SIM_Object &object, UT_String &label) const SIM_Solverprotectedvirtual
getDefaultColliderSubclass(const SIM_Object &object, const UT_String &colliderlabel, UT_String &collidertype, bool &colliderreverseobjectroles) const SIM_Solverprotectedvirtual
getDOPNode(const char *path, bool addinterest) const SIM_Data
getEmptyDopDescription()SIM_Dataprotectedstatic
getEmptyTemplateList()SIM_Dataprotectedstatic
getEngine() const SIM_Datainline
getGeometry(const SIM_Object *obj, const char *name, bool silent=false)GAS_SubSolver
getGeometryCopy(SIM_Object *obj, const char *name, bool silent=false)GAS_SubSolver
getGeometryCopyByDataName(SIM_Object *obj, const char *dataname, bool silent=false)GAS_SubSolver
getGeometryNonConst(SIM_Object *obj, const char *name, bool silent=false)GAS_SubSolver
getGeometryToWorld(UT_DMatrix4 &xform, SIM_Object *obj, const char *geopath)GAS_SubSolver
getGuideGeometry(const SIM_RootData &root, const char *datapath, UT_DMatrix4 &xform, const SIM_Time &t) const SIM_Data
getGuideGeometryList(const SIM_RootData &root, const char *datapath, const SIM_Time &t, UT_Array< GU_ConstDetailHandle > &detailArray, UT_Array< UT_DMatrix4 > &xformArray) const SIM_Datavirtual
getGuideParmVersion() const SIM_Data
getGuideParmVersionSubclass() const SIM_Dataprotectedvirtual
getImpulseMassMatrix(const SIM_Object &object, const UT_Vector3 &impulseworldpos, UT_DMatrix3 &immatrix) const SIM_Solver
getImpulseMassMatrixSubclass(const SIM_Object &object, const UT_Vector3 &impulseworldpos, UT_DMatrix3 &immatrix) const overrideGAS_SubStepprotectedvirtual
getIndexField(SIM_Object *obj, const char *name, bool silent=false)GAS_SubSolver
getIsAlternateRepresentation() const SIM_Data
getIsAlternateRepresentationSubclass() const SIM_Dataprotectedvirtual
getIsDoingSimplifiedSaveLoad() const SIM_Dataprotected
getIsOfType(const UT_StringRef &datatype) const SIM_Data
getIsSelected() const SIM_Data
getMatchingConstData(SIM_ConstDataArray &data, UT_StringArray &datanames, SIM_Object *obj, const char *name, bool silent=false)GAS_SubSolver
getMatchingData(SIM_DataArray &data, SIM_Object *obj, const char *name, bool silent=false)GAS_SubSolver
getMatchingData(SIM_DataArray &data, UT_StringArray &datanames, SIM_Object *obj, const char *name, bool silent=false)GAS_SubSolver
getMatchingDataByName(SIM_DataArray &data, SIM_Object *obj, const char *name, bool silent=false)GAS_SubSolver
getMatchingDataByName(SIM_DataArray &data, UT_StringArray &datanames, SIM_Object *obj, const char *name, bool silent=false)GAS_SubSolver
getMatchingGeoCopy(SIM_DataArray &data, SIM_Object *obj, const char *name, bool silent=false)GAS_SubSolver
getMatchingGeoCopyByName(SIM_DataArray &data, SIM_Object *obj, const char *name, bool silent=false)GAS_SubSolver
getMatrixField(SIM_Object *obj, const char *name, bool silent=false)GAS_SubSolver
getMemorySize() const SIM_Data
getMemorySizeSubclass() const SIM_Dataprotectedvirtual
getNamedSubData(const char *dataname)SIM_Data
getNeedsInitialization() const SIM_Dataprotected
getNodePathsRelativeTo() const SIM_Data
getNthConstSubData(UT_String *name, const SIM_DataFilter &filter, int n, const char *startfrom, const SIM_DataFilter &recurseFilter) const SIM_Data
getNthSubData(UT_String *name, const SIM_DataFilter &filter, int n, const char *startfrom, const SIM_DataFilter &recurseFilter)SIM_Data
getNumSubData() const SIM_Data
getOBJNode(const char *path, bool addinterest) const SIM_Data
getOPNode(const char *path, bool addinterest) const SIM_Data
getOptions() const SIM_OptionsUser
getOptions()SIM_OptionsUserprotected
getOrCreateAlternateRepresentation(const char *dataname, const char *datatype) const SIM_Data
getOrCreateGeometry(SIM_Object *obj, const char *name)GAS_SubSolver
getOrCreateIndexField(SIM_Object *obj, const char *name)GAS_SubSolver
getOrCreateMatrixField(SIM_Object *obj, const char *name)GAS_SubSolver
getOrCreateScalarField(SIM_Object *obj, const char *name)GAS_SubSolver
getOrCreateVectorField(SIM_Object *obj, const char *name)GAS_SubSolver
getOwnerNetwork() const SIM_Data
getPointerToType(const UT_StringRef &datatype)SIM_Data
getPointGroup(const GU_Detail *gdp, GOP_Manager &mgr, const char *parmname=GAS_NAME_PTGROUP)GAS_SubSolver
getPointImpulseMassMatrix(const SIM_Object &object, GA_Index ptnum, UT_DMatrix3 &immatrix) const SIM_Solver
getPointImpulseMassMatrixResolver(const SIM_Object &object) const SIM_Solver
getPointImpulseMassMatrixResolverSubclass(const SIM_Object &object) const overrideGAS_SubStepprotectedvirtual
getPointImpulseMassMatrixSubclass(const SIM_Object &object, int ptnum, UT_DMatrix3 &immatrix) const overrideGAS_SubStepprotectedvirtual
getPropertyAtPoint(const SIM_Object &object, GA_Index ptnum, const SIM_Property &property) const SIM_Solver
getPropertyAtPointStatic(const SIM_Object &object, GA_Index ptnum, const SIM_Property &property)SIM_Solverstatic
getPropertyAtPointSubclass(const SIM_Object &object, int ptnum, const SIM_Property &property) const overrideGAS_SubSolverprotectedvirtual
getPropertyAtPosition(const SIM_Object &object, const UT_Vector3 &worldpos, const SIM_Property &property) const SIM_Solver
getPropertyAtPositionStatic(const SIM_Object &object, const UT_Vector3 &worldpos, const SIM_Property &property)SIM_Solverstatic
getPropertyAtPositionSubclass(const SIM_Object &object, const UT_Vector3 &worldspacepos, const SIM_Property &property) const overrideGAS_SubSolverprotectedvirtual
getPropertyAttribName(const SIM_Property &property)SIM_Solverstatic
getPropertyFromState(const SIM_Object &object, const SIM_Property &property) const GAS_SubSolverprotected
getPropertyResolver(const SIM_Object &object, const SIM_Property &property) const SIM_Solver
getPropertyResolverStatic(const SIM_Object &object, const SIM_Property &property)SIM_Solverstatic
getPropertyResolverSubclass(const SIM_Object &object, const SIM_Property &property) const overrideGAS_SubSolverprotectedvirtual
getQueryObject() const SIM_Data
getReferenceCount() const SIM_Data
getRequestedCache() const SIM_Solver
getRequestedCacheSubclass() const SIM_Solverprotectedvirtual
getScalarField(SIM_Object *obj, const char *name, bool silent=false)GAS_SubSolver
getSelectionRepresentsObject() const SIM_Data
GETSET_DATA_FUNCS_F("cflcond", CFLCond)GAS_SubStep
GETSET_DATA_FUNCS_I(SIM_NAME_PRIMARYSOLVER, PrimarySolver)GAS_SubStep
GETSET_DATA_FUNCS_I("substeps", Substeps)GAS_SubStep
GETSET_DATA_FUNCS_I("minimumsubsteps", MinimumSubsteps)GAS_SubStep
getSolverSubdata(SIM_SolverArray &subsolvers, UT_StringArray *subsolvernames)SIM_Solverprotected
getSOPNode(const char *path, bool addinterest) const SIM_Data
getStartTime(SIM_Time &time)SIM_Solverprotected
getSubData(int index)SIM_Data
getSubDataIndex(const SIM_Data *subdata) const SIM_Data
getSubDataName(int index) const SIM_Data
getUniqueId() const SIM_Data
getUserOptions()SIM_Datainline
getVectorField(SIM_Object *obj, const char *name, bool silent=false)GAS_SubSolver
getWorldToGeometry(UT_DMatrix4 &xform, SIM_Object *obj, const char *geopath)GAS_SubSolver
handleModification(int code=-1)SIM_Dataprotected
handleModificationSubclass(int code)SIM_Dataprotectedvirtual
infoGAS_SubSolverprotected
initAlternateRepresentation() const SIM_Dataprotected
initAlternateRepresentationSubclass(const SIM_Data &)SIM_Dataprotectedvirtual
initialize(const SIM_SubdataBehavior &subdatabehavior)SIM_Data
initializeFromParmDefaults()SIM_Dataprotected
initializeSubclass()SIM_Dataprotectedvirtual
interpolate(const SIM_Data *source1, const SIM_Data *source2, fpreal interp)SIM_Data
interpolateSubclass(const SIM_Data *source1, const SIM_Data *source2, fpreal interp)SIM_Dataprotectedvirtual
interpolateSubData(const SIM_Data &source1, const SIM_Data &source2, fpreal interp, const SIM_DataFilter &interpdata, const SIM_DataFilter &recurse)SIM_Data
isStatic(const SIM_Object *obj) const SIM_Solverinline
isStaticSubclass(const SIM_Object *obj) const SIM_Solverinlineprotectedvirtual
LENGTHSCALE_AREA enum valueGAS_SubSolver
LENGTHSCALE_LENGTH enum valueGAS_SubSolver
LENGTHSCALE_NAMES enum nameGAS_SubSolver
LENGTHSCALE_NONE enum valueGAS_SubSolver
LENGTHSCALE_VOLUME enum valueGAS_SubSolver
loadFromFile(const char *filename)SIM_Data
loadFromStream(UT_IStream &is, bool skiptype=false)SIM_Data
loadIOSubclass(UT_IStream &is, SIM_DataThreadedIO *io)SIM_Dataprotectedvirtual
loadOptionPacket(UT_IStream &is, const char *name, SIM_Options *opts) const SIM_Dataprotected
loadSubclass(UT_IStream &is)SIM_Dataprotectedvirtual
makeEqual(const SIM_Data *source, const SIM_SubdataBehavior &subdatabehavior)SIM_Data
makeEqualSubclass(const SIM_Data *source)SIM_Dataprotectedvirtual
makeMemberDataUnique()SIM_Datainline
makeMemberDataUniqueSubclass()SIM_Datainlinevirtual
matchField(SIM_ScalarField *field, const SIM_ScalarField *reffield)GAS_SubSolver
matchField(SIM_VectorField *field, const SIM_ScalarField *reffield)GAS_SubSolver
matchField(SIM_MatrixField *field, const SIM_ScalarField *reffield)GAS_SubSolver
matchField(SIM_IndexField *field, const SIM_ScalarField *reffield)GAS_SubSolver
MIX_ADD enum valueGAS_SubSolver
MIX_AVERAGE enum valueGAS_SubSolver
MIX_COPY enum valueGAS_SubSolver
MIX_DIV enum valueGAS_SubSolver
MIX_MAX enum valueGAS_SubSolver
MIX_MIN enum valueGAS_SubSolver
MIX_MUL enum valueGAS_SubSolver
MIX_NAMES enum nameGAS_SubSolver
MIX_SUB enum valueGAS_SubSolver
mixValues(MIX_NAMES mixtype, float d, float s)GAS_SubSolverinline
moveNamedSubData(const char *oldname, const char *newname)SIM_Data
NUM_LENGTHSCALE enum valueGAS_SubSolver
NUM_MIX enum valueGAS_SubSolver
NUM_TIMESCALE enum valueGAS_SubSolver
optionChanged(const char *name)SIM_OptionsUser
optionChangedSubclass(const char *name)SIM_OptionsUserprotectedvirtual
ourLengthScaleMenuGAS_SubSolverprotectedstatic
ourLengthScaleMethodsGAS_SubSolverprotectedstatic
ourMixMethodMenuGAS_SubSolverprotectedstatic
ourMixMethodsGAS_SubSolverprotectedstatic
ourTimeScaleMenuGAS_SubSolverprotectedstatic
ourTimeScaleMethodsGAS_SubSolverprotectedstatic
postSolveGasSubclass(SIM_Engine &engine, SIM_Object *obj, SIM_Time time, SIM_Time timestep)GAS_SubSolverinlineprotectedvirtual
postSolveObjects(SIM_Engine &engine, SIM_ObjectArray &objects, SIM_ObjectArray &newobjects, SIM_ObjectArray &feedbacktoobjects, const SIM_Time &timestep)SIM_Solver
postSolveObjectsSubclass(SIM_Engine &engine, SIM_ObjectArray &objects, SIM_ObjectArray &newobjects, SIM_ObjectArray &feedbacktoobjects, const SIM_Time &timestep) overrideGAS_SubSolvervirtual
ptgrpGAS_SubSolver
removeNamedSubData(const char *dataname)SIM_Data
removeNamedSubDataSubclass(const char *dataname)SIM_Dataprotectedvirtual
removeSubData(int index)SIM_Data
reportCLError(SIM_Object *obj, int err, const char *msg) const GAS_SubSolver
saveIOSubclass(std::ostream &os, SIM_DataThreadedIO *io) const SIM_Dataprotectedvirtual
saveOptionPacket(std::ostream &os, const char *name, const SIM_Options *opts) const SIM_Dataprotected
saveSubclass(std::ostream &os) const SIM_Dataprotectedvirtual
saveToFile(const char *filename, UT_CompressionType compressionType) const SIM_Data
saveToStream(std::ostream &os, UT_CompressionType compressionType) const SIM_Data
setGasDescription(SIM_DopDescription &descr)GAS_SubSolverstatic
setIsSelected(bool selected) const SIM_Data
setNamedSubData(const char *dataname, const SIM_Data *data, int setflags)SIM_Data
setNamedSubDataSubclass(const char *dataname, const SIM_Data *data)SIM_Dataprotectedvirtual
setNeedsInitialization(bool needsinit) const SIM_Dataprotected
setNeedsInitializationSubclass(bool needsinit) const SIM_Dataprotectedvirtual
setNeedsToRecalculateMemorySize() const SIM_Dataprotected
setParameters(const SIM_Options &parms)SIM_Data
setParametersSubclass(const SIM_Options &parms)SIM_Dataprotectedvirtual
setSelectionRepresentsObject(bool representsobject)SIM_Dataprotected
setStartTime(const SIM_Time &starttime)SIM_Solver
SIM_Data(const SIM_DataFactory *factory)SIM_Dataexplicitprotected
SIM_OptionsUser(SIM_Data *owner)SIM_OptionsUser
SIM_Result enum nameSIM_Solver
SIM_Solver(const SIM_DataFactory *factory)SIM_Solverexplicitprotected
SIM_SOLVER_FAIL enum valueSIM_Solver
SIM_SOLVER_REPEAT enum valueSIM_Solver
SIM_SOLVER_SUBSTEP enum valueSIM_Solver
SIM_SOLVER_SUCCESS enum valueSIM_Solver
solveGas(SIM_Engine &engine, SIM_Object *obj, SIM_Time time, SIM_Time timestep)GAS_SubSolvervirtual
solveGasSubclass(SIM_Engine &engine, SIM_Object *obj, SIM_Time time, SIM_Time timestep) overrideGAS_SubStepinlineprotectedvirtual
solveObjects(SIM_Engine &engine, SIM_ObjectArray &objects, SIM_ObjectArray &newobjects, SIM_ObjectArray &feedbacktoobjects, const SIM_Time &timestep)SIM_Solver
solveObjectsSubclass(SIM_Engine &engine, SIM_ObjectArray &objects, SIM_ObjectArray &newobjects, SIM_ObjectArray &feedbacktoobjects, const SIM_Time &timestep) overrideGAS_SubStepvirtual
solveRelationship(SIM_Engine &engine, SIM_Relationship &relationship, const SIM_Time &timestep)SIM_Solver
solveRelationshipSubclass(SIM_Engine &engine, SIM_Relationship &relationship, const SIM_Time &timestep)SIM_Solverinlineprotectedvirtual
THREADED_METHOD1(GAS_SubSolver, parms.mask->shouldMultiThread(), buildRelationshipFieldInternal, const RelationshipParms &, parms) void buildRelationshipFieldInternalPartial(const RelationshipParms &parmsGAS_SubSolverprotected
THREADED_METHOD6_CONST(GAS_SubSolver, gdp->getNumPoints() > 2048, applyForces, GU_Detail *, gdp, const GA_PointGroup *, ptgrp, SIM_Time, timestep, bool, densityscale, bool, doorient, bool, updatepos) void applyForcesPartial(GU_Detail *gdpGAS_SubSolver
TIMESCALE_ADD enum valueGAS_SubSolver
TIMESCALE_BOTH enum valueGAS_SubSolver
TIMESCALE_DIVIDE enum valueGAS_SubSolver
TIMESCALE_MULT enum valueGAS_SubSolver
TIMESCALE_NAMES enum nameGAS_SubSolver
TIMESCALE_NONE enum valueGAS_SubSolver
TIMESCALE_SCALEMULT enum valueGAS_SubSolver
timestepGAS_SubSolver
updateposGAS_SubSolver
~GAS_SubSolver() overrideGAS_SubSolverprotected
~GAS_SubStep() overrideGAS_SubStepprotected
~SIM_Data()SIM_Dataprotectedvirtual
~SIM_OptionsUser()SIM_OptionsUservirtual
~SIM_Solver() overrideSIM_Solverprotected