RigidMotion: compute/define rigid motions
Preamble
RigidMotion enables to define or compute rigid motions for arrays (as defined in Converter documentation) or for CGSN/Python trees (pyTrees).
This module is part of Cassiopee, a free open-source pre- and post-processor for CFD simulations.
For use with the array interface, you have to import RigidMotion module:
import RigidMotion
For use with the pyTree interface:
import RigidMotion.PyTree as RigidMotion
List of functions
– Prescribed motions
RigidMotion.setPrescribedMotion1 |
|
RigidMotion.setPrescribedMotion2 |
|
RigidMotion.setPrescribedMotion3 |
– General functions
RigidMotion.evalPosition (array, time, F) |
Contents
-
RigidMotion.
setPrescribedMotion1
(a, motionName, tx="0", ty="0", tz="0", cx="0", cy="0", cz="0", ex="0", ey="0", ez="0", angle="0") Set a precribed motion defined by a translation of the origin (tx,ty,tz), the center of a rotation (cx,cy,cz), the second point of the rotation axis (ex,ey,ez) and the rotation angle in degrees. They can depend on time {t}.
Parameters: - a ([array, list of arrays] or [pyTree, base, zone, list of zones]) – Input data
- tx (string) – translation in x motion string
- ty (string) – translation in y motion string
- tz (string) – translation in z motion string
- cx (string) – rotation center x coordinate motion string
- cy (string) – rotation center y coordinate motion string
- cz (string) – rotation center z coordinate motion string
- ex (string) – rotation axis x coordinate motion string
- ey (string) – rotation axis y coordinate motion string
- ez (string) – rotation axis z coordinate motion string
- angle (string) – rotation angle motion string
Example of use:
# - setPrescribedMotion1 (pyTree) - # Motion defined by time string import RigidMotion.PyTree as R import Converter.PyTree as C import Geom.PyTree as D a = D.sphere((1.2,0.,0.), 0.2, 30) a = R.setPrescribedMotion1(a, 'trans', tx="{t}") C.convertPyTree2File(a, 'out.cgns')
-
RigidMotion.
setPrescribedMotion2
(a, motionName, transl_speed, psi0, pis0_b, alp_pnt, alp_vct, alp0, rot_pnt, rot_vct, rot_omg, del_pnt, del_vct, del0, delc, dels, bet_pnt, bet_vct, bet0, betc, bets, tet_pnt, tet_vct, tet0, tetc, tets, span_vct, pre_lag_pnt, pre_lag_vct, pre_lag_ang, pre_con_pnt, pre_con_vct, pre_con_ang) Set a precribed motion defined by a elsA rotor motion. Arguments are identical to elsA rotor motion.
Parameters: - a ([array, list of arrays] or [pyTree, base, zone, list of zones]) – Input data
- tx (string) – translation in x motion string
- ty (string) – translation in y motion string
- tz (string) – translation in z motion string
- cx (string) – rotation center x coordinate motion string
- cy (string) – rotation center y coordinate motion string
- cz (string) – rotation center z coordinate motion string
- ex (string) – rotation axis x coordinate motion string
- ey (string) – rotation axis y coordinate motion string
- ez (string) – rotation axis z coordinate motion string
- angle (string) – rotation angle motion string
Example of use:
# - setPrescribedMotion2 (pyTree) - # Motion defined by a Cassiopee Solver rotor motion import RigidMotion.PyTree as R import Converter.PyTree as C import Geom.PyTree as D a = D.sphere((1.2,0.,0.), 0.2, 30) a = R.setPrescribedMotion2(a, 'rotor', transl_speed=(0.1,0,0), rot_omg=1.) C.convertPyTree2File(a, 'out.cgns')
-
RigidMotion.
setPrescribedMotion3
(a, motionName, transl_speed, axis_pnt, axis_vct, omega) Set a precribed motion defined by a constant speed rotation and translation. omega is in rad/time unit.
Parameters: - a ([array, list of arrays] or [pyTree, base, zone, list of zones]) – Input data
- tx (string) – translation in x motion string
- ty (string) – translation in y motion string
- tz (string) – translation in z motion string
- cx (string) – rotation center x coordinate motion string
- cy (string) – rotation center y coordinate motion string
- cz (string) – rotation center z coordinate motion string
- ex (string) – rotation axis x coordinate motion string
- ey (string) – rotation axis y coordinate motion string
- ez (string) – rotation axis z coordinate motion string
- angle (string) – rotation angle motion string
Example of use:
# - setPrescribedMotion3 (pyTree) - # Motion defined by a constant speed and rotation speed import RigidMotion.PyTree as R import Converter.PyTree as C import Geom.PyTree as D a = D.sphere((1.2,0.,0.), 0.2, 30) a = R.setPrescribedMotion3(a, 'mot', transl_speed=(1,0,0)) C.convertPyTree2File(a, 'out.cgns')
General functions
-
RigidMotion.
evalPosition
(a, time) Evaluate the position at time t according to a motion. If the motion is defined in a with setPrescribedMotion.
Parameters: - a ([pyTree, base, zone, list of zones]) – input data
- time (float) – evaluation time
Returns: reference copy of a
Return type: identical to input
Example of use:
# - evalPosition (pyTree) - import RigidMotion.PyTree as R import Converter.PyTree as C import Geom.PyTree as D a = D.sphere((1.2,0.,0.), 0.2, 30) a = R.setPrescribedMotion1(a, 'trans', tx="{t}") b = R.evalPosition(a, time=0.1) C.convertPyTree2File(b, 'out.cgns')
Evaluate position at given time, when motion is described by a function. F(t) is a function describing motion. F(t) = (centerAbs(t), centerRel(t), rot(t)), where centerAbs(t) are the coordinates of the rotation center in the absolute frame, centerRel(t) are the coordinates of the rotation center in the relative (that is array’s) frame and rot(t), the rotation matrix.
Parameters: - a ([pyTree, base, zone, list of zones]) – input data
- time (float) – evaluation time
- F (python function) – motion function
Returns: reference copy of a
Return type: identical to input
Example of use:
# - evalPosition (PyTree) - import RigidMotion.PyTree as R import Generator.PyTree as G import Converter.PyTree as C from math import * # Coordonnees du centre de rotation dans le repere absolu def centerAbs(t): return [t, 0, 0] # Coordonnees du centre de la rotation dans le repere entraine def centerRel(t): return [5, 5, 0] # Matrice de rotation def rot(t): omega = 0.1 m = [[cos(omega*t), -sin(omega*t), 0], [sin(omega*t), cos(omega*t), 0], [0, 0, 1]] return m # Mouvement complet def F(t): return (centerAbs(t), centerRel(t), rot(t)) a = G.cart((0,0,0), (1,1,1), (11,11,2)) # Move the mesh time = 3. b = R.evalPosition(a, time, F); b[0]='move' C.convertPyTree2File([a,b], "out.cgns")