Rotation
#
spec
#
For convenience, there are three options for specifying the rotation settings in Rotation
:
AngularVelocity
to set up the angular velocity.AngleExpression
to set up the rotation angle as a function of time.FromUserDefinedDynamics
to set up the user defined dynamics for rotation using a non-dimensional expression.
parent_volume
#
The parent_volume
is required for nested rotational volume zones. If zoneA is a rotational zone and zoneB rotates relative to zoneA, zoneB is treated as a nested rotational volume zone. In such a scenario, zoneBโs frame of reference is built upon zoneAโs frame of reference, so in zoneBโs Rotation
configuration, it is required to set parent_volume=volume_mesh["zoneA"]
.
Caution
If a volume zone rotates with respect to the inertial frame of reference, the parent_volume
should not be specified. An example can be found at XV15 rotor tutorial. Any volume zone, assigned as parent of another volume zone, has to be a rotational volume zone, otherwise the validation during case submission will report errors.
In the following configuration, the frame of reference of FLUID-MIDDLE-BLOCK
rotates with respect to the inertial frame of reference, so the parent_volume
is not specified. The frame of reference of FLUID-INNER-BLOCK
rotates with respect to the FLUID-MIDDLE-BLOCK
โs frame of reference, so its parent_volume
is required to be specified as FLUID-MIDDLE-BLOCK
.
1volume_middle = volume_mesh["FLUID-MIDDLE-BLOCK"]
2volume_middle.axis = [1,0,0]
3volume_middle.center = [1,2,3] * fl.u.m
4volume_inner = volume_mesh["FLUID-INNER-BLOCK"]
5volume_inner.axis = [0,0,-1]
6volume_inner.center = [-4,-5,-0.2] * fl.u.m
7
8rotation_inner = fl.Rotation(
9 name="innerRotation",
10 volumes=volume_inner,
11 spec= fl.AngularVelocity(0.2 * fl.u.rad / fl.u.s),
12 parent_volume=volume_middle
13),
14rotation_middle = fl.Rotation(
15 name="middleRotation",
16 volumes=volume_middle,
17 spec= fl.AngularVelocity(0.1 * fl.u.rad / fl.u.s),
18),