```{raw} latex \clearpage ``` (sec-item-nodegenericode1)= # NodeGenericODE1 A node containing a number of {ref}`ODE1 ` variables. Use this node e.g. for linear state space systems. NOTE: referenceCoordinates and initialCoordinates must be initialized, because no default values exist. ## Interface - Provides: `GenericODE1` ## Parameters The parameters of the item; in a dictionary, its type is 'GenericODE1': | name | type | size | default | description | |---|---|---|---|---| | **name** | String | | '' | node's unique name | | **referenceCoordinates** | Vector | | [] | (symbol: $\yv\cRef = [y_0,\,\ldots,\,y_{nc}]\tp\cRef$) generic reference coordinates of node; must be consistent with numberOfODE1Coordinates | | **initialCoordinates** | Vector | | [] | (symbol: $\yv\cIni = [y_0,\,\ldots,\,y_{nc}]\tp\cIni$) initial displacement coordinates; must be consistent with numberOfODE1Coordinates | | **numberOfODE1Coordinates** | PInt | | 0 | (symbol: $n_c$) number of generic {ref}`ODE1 ` coordinates; **must be given**: the default is only a placeholder | | **visualization** | VNodeGenericODE1 | | | parameters for visualization of item | ## Visualization parameters `VNodeGenericODE1` has no parameters. ## Drawing The item draws nothing. ## Output variables Available as `OutputVariableType` in sensors, `Get...Output()` and other functions: ```{tabularcolumns} \Y{0.25}\Y{0.25}\Y{0.5} ``` | output variable | symbol | description | |---|---|---| | CoordinatesTotal | | displacement plus reference coordinates of node | | Coordinates | $\yv\cConfig = [y_0,\,\ldots,\,y_{nc}]\tp\cConfig$ | {ref}`ODE1 ` coordinates vector of node | | Coordinates_t | $\dot \yv\cConfig = [\dot y_0,\,\ldots,\,\dot y_{nc}]\tp\cConfig$ | {ref}`ODE1 ` velocity coordinates vector of node | (description-nodegenericode1)= ## Detailed description ### Coordinates A number of {ref}`ODE1 ` coordinates, `numberOfODE1Coordinates`, whose meaning is **defined by the object that uses the node**, such as the states of `ObjectGenericODE1`. The current value of a coordinate is its reference value plus its current coordinate. ### Action on the equations of motion Each coordinate leads to one first order equation, which the object provides; a load acts on a coordinate through `MarkerNodeODE1Coordinate`. (miniexample-nodegenericode1)= ## Mini example ```python #a first-order system q_t = A q, here an exponential decay node = mbs.AddNode(NodeGenericODE1(numberOfODE1Coordinates=1, referenceCoordinates=[0], initialCoordinates=[1])) mbs.AddObject(ObjectGenericODE1(nodeNumbers=[node], systemMatrix=[[-1]])) mbs.Assemble() simulationSettings = exu.SimulationSettings() mbs.SolveDynamic(simulationSettings, solverType=exu.DynamicSolverType.RK44) #q(1) = exp(-1) exu.sys['testResult'] = mbs.GetNodeOutput(node, exu.OutputVariableType.Coordinates) #0.3679 ``` Relevant Examples (Ex) and TestModels (TM) with weblink to github: [`HydraulicActuator2Arms.py`](https://github.com/jgerstmayr/EXUDYN/blob/master/python/Examples/HydraulicActuator2Arms.py) (Ex), [`HydraulicActuatorStaticInitialization.py`](https://github.com/jgerstmayr/EXUDYN/blob/master/python/Examples/HydraulicActuatorStaticInitialization.py) (Ex), [`HydraulicsUserFunction.py`](https://github.com/jgerstmayr/EXUDYN/blob/master/python/Examples/HydraulicsUserFunction.py) (Ex), [`lugreFrictionODE1.py`](https://github.com/jgerstmayr/EXUDYN/blob/master/python/Examples/lugreFrictionODE1.py) (Ex), [`lugreFrictionTest.py`](https://github.com/jgerstmayr/EXUDYN/blob/master/python/Examples/lugreFrictionTest.py) (Ex), [`genericODE1duplicateNodeTest.py`](https://github.com/jgerstmayr/EXUDYN/blob/master/python/TestModels/genericODE1duplicateNodeTest.py) (TM), [`hydraulicActuatorSimpleTest.py`](https://github.com/jgerstmayr/EXUDYN/blob/master/python/TestModels/hydraulicActuatorSimpleTest.py) (TM), [`solverExplicitODE1ODE2test.py`](https://github.com/jgerstmayr/EXUDYN/blob/master/python/TestModels/solverExplicitODE1ODE2test.py) (TM), [`taskmanagerTest.py`](https://github.com/jgerstmayr/EXUDYN/blob/master/python/TestModels/taskmanagerTest.py) (TM)