Module ppm_module_map_field_global

This module contains the interface and the needed work arrays for the field global mappings.

[Note]Note

The terminology distinguishes between meshes and fields (the data living on the meshes). Several fields can use the same mesh. Meshes are defined as ppm-internal TYPES, whereas fields are user-provided arrays.

Defined Types

name description

no types

Defined Module Interfaces

Defined Module Subroutines

name description

no subroutines

Interface ppm_map_field_global

Subroutines contained in this interface:

name description

ppm_map_field_global

This routine maps field data between two topologies using a global

Interface ppm_map_field_global_symm

Subroutines contained in this interface:

name description

ppm_map_field_global_symm

This routine maps field data between two topologies

Interface ppm_map_field_global_useperiod

Subroutines contained in this interface:

name description

ppm_map_field_global_useperiod

This routine maps field data between two topologies (which however

Interface ppm_map_field_global_useperiod_store

Subroutines contained in this interface:

name description

ppm_map_field_global_useperiod_store

This routine maps field data between two topologies (which

Interface ppm_map_field_globalstored

Subroutines contained in this interface:

name description

ppm_map_field_globalstored

This routine maps field data between two topologies

Subroutine ppm_map_field_global

This routine maps field data between two topologies using a global mapping (i.e. every processor communicates with every other). Source mesh must be on the current field topology. Global lists with all mesh blocks that have to be sent and/or received are built in this routine. ppm_map_field_push, ppm_map_field_pop and ppm_map_field_send will use these lists.

[Note]Note

The first part of the send/recv lists contains on-processor data.

[Caution]Caution

Side effect: this routine uses the same global send/recv buffers, pointers and lists as the particle mapping routines (reason: these buffers can be large ⇒ memory issues). Field and particle mappings can therefore never overlap, but one must be completed before the other starts.

[Note]Note

A map_field_partial could be constructed as follows: every processor known both isendlist and irecvlist. They could now use ppm_util_commopt to find a good communication sequence and compress the send/recv loop. Also, the loop when building the local send/recv lists below would just need to go over the neighbors of a sub instead of all subs. Difficulty: the order of mesh blocks in the send and recv buffer could not match up any more and push/pop could fail. check this!

Arguments

name type dimension intent optional description

topoid

integer

(IN)

Topology ID of source

target_topoid

integer

(IN)

Topology ID of target

meshid

integer

(IN)

Mesh ID of source

target_meshid

integer

(IN)

Mesh ID of target

info

integer

(OUT)

Returns status, 0 upon success

topoid

integer, , (IN)

Topology ID of source

[Caution]Caution

used to be target topo ID

target_topoid

integer, , (IN)

Topology ID of target

meshid

integer, , (IN)

Mesh ID of source

target_meshid

integer, , (IN)

Mesh ID of target

info

integer, , (OUT)

Returns status, 0 upon success

Used Modules

ppm_module_data, ppm_module_error, ppm_module_typedef, ppm_module_alloc, ppm_module_check_id, ppm_module_substop, ppm_module_mesh_block_intersect, ppm_module_data_mesh, ppm_module_write, ppm_module_substart

Subroutine ppm_map_field_global_symm

This routine maps field data between two topologies using a global mapping (i.e. every processor communicates with every other). Source mesh must be on the current field topology. Global lists with all mesh blocks that have to be send and/or received are built in this routine. Push, pop and send will use these lists.

[Warning]Warning

This routine has not been tested, reviewed, or checked. Comments and documentation are wrong. This routine might kill your cat or worse.

[Note]Note

The first part of the send/recv lists contains the on-processor data.

[Caution]Caution

Side effect: this routine uses the same global send/recv buffers, pointers and lists as the particle mapping routines (reason: these buffers can be large ⇒ memory issues). Field and particle mappings can therefore never overlap, but one must be completed before the other starts.

Arguments

name type dimension intent optional description

topoid

integer

(IN)

Topology ID of source

target_topoid

integer

(IN)

Topology ID of target

meshid

integer

(IN)

Mesh ID of source

target_meshid

integer

(IN)

Mesh ID of target

info

integer

(OUT)

Return status, 0 upon success

topoid

integer, , (IN)

Topology ID of source

[Caution]Caution

used to be target topo ID

target_topoid

integer, , (IN)

Topology ID of target

meshid

integer, , (IN)

Mesh ID of source

target_meshid

integer, , (IN)

Mesh ID of target

info

integer, , (OUT)

Return status, 0 upon success

Used Modules

ppm_module_data, ppm_module_error, ppm_module_typedef, ppm_module_alloc, ppm_module_check_id, ppm_module_substop, ppm_module_mesh_block_intersect, ppm_module_data_mesh, ppm_module_write, ppm_module_substart

Subroutine ppm_map_field_global_useperiod

This routine maps field data between two topologies (which however need compatible meshes defined on them) using a global mapping (i.e. every processor communicates with every other). Source mesh must be on the current field topology. Global lists with all mesh blocks that have to be send and/or received are built in this routine. Push, pop and send will use these lists.

[Warning]Warning

This routine has not been tested, reviewed, or checked. Comments and documentation are wrong. This routine might kill your cat or worse.

[Note]Note

The first part of the send/recv lists contains the on-processor data.

[Caution]Caution

Side effect: this routine uses the same global send/recv buffers, pointers and lists as the particle mapping routines (reason: these buffers can be large ⇒ memory issues). Field and particle mappings can therefore never overlap, but one must be completed before the other starts.

Arguments

name type dimension intent optional description

topoid

integer

(IN)

Topology ID of source

target_topoid

integer

(IN)

Topology ID of target

meshid

integer

(IN)

Mesh ID of source

target_meshid

integer

(IN)

Mesh ID of target

info

integer

(OUT)

Returns status, 0 upon success

topoid

integer, , (IN)

Topology ID of source

[Caution]Caution

used to be target

target_topoid

integer, , (IN)

Topology ID of target

meshid

integer, , (IN)

Mesh ID of source

target_meshid

integer, , (IN)

Mesh ID of target

info

integer, , (OUT)

Returns status, 0 upon success

Used Modules

ppm_module_data, ppm_module_error, ppm_module_typedef, ppm_module_alloc, ppm_module_check_id, ppm_module_substop, ppm_module_mesh_block_intersect, ppm_module_data_mesh, ppm_module_write, ppm_module_substart

Subroutine ppm_map_field_global_useperiod_store

This routine maps field data between two topologies (which however need compatible meshes defined on them) using a global mapping (i.e. every processor communicates with every other). Source mesh must be on the current field topology. Global lists with all mesh blocks that have to be send and/or received are built in this routine. Push, pop and send will use these lists.

[Warning]Warning

This routine has not been tested, reviewed, or checked. Comments and documentation are wrong. This routine might kill your cat or worse.

[Note]Note

The first part of the send/recv lists contains the on-processor data.

[Caution]Caution

Side effect: this routine uses the same global send/recv buffers, pointers and lists as the particle mapping routines (reason: these buffers can be large ⇒ memory issues). Field and particle mappings can therefore never overlap, but one must be completed before the other starts.

Arguments

name type dimension intent optional description

topoid

integer

(IN)

Topology ID of source

target_topoid

integer

(IN)

Topology ID of target

meshid

integer

(IN)

Mesh ID of source

target_meshid

integer

(IN)

Mesh ID of target

info

integer

(OUT)

Returns status, 0 upon success

topoid

integer, , (IN)

Topology ID of source

[Caution]Caution

used to be target

target_topoid

integer, , (IN)

Topology ID of target

meshid

integer, , (IN)

Mesh ID of source

target_meshid

integer, , (IN)

Mesh ID of target

info

integer, , (OUT)

Returns status, 0 upon success

Used Modules

ppm_module_data, ppm_module_error, ppm_module_typedef, ppm_module_alloc, ppm_module_check_id, ppm_module_substop, ppm_module_mesh_block_intersect, ppm_module_data_mesh, ppm_module_write, ppm_module_substart

Subroutine ppm_map_field_globalstored

This routine maps field data between two topologies (which however need compatible meshes defined on them) using a global mapping (i.e. every processor communicates with every other). Source mesh must be on the current field topology. Global lists with all mesh blocks that have to be send and/or received are built in this routine. Push, pop and send will use these lists.

[Warning]Warning

This routine assumes that ppm_map_field_init was called before

[Warning]Warning

This routine has not been tested, reviewed, or checked. Comments and documentation are wrong. This routine might kill your cat or worse.

[Note]Note

The first part of the send/recv lists contains the on-processor data.

[Caution]Caution

Side effect: this routine uses the same global send/recv buffers, pointers and lists as the particle mapping routines (reason: these buffers can be large ⇒ memory issues). Field and particle mappings can therefore never overlap, but one must be completed before the other starts.

Arguments

name type dimension intent optional description

topoid

integer

(IN)

Topology ID of source

target_topoid

integer

(IN)

Topology ID of target

meshid

integer

(IN)

Mesh ID of source

target_meshid

integer

(IN)

Mesh ID of target

info

integer

(OUT)

Return status, 0 on success

topoid

integer, , (IN)

Topology ID of source

[Caution]Caution

used to be target

target_topoid

integer, , (IN)

Topology ID of target

meshid

integer, , (IN)

Mesh ID of source

target_meshid

integer, , (IN)

Mesh ID of target

info

integer, , (OUT)

Return status, 0 on success

Used Modules

ppm_module_data, ppm_module_error, ppm_module_typedef, ppm_module_alloc, ppm_module_check_id, ppm_module_substop, ppm_module_mesh_block_intersect, ppm_module_data_mesh, ppm_module_write, ppm_module_substart

Defined Module Variables

name type dimension description

no variables

Used Modules

has no uses