atl_write_equiPoints Subroutine

private subroutine atl_write_equiPoints(stFun, tree, mesh_list, varSys, preciceCpl)

ceate equidistant points for write to precice and use the number of these points for the setup_indices routine. If its set by the user, the Nearest-Pojection can be used for these points

get the number of unquie points, since in all dircetions the number of points is equal, just choose one direction (x, y or z) when there are no points, you dont write them to precice can happen in parallel VK write(,) 'number of Points to writ to precice is 0, & VK cycle this spacetimefunction' transform offset bit back shift the points according to the offset bit * small fraction of the boundingCubeLength hence it is mesh independent We assume here, that all points for a specific face are grouped together in order to make use of the posIDs Give the correct exchange points to precice (store it there) return indices which will be used for all further calls setup_indices for boundary variables are read_var in precice space-time function we are not able to use 'idx' created here as input for get_valOfIndex for write_vars.Therefore we have to do setup_indices for write_vars once during initialization and then store the idx in precice_coupling type. get the setup_indices for the shifted points

Since we are sending 5 times the same idx, for the unique Points and all of them have the same idx, we just need to store it once Create edges and triangles for the interpolation with equidistant points, if the user wants to make use of it, by setting that in the ateles config file

Arguments

TypeIntentOptionalAttributesName
type(tem_st_fun_listElem_type), intent(inout), target:: stFun

This list contains space-time-function

type(treelmesh_type), intent(in) :: tree

Mesh data in treelmesh format.

type(atl_cube_elem_type), intent(in) :: mesh_list(tree%global%minLevel:tree%global%maxLevel)
type(tem_varSys_type), intent(in) :: varSys
type(tem_precice_coupling_type), pointer:: preciceCpl

This type contains all information, which are needed for the coupling with precice


Calls

proc~~atl_write_equipoints~~CallsGraph proc~atl_write_equipoints atl_write_equiPoints tem_create_surface_equidistant_points tem_create_surface_equidistant_points proc~atl_write_equipoints->tem_create_surface_equidistant_points proc~atl_reftophyscoord atl_refToPhysCoord proc~atl_write_equipoints->proc~atl_reftophyscoord proc~tem_coordofreal tem_CoordOfReal proc~atl_write_equipoints->proc~tem_coordofreal tem_precice_set_vertices_pos tem_precice_set_vertices_pos proc~atl_write_equipoints->tem_precice_set_vertices_pos interface~append~2 append proc~atl_write_equipoints->interface~append~2 proc~tem_baryofid tem_BaryOfId proc~atl_write_equipoints->proc~tem_baryofid proc~tem_idofcoord tem_IdOfCoord proc~atl_write_equipoints->proc~tem_idofcoord proc~atl_nearest_projection atl_nearest_projection proc~atl_write_equipoints->proc~atl_nearest_projection posids posids proc~atl_nearest_projection->posids tem_precice_set_triangle tem_precice_set_triangle proc~atl_nearest_projection->tem_precice_set_triangle tem_precice_set_edge tem_precice_set_edge proc~atl_nearest_projection->tem_precice_set_edge triangles triangles proc~atl_nearest_projection->triangles tem_create_edges_triangles tem_create_edges_triangles proc~atl_nearest_projection->tem_create_edges_triangles edges edges proc~atl_nearest_projection->edges

Called by

proc~~atl_write_equipoints~~CalledByGraph proc~atl_write_equipoints atl_write_equiPoints proc~atl_write_precice_getpoint atl_write_precice_getPoint proc~atl_write_precice_getpoint->proc~atl_write_equipoints proc~atl_init_precice atl_init_precice proc~atl_init_precice->proc~atl_write_precice_getpoint proc~atl_initialize atl_initialize proc~atl_initialize->proc~atl_init_precice proc~atl_initialize_program atl_initialize_program proc~atl_initialize_program->proc~atl_initialize program~atl_harvesting atl_harvesting program~atl_harvesting->proc~atl_initialize

Contents


Variables

TypeVisibilityAttributesNameInitial
integer, private :: iLevel
integer, private :: iSerPnt
integer, private :: iCoord
integer, private :: iPnt
integer, private :: iElem
integer, private :: iVar
integer, private :: nPnts
integer, private :: nEqPnts
integer, private :: nEqPnts_face
integer, private :: nPnts_face
integer, private :: nElems
integer, private :: varPos
integer, private :: iEqPnt
integer, private :: pos
integer, private :: iAlign
integer, private :: iDira(1)
integer, private :: iDir
integer, private :: iEqu
integer, private :: offsetX
integer, private :: offsetY
integer, private :: offsetZ
integer(kind=long_k), private :: treeID
integer, private, allocatable:: idx(:)

list of indices for all coupling points

real(kind=rk), private, allocatable:: eQuePoints_all(:,:)

Array with all equidistant points

real(kind=rk), private, allocatable:: serializedPnts(:)

list of equidistant points for creating the indices

real(kind=rk), private :: point(3)
real(kind=rk), private :: baryCoord(3)
real(kind=rk), private :: diff(3)
real(kind=rk), private :: shifted(3)
real(kind=rk), private, allocatable:: eQuePoint(:,:)
type(atl_varSys_data_type), private, pointer:: fPtr=> NULL()
type(ply_poly_project_type), private, pointer:: ply_poly=> NULL()