This section defines the movement of the mesh. Currently only static non-conformal interfaces are supported.
Non-conformal meshes are defined using ZONES
and INTERFACES
. Each zone is a domain as
defined in the GEOMETRY
section. For a mesh to be non-conformal it must consist of
at least two zones with different domain tags. These two zones can then be split
by an interface where every interface is defined by two composite entities, we use
LEFT
and RIGHT
notation to distinguish between these. Each zone must contain
either the left or the right interface edge. Zones can contain multiple edges across
different interfaces but must not contain both edges for the same interface. These
left and right interface edges have to be geometrically identical but topologically
disconnected i.e. occupy the same space physically but consist of independent geometry
objects.
Non-conformal interfaces are defined enclosed in the NEKTAR
tag. An example showing two
non-conformal interfaces on a single mesh is below:
1<MOVEMENT> 2 <ZONES> 3 <FIXED ID="0" DOMAIN="D[0]" /> 4 <FIXED ID="1" DOMAIN="D[1]" /> 5 <FIXED ID="2" DOMAIN="D[2]" /> 6 </ZONES> 7 <INTERFACES> 8 <INTERFACE NAME="First"> 9 <LEFT ID="0" BOUNDARY="C[0]" /> 10 <RIGHT ID="1" BOUNDARY="C[1]" /> 11 </INTERFACE> 12 <INTERFACE NAME="Second"> 13 <LEFT ID="1" BOUNDARY="C[2]" /> 14 <RIGHT ID="2" BOUNDARY="C[3]" /> 15 </INTERFACE> 16 </INTERFACES> 17</MOVEMENT>
Zones must have a type specified, at the moment only ‘FIXED’ interfaces are supported
however in the future there are plans to implement rotating and sliding motion using
the ALE method. It is important for the zone IDs to correspond with the relevant
interface IDs present on the zone, that is if there is an interface with ID 0 there must
also be a zone with ID 0 too. Zone IDs must be unique but interfaces can have the
same ID, e.g. in the example above zone ID 1 has two interfaces attached to it.
The inclusion of an "INTERFACE NAME="..."
allows for specifying a name, which is
used for the debug output when the verbose flag ‘-v’ is specified. This is for user
reference to ensure the non-conformal interfaces are set up correctly, and shows
zone/interface IDs, number of elements in each zone and interface, and connections
between each zone/interface. An example debug output for the above XML is shown
below:
Movement Info: Num zones: 3 - 0 Fixed: 8 Quadrilaterals - 1 Fixed: 24 Quadrilaterals - 2 Fixed: 4 Quadrilaterals Num interfaces: 2 - "First": 0 (4 Segments) <-> 1 (6 Segments) - "Second": 1 (6 Segments) <-> 2 (2 Segments)
ALE method is implemented through MOVEMENT
and ALEHELPER
for sliding mesh
with rotating and sliding motion. Zones type can be specified by ‘ROTATE’ and
’TRANSLATE’ interface. Recently, the ALE method is implemented in ADRSolver
and
CompressibleFlowSolver
, but only support explicit time integration shceme and LDG
for
diffusion.
An example for the rotationg movement is shown below:
1<MOVEMENT> 2<ZONES> 3 <FIXED ID="0" DOMAIN="D[0]" /> 4 <ROTATE ID="1" DOMAIN="D[1]" ORIGIN="0,0.5,0" AXIS="0,0,1" ANGVEL="100"/> 5</ZONES> 6<INTERFACES> 7 <INTERFACE NAME="Circle"> 8 <LEFT ID="0" BOUNDARY="C[405]" /> 9 <RIGHT ID="1" BOUNDARY="C[406]" /> 10 </INTERFACE> 11</INTERFACES> 12</MOVEMENT>
Here ORIGIN
and AXIS
are the origin and axis that the zone rotates about, respectively.
ANGVEL
is the the angular velocity of rotation with degree unit.
Another example for the translating movement is shown below:
1<MOVEMENT> 2<ZONES> 3 <FIXED ID="0" DOMAIN="D[0]" /> 4 <TRANSLATE ID="1" DOMAIN="D[1]" VELOCITY="0,PI*cos(2*PI*t)" DISPLACEMENT="0,0.5*sin(2*PI*t)"/> 5 <FIXED ID="2" DOMAIN="D[2]" /> 6</ZONES> 7<INTERFACES> 8 <INTERFACE NAME="Left interface"> 9 <LEFT ID="0" BOUNDARY="C[405]" SKIPCHECK="TRUE"/> 10 <RIGHT ID="1" BOUNDARY="C[406]" SKIPCHECK="TRUE"/> 11 </INTERFACE> 12 <INTERFACE NAME="Right interface"> 13 <LEFT ID="1" BOUNDARY="C[407]" SKIPCHECK="TRUE"/> 14 <RIGHT ID="2" BOUNDARY="C[408]" SKIPCHECK="TRUE"/> 15 </INTERFACE> 16</INTERFACES> 17</MOVEMENT>
Here VELOCITY
and DISPLACEMENT
are the translation velocity and displacement in x,y,z
direction. SKIPCHECK
is defined to ignore the missing coordinates found check for specific
interface.