Rotation

Contents

Rotation#

spec#

For convenience, there are three options for specifying the rotation settings in Rotation:

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),