atl_write_nonequiPoints Subroutine

private subroutine atl_write_nonequiPoints(varSys, tree, stFun, preciceCpl)

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. This is done for the non-equidistant points. We also set the vertices and the edges as well as the triangles for the Interpolation between the domains.

Obtain the point coordinates to get values for get the number of unquie points ( xyz should be same number) VK write(,) 'number of Points to write to precice is 0, cycle & VK & this spacetimefunction' shift the points via the offset bit for the get_point routine get the unquie list of points get the unquie list of points serialize them since precice needs a 1d array transform offet bit back shift the points according to the offset bit * small fraction of the boundingCubeLength hence it is mesh independent loop over the variables to write to precice get_point routine for unquie array of points of that variable 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 send the points to precice and get back the positionID allocate posID array


From here on the Nearest-Projection is introduced, which has to be activated by the user in the ateles-config file.


We assume here, that all points for a specific face are grouped together in order to make use of the posIDs Call to create the edges and triangles acoording to the dimension

Arguments

TypeIntentOptionalAttributesName
type(tem_varSys_type), intent(in) :: varSys

Global variable system

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

information about the mesh

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

contains the elements in spacetime-function

type(tem_precice_coupling_type), pointer:: preciceCpl

Calls

proc~~atl_write_nonequipoints~~CallsGraph proc~atl_write_nonequipoints atl_write_nonequiPoints tem_precice_set_vertices_pos tem_precice_set_vertices_pos proc~atl_write_nonequipoints->tem_precice_set_vertices_pos interface~append~2 append proc~atl_write_nonequipoints->interface~append~2 proc~atl_nearest_projection atl_nearest_projection proc~atl_write_nonequipoints->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_nonequipoints~~CalledByGraph proc~atl_write_nonequipoints atl_write_nonequiPoints proc~atl_write_precice_getpoint atl_write_precice_getPoint proc~atl_write_precice_getpoint->proc~atl_write_nonequipoints 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
real(kind=rk), private, allocatable:: point(:,:)
real(kind=rk), private, allocatable:: shiftpoints(:,:)
real(kind=rk), private, allocatable:: serializedPnts(:)
integer, private, allocatable:: idx(:)
type(atl_varSys_data_type), private, pointer:: fPtr=> NULL()
type(ply_poly_project_type), private, pointer:: ply_poly=> NULL()
integer, private :: iLevel
integer, private :: iVar
integer, private :: iPnt
integer, private :: i
integer, private :: iCoord
integer, private :: nPnts
integer, private :: varPos
integer, private :: pos
integer, private :: offsetX
integer, private :: offsetY
integer, private :: offsetZ