This module provides the functionality to read surface information from file (stl, ...) and stores them in a surfaceData datatype.
Datatype to store the surface information in. The surface data consists of an array of unique points (XYZ coordinates) and their connectivity list (triangles).
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(tem_surfaceData_stlHead_type), | private, | allocatable | :: | stlHead(:) | data (filename) for the surface data header |
||
| character(len=PathLen), | private | :: | outprefix | output prefix |
|||
| logical, | private | :: | dumpForce | dump min and max force to a seperate file (debug output) |
|||
| type(tem_timeControl_type), | private | :: | timeControl | time control type for controlling the dumping of the stl file |
|||
| integer, | private | :: | nUniquePoints_total | number of unique point coordinates |
|||
| real(kind=rk), | private, | allocatable | :: | pointCoords(:) | linearized array of point coordinates (X,Y,Z) the coordinates are stored one after another --------------------------- | X1,Y1,Z1, ... , Xn,Yn,Zn| --------------------------- size: 3*nUniquePoints_total |
||
| real(kind=rk), | private, | allocatable | :: | surfArea(:) | array of surface areas attached to this point |
||
| type(tem_parentIDs_type), | private, | allocatable | :: | parentIDs(:) | array of levelwise pointers to the parent eulerian elements of the lagrangian points in the levelDesc (size: nLevels) |
||
| integer, | private, | allocatable | :: | trias(:,:) | connectivity array of the points size: 3, nTrias |
||
| integer, | private | :: | nTrias | total number of triangles stored |
|||
| real(kind=rk), | private, | allocatable | :: | backPointCoords(:) | backup for linearized array of point coordinates (X,Y,Z) needed for defining offsets based on the initial position the coordinates are stored one after another --------------------------- | X1,Y1,Z1, ... , Xn,Yn,Zn| --------------------------- size: 3*nUniquePoints_total |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| character(len=PathLen), | private | :: | filename | filename of the data to be read from |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | private, | allocatable | :: | ptrs(:) | levelwise pointers to the parent eulerian elements in the levelDesc size: pointCoords%nVals |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(tem_surfData_type), | intent(inout) | :: | me | datatype to store the surface information |
||
| type(flu_state) | :: | conf | handle of the lua config file |
|||
| integer | :: | sd_handle | handle for the surfaceData table |
This routine reads the surface data from a set of stl files and stores it in the surfaceData_type.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(tem_surfData_type), | intent(inout) | :: | me | datatype to store the surface information |
||
| logical, | intent(in), | optional | :: | useInitPos | shall the initial points be stored and used for updating the points later on ??? |
This subroutine identifies the parent treelm elements of the surface data points.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(tem_surfData_type), | intent(inout) | :: | me | datatype to store the surface information |
||
| type(tem_levelDesc_type), | intent(inout) | :: | levelDesc | the level descriptor incl. ghost and halo elements as well as the communicator information on the level iLevel |
||
| type(treelmesh_type), | intent(in) | :: | globTree | global Tree information |
||
| integer, | intent(in) | :: | iLevel | the current level |
This subroutine updates the surface points and the parentIDs array as well as sets the correct property bits.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(tem_surfData_type), | intent(inout) | :: | me | datatype to store the surface information |
||
| type(tem_levelDesc_type), | intent(inout) | :: | levelDesc | the level descriptor incl. ghost and halo elements as well as the communicator information on the level iLevel |
||
| type(treelmesh_type), | intent(inout) | :: | globTree | global Tree information |
||
| type(tem_spacetime_fun_type) | :: | movement | spacetime function to define the motion of the surface points |
|||
| type(tem_time_type) | :: | time | timing information |
|||
| integer, | intent(inout) | :: | iLevel | the current level |
||
| integer, | intent(in), | optional | :: | IBMUnit(0:tem_last_lu) | optional output log unit other than the global logUnit |
|
| logical, | intent(in), | optional | :: | useInitPos | shall the initial points be stored and used for updating the points later on ??? |
|
| logical, | intent(in) | :: | movPredef | logical to define wether the motion is predefined or not if not: initialize the values differently |
This subroutine calculates the surface area attached to each point
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(tem_surfData_type), | intent(inout) | :: | me | datatype to store the surface information |
This subroutine deallocates all arrays in the tem_surfaceData_type. This is used when unloading and reloading the stl surface mesh during dynamic load balancing. General information like outputprefix, timeControl and backPointCoords are NOT touched!!!
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(tem_surfData_type), | intent(inout) | :: | me | datatype to store the surface information |
||
| integer, | intent(in) | :: | minLevel | Level range |
||
| integer, | intent(in) | :: | maxLevel | Level range |
This subroutine makes the temporary of pointCoordinates unique, updates the triangle connectivity and sets the actual pointCoordinates to be the barycenters of the elements on the highest refinement level possible.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(tem_surfData_type), | intent(inout) | :: | me | datatype to store the surface information |
||
| real(kind=rk), | intent(in) | :: | all_pointCoords(:,:) | tmp point coordinates to be unified and stored in me |