ParticleSink
Parametrable particle generator
Vec2d
Templates:
- Vec2d
Target: SofaSphFluid
namespace: sofa::component::misc
parents:
- ProjectiveConstraintSet
Data
Name | Description | Default value |
---|---|---|
name | object name | unnamed |
printLog | if true, emits extra messages at runtime. | 0 |
tags | list of the subsets the object belongs to | |
bbox | this object bounding box | |
componentState | The state of the component among (Dirty, Valid, Undefined, Loading, Invalid). | Undefined |
listening | if true, handle the events, otherwise ignore the events | 0 |
group | ID of the group containing this constraint. This ID is used to specify which constraints are solved by which solver, by specifying in each solver which groups of constraints it should handle. | 0 |
endTime | The constraint stops acting after the given value. Use a negative value for infinite constraints | -1 |
normal | plane normal | |
d0 | plane d coef at which particles acceleration is constrained to 0 | 0 |
d1 | plane d coef at which particles are removed | 0 |
fixed | indices of fixed particles | |
Visualization | ||
showPlane | enable/disable drawing of plane | 0 |
Links
Name | Description | Destination type name |
---|---|---|
context | Graph Node containing this object (or BaseContext::getDefault() if no graph is used) | BaseContext |
slaves | Sub-objects used internally by this object | BaseObject |
master | nullptr for regular objects, or master object for which this object is one sub-objects | BaseObject |
mechanicalStates | List of mechanical states to which this component is associated | BaseMechanicalState |
mstate | MechanicalState used by this component | MechanicalState<Vec2d> |
topology | link to the topology container | BaseMeshTopology |
Vec3d
Templates:
- Vec3d
Target: SofaSphFluid
namespace: sofa::component::misc
parents:
- ProjectiveConstraintSet
Data
Name | Description | Default value |
---|---|---|
name | object name | unnamed |
printLog | if true, emits extra messages at runtime. | 0 |
tags | list of the subsets the object belongs to | |
bbox | this object bounding box | |
componentState | The state of the component among (Dirty, Valid, Undefined, Loading, Invalid). | Undefined |
listening | if true, handle the events, otherwise ignore the events | 0 |
group | ID of the group containing this constraint. This ID is used to specify which constraints are solved by which solver, by specifying in each solver which groups of constraints it should handle. | 0 |
endTime | The constraint stops acting after the given value. Use a negative value for infinite constraints | -1 |
normal | plane normal | |
d0 | plane d coef at which particles acceleration is constrained to 0 | 0 |
d1 | plane d coef at which particles are removed | 0 |
fixed | indices of fixed particles | |
Visualization | ||
showPlane | enable/disable drawing of plane | 0 |
Links
Name | Description | Destination type name |
---|---|---|
context | Graph Node containing this object (or BaseContext::getDefault() if no graph is used) | BaseContext |
slaves | Sub-objects used internally by this object | BaseObject |
master | nullptr for regular objects, or master object for which this object is one sub-objects | BaseObject |
mechanicalStates | List of mechanical states to which this component is associated | BaseMechanicalState |
mstate | MechanicalState used by this component | MechanicalState<Vec3d> |
topology | link to the topology container | BaseMeshTopology |
Examples
ParticleSink.scn
<?xml version="1.0" ?>
<Node dt="0.005" gravity="0 -10 0" bbox="-6 -6 -6 6 6 6">
<RequiredPlugin name="Sofa.Component.Mass"/> <!-- Needed to use components [UniformMass] -->
<RequiredPlugin name="Sofa.Component.ODESolver.Forward"/> <!-- Needed to use components [EulerExplicitSolver] -->
<RequiredPlugin name="Sofa.Component.StateContainer"/> <!-- Needed to use components [MechanicalObject] -->
<RequiredPlugin name="Sofa.Component.Visual"/> <!-- Needed to use components [VisualStyle] -->
<RequiredPlugin name="SofaSphFluid"/> <!-- Needed to use components [ParticleSink ParticleSource] -->
<VisualStyle displayFlags="showBehaviorModels showForceFields hideWireframe" />
<DefaultAnimationLoop/>
<Node name="Fluid">
<EulerExplicitSolver symplectic="1" />
<MechanicalObject name="MModel" showObject="1"/>
<ParticleSource name="Source"
center="-0.375 0 -0.75
0 0 -0.75
0.375 0 -0.75
-0.75 0 -0.375
-0.375 0 -0.375
0 0 -0.375
0.375 0 -0.375
0.75 0 -0.375
-0.75 0 0.0
-0.375 0 0.0
0 0 0
0.375 0 0.0
0.75 0 0.0
-0.75 0 0.375
-0.375 0 0.375
0.0 0 0.375
0.375 0 0.375
0.75 0 0.375
-0.375 0 0.75
0 0 0.75
0.375 0 0.75"
translation="0 3 0" radius="0.01 0.1 0.01" velocity="0 -20 0" delay="0.01875" start="-0.1" stop="2" />
<ParticleSink normal="0 1 0" d0="-10" d1="-11" showPlane="true" printLog="false" />
<UniformMass name="M1" vertexMass="1.0" />
</Node>
</Node>
def createScene(root_node):
node = root_node.addChild('node', dt="0.005", gravity="0 -10 0", bbox="-6 -6 -6 6 6 6")
node.addObject('RequiredPlugin', name="Sofa.Component.Mass")
node.addObject('RequiredPlugin', name="Sofa.Component.ODESolver.Forward")
node.addObject('RequiredPlugin', name="Sofa.Component.StateContainer")
node.addObject('RequiredPlugin', name="Sofa.Component.Visual")
node.addObject('RequiredPlugin', name="SofaSphFluid")
node.addObject('VisualStyle', displayFlags="showBehaviorModels showForceFields hideWireframe")
node.addObject('DefaultAnimationLoop', )
fluid = node.addChild('Fluid')
fluid.addObject('EulerExplicitSolver', symplectic="1")
fluid.addObject('MechanicalObject', name="MModel", showObject="1")
fluid.addObject('ParticleSource', name="Source", center="-0.375 0 -0.75 0 0 -0.75 0.375 0 -0.75 -0.75 0 -0.375 -0.375 0 -0.375 0 0 -0.375 0.375 0 -0.375 0.75 0 -0.375 -0.75 0 0.0 -0.375 0 0.0 0 0 0 0.375 0 0.0 0.75 0 0.0 -0.75 0 0.375 -0.375 0 0.375 0.0 0 0.375 0.375 0 0.375 0.75 0 0.375 -0.375 0 0.75 0 0 0.75 0.375 0 0.75", translation="0 3 0", radius="0.01 0.1 0.01", velocity="0 -20 0", delay="0.01875", start="-0.1", stop="2")
fluid.addObject('ParticleSink', normal="0 1 0", d0="-10", d1="-11", showPlane="true", printLog="false")
fluid.addObject('UniformMass', name="M1", vertexMass="1.0")