Setting Domain IdentifiersΒΆ
Learning targets
- Extrusion of a 2D object to the third dimension
DomainIdMapping
: Attributing different domain identifiers to different layers of the extruded geometry- Define top/bottom transparent boundary conditions
This tutorial examples constructs a cylinder embedded in a layered media.
The 2D cross-section layout consists of a square computational domain (DomainId=1
) with a circle domain
(DomainId=2
). The extrusion has several layers. The .jcm
input reads as
.jcm
Input File
layout.jcm [ASCII]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
Layout3D { Name = "TutorialExample3D" UnitOfLength = 1e-06 MeshOptions { MaximumSideLength = 1.3 } Extrusion { Objects { Polygon { Name = "ComputationalDomain/Background" DomainId = 1 Priority = -1 Points = [-2 -2, 2 -2, 2 2, -2 2] Boundary { Class = Periodic } } Circle { Name = "Circle" DomainId = 2 Radius = 1 RefineAll = 2 } } MultiLayer { LayerInterface { BoundaryClass = Transparent } Layer { Thickness = 1.0 DomainId = 1 } Layer { Thickness = 0.1 DomainId = 2 } LayerInterface { GlobalZ = 0.0 } Layer { Thickness = 1.5 DomainIdMapping = [1 3 2 2] } Layer { Thickness = 2.0 DomainIdMapping = [1 3] } LayerInterface { BoundaryClass = Transparent } } } }
Note
- Thicknesses of layers
in the
Extrusion
are defined in units of length of the layout (UnitOfLength = ...
). - The
MultiLayer
stacks subsequent layers in positive z-direction. - The variable
GlobalZ
can be used to shift the absolute z-position. - The
LayerInterface
declarations are used to define transparent boundary conditions at bottom and top. - The global position of a layer interface can be set within a
LayerInterface
section by aGlobalZ
declaration. In this example, the starting point of the cylinder is set equal to . - The vertical boundary conditions are defined by the 2D cross-section layout (here periodic).
DomainIdMapping
The first two layers (line 30-37) are homogeneous. In the corresponding Layer
sections we globally reset the domain identifier for the entire layers, so that the domain identifiers of the 2D layout are ignored. The third layer contains a DomainIdMapping
declaration. It has the form
DomainIdMapping = [
ID_2D --> ID_3D
...
]
, where ID_2D
is the domain identifier as defined in the 2D cross-section layout. For our example these are 1
for the computational domain and 2
for the circle. ID_3D
is the actual domain identifier as finally used in the generated mesh file. In other words we map the 2D identifier to 3D identifier (therefore DomainIdMapping
).
The next layer is again homogeneous and allows therefore to globally reset the domain identifier as in the first two layers. However, for demonstration purposes we used a DomainIdMapping
again:
DomainIdMapping = [1 3]
Here, the mapping for the circle (DomainId=2
) is missing. This short form of a DomainIdMapping
follows the following rule:
Note
The 2D cross section layout can be considered as an overlay, where higher priority objects hides objects of lower priority. Omitting the domain mapping for a prioritized object, will result in the usage of the domain identifier mapping for the covered object of lower priority.