woo.core

Inheritance diagram of woo.core
class woo.core.AttrTrait

Raises an exception This class cannot be instantiated from Python

activeLabel
altUnits
bits
buttons
choice
className
colormap
cxxType
deprecated
dirname
doc
existingFilename
filename
hidden
hideIf
ini
multiUnit
name
namedEnum
namedEnum_validValues((AttrTrait)arg1[, (str)pre0=''[, (str)post0=''[, (str)pre=''[, (str)post='']]]]) → str :

Valid values for named enum. pre and post are prefixed/suffixed to each possible value (used for formatting), pre0 and post0 are used with the first (primary/preferred) value.

C++ signature :
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > namedEnum_validValues(woo::AttrTraitBase {lvalue} [,std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >=’’ [,std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >=’’ [,std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >=’’ [,std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >=’‘]]]])
noDump
noGui
noGuiResize
noSave
prefUnit
pyByRef
range
readonly
rgbColor
startGroup
static
triggerPostLoad
unit
class woo.core.ClassTrait

Raises an exception This class cannot be instantiated from Python

doc
docOther
file
intro
line
name
title
class woo.core.EnergyTracker_iterator((object)arg1, (EnergyTracker_iterator)arg2) → None
class woo.core.Master

Raises an exception This class cannot be instantiated from Python

api

Current version of API (application programming interface) so that we can warn about possible incompatibilities, when comparing with usesApi. The number uses two decimal places for each part (major,minor,api), so e.g. 10177 is API 1.01.77. The correspondence with version number is loose.

cell
checkApi((Master)arg1, (int)minApi, (str)msg[, (bool)pyWarn=True]) → bool :

Check whether the currently used API is at least minApi. If smaller, issue warning (which is either Python’s DeprecationWarning or c++-level (log) warning depending on pyWarn) with link to the API changes page. Also issue FutureWarning (or c++-level warning, depending on pyWarn) if usesApi is not set.

C++ signature :
bool checkApi(Master {lvalue},int,std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > [,bool=True])
childClassesNonrecursive((Master)arg1, (str)arg2) → list :

Return list of all classes deriving from given class, as registered in the class factory

C++ signature :
boost::python::list childClassesNonrecursive(Master {lvalue},std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)
cmap

Current colormap as (index,name) tuple; set by index or by name alone.

cmaps

List available colormaps (by name)

compiledPyModules
confDir

Directory for storing various local configuration files (automatically set at startup)

deepcopy()
object deepcopy(tuple args, dict kwds) :

Return a deep-copy of given object; this performs serialization+deserialization using temporary (RAM) storage; all objects are therefore created anew. **kw can be used to pass additional attributes which will be changed on the copy before it is returned; this allows one-liners like m2=m1.deepcopy(tanPhi=0).

C++ signature :
object deepcopy(tuple args, dict kwds)
disableGdb((Master)arg1) → None :

Revert SEGV and ABRT handlers to system defaults.

C++ signature :
void disableGdb(Master {lvalue})
dt
energy
engines
exitNoBacktrace((Master)arg1[, (object)status=0]) → None :

Disable SEGV handler and exit, optionally with given status number.

C++ signature :
void exitNoBacktrace(Master {lvalue} [,boost::python::api::object=0])
instance = <woo.core.Master object>
isChildClassOf((Master)arg1, (str)arg2, (str)arg3) → bool :

Tells whether the first class derives from the second one (both given as strings).

C++ signature :
bool isChildClassOf(Master {lvalue},std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)
loadTmpAny((Master)arg1[, (str)name='']) → Object :

Load any object from named temporary store.

C++ signature :
boost::shared_ptr<woo::Object> loadTmpAny(Master {lvalue} [,std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >=’‘])
lsTmp((Master)arg1) → list :

Return list of all memory-saved simulations.

C++ signature :
boost::python::list lsTmp(Master {lvalue})
numThreads

Maximum number of threads openMP can use.

periodic
plugins((Master)arg1) → list :

Return list of all plugins registered in the class factory.

C++ signature :
boost::python::list plugins(Master {lvalue})
realtime

Return clock (human world) time the simulation has been running.

releaseScene((Master)arg1) → None :

Release the scene object; only used internally at Python shutdown.

C++ signature :
void releaseScene(Master {lvalue})
reset((Master)arg1) → None :

Set empty main scene

C++ signature :
void reset(Master {lvalue})
rmTmp((Master)arg1, (str)name) → None :

Remove memory-saved simulation.

C++ signature :
void rmTmp(Master {lvalue},std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)
saveTmpAny((Master)arg1, (Object)obj[, (str)name=''[, (bool)quiet=False]]) → None :

Save any object to named temporary store; quiet will supress warning if the name is already used.

C++ signature :
void saveTmpAny(Master {lvalue},boost::shared_ptr<woo::Object> [,std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >=’’ [,bool=False]])
scene
tags
timingEnabled

Globally enable/disable timing services (see documentation of the timing module).

tmpFileDir

Directory for temporary files; created automatically at startup.

tmpFilename((Master)arg1) → str :

Return unique name of file in temporary directory which will be deleted when woo exits.

C++ signature :
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > tmpFilename(Master {lvalue})
tmpToFile((Master)arg1, (str)mark, (str)fileName) → None :

Save XML of saveTmp’d simulation into fileName.

C++ signature :
void tmpToFile(Master {lvalue},std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)
tmpToString((Master)arg1[, (str)mark='']) → str :

Return XML of saveTmp’d simulation as string.

C++ signature :
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > tmpToString(Master {lvalue} [,std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >=’‘])
trackEnergy
usesApi

API version this script is using; compared with api at some places to give helpful warnings. This variable can be set either from integer (e.g. 10177) or a Vector3i like (1,1,77).

usesApi_locations
waitForScenes((Master)arg1) → None :

Wait for master scene to finish, including the possibility of master scene being replaced by a different scene object. This is different from Scene.wait which will return when that particular scene object will have stopped. Internally, this method chains calls to Scene.wait as long as woo.master.scene is re-assigned (thus, every Scene being de-assigned from woo.master.scene must be stopped, otherwise the call will never return.)

C++ signature :
void waitForScenes(Master {lvalue})
class woo.core.TimingDeltas((object)arg1) → None :
C++ signature :
void __init__(_object*)
data

Get timing data as list of tuples (label, execTime[nsec], execCount) (one tuple per checkpoint)

reset((TimingDeltas)arg1) → None :

Reset timing information

C++ signature :
void reset(woo::TimingDeltas {lvalue})

Preprocessor

ObjectPreprocessor

digraph Preprocessor {
        rankdir=LR;
        margin=.2;
        "Preprocessor" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="woo.core.html#woo.core.Preprocessor"];
        "woo.pre.cylTriax.CylTriaxTest" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.pre.html#woo.pre.cylTriax.Preprocessor"];
        "Preprocessor" -> "woo.pre.cylTriax.CylTriaxTest" [arrowsize=0.5,style="setlinewidth(0.5)"]             "woo.pre.horse.FallingHorse" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.pre.html#woo.pre.horse.Preprocessor"];
        "Preprocessor" -> "woo.pre.horse.FallingHorse" [arrowsize=0.5,style="setlinewidth(0.5)"]                "woo.pre.triax.TriaxTest" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.pre.html#woo.pre.triax.Preprocessor"];
        "Preprocessor" -> "woo.pre.triax.TriaxTest" [arrowsize=0.5,style="setlinewidth(0.5)"]           "woo.pre.staticmixer.StaticMixer" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.pre.html#woo.pre.staticmixer.Preprocessor"];
        "Preprocessor" -> "woo.pre.staticmixer.StaticMixer" [arrowsize=0.5,style="setlinewidth(0.5)"]           "woo.pre.toys.NewtonsCradle" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.pre.html#woo.pre.toys.Preprocessor"];
        "Preprocessor" -> "woo.pre.toys.NewtonsCradle" [arrowsize=0.5,style="setlinewidth(0.5)"]                "woo.pre.chute.DissipChute" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.pre.html#woo.pre.chute.Preprocessor"];
        "Preprocessor" -> "woo.pre.chute.DissipChute" [arrowsize=0.5,style="setlinewidth(0.5)"]         "woo.pre.toys.PourFeliciter" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.pre.html#woo.pre.toys.Preprocessor"];
        "Preprocessor" -> "woo.pre.toys.PourFeliciter" [arrowsize=0.5,style="setlinewidth(0.5)"]                "woo.pre.ell2d.EllGroup" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.pre.html#woo.pre.ell2d.Preprocessor"];
        "Preprocessor" -> "woo.pre.ell2d.EllGroup" [arrowsize=0.5,style="setlinewidth(0.5)"]            "woo.pre.psdrender.PsdRender" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.pre.html#woo.pre.psdrender.Preprocessor"];
        "Preprocessor" -> "woo.pre.psdrender.PsdRender" [arrowsize=0.5,style="setlinewidth(0.5)"]               "woo.pre.depot.CylDepot" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.pre.html#woo.pre.depot.Preprocessor"];
        "Preprocessor" -> "woo.pre.depot.CylDepot" [arrowsize=0.5,style="setlinewidth(0.5)"]
}
class woo.core.Preprocessor

Subclasses of this class generate a Scene object when called, based on their attributes.

object __init__(tuple args, dict kwds)

[ core/Preprocessor.hpp , core/Preprocessor.cpp ]

__call__((Preprocessor)arg1) → Scene

EnergyTrackerGrid

ObjectEnergyTrackerGrid

class woo.core.EnergyTrackerGrid

Storage of spatially located energy values.

object __init__(tuple args, dict kwds)

[ core/EnergyTracker.hpp , core/EnergyTracker.cpp ]

box(= AlignedBox3((1.7976931348623157e308, 1.7976931348623157e308, 1.7976931348623157e308), (-1.7976931348623157e308, -1.7976931348623157e308, -1.7976931348623157e308)))

Part of space which we monitor.

[type: AlignedBox3, read-only in python]

cellSize(= nan)

Size of one cell in the box (in all directions); will be satisfied exactly, at the expense of slightly growing box. Do not change.

[type: Real, read-only in python]

boxCells(= Vector3i(0, 0, 0))

Number of cells in the box (computed automatically).

[type: Vector3i, read-only in python]

data

Grid data – 5d since each 3d point contains multiple energies, and there are multiple threads writing concurrently.

[type: boost_multi_array_real_5, not accessible from python]

vtkExport((EnergyTrackerGrid)arg1, (str)out, (object)names) → None :

Export data into VTK grid file out, using names to name the arrays exported.

ScalarRange

ObjectScalarRange

class woo.core.ScalarRange

Store and share range of scalar values

object __init__(tuple args, dict kwds)

[ core/ScalarRange.hpp , core/ScalarRange.cpp ]

mnmx(= Vector2(inf, -inf))

Packed minimum and maximum values; adjusting from python sets autoAdjust to false automatically.

[type: Vector2]

logMnmx(= Vector2(9.98228814e-315, -5.230681663028206e-255))

Logs of mnmx values, to avoid computing logarithms all the time; computed via cacheLogs.

[type: Vector2r, not saved, not accessible from python]

flags(= 8)

Flags for this range.

[type: int, bit accessors: log, reversed, symmetric, autoAdjust, hidden, clip, used]

dispPos(= Vector2i(-1000, -1000))

Where is this range displayed on the OpenGL canvas; initially out of range, will be reset automatically.

[type: Vector2i, not shown in the UI]

length(= 200.0)

Length on the display; if negative, it is fractional relative to view width/height

[type: Real, not shown in the UI]

landscape(= False)

Make the range display with landscape orientation

[type: bool, not shown in the UI]

label(= '')

Short name of this range.

[type: std::string]

cmap(= -1)

Colormap to be used.

[type: int, named enum, possible values are: ‘default’ (‘’; -1), ‘coolwarm’ (0), ‘3gauss’ (1), ‘3saw’ (2), ‘banded’ (3), ‘blue_red’ (4), ‘blu_red’ (5), ‘bright’ (6), ‘bw’ (7), ‘default’ (8), ‘detail’ (9), ‘extrema’ (10), ‘helix2’ (11), ‘helix’ (12), ‘hotres’ (13), ‘jaisn2’ (14), ‘jaisnb’ (15), ‘jaisnc’ (16), ‘jaisnd’ (17), ‘jaison’ (18), ‘jet’ (19), ‘manga’ (20), ‘rainbow’ (21), ‘roullet’ (22), ‘ssec’ (23), ‘wheel’ (24), ‘red-green-blue’ (25), ‘viridis’ (26)]

norm((ScalarRange)arg1, (float)val[, (bool)clamp=True]) → float :

Return value of the argument normalized to 0..1 range; the value is not clamped to 0..1 however: if autoAdjust is false, it can fall outside.

reset((ScalarRange)arg1) → None

NodeVisRep

ObjectNodeVisRep

digraph NodeVisRep {
        rankdir=LR;
        margin=.2;
        "NodeVisRep" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="woo.core.html#woo.core.NodeVisRep"];
        "woo.dem.TraceVisRep" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.NodeVisRep"];
        "NodeVisRep" -> "woo.dem.TraceVisRep" [arrowsize=0.5,style="setlinewidth(0.5)"]         "woo.gl.VectorGlRep" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.NodeVisRep"];
        "NodeVisRep" -> "woo.gl.VectorGlRep" [arrowsize=0.5,style="setlinewidth(0.5)"]          "woo.gl.TensorGlRep" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.NodeVisRep"];
        "NodeVisRep" -> "woo.gl.TensorGlRep" [arrowsize=0.5,style="setlinewidth(0.5)"]          "woo.gl.LabelGlRep" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.NodeVisRep"];
        "NodeVisRep" -> "woo.gl.LabelGlRep" [arrowsize=0.5,style="setlinewidth(0.5)"]           "woo.gl.ActReactGlRep" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.NodeVisRep"];
        "woo.gl.VectorGlRep" -> "woo.gl.ActReactGlRep" [arrowsize=0.5,style="setlinewidth(0.5)"]                "woo.gl.CylGlRep" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.NodeVisRep"];
        "NodeVisRep" -> "woo.gl.CylGlRep" [arrowsize=0.5,style="setlinewidth(0.5)"]             "woo.gl.ScalarGlRep" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.NodeVisRep"];
        "NodeVisRep" -> "woo.gl.ScalarGlRep" [arrowsize=0.5,style="setlinewidth(0.5)"]
}
class woo.core.NodeVisRep

Object representing what should be rendered at associated node (abstract base class).

object __init__(tuple args, dict kwds)

[ core/Field.hpp ]

Engine

ObjectEngine

digraph Engine {
        rankdir=LR;
        margin=.2;
        "Engine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="woo.core.html#woo.core.Engine"];
        "woo.dem.FlowAnalysis" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "PeriodicEngine" -> "woo.dem.FlowAnalysis" [arrowsize=0.5,style="setlinewidth(0.5)"]            "woo.dem.GridCollider" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "woo.dem.Collider" -> "woo.dem.GridCollider" [arrowsize=0.5,style="setlinewidth(0.5)"]          "woo.dem.BoxInlet" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "woo.dem.RandomInlet" -> "woo.dem.BoxInlet" [arrowsize=0.5,style="setlinewidth(0.5)"]           "woo.dem.BoxInlet2d" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "woo.dem.BoxInlet" -> "woo.dem.BoxInlet2d" [arrowsize=0.5,style="setlinewidth(0.5)"]            "woo.dem.ArcOutlet" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "woo.dem.Outlet" -> "woo.dem.ArcOutlet" [arrowsize=0.5,style="setlinewidth(0.5)"]               "woo.dem.GridBoundDispatcher" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "Dispatcher" -> "woo.dem.GridBoundDispatcher" [arrowsize=0.5,style="setlinewidth(0.5)"]         "woo.dem.LawDispatcher" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "Dispatcher" -> "woo.dem.LawDispatcher" [arrowsize=0.5,style="setlinewidth(0.5)"]               "woo._qt.SnapshotEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo._qt.html#woo._qt.Engine"];
        "PeriodicEngine" -> "woo._qt.SnapshotEngine" [arrowsize=0.5,style="setlinewidth(0.5)"]          "woo.gl.GlShapeDispatcher" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.Engine"];
        "Dispatcher" -> "woo.gl.GlShapeDispatcher" [arrowsize=0.5,style="setlinewidth(0.5)"]            "woo.dem.ForcesToHdf5" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "PeriodicEngine" -> "woo.dem.ForcesToHdf5" [arrowsize=0.5,style="setlinewidth(0.5)"]            "woo.dem.BoundDispatcher" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "Dispatcher" -> "woo.dem.BoundDispatcher" [arrowsize=0.5,style="setlinewidth(0.5)"]             "woo.dem.AnisoPorosityAnalyzer" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "Engine" -> "woo.dem.AnisoPorosityAnalyzer" [arrowsize=0.5,style="setlinewidth(0.5)"]           "woo.dem.POVRayExport" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "PeriodicEngine" -> "woo.dem.POVRayExport" [arrowsize=0.5,style="setlinewidth(0.5)"]            "woo.dem.MeshVolume" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "PeriodicEngine" -> "woo.dem.MeshVolume" [arrowsize=0.5,style="setlinewidth(0.5)"]              "ParallelEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="woo.core.html#woo.core.Engine"];
        "Engine" -> "ParallelEngine" [arrowsize=0.5,style="setlinewidth(0.5)"]          "woo.dem.InsertionSortCollider" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "woo.dem.Collider" -> "woo.dem.InsertionSortCollider" [arrowsize=0.5,style="setlinewidth(0.5)"]         "woo.gl.GlCPhysDispatcher" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.Engine"];
        "Dispatcher" -> "woo.gl.GlCPhysDispatcher" [arrowsize=0.5,style="setlinewidth(0.5)"]            "PyRunner" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="woo.core.html#woo.core.Engine"];
        "PeriodicEngine" -> "PyRunner" [arrowsize=0.5,style="setlinewidth(0.5)"]                "woo.dem.BoxOutlet" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "woo.dem.Outlet" -> "woo.dem.BoxOutlet" [arrowsize=0.5,style="setlinewidth(0.5)"]               "woo.dem.NodalForcesToHdf5" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "woo.dem.ForcesToHdf5" -> "woo.dem.NodalForcesToHdf5" [arrowsize=0.5,style="setlinewidth(0.5)"]         "WooTestPeriodicEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="woo.core.html#woo.core.Engine"];
        "PeriodicEngine" -> "WooTestPeriodicEngine" [arrowsize=0.5,style="setlinewidth(0.5)"]           "woo.dem.ForceResetter" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "Engine" -> "woo.dem.ForceResetter" [arrowsize=0.5,style="setlinewidth(0.5)"]           "woo.dem.Outlet" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "PeriodicEngine" -> "woo.dem.Outlet" [arrowsize=0.5,style="setlinewidth(0.5)"]          "woo.dem.LawTester" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "Engine" -> "woo.dem.LawTester" [arrowsize=0.5,style="setlinewidth(0.5)"]               "woo.dem.ClusterAnalysis" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "PeriodicEngine" -> "woo.dem.ClusterAnalysis" [arrowsize=0.5,style="setlinewidth(0.5)"]         "woo.dem.HalfspaceBuoyancy" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "Engine" -> "woo.dem.HalfspaceBuoyancy" [arrowsize=0.5,style="setlinewidth(0.5)"]               "woo.dem.DetectSteadyState" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "PeriodicEngine" -> "woo.dem.DetectSteadyState" [arrowsize=0.5,style="setlinewidth(0.5)"]               "woo.dem.Collider" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "Engine" -> "woo.dem.Collider" [arrowsize=0.5,style="setlinewidth(0.5)"]                "woo.dem.CylinderInlet" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "woo.dem.RandomInlet" -> "woo.dem.CylinderInlet" [arrowsize=0.5,style="setlinewidth(0.5)"]              "woo.dem.StackedBoxOutlet" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "woo.dem.BoxOutlet" -> "woo.dem.StackedBoxOutlet" [arrowsize=0.5,style="setlinewidth(0.5)"]             "woo.dem.Suspicious" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "PeriodicEngine" -> "woo.dem.Suspicious" [arrowsize=0.5,style="setlinewidth(0.5)"]              "woo.dem.Tracer" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "PeriodicEngine" -> "woo.dem.Tracer" [arrowsize=0.5,style="setlinewidth(0.5)"]          "woo.dem.BoxTraceTimeSetter" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "PeriodicEngine" -> "woo.dem.BoxTraceTimeSetter" [arrowsize=0.5,style="setlinewidth(0.5)"]              "Dispatcher" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="woo.core.html#woo.core.Engine"];
        "Engine" -> "Dispatcher" [arrowsize=0.5,style="setlinewidth(0.5)"]              "woo.dem.RandomInlet" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "woo.dem.Inlet" -> "woo.dem.RandomInlet" [arrowsize=0.5,style="setlinewidth(0.5)"]              "woo.dem.CPhysDispatcher" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "Dispatcher" -> "woo.dem.CPhysDispatcher" [arrowsize=0.5,style="setlinewidth(0.5)"]             "woo.dem.CGeomDispatcher" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "Dispatcher" -> "woo.dem.CGeomDispatcher" [arrowsize=0.5,style="setlinewidth(0.5)"]             "PeriodicEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="woo.core.html#woo.core.Engine"];
        "Engine" -> "PeriodicEngine" [arrowsize=0.5,style="setlinewidth(0.5)"]          "woo.dem.IntraForce" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "Dispatcher" -> "woo.dem.IntraForce" [arrowsize=0.5,style="setlinewidth(0.5)"]          "woo.dem.DynDt" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "PeriodicEngine" -> "woo.dem.DynDt" [arrowsize=0.5,style="setlinewidth(0.5)"]           "woo.dem.WeirdTriaxControl" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "Engine" -> "woo.dem.WeirdTriaxControl" [arrowsize=0.5,style="setlinewidth(0.5)"]               "woo.gl.GlFieldDispatcher" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.Engine"];
        "Dispatcher" -> "woo.gl.GlFieldDispatcher" [arrowsize=0.5,style="setlinewidth(0.5)"]            "woo.dem.AxialGravity" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "Engine" -> "woo.dem.AxialGravity" [arrowsize=0.5,style="setlinewidth(0.5)"]            "woo.gl.GlNodeDispatcher" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.Engine"];
        "Dispatcher" -> "woo.gl.GlNodeDispatcher" [arrowsize=0.5,style="setlinewidth(0.5)"]             "woo.gl.GlBoundDispatcher" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.Engine"];
        "Dispatcher" -> "woo.gl.GlBoundDispatcher" [arrowsize=0.5,style="setlinewidth(0.5)"]            "woo.dem.Leapfrog" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "Engine" -> "woo.dem.Leapfrog" [arrowsize=0.5,style="setlinewidth(0.5)"]                "woo.dem.VtkExport" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "PeriodicEngine" -> "woo.dem.VtkExport" [arrowsize=0.5,style="setlinewidth(0.5)"]               "woo.dem.ConveyorInlet" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "woo.dem.Inlet" -> "woo.dem.ConveyorInlet" [arrowsize=0.5,style="setlinewidth(0.5)"]            "woo.dem.Inlet" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "PeriodicEngine" -> "woo.dem.Inlet" [arrowsize=0.5,style="setlinewidth(0.5)"]           "woo.dem.ContactLoop" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "Engine" -> "woo.dem.ContactLoop" [arrowsize=0.5,style="setlinewidth(0.5)"]             "woo.dem.PeriIsoCompressor" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "Engine" -> "woo.dem.PeriIsoCompressor" [arrowsize=0.5,style="setlinewidth(0.5)"]               "woo.dem.ArcInlet" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "woo.dem.RandomInlet" -> "woo.dem.ArcInlet" [arrowsize=0.5,style="setlinewidth(0.5)"]           "woo.dem.PelletAgglomerator" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Engine"];
        "Engine" -> "woo.dem.PelletAgglomerator" [arrowsize=0.5,style="setlinewidth(0.5)"]
}
class woo.core.Engine

Basic execution unit of simulation, called from the simulation loop (O.engines)

object __init__(tuple args, dict kwds)

[ core/Engine.hpp , core/Engine.cpp ]

dead(= False)

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

[type: bool]

label(= '')

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

[type: string, not shown in the UI]

field(= None)

User-requested woo.core.Field to run this engine on; if empty, fields will be searched for admissible ones; if more than one is found, exception will be raised.

[type: shared_ptr<Field>, not shown in the UI, not dumped]

userAssignedField(= False)

Whether the woo.core.Engine.field was user-assigned or automatically assigned, to know whether to update automatically.

[type: bool, not shown in the UI, read-only in python]

isNewObject(= True)

Flag to recognize in postLoad whether this object has just been constructed, to set userAssignedField properly (ugly…)

[type: bool, not accessible from python]

__call__((Engine)arg1, (Scene)scene[, (Field)field=None]) → None :

Run the engine just once, using scene. If field is not given as the engine requires it, it will be obtained from scene automatically (with the same rules as for engines which don’t have an explicit field: if one field is found, it is used, no or more compatible fields raise an exception.)

acceptsField((Engine)arg1, (Field)arg2) → bool
critDt((Engine)arg1) → float :

Return critical (maximum numerically stable) timestep for this engine. By default returns infinity (no critical timestep) but derived engines may override this function.

execCount

Cummulative count this engine was run (only used if Master.timingEnabled==True).

execTime

Cummulative time this Engine took to run (only used if Master.timingEnabled==True).

scene

Get associated scene object, if any (this function is dangerous in some corner cases, as it has to use raw pointer).

timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and Master.timingEnabled==True.

PeriodicEngine

ObjectEnginePeriodicEngine

digraph PeriodicEngine {
        rankdir=LR;
        margin=.2;
        "PeriodicEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="woo.core.html#woo.core.PeriodicEngine"];
        "woo.dem.FlowAnalysis" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.PeriodicEngine"];
        "PeriodicEngine" -> "woo.dem.FlowAnalysis" [arrowsize=0.5,style="setlinewidth(0.5)"]            "woo.dem.ClusterAnalysis" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.PeriodicEngine"];
        "PeriodicEngine" -> "woo.dem.ClusterAnalysis" [arrowsize=0.5,style="setlinewidth(0.5)"]         "woo.dem.BoxInlet" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.PeriodicEngine"];
        "woo.dem.RandomInlet" -> "woo.dem.BoxInlet" [arrowsize=0.5,style="setlinewidth(0.5)"]           "woo.dem.DetectSteadyState" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.PeriodicEngine"];
        "PeriodicEngine" -> "woo.dem.DetectSteadyState" [arrowsize=0.5,style="setlinewidth(0.5)"]               "woo.dem.BoxInlet2d" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.PeriodicEngine"];
        "woo.dem.BoxInlet" -> "woo.dem.BoxInlet2d" [arrowsize=0.5,style="setlinewidth(0.5)"]            "woo.dem.ArcOutlet" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.PeriodicEngine"];
        "woo.dem.Outlet" -> "woo.dem.ArcOutlet" [arrowsize=0.5,style="setlinewidth(0.5)"]               "woo.dem.CylinderInlet" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.PeriodicEngine"];
        "woo.dem.RandomInlet" -> "woo.dem.CylinderInlet" [arrowsize=0.5,style="setlinewidth(0.5)"]              "woo.dem.StackedBoxOutlet" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.PeriodicEngine"];
        "woo.dem.BoxOutlet" -> "woo.dem.StackedBoxOutlet" [arrowsize=0.5,style="setlinewidth(0.5)"]             "woo.dem.Suspicious" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.PeriodicEngine"];
        "PeriodicEngine" -> "woo.dem.Suspicious" [arrowsize=0.5,style="setlinewidth(0.5)"]              "woo.dem.Tracer" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.PeriodicEngine"];
        "PeriodicEngine" -> "woo.dem.Tracer" [arrowsize=0.5,style="setlinewidth(0.5)"]          "woo.dem.BoxTraceTimeSetter" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.PeriodicEngine"];
        "PeriodicEngine" -> "woo.dem.BoxTraceTimeSetter" [arrowsize=0.5,style="setlinewidth(0.5)"]              "woo.dem.RandomInlet" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.PeriodicEngine"];
        "woo.dem.Inlet" -> "woo.dem.RandomInlet" [arrowsize=0.5,style="setlinewidth(0.5)"]              "woo.dem.DynDt" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.PeriodicEngine"];
        "PeriodicEngine" -> "woo.dem.DynDt" [arrowsize=0.5,style="setlinewidth(0.5)"]           "woo._qt.SnapshotEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo._qt.html#woo._qt.PeriodicEngine"];
        "PeriodicEngine" -> "woo._qt.SnapshotEngine" [arrowsize=0.5,style="setlinewidth(0.5)"]          "woo.dem.ForcesToHdf5" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.PeriodicEngine"];
        "PeriodicEngine" -> "woo.dem.ForcesToHdf5" [arrowsize=0.5,style="setlinewidth(0.5)"]            "woo.dem.POVRayExport" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.PeriodicEngine"];
        "PeriodicEngine" -> "woo.dem.POVRayExport" [arrowsize=0.5,style="setlinewidth(0.5)"]            "woo.dem.MeshVolume" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.PeriodicEngine"];
        "PeriodicEngine" -> "woo.dem.MeshVolume" [arrowsize=0.5,style="setlinewidth(0.5)"]              "PyRunner" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="woo.core.html#woo.core.PeriodicEngine"];
        "PeriodicEngine" -> "PyRunner" [arrowsize=0.5,style="setlinewidth(0.5)"]                "woo.dem.VtkExport" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.PeriodicEngine"];
        "PeriodicEngine" -> "woo.dem.VtkExport" [arrowsize=0.5,style="setlinewidth(0.5)"]               "woo.dem.ConveyorInlet" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.PeriodicEngine"];
        "woo.dem.Inlet" -> "woo.dem.ConveyorInlet" [arrowsize=0.5,style="setlinewidth(0.5)"]            "woo.dem.BoxOutlet" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.PeriodicEngine"];
        "woo.dem.Outlet" -> "woo.dem.BoxOutlet" [arrowsize=0.5,style="setlinewidth(0.5)"]               "woo.dem.Inlet" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.PeriodicEngine"];
        "PeriodicEngine" -> "woo.dem.Inlet" [arrowsize=0.5,style="setlinewidth(0.5)"]           "woo.dem.NodalForcesToHdf5" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.PeriodicEngine"];
        "woo.dem.ForcesToHdf5" -> "woo.dem.NodalForcesToHdf5" [arrowsize=0.5,style="setlinewidth(0.5)"]         "WooTestPeriodicEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="woo.core.html#woo.core.PeriodicEngine"];
        "PeriodicEngine" -> "WooTestPeriodicEngine" [arrowsize=0.5,style="setlinewidth(0.5)"]           "woo.dem.ArcInlet" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.PeriodicEngine"];
        "woo.dem.RandomInlet" -> "woo.dem.ArcInlet" [arrowsize=0.5,style="setlinewidth(0.5)"]           "woo.dem.Outlet" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.PeriodicEngine"];
        "PeriodicEngine" -> "woo.dem.Outlet" [arrowsize=0.5,style="setlinewidth(0.5)"]
}
class woo.core.PeriodicEngine

Run Engine::run with given fixed periodicity real time (=wall clock time, computation time), virtual time (simulation time), step number), by setting any of those criteria (virtPeriod, realPeriod, stepPeriod) to a positive value. They are all negative (inactive) by default.

The number of times this engine is activated can be limited by setting nDo>0. If the number of activations will have been already reached, no action will be called even if an active period has elapsed.

If initRun is set (true by default), the engine will run when called for the first time; otherwise it will only start counting period (realLast etc interal variables) from that point, but without actually running, and will run only once a period has elapsed since the initial run.

This class should not be used directly; rather, derive your own engine which you want to be run periodically.

Derived engines should override Engine::action(), which will be called periodically. If the derived Engine overrides also Engine::isActivated, it should also take in account return value from PeriodicEngine::isActivated, otherwise the periodicity will not be functional.

Example with PyRnner, which derives from PeriodicEngine; likely to be encountered in python scripts):

        PyRunner(realPeriod=5,stepPeriod=10000,command='print O.step')  

will print step number every 10000 step or every 5 seconds of wall clock time, whiever comes first since it was last run.

object __init__(tuple args, dict kwds)

[ core/Engine.hpp , core/Engine.cpp ]

virtPeriod(= 0.0)

Periodicity criterion using virtual (simulation) time (deactivated if <= 0)

[type: Real]

realPeriod(= 0.0)

Periodicity criterion using real (wall clock, computation, human) time (deactivated if <=0)

[type: Real]

stepPeriod(= 1)

Periodicity criterion using step number (deactivated if <= 0)

[type: long]

stepModulo(= True)

If true, interpret stepPeriod as modulo value for Scene.step. This is useful to assure two engines will run within the same step regardless of when they were started. This may lead to Engine being run earlier than stepPeriod after the last run, in case stepPeriod is changed.

[type: bool]

nDo(= -1)

Limit number of executions by this number (deactivated if negative)

[type: long]

nDone(= 0)

Track number of executions (cumulative).

[type: long]

initRun(= True)

Run the first time we are called as well.

[type: bool]

virtLast(= nan)

Tracks virtual time of last run.

[type: Real]

realLast(= nan)

Tracks real time of last run.

[type: Real]

stepLast(= -1)

Tracks step number of last run.

[type: long]

stepPrev(= -1)

Number of step when we run previously (stepLast is the current step when the engine runs)

[type: long, not shown in the UI]

virtPrev(= -1.0)

Simulation time when run previously

[type: Real, not shown in the UI]

realPrev(= -1.0)

Real time when run previously

[type: Real, not shown in the UI]

WooTestPeriodicEngine

ObjectEnginePeriodicEngineWooTestPeriodicEngine

class woo.core.WooTestPeriodicEngine

Test some PeriodicEngine features.

object __init__(tuple args, dict kwds)

[ core/Test.hpp ]

deadCounter(= 0)

Count how many times dead was assigned to.

[type: int]

PyRunner

ObjectEnginePeriodicEnginePyRunner

class woo.core.PyRunner

Execute a python command periodically, with defined (and adjustable) periodicity. See PeriodicEngine documentation for details.

Special constructor

command can be given as first unnamed string argument (PyRunner('foo()')), stepPeriod as unnamed integer argument (PyRunner('foo()',100) or PyRunner(100,'foo()')).

object __init__(tuple args, dict kwds)

[ core/Engine.hpp , core/Engine.cpp ]

command(= '')

Command to be run by python interpreter. Not run if empty.

[type: string]

Dispatcher

ObjectEngineDispatcher

digraph Dispatcher {
        rankdir=LR;
        margin=.2;
        "Dispatcher" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="woo.core.html#woo.core.Dispatcher"];
        "woo.gl.GlShapeDispatcher" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.Dispatcher"];
        "Dispatcher" -> "woo.gl.GlShapeDispatcher" [arrowsize=0.5,style="setlinewidth(0.5)"]            "woo.dem.BoundDispatcher" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Dispatcher"];
        "Dispatcher" -> "woo.dem.BoundDispatcher" [arrowsize=0.5,style="setlinewidth(0.5)"]             "woo.gl.GlCPhysDispatcher" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.Dispatcher"];
        "Dispatcher" -> "woo.gl.GlCPhysDispatcher" [arrowsize=0.5,style="setlinewidth(0.5)"]            "woo.gl.GlFieldDispatcher" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.Dispatcher"];
        "Dispatcher" -> "woo.gl.GlFieldDispatcher" [arrowsize=0.5,style="setlinewidth(0.5)"]            "woo.gl.GlNodeDispatcher" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.Dispatcher"];
        "Dispatcher" -> "woo.gl.GlNodeDispatcher" [arrowsize=0.5,style="setlinewidth(0.5)"]             "woo.gl.GlBoundDispatcher" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.Dispatcher"];
        "Dispatcher" -> "woo.gl.GlBoundDispatcher" [arrowsize=0.5,style="setlinewidth(0.5)"]            "woo.dem.GridBoundDispatcher" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Dispatcher"];
        "Dispatcher" -> "woo.dem.GridBoundDispatcher" [arrowsize=0.5,style="setlinewidth(0.5)"]         "woo.dem.IntraForce" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Dispatcher"];
        "Dispatcher" -> "woo.dem.IntraForce" [arrowsize=0.5,style="setlinewidth(0.5)"]          "woo.dem.CPhysDispatcher" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Dispatcher"];
        "Dispatcher" -> "woo.dem.CPhysDispatcher" [arrowsize=0.5,style="setlinewidth(0.5)"]             "woo.dem.CGeomDispatcher" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Dispatcher"];
        "Dispatcher" -> "woo.dem.CGeomDispatcher" [arrowsize=0.5,style="setlinewidth(0.5)"]             "woo.dem.LawDispatcher" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Dispatcher"];
        "Dispatcher" -> "woo.dem.LawDispatcher" [arrowsize=0.5,style="setlinewidth(0.5)"]
}
class woo.core.Dispatcher

Engine dispatching control to its associated functors, based on types of argument it receives. This abstract base class provides no functionality in itself.

object __init__(tuple args, dict kwds)

[ core/Dispatcher.hpp ]

Functor

ObjectFunctor

digraph Functor {
        rankdir=LR;
        margin=.2;
        "Functor" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="woo.core.html#woo.core.Functor"];
        "woo.gl.Gl1_Facet" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.Functor"];
        "woo.gl.GlShapeFunctor" -> "woo.gl.Gl1_Facet" [arrowsize=0.5,style="setlinewidth(0.5)"]         "woo.dem.Cg2_InfCylinder_Capsule_L6Geom" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.Cg2_Any_Any_L6Geom__Base" -> "woo.dem.Cg2_InfCylinder_Capsule_L6Geom" [arrowsize=0.5,style="setlinewidth(0.5)"]                "woo.dem.Cg2_Wall_Facet_L6Geom" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.Cg2_Any_Any_L6Geom__Base" -> "woo.dem.Cg2_Wall_Facet_L6Geom" [arrowsize=0.5,style="setlinewidth(0.5)"]         "woo.dem.In2_Wall_ElastMat" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.IntraFunctor" -> "woo.dem.In2_Wall_ElastMat" [arrowsize=0.5,style="setlinewidth(0.5)"]         "woo.dem.Cg2_Facet_InfCylinder_L6Geom" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.Cg2_Any_Any_L6Geom__Base" -> "woo.dem.Cg2_Facet_InfCylinder_L6Geom" [arrowsize=0.5,style="setlinewidth(0.5)"]          "woo.dem.Cg2_InfCylinder_Sphere_L6Geom" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.Cg2_Any_Any_L6Geom__Base" -> "woo.dem.Cg2_InfCylinder_Sphere_L6Geom" [arrowsize=0.5,style="setlinewidth(0.5)"]         "woo.gl.GlFieldFunctor" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.Functor"];
        "Functor" -> "woo.gl.GlFieldFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"]          "woo.dem.Cp2_FrictMat_FrictPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.CPhysFunctor" -> "woo.dem.Cp2_FrictMat_FrictPhys" [arrowsize=0.5,style="setlinewidth(0.5)"]            "woo.dem.Grid1_Sphere" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.GridBoundFunctor" -> "woo.dem.Grid1_Sphere" [arrowsize=0.5,style="setlinewidth(0.5)"]          "woo.dem.In2_Truss_ElastMat" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.IntraFunctor" -> "woo.dem.In2_Truss_ElastMat" [arrowsize=0.5,style="setlinewidth(0.5)"]                "woo.gl.Gl1_Membrane" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.Functor"];
        "woo.gl.Gl1_Facet" -> "woo.gl.Gl1_Membrane" [arrowsize=0.5,style="setlinewidth(0.5)"]           "woo.dem.CPhysFunctor" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "Functor" -> "woo.dem.CPhysFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"]           "woo.dem.Cp2_PelletMat_PelletPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.Cp2_FrictMat_FrictPhys" -> "woo.dem.Cp2_PelletMat_PelletPhys" [arrowsize=0.5,style="setlinewidth(0.5)"]                "woo.dem.Cg2_Facet_Capsule_L6Geom" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.Cg2_Any_Any_L6Geom__Base" -> "woo.dem.Cg2_Facet_Capsule_L6Geom" [arrowsize=0.5,style="setlinewidth(0.5)"]              "woo.dem.Cp2_IceMat_IcePhys" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.Cp2_FrictMat_FrictPhys" -> "woo.dem.Cp2_IceMat_IcePhys" [arrowsize=0.5,style="setlinewidth(0.5)"]              "woo.dem.Bo1_Capsule_Aabb" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.BoundFunctor" -> "woo.dem.Bo1_Capsule_Aabb" [arrowsize=0.5,style="setlinewidth(0.5)"]          "woo.dem.Bo1_Rod_Aabb" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.BoundFunctor" -> "woo.dem.Bo1_Rod_Aabb" [arrowsize=0.5,style="setlinewidth(0.5)"]              "woo.dem.Law2_L6Geom_HertzPhys_DMT" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.LawFunctor" -> "woo.dem.Law2_L6Geom_HertzPhys_DMT" [arrowsize=0.5,style="setlinewidth(0.5)"]           "woo.dem.Cg2_Any_Any_L6Geom__Base" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.CGeomFunctor" -> "woo.dem.Cg2_Any_Any_L6Geom__Base" [arrowsize=0.5,style="setlinewidth(0.5)"]          "woo.dem.Cg2_Facet_Facet_L6Geom" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.Cg2_Any_Any_L6Geom__Base" -> "woo.dem.Cg2_Facet_Facet_L6Geom" [arrowsize=0.5,style="setlinewidth(0.5)"]                "woo.gl.Gl1_Aabb" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.Functor"];
        "woo.gl.GlBoundFunctor" -> "woo.gl.Gl1_Aabb" [arrowsize=0.5,style="setlinewidth(0.5)"]          "woo.dem.Cg2_Wall_Sphere_G3Geom" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.CGeomFunctor" -> "woo.dem.Cg2_Wall_Sphere_G3Geom" [arrowsize=0.5,style="setlinewidth(0.5)"]            "woo.dem.Cp2_ConcreteMat_ConcretePhys" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.CPhysFunctor" -> "woo.dem.Cp2_ConcreteMat_ConcretePhys" [arrowsize=0.5,style="setlinewidth(0.5)"]              "woo.dem.BoundFunctor" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "Functor" -> "woo.dem.BoundFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"]           "woo.dem.IntraFunctor" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "Functor" -> "woo.dem.IntraFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"]           "woo.gl.Gl1_DemField" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.Functor"];
        "woo.gl.GlFieldFunctor" -> "woo.gl.Gl1_DemField" [arrowsize=0.5,style="setlinewidth(0.5)"]              "woo.dem.Grid1_InfCylinder" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.GridBoundFunctor" -> "woo.dem.Grid1_InfCylinder" [arrowsize=0.5,style="setlinewidth(0.5)"]             "woo.dem.Law2_L6Geom_FrictPhys_IdealElPl" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.LawFunctor" -> "woo.dem.Law2_L6Geom_FrictPhys_IdealElPl" [arrowsize=0.5,style="setlinewidth(0.5)"]             "woo.dem.Bo1_Ellipsoid_Aabb" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.Bo1_Sphere_Aabb" -> "woo.dem.Bo1_Ellipsoid_Aabb" [arrowsize=0.5,style="setlinewidth(0.5)"]             "woo.gl.Gl1_GridBound" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.Functor"];
        "woo.gl.GlBoundFunctor" -> "woo.gl.Gl1_GridBound" [arrowsize=0.5,style="setlinewidth(0.5)"]             "woo.dem.Cg2_Wall_Sphere_L6Geom" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.Cg2_Any_Any_L6Geom__Base" -> "woo.dem.Cg2_Wall_Sphere_L6Geom" [arrowsize=0.5,style="setlinewidth(0.5)"]                "woo.fem.In2_Membrane_ElastMat" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.fem.html#woo.fem.Functor"];
        "woo.dem.In2_Facet" -> "woo.fem.In2_Membrane_ElastMat" [arrowsize=0.5,style="setlinewidth(0.5)"]                "woo.dem.Cg2_Rod_Sphere_L6Geom" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.Cg2_Any_Any_L6Geom__Base" -> "woo.dem.Cg2_Rod_Sphere_L6Geom" [arrowsize=0.5,style="setlinewidth(0.5)"]         "woo.gl.Gl1_InfCylinder" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.Functor"];
        "woo.gl.GlShapeFunctor" -> "woo.gl.Gl1_InfCylinder" [arrowsize=0.5,style="setlinewidth(0.5)"]           "woo.gl.GlCPhysFunctor" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.Functor"];
        "Functor" -> "woo.gl.GlCPhysFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"]          "woo.gl.GlShapeFunctor" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.Functor"];
        "Functor" -> "woo.gl.GlShapeFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"]          "woo.gl.Gl1_Capsule" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.Functor"];
        "woo.gl.Gl1_Sphere" -> "woo.gl.Gl1_Capsule" [arrowsize=0.5,style="setlinewidth(0.5)"]           "woo.gl.Gl1_Ellipsoid" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.Functor"];
        "woo.gl.Gl1_Sphere" -> "woo.gl.Gl1_Ellipsoid" [arrowsize=0.5,style="setlinewidth(0.5)"]         "woo.dem.Law2_L6Geom_IcePhys" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.LawFunctor" -> "woo.dem.Law2_L6Geom_IcePhys" [arrowsize=0.5,style="setlinewidth(0.5)"]         "woo.dem.CGeomFunctor" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "Functor" -> "woo.dem.CGeomFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"]           "woo.gl.Gl1_ConcretePhys" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.Functor"];
        "woo.gl.Gl1_CPhys" -> "woo.gl.Gl1_ConcretePhys" [arrowsize=0.5,style="setlinewidth(0.5)"]               "woo.dem.Cg2_Sphere_Sphere_G3Geom" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.CGeomFunctor" -> "woo.dem.Cg2_Sphere_Sphere_G3Geom" [arrowsize=0.5,style="setlinewidth(0.5)"]          "woo.dem.Cg2_Wall_Capsule_L6Geom" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.Cg2_Any_Any_L6Geom__Base" -> "woo.dem.Cg2_Wall_Capsule_L6Geom" [arrowsize=0.5,style="setlinewidth(0.5)"]               "woo.gl.Gl1_Tetra" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.Functor"];
        "woo.gl.GlShapeFunctor" -> "woo.gl.Gl1_Tetra" [arrowsize=0.5,style="setlinewidth(0.5)"]         "woo.gl.Gl1_Tet4" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.Functor"];
        "woo.gl.Gl1_Tetra" -> "woo.gl.Gl1_Tet4" [arrowsize=0.5,style="setlinewidth(0.5)"]               "woo.fem.Bo1_Tetra_Aabb" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.fem.html#woo.fem.Functor"];
        "woo.dem.BoundFunctor" -> "woo.fem.Bo1_Tetra_Aabb" [arrowsize=0.5,style="setlinewidth(0.5)"]            "woo.dem.In2_Facet" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.IntraFunctor" -> "woo.dem.In2_Facet" [arrowsize=0.5,style="setlinewidth(0.5)"]         "woo.dem.Cg2_Wall_Ellipsoid_L6Geom" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.Cg2_Any_Any_L6Geom__Base" -> "woo.dem.Cg2_Wall_Ellipsoid_L6Geom" [arrowsize=0.5,style="setlinewidth(0.5)"]             "woo.dem.Cp2_HertzMat_HertzPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.Cp2_FrictMat_FrictPhys" -> "woo.dem.Cp2_HertzMat_HertzPhys" [arrowsize=0.5,style="setlinewidth(0.5)"]          "woo.dem.Bo1_Wall_Aabb" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.BoundFunctor" -> "woo.dem.Bo1_Wall_Aabb" [arrowsize=0.5,style="setlinewidth(0.5)"]             "woo.fem.In2_Membrane_FrictMat" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.fem.html#woo.fem.Functor"];
        "woo.fem.In2_Membrane_ElastMat" -> "woo.fem.In2_Membrane_FrictMat" [arrowsize=0.5,style="setlinewidth(0.5)"]            "woo.gl.Gl1_Sphere" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.Functor"];
        "woo.gl.GlShapeFunctor" -> "woo.gl.Gl1_Sphere" [arrowsize=0.5,style="setlinewidth(0.5)"]                "woo.dem.GridBoundFunctor" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "Functor" -> "woo.dem.GridBoundFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"]               "woo.gl.Gl1_Node" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.Functor"];
        "woo.gl.GlNodeFunctor" -> "woo.gl.Gl1_Node" [arrowsize=0.5,style="setlinewidth(0.5)"]           "woo.gl.Gl1_CPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.Functor"];
        "woo.gl.GlCPhysFunctor" -> "woo.gl.Gl1_CPhys" [arrowsize=0.5,style="setlinewidth(0.5)"]         "woo.gl.Gl1_Rod" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.Functor"];
        "woo.gl.GlShapeFunctor" -> "woo.gl.Gl1_Rod" [arrowsize=0.5,style="setlinewidth(0.5)"]           "woo.dem.Cg2_Sphere_Ellipsoid_L6Geom" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.Cg2_Ellipsoid_Ellipsoid_L6Geom" -> "woo.dem.Cg2_Sphere_Ellipsoid_L6Geom" [arrowsize=0.5,style="setlinewidth(0.5)"]             "woo.dem.Law2_L6Geom_ConcretePhys" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.LawFunctor" -> "woo.dem.Law2_L6Geom_ConcretePhys" [arrowsize=0.5,style="setlinewidth(0.5)"]            "woo.gl.GlNodeFunctor" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.Functor"];
        "Functor" -> "woo.gl.GlNodeFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"]           "woo.dem.Grid1_Wall" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.GridBoundFunctor" -> "woo.dem.Grid1_Wall" [arrowsize=0.5,style="setlinewidth(0.5)"]            "woo.dem.Cp2_LudingMat_LudingPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.Cp2_FrictMat_FrictPhys" -> "woo.dem.Cp2_LudingMat_LudingPhys" [arrowsize=0.5,style="setlinewidth(0.5)"]                "woo.dem.Cg2_Capsule_Capsule_L6Geom" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.Cg2_Any_Any_L6Geom__Base" -> "woo.dem.Cg2_Capsule_Capsule_L6Geom" [arrowsize=0.5,style="setlinewidth(0.5)"]            "woo.dem.Cg2_Facet_Sphere_L6Geom" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.Cg2_Any_Any_L6Geom__Base" -> "woo.dem.Cg2_Facet_Sphere_L6Geom" [arrowsize=0.5,style="setlinewidth(0.5)"]               "woo.dem.Law2_G3Geom_FrictPhys_IdealElPl" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.LawFunctor" -> "woo.dem.Law2_G3Geom_FrictPhys_IdealElPl" [arrowsize=0.5,style="setlinewidth(0.5)"]             "woo.dem.Cg2_Sphere_Capsule_L6Geom" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.Cg2_Any_Any_L6Geom__Base" -> "woo.dem.Cg2_Sphere_Capsule_L6Geom" [arrowsize=0.5,style="setlinewidth(0.5)"]             "woo.gl.Gl1_Wall" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.Functor"];
        "woo.gl.GlShapeFunctor" -> "woo.gl.Gl1_Wall" [arrowsize=0.5,style="setlinewidth(0.5)"]          "woo.dem.Cp2_FrictMat_FrictPhys_CrossAnisotropic" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.CPhysFunctor" -> "woo.dem.Cp2_FrictMat_FrictPhys_CrossAnisotropic" [arrowsize=0.5,style="setlinewidth(0.5)"]           "woo.dem.Law2_L6Geom_FrictPhys_LinEl6" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.LawFunctor" -> "woo.dem.Law2_L6Geom_FrictPhys_LinEl6" [arrowsize=0.5,style="setlinewidth(0.5)"]                "woo.dem.Bo1_Facet_Aabb" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.BoundFunctor" -> "woo.dem.Bo1_Facet_Aabb" [arrowsize=0.5,style="setlinewidth(0.5)"]            "woo.dem.In2_Sphere_ElastMat" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.IntraFunctor" -> "woo.dem.In2_Sphere_ElastMat" [arrowsize=0.5,style="setlinewidth(0.5)"]               "woo.dem.Grid1_Facet" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.GridBoundFunctor" -> "woo.dem.Grid1_Facet" [arrowsize=0.5,style="setlinewidth(0.5)"]           "woo.dem.LawFunctor" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "Functor" -> "woo.dem.LawFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"]             "woo.dem.Cg2_Ellipsoid_Ellipsoid_L6Geom" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.Cg2_Any_Any_L6Geom__Base" -> "woo.dem.Cg2_Ellipsoid_Ellipsoid_L6Geom" [arrowsize=0.5,style="setlinewidth(0.5)"]                "woo.dem.Cg2_Sphere_Sphere_L6Geom" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.Cg2_Any_Any_L6Geom__Base" -> "woo.dem.Cg2_Sphere_Sphere_L6Geom" [arrowsize=0.5,style="setlinewidth(0.5)"]              "woo.dem.Law2_L6Geom_PelletPhys_Pellet" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.LawFunctor" -> "woo.dem.Law2_L6Geom_PelletPhys_Pellet" [arrowsize=0.5,style="setlinewidth(0.5)"]               "woo.dem.Bo1_InfCylinder_Aabb" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.BoundFunctor" -> "woo.dem.Bo1_InfCylinder_Aabb" [arrowsize=0.5,style="setlinewidth(0.5)"]              "woo.gl.GlBoundFunctor" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.Functor"];
        "Functor" -> "woo.gl.GlBoundFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"]          "woo.fem.In2_Tet4_ElastMat" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.fem.html#woo.fem.Functor"];
        "woo.dem.IntraFunctor" -> "woo.fem.In2_Tet4_ElastMat" [arrowsize=0.5,style="setlinewidth(0.5)"]         "woo.dem.Cg2_Facet_Ellipsoid_L6Geom" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.Cg2_Any_Any_L6Geom__Base" -> "woo.dem.Cg2_Facet_Ellipsoid_L6Geom" [arrowsize=0.5,style="setlinewidth(0.5)"]            "woo.dem.Bo1_Sphere_Aabb" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.BoundFunctor" -> "woo.dem.Bo1_Sphere_Aabb" [arrowsize=0.5,style="setlinewidth(0.5)"]           "woo.dem.Law2_L6Geom_LudingPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Functor"];
        "woo.dem.LawFunctor" -> "woo.dem.Law2_L6Geom_LudingPhys" [arrowsize=0.5,style="setlinewidth(0.5)"]
}
class woo.core.Functor

Function-like object that is called by Dispatcher, if types of arguments match those the Functor declares to accept.

object __init__(tuple args, dict kwds)

[ core/Functor.hpp ]

label(= '')

Textual label for this object; must be valid python identifier, you can refer to it directly fron python (must be a valid python identifier).

[type: string, not shown in the UI]

bases

Ordered list of types (as strings) this functor accepts.

timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and Master.timingEnabled is True.

ParallelEngine

ObjectEngineParallelEngine

class woo.core.ParallelEngine

Engine for running other Engine in parallel.

Special constructor

Possibly nested list of engines, where each top-level item (engine or list) will be run in parallel; nested lists will be run sequentially.

object __init__(tuple args, dict kwds)

[ core/Engine.hpp , core/Engine.cpp ]

slaves

[will be overridden]

[type: slaveContainer, not accessible from python]

WooTestClass

ObjectWooTestClass

class woo.core.WooTestClass

This class serves to test various functionalities; it also includes all possible units, which thus get registered in woo

object __init__(tuple args, dict kwds)

[ core/Test.hpp , core/Test.cpp ]

angle(= 0.0)

Variable with angle unit.

[type: Real, unit: rad]

time(= 0.0)

Variable with time unit.

[type: Real, unit: s]

len(= 0.0)

Variable with len unit.

[type: Real, unit: m]

length_with_inches(= 0.0)

Variable with length, but also showing inches in the UI

[type: Real, unit: m]

area(= 0.0)

Variable with area unit.

[type: Real, unit: m²]

vol(= 0.0)

Variable with vol unit.

[type: Real, unit: m³]

vel(= 0.0)

Variable with vel unit.

[type: Real, unit: m/s]

accel(= 0.0)

Variable with accel unit.

[type: Real, unit: m/s²]

mass(= 0.0)

Variable with mass unit.

[type: Real, unit: kg]

angVel(= 0.0)

Variable with angVel unit.

[type: Real, unit: rad/s]

angMom(= 0.0)

Variable with angMom unit.

[type: Real, unit: N·m·s]

inertia(= 0.0)

Variable with inertia unit.

[type: Real, unit: kg·m²]

force(= 0.0)

Variable with force unit.

[type: Real, unit: N]

torque(= 0.0)

Variable with torque unit.

[type: Real, unit: N·m]

pressure(= 0.0)

Variable with pressure unit.

[type: Real, unit: Pa]

stiffness(= 0.0)

Variable with stiffness unit.

[type: Real, unit: Pa]

massRate(= 0.0)

Variable with massRate unit.

[type: Real, unit: kg/s]

density(= 0.0)

Variable with density unit.

[type: Real, unit: kg/m³]

fraction(= 0.0)

Variable with fraction unit.

[type: Real, unit: -]

surfEnergy(= 0.0)

Variable with surfEnergy unit.

[type: Real, unit: J/m²]

aaccu(= [])

Test openmp array accumulator

[type: OpenMPArrayAccumulator<Real>, not shown in the UI]

noSaveAttr(= 0)

Attribute which is not saved

[type: int, not saved]

hiddenAttr(= 0)

Hidden data member (not accessible from python)

[type: int, not accessible from python]

meaning42(= 42)

Read-only data member

[type: int, read-only in python]

foo_incBaz(= 0)

Change this attribute to have baz incremented

[type: int]

bar_zeroBaz(= 0)

Change this attribute to have baz incremented

[type: int]

baz(= 0)

Value which is changed when assigning to foo_incBaz / bar_zeroBaz.

[type: int]

postLoadStage(= -1)

Store the last stage from postLoad (to check it is called the right way)

[type: int, read-only in python]

matX(= MatrixX())

MatriXr object, for testing serialization of arrays.

[type: MatrixX]

arr3d

boost::multi_array<Real,3> object for testing serialization of multi_array.

[type: boost_multi_array_real_3, not accessible from python]

namedEnum(= -1)

Named enumeration.

[type: int, named enum, possible values are: ‘minus one’ (‘_1’, ‘neg1’; -1), ‘zero’ (‘nothing’, ‘NULL’; 0), ‘one’ (‘single’; 1), ‘two’ (‘double’, ‘2’; 2)]

bits(= 0)

Test writable bits of writable flags var.

[type: int, bit accessors: bit0, bit1, bit2, bit3, bit4]

bitsRw(= 0)

Test writable bits of read-only flags var.

[type: int, read-only in python, bit accessors: bit0rw, bit1rw, bit2rw, bit3rw, bit4rw]

bitsRo(= 3)

Test read-only bits of read-only flags var.

[type: int, read-only in python, bit accessors: bit0ro, bit1ro, bit2ro, bit3ro, bit4ro]

strVar(= '')

Test string type var.

[type: string]

deprecatedAttr(= -1)

deprecated, and this exaplins why…

[type: int, not shown in the UI, not dumped, DEPRECATED, raises ValueError when accessed]

any(= None)

This can be really anything, and is used to test anything.

[type: shared_ptr<Object>]

aaccuRaw

Access OpenMPArrayAccumulator data directly. Writing resizes and sets the 0th thread value, resetting all other ones.

aaccuWriteThreads((WooTestClass)arg1, (int)index, (object)cycleData) → None :

Assign a single line in the array accumulator, assigning number from cycleData in parallel in each thread.

arr3d_set((WooTestClass)arg1, (Vector3i)shape, (object)data) → None :

Set arr3d to have shape and fill it with data (must have the corresponding number of elements).

MatchMaker

ObjectMatchMaker

class woo.core.MatchMaker

Class matching pair of ids to return pre-defined (for a pair of ids defined in matches) or derived value (computed using algo) of a scalar parameter. It can be called (id1, id2, val1=NaN, val2=NaN) in both python and c++.

Note

There is a converter from python number defined for this class, which creates a new MatchMaker returning the value of that number; instead of giving the object instance therefore, you can only pass the number value and it will be converted automatically.

object __init__(tuple args, dict kwds)

[ core/MatchMaker.hpp , core/MatchMaker.cpp ]

matches(= [])

Array of (id1,id2,value) items; queries matching id1 + id2 or id2 + id1 will return value

[type: std::vector<Vector3r>]

algo(= 'avg')

Alogorithm used to compute value when no match for ids is found. Possible values are

  • ‘avg’ (arithmetic average)
  • ‘min’ (minimum value)
  • ‘max’ (maximum value)
  • ‘harmAvg’ (harmonic average)

The following algo algorithms do not require meaningful input values in order to work:

  • ‘val’ (return value specified by val)
  • ‘zero’ (always return 0.)

[type: std::string]

val(= nan)

Constant value returned if there is no match and algo is val

[type: Real]

__call__((MatchMaker)arg1, (int)id1, (int)id2[, (float)val1=nan[, (float)val2=nan]]) → float :

Ask the instance for scalar value for given pair id1,*id2* (the order is irrelevant). Optionally, val1, val2 can be given so that if there is no match, return value can be computed using given algo. If there is no match and val1, val2 are not given, an exception is raised.

computeFallback((MatchMaker)arg1, (float)val1, (float)val2) → float :

Compute algo value for val1 and val2, using algorithm specified by algo.

Scene

TODO

Scene

ObjectScene

class woo.core.Scene

Object comprising the whole simulation.

object __init__(tuple args, dict kwds)

[ core/Scene.hpp , core/Scene.cpp ]

dt(= nan)

Current timestep for integration.

[type: Real, unit: s]

nextDt(= nan)

Timestep for the next step (if not NaN, dt is automatically replaced by this value at the end of the step).

[type: Real, unit: s]

dtSafety(= 0.9)

Safety factor for automatically-computed timestep.

[type: Real]

throttle(= 0.0)

Insert this delay before each step when running in loop; useful for slowing down simulations for visual inspection if they happen too fast.

Note

Negative values will not make the simulation run faster.

[type: Real]

step(= 0)

Current step number

[type: long, read-only in python]

subStepping(= False)

Whether we currently advance by one engine in every step (rather than by single run through all engines).

[type: bool]

subStep(= -1)

Number of sub-step; not to be changed directly. -1 means to run loop prologue (cell integration), 0…n-1 runs respective engines (n is number of engines), n runs epilogue (increment step number and time.

[type: int, read-only in python]

time(= 0.0)

Simulation time (virtual time) [s]

[type: Real, unit: s, read-only in python]

stopAtStep(= 0)

Iteration after which to stop the simulation.

[type: long]

stopAtTime(= nan)

time around which to stop the simulation.

Note

This value is not exact, has the granularity of \(\Dt\): simulation will stopped at the moment when stopAtTimetime < dt + stopAtTime. This condition may have some corner cases due to floating-point comparisons involved.

[type: Real]

stopAtHook(= '')

Python command given as string executed when stopAtTime or stopAtStep cause the simulation to be stopped.

Note

This hook will not be run when a running simulation is paused manually, or through S.pause in the script. To trigger this hook from within a PyRunner, do something like S.stopAtStep=S.step which will activate it when the current step finishes.

[type: string]

isPeriodic(= False)

Whether periodic boundary conditions are active.

[type: bool, not accessible from python]

trackEnergy(= False)

Whether energies are being tracked.

[type: bool]

deterministic(= False)

Hint for engines to order (possibly at the expense of performance) arithmetic operations to be independent of thread scheduling; this results in simulation with the same initial conditions being always the same. This is disabled by default, because of performance issues. Note that deterministic result is not “more correct” (neither physically, nor theoretically) than other result with different operation ordering; it is only self-consistent and feels better.

[type: bool]

selfTestEvery(= 0)

Periodicity with which consistency self-tests will be run; 0 to run only in the very first step, negative to disable.

[type: int]

clDev(= Vector2i(-1, -1))

OpenCL device to be used; if (-1,-1) (default), no OpenCL device will be initialized until requested. Saved simulations should thus always use the same device when re-loaded.

[type: Vector2i]

_clDev(= Vector2i(-1, -1))

OpenCL device which is really initialized (to detect whether clDev was changed manually to avoid spurious re-initializations from postLoad

[type: Vector2i, not saved, read-only in python]

boxHint(= AlignedBox3((1.7976931348623157e308, 1.7976931348623157e308, 1.7976931348623157e308), (-1.7976931348623157e308, -1.7976931348623157e308, -1.7976931348623157e308)))

Hint for displaying the scene; overrides node-based detection. Set an element to empty box to disable.

[type: AlignedBox3]

runInternalConsistencyChecks(= True)

Run internal consistency check, right before the very first simulation step.

[type: bool, not accessible from python]

tags

Arbitrary key=value associations (tags like mp3 tags: author, date, version, description etc.)

[type: StrStrMap, not accessible from python]

labels(= <LabelMapper @ 0x1ac1400>)

Atrbitrary key=object, key=list of objects, key=py::object associations which survive saving/loading. Labeled objects are automatically added to this container. This object is more conveniently accessed through the lab attribute, which exposes the mapping as attributes of that object rather than as a dictionary.

[type: shared_ptr<LabelMapper>, not shown in the UI, read-only in python]

uiBuild(= '')

Command to run when a new main-panel UI should be built for this scene (called when the Controller is opened with this simulation, or the simulation is new to the controller).

[type: string]

engines(= [])

Engines sequence in the simulation (direct access to the c++ sequence is shadowed by python property which access it indirectly).

[type: vector<shared_ptr<Engine>>]

_nextEngines(= [])

Engines to be used from the next step on; is returned transparently by S.engines if in the middle of the loop (controlled by subStep>=0).

[type: vector<shared_ptr<Engine>>, not accessible from python]

energy(= <EnergyTracker @ 0x1affb20>)

Energy values, if energy tracking is enabled.

[type: shared_ptr<EnergyTracker>, not shown in the UI, read-only in python]

fields(= [])

Defined simulation fields.

[type: vector<shared_ptr<Field>>, not shown in the UI]

cell(= <Cell @ 0x1b0a8d0>)

Information on periodicity; only should be used if Scene::isPeriodic.

[type: shared_ptr<Cell>, not accessible from python]

lastSave(= '')

Name under which the simulation was saved for the last time; used for reloading the simulation. Updated automatically, don’t change.

[type: std::string, read-only in python]

preSaveDuration(= 0)

Wall clock duration this Scene was alive before being saved last time; this count is incremented every time the scene is saved. When Scene is loaded, it is used to construct clock0 as current_local_time - lastSecDuration.

[type: long, not shown in the UI, read-only in python]

dispParams(= [])

Saved display states.

[type: vector<shared_ptr<DisplayParameters>>, not shown in the UI]

gl(= None)

Settings related to rendering; default instance is created on-the-fly when requested from Python.

[type: shared_ptr<GlSetup>, not accessible from python]

glDirty(= True)

Flag to re-initalize functors, colorscales and restore QGLViewer before rendering.

[type: bool, read-only in python]

ranges(= [])

User-defined ScalarRange objects, to be rendered as colormaps.

[type: vector<shared_ptr<ScalarRange>>]

autoRanges(= [])

ScalarRange colormaps automatically obtained from renderes and engines; displayed only when actually used.

[type: vector<shared_ptr<ScalarRange>>, read-only in python]

any(= [])

Storage for arbitrary Objects; meant for storing and loading static objects like Gl1_* functors to restore their parameters when scene is loaded.

[type: vector<shared_ptr<Object>>]

pre(= None)

Preprocessor used for generating this simulation; to be only used in user scripts to query preprocessing parameters, not in c++ code.

[type: py::object, not shown in the UI]

plot(= <Plot @ 0x1ac1b50>)

Data and settings for plots.

[type: shared_ptr<Plot>, not shown in the UI]

ctrl(= None)

High-level control interface for this particular scene.

[type: shared_ptr<SceneCtrl>]

duration

Number of (wall clock) seconds this instance is alive (including time before being loaded from file

ensureCl((Scene)arg1) → None :

[for debugging] Initialize the OpenCL subsystem (this is done by engines using OpenCL, but trying to do so in advance might catch errors earlier)

expandTags((Scene)arg1, (str)arg2) → str :

Expand tags written as {tagName}, returns the expanded string.

getRange((Scene)arg1, (str)arg2) → ScalarRange :

Retrieve a ScalarRange object by its label

one((Scene)arg1) → None
paused((Scene)arg1[, (bool)allowBg=False]) → PausedContextManager :

Return paused context manager; when allowBg is True, the context manager is a no-op in the engine background thread and works normally when called from other threads).

periodic

Set whether the scene is periodic or not

run((Scene)arg1[, (int)steps=-1[, (bool)wait=False[, (float)time=nan]]]) → None
saveTmp((Scene)arg1[, (str)slot=''[, (bool)quiet=False]]) → None :

Save into a temporary slot inside Master (loadable with O.loadTmp)

selfTest((Scene)arg1) → None :

Run self-tests (they are usually run automatically with, see selfTestEvery).

stop((Scene)arg1) → None
wait((Scene)arg1) → None

SceneAttachedObject

ObjectSceneAttachedObject

digraph SceneAttachedObject {
        rankdir=LR;
        margin=.2;
        "SceneAttachedObject" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="woo.core.html#woo.core.SceneAttachedObject"];
        "Plot" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="woo.core.html#woo.core.SceneAttachedObject"];
        "SceneAttachedObject" -> "Plot" [arrowsize=0.5,style="setlinewidth(0.5)"]               "SceneCtrl" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="woo.core.html#woo.core.SceneAttachedObject"];
        "SceneAttachedObject" -> "SceneCtrl" [arrowsize=0.5,style="setlinewidth(0.5)"]
}
class woo.core.SceneAttachedObject

Parent class for object uniquely attached to one scene, for convenience of derived classes.

object __init__(tuple args, dict kwds)

[ core/Plot.hpp , core/Plot.cpp ]

scene

Back-reference to the scene object, needed for python; set automatically in Scene::postLoad when the object is assigned.

[type: weak_ptr<Scene>, not shown in the UI, not dumped, read-only in python]

SceneCtrl

ObjectSceneAttachedObjectSceneCtrl

digraph SceneCtrl {
        rankdir=LR;
        margin=.2;
        "SceneCtrl" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="woo.core.html#woo.core.SceneCtrl"];

}
class woo.core.SceneCtrl

Parent class for exposing higl-level controls for particular scene setups. Intended to be deruved from in python.

object __init__(tuple args, dict kwds)

[ core/Plot.hpp ]

Plot

ObjectSceneAttachedObjectPlot

class woo.core.Plot

Storage for plots updated during simulation.

object __init__(tuple args, dict kwds)

[ core/Plot.hpp , core/Plot.cpp ]

data(= {})

Global dictionary containing all data values, common for all plots, in the form {‘name’:[value,…],…}. Data should be added using plot.addData function. All [value,…] columns have the same length, they are padded with NaN if unspecified.

[type: py::dict]

imgData(= {})

Dictionary containing lists of strings, which have the meaning of images corresponding to respective woo.plot.data rows. See woo.plot.plots on how to plot images.

[type: py::dict]

plots(= {})

dictionary x-name -> (yspec,…), where yspec is either y-name or (y-name,’line-specification’). If (yspec,...) is None, then the plot has meaning of image, which will be taken from respective field of woo.plot.imgData.

[type: py::dict]

labels(= {})

Dictionary converting names in data to human-readable names (TeX names, for instance); if a variable is not specified, it is left untranslated.

[type: py::dict]

xylabels(= {})

Dictionary of 2-tuples specifying (xlabel,ylabel) for respective plots; if either of them is None, the default auto-generated title is used.

[type: py::dict]

legendLoc(= ('upper left', 'upper right'))

Location of the y1 and y2 legends on the plot, if y2 is active.

[type: py::tuple]

axesWd(= 1.0)

Linewidth (in points) to make x and y axes better visible; not activated if non-positive.

[type: Real]

currLineRefs(= None)

References to axes which are being shown. Internal use only.

[type: py::object, not shown in the UI, not saved]

annotateFmt(= ' {xy[1]:.4g}')

Format for annotations in plots; if empty, no annotation is shown; has no impact on existing plots. xy is 2-tuple of the current point in data space.

[type: string]

Field

ObjectField

digraph Field {
        rankdir=LR;
        margin=.2;
        "Field" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="woo.core.html#woo.core.Field"];
        "woo.dem.DemField" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.Field"];
        "Field" -> "woo.dem.DemField" [arrowsize=0.5,style="setlinewidth(0.5)"]
}
class woo.core.Field

Spatial field described by nodes, their topology and associated values.

object __init__(tuple args, dict kwds)

[ core/Field.hpp , core/Field.cpp ]

nodes(= [])

Nodes referenced from this field.

[type: vector<shared_ptr<Node> >]

critDt((Field)arg1) → float :

Return critical (maximum numerically stable) timestep for this field. By default returns infinity (no critical timestep) but derived fields may override this function.

dispHierarchy((Field)arg1[, (bool)names=True]) → list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

dispIndex

Return class index of this instance.

scene

Get associated scene object, if any (this function is dangerous in some corner cases, as it has to use raw pointer).

Node

ObjectNode

class woo.core.Node

A point in space (defining local coordinate system), referenced by other objects.

object __init__(tuple args, dict kwds)

[ core/Field.hpp , core/Field.cpp ]

pos(= Vector3(0, 0, 0))

Position in space (cartesian coordinates); origin \(O\) of the local coordinate system.

[type: Vector3, unit: m]

ori(= Quaternion((1, 0, 0), 0))

Orientation \(q\) of this node.

[type: Quaternion]

data(= [])

Array of data, ordered in globally consistent manner.

[type: vector<shared_ptr<NodeData> >]

rep(= None)

What should be shown at this node when rendered via OpenGL; this data are also used in e.g. particle tracking, hence enable even in OpenGL-less builds as well.

[type: shared_ptr<NodeVisRep>]

dispHierarchy((Node)arg1[, (bool)names=True]) → list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

dispIndex

Return class index of this instance.

glob2loc((Node)arg1, (Vector3)p) → Vector3 :

Transform point \(p\) from global to node-local coordinates as \(q^*(p-O)q\), in code q.conjugate()*(p-O).

glob2loc_rank2((Node)arg1, (Matrix3)g) → Matrix3 :

Rotate rank-2 tensor (such as stress) from local to global coordinates, computed as \(\mat{R}^T\mat{g}\mat{R}\).

loc2glob((Node)arg1, (Vector3)p) → Vector3 :

Transform point \(p_l\) from node-local to global coordinates as \(q\cdot p_l\cdot q^*+O\), in code q*p+O.

loc2glob_rank2((Node)arg1, (Matrix3)l) → Matrix3 :

Rotate rank-2 tensor (such as stress), represented as 3×3 matrix, from local to global coordinates; computed as \(\mat{R}\mat{l}\mat{R}^T\), where \(\mat{R}\) is rotation matrix equivalent to rotation by quaternion ori.

NodeData

ObjectNodeData

digraph NodeData {
        rankdir=LR;
        margin=.2;
        "NodeData" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="woo.core.html#woo.core.NodeData"];
        "woo.gl.GlData" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.gl.html#woo.gl.NodeData"];
        "NodeData" -> "woo.gl.GlData" [arrowsize=0.5,style="setlinewidth(0.5)"]         "woo.mesh.MeshData" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.mesh.html#woo.mesh.NodeData"];
        "NodeData" -> "woo.mesh.MeshData" [arrowsize=0.5,style="setlinewidth(0.5)"]             "woo.dem.ClumpData" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.NodeData"];
        "woo.dem.DemData" -> "woo.dem.ClumpData" [arrowsize=0.5,style="setlinewidth(0.5)"]              "woo.dem.DemData" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.NodeData"];
        "NodeData" -> "woo.dem.DemData" [arrowsize=0.5,style="setlinewidth(0.5)"]               "woo.dem.DemDataTagged" [shape="box",fontsize=8,style="setlinewidth(0.5),filled",fillcolor=grey,height=0.2,URL="woo.dem.html#woo.dem.NodeData"];
        "woo.dem.DemData" -> "woo.dem.DemDataTagged" [arrowsize=0.5,style="setlinewidth(0.5)"]
}
class woo.core.NodeData

Data associated with some node.

object __init__(tuple args, dict kwds)

[ core/Field.hpp , core/Field.cpp ]

LabelMapper

ObjectLabelMapper

class woo.core.LabelMapper

Map labels to woo.Object, lists of woo.Object or Python’s objects, while preserving reference-counting of c++ objects during save/loads. This object is exposed as Scene.labels (with dictionary-like access) and Scene.lab (with attribute access) and presents a simulation-bound persistent namespace for arbitrary objects.

object __init__(tuple args, dict kwds)

[ core/LabelMapper.hpp , core/LabelMapper.cpp ]

pyMap

Map names to python objects

[type: StrPyMap, not accessible from python]

wooMap

Map names to woo objects

[type: StrWooMap, not accessible from python]

wooSeqMap

Map names to sequences of woo objects

[type: StrWooSeqMap, not accessible from python]

modSet

Set of pseudo-modules names (fully qualified)

[type: std::set<string>, not accessible from python]

writables

Set of writable names (without warning)

[type: std::set<string>, not accessible from python]

__contains__((LabelMapper)arg1, (str)arg2) → bool
__delitem__((LabelMapper)arg1, (str)arg2) → None
__dir__((LabelMapper)arg1[, (str)prefix='']) → list
__getitem__((LabelMapper)arg1, (str)arg2) → object
__len__((LabelMapper)arg1) → int
__setitem__((LabelMapper)arg1, (str)arg2, (object)arg3) → None
items((LabelMapper)arg1) → list
keys((LabelMapper)arg1) → list

Cell

ObjectCell

class woo.core.Cell

Parameters of periodic boundary conditions. Only applies if O.isPeriodic==True.

object __init__(tuple args, dict kwds)

[ core/Cell.hpp , core/Cell.cpp ]

trsfUpperTriangular(= False)

Require that Cell.trsf is upper-triangular, to conform with the requirement of voro++ for sheared periodic cells.

[type: bool, read-only in python]

trsf(= Matrix3(1, 0, 0, 0, 1, 0, 0, 0, 1))

[overridden]

[type: Matrix3]

refHSize(= Matrix3(1, 0, 0, 0, 1, 0, 0, 0, 1))

Reference cell configuration, only used with OpenGLRenderer.dispScale. Updated automatically when hSize or trsf is assigned directly; also modified by woo.utils.setRefSe3 (called e.g. by the Reference button in the UI).

[type: Matrix3]

hSize(= Matrix3(1, 0, 0, 0, 1, 0, 0, 0, 1))

[overridden below]

[type: Matrix3]

pprevHsize(= Matrix3(1, 0, 0, 0, 1, 0, 0, 0, 1))

hSize at t-dt/2; used to compute velocity correction in contact with non-zero cellDist. Updated automatically.

[type: Matrix3, read-only in python]

gradV(= Matrix3(0, 0, 0, 0, 0, 0, 0, 0, 0))

[overridden below]

[type: Matrix3]

W(= Matrix3(0, 0, 0, 0, 0, 0, 0, 0, 0))

Spin tensor, computed from gradV when it is updated.

[type: Matrix3, read-only in python]

spinVec(= Vector3(0, 0, 0))

Angular velocity vector (1/2 * dual of spin tensor W), computed from W when it is updated.

[type: Vector3, read-only in python]

nextGradV(= Matrix3(0, 0, 0, 0, 0, 0, 0, 0, 0))

Value of gradV to be applied in the next step (that is, at t+dt/2). If any engine changes gradV, it should do it via this variable. The value propagates to gradV at the very end of each timestep, so if it is user-adjusted between steps, it will not become effective until after 1 steps. It should not be changed between Leapfrog and end of the step!

[type: Matrix3]

homoDeform(= 4)

Deform (gradV) the cell homothetically, by adjusting positions or velocities of particles. The values have the following meaning: 0: no homothetic deformation, 1: set absolute particle positions directly (when gradV is non-zero), but without changing their velocity, 2: adjust particle velocity (only when gradV changed) with Δv_i=Δ ∇v x_i. 3: as 2, but include a 2nd order term in addition – the derivative of 1 (convective term in the velocity update).

[type: int, named enum, possible values are: ‘None’ (‘none’, ‘-‘; 0), ‘position only’ (‘pos’; 1), ‘pos & vel, 1st order’ (‘vel’; 2), ‘pos & vel, 2nd order’ (‘vel2’; 3), ‘leapfrog-consistent’ (‘gradV2’, ‘all’; 4)]

canonicalizePt((Cell)arg1, (Vector3)arg2) → Vector3 :

Transform any point such that it is inside the base cell

hSize0

Value of untransformed hSize, with respect to current trsf (computed as trsf ⁻¹ × hSize).

setBox((Cell)arg1, (Vector3)arg2) → None :

Set Cell shape to be rectangular, with dimensions along axes specified by given argument. Shorthand for assigning diagonal matrix with respective entries to hSize.

setBox( (Cell)arg1, (float)arg2, (float)arg3, (float)arg4) -> None :
Set Cell shape to be rectangular, with dimensions along $x$, $y$, $z$ specified by arguments. Shorthand for assigning diagonal matrix with the respective entries to hSize.
setCurrGradV((Cell)arg1, (Matrix3)arg2) → None
shearPt((Cell)arg1, (Vector3)arg2) → Vector3 :

Apply shear (cell skew+rot) on the point

shearTrsf

Current skew+rot transformation (no resize)

size

Current size of the cell, i.e. lengths of the 3 cell lateral vectors contained in Cell.hSize columns. Updated automatically at every step.

size0

norms of columns of hSize0 (edge lengths of the untransformed configuration)

unshearPt((Cell)arg1, (Vector3)arg2) → Vector3 :

Apply inverse shear on the point (removes skew+rot of the cell)

unshearTrsf

Inverse of the current skew+rot transformation (no resize)

volume

Current volume of the cell.

wrapPt((Cell)arg1, (Vector3)arg2) → Vector3 :

Wrap point inside the reference cell, assuming the cell has no skew+rot.

EnergyTracker

ObjectEnergyTracker

class woo.core.EnergyTracker

Storage for tracing energies. Only to be used if O.traceEnergy is True.

object __init__(tuple args, dict kwds)

[ core/EnergyTracker.hpp , core/EnergyTracker.cpp ]

energies(= [])

Energy values, in linear array

[type: OpenMPArrayAccumulator<Real>]

names

Associate textual name to an index in the energies array [overridden bellow].

[type: mapStringInt, not accessible from python]

grid(= None)

Grid for tracking spatial distribution of energy increments; write-protected, use gridOn, gridOff.

[type: shared_ptr<EnergyTrackerGrid>, read-only in python]

flags(= [])

Flags for respective energies; most importantly, whether the value should be reset at every step.

[type: vector<int>, read-only in python]

__contains__((EnergyTracker)arg1, (str)arg2) → bool :

Query whether given key exists; used by 'key' in EnergyTracker

__getitem__((EnergyTracker)arg1, (str)arg2) → float :

Get energy value for given name.

__iter__((EnergyTracker)arg1) → EnergyTracker_iterator :

Return iterator over keys, to support python iteration protocol.

__len__((EnergyTracker)arg1) → int :

Number of items in the container.

__setitem__((EnergyTracker)arg1, (str)arg2, (float)arg3) → None :

Set energy value for given name (will create a non-resettable item, if it does not exist yet).

add((EnergyTracker)arg1, (float)dE, (str)name[, (bool)reset=False]) → None :

Accumulate energy, used from python (likely inefficient)

clear((EnergyTracker)arg1) → None :

Clear all stored values.

gridOff((EnergyTracker)arg1) → None :

Disable grid so that energy location is not recorded anymore. The grid object is discarded, including any data it might have contained.

gridOn((EnergyTracker)arg1, (AlignedBox3)box, (float)cellSize[, (int)maxIndex=-1]) → None :

Initialize grid object, which will record spacial location of energy events.

gridToVTK((EnergyTracker)arg1, (str)out) → str :

Write grid data to VTK file out (.vti will be appended); returns output file name.

items((EnergyTracker)arg1) → list :

Return contents as list of (name,value) tuples.

keys((EnergyTracker)arg1) → list :

Return defined energies.

relErr((EnergyTracker)arg1) → float :

Total energy divided by sum of absolute values.

total((EnergyTracker)arg1) → float :

Return sum of all energies.

class woo.core.Object((object)arg1) → None :

Base class for all Woo classes, providing uniform interface for constructors with attributes, attribute access, pickling, serialization via boost::serialization, equality comparison, attribute traits.

C++ signature :
void __init__(_object*)

[ lib/object/Object.hpp , lib/object/Object.cpp ]

__eq__((Object)arg1, (Object)arg2) → object :
C++ signature :
_object* __eq__(woo::Object {lvalue},woo::Object)
__getstate__((Object)arg1) → dict :
C++ signature :
boost::python::dict __getstate__(woo::Object)
__getstate_manages_dict__

just define the attr, return some bogus data

__ne__((Object)arg1, (Object)arg2) → object :
C++ signature :
_object* __ne__(woo::Object {lvalue},woo::Object)
__repr__((Object)arg1) → str :
C++ signature :
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > __repr__(woo::Object {lvalue})
__safe_for_unpickling__

just define the attr, return some bogus data

__setstate__((Object)arg1, (dict)arg2) → None :
C++ signature :
void __setstate__(woo::Object {lvalue},boost::python::dict)
__str__((Object)arg1) → str :
C++ signature :
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > __str__(woo::Object {lvalue})
dict((Object)arg1[, (bool)all=True]) → dict :

Return dictionary of attributes; all will cause also attributed with the noSave or noDump flags to be returned.

C++ signature :
boost::python::dict dict(woo::Object {lvalue} [,bool=True])
save((Object)arg1, (str)filename) → None :
C++ signature :
void save(woo::Object {lvalue},std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)
updateAttrs((Object)arg1, (dict)arg2) → None :

Update object attributes from given dictionary

C++ signature :
void updateAttrs(woo::Object {lvalue},boost::python::dict)

Tip

Got questions? Ask at ask.woodem.org. Report issues to github.