|
FE-Project
|
module FElib / Data / Communication base More...
Data Types | |
| type | localmeshcommdata |
| Derived type to manage data communication at a face between adjacent local meshes. More... | |
| type | meshfieldcommbase |
| Base derived type to manage data communication. More... | |
| interface | meshfieldcommbase_put |
| type | meshfieldcontainer |
| Container to save a pointer of MeshField(1D, 2D, 3D) object. More... | |
Functions/Subroutines | |
| subroutine, public | meshfieldcommbase_init (this, sfield_num, hvfield_num, htensorfield_num, bufsize_per_field, comm_face_num, nnode_lcmeshface, mesh) |
| Initialize a base object to manage data communication of fields. | |
| subroutine, public | meshfieldcommbase_final (this) |
| Finalize a base object to manage data communication of fields. | |
| subroutine, public | meshfieldcommbase_exchange_core (this, commdata_list, do_wait) |
| Exchange halo data. | |
| subroutine, public | meshfieldcommbase_wait_core (this, commdata_list, field_list, dim, varid_s, lcmesh_list) |
| Wait data communication and move tmp data of LocalMeshCommData object to a recv buffer. | |
| subroutine, public | meshfieldcommbase_extract_bounddata (var, refelem, mesh, buf) |
| Extract halo data from data array with MeshField object and set it to the receiving buffer. | |
| subroutine, public | meshfieldcommbase_extract_bounddata2 (var, vmapb, vmapb_size, npxnea, buf) |
| Extract halo data from data array with MeshField object and set it to the receiving buffer. | |
| subroutine, public | meshfieldcommbase_extract_bounddata_2 (field_list, dim, varid_s, lcmesh_list, vmapb_size, buf) |
| Extract halo data from data array with MeshField object and set it to the receiving buffer. | |
| subroutine, public | meshfieldcommbase_extract_bounddata_3 (field_list, dim, varid_s, lcmesh_list, vmapb2, vmapb2_size, buf) |
| Extract halo data from data array with MeshField object and set it to the recieving buffer. | |
| subroutine, public | meshfieldcommbase_set_bounddata (buf, refelem, mesh, var) |
| Extract halo data from the receiving buffer and set it to data array with MeshField object. | |
| subroutine, public | meshfieldcommbase_set_bounddata_3 (buf, refelem, mesh, vmapb, vmapb_size, var) |
| Extract halo data from the recieving buffer and set it to data array with MeshField object. | |
module FElib / Data / Communication base
| subroutine, public scale_meshfieldcomm_base::meshfieldcommbase_init | ( | class(meshfieldcommbase), intent(inout) | this, |
| integer, intent(in) | sfield_num, | ||
| integer, intent(in) | hvfield_num, | ||
| integer, intent(in) | htensorfield_num, | ||
| integer, intent(in) | bufsize_per_field, | ||
| integer, intent(in) | comm_face_num, | ||
| integer, dimension(comm_face_num,mesh%local_mesh_num), intent(in) | nnode_lcmeshface, | ||
| class(meshbase), intent(in), target | mesh ) |
Initialize a base object to manage data communication of fields.
| sfield_num | Number of scalar fields |
| hvfield_num | Number of horizontal vector fields |
| htensorfield_num | Number of horizontal tensor fields |
| bufsize_per_field | Buffer size per a field |
| comm_face_num | Number of faces on a local mesh which perform data communication |
| Nnode_LCMeshFace | Array to store the number of nodes |
Definition at line 172 of file scale_meshfieldcomm_base.F90.
Referenced by scale_meshfieldcomm_base::meshfieldcommbase::prepare_pc().
| subroutine, public scale_meshfieldcomm_base::meshfieldcommbase_final | ( | class(meshfieldcommbase), intent(inout) | this | ) |
Finalize a base object to manage data communication of fields.
Definition at line 251 of file scale_meshfieldcomm_base.F90.
Referenced by scale_meshfieldcomm_base::meshfieldcommbase::prepare_pc().
| subroutine, public scale_meshfieldcomm_base::meshfieldcommbase_exchange_core | ( | class(meshfieldcommbase), intent(inout) | this, |
| type(localmeshcommdata), dimension(this%nfaces_comm, this%mesh%local_mesh_num), intent(inout), target | commdata_list, | ||
| logical, intent(in), optional | do_wait ) |
Exchange halo data.
| commdata_list | Array of LocalMeshCommData objects which manage information and halo data |
| do_wait | Flag whether MPI_waitall is called and move tmp data of LocalMeshCommData object to a recv buffer |
Definition at line 354 of file scale_meshfieldcomm_base.F90.
References meshfieldcommbase_wait_core().
Referenced by scale_meshfieldcomm_base::meshfieldcommbase::prepare_pc().
| subroutine, public scale_meshfieldcomm_base::meshfieldcommbase_wait_core | ( | class(meshfieldcommbase), intent(inout) | this, |
| type(localmeshcommdata), dimension(this%nfaces_comm, this%mesh%local_mesh_num), intent(inout), target | commdata_list, | ||
| type(meshfieldcontainer), dimension(:), intent(inout), optional | field_list, | ||
| integer, intent(in), optional | dim, | ||
| integer, intent(in), optional | varid_s, | ||
| class(localmeshbase), dimension(:), intent(in), optional, target | lcmesh_list ) |
Wait data communication and move tmp data of LocalMeshCommData object to a recv buffer.
| commdata_list | Array of LocalMeshCommData objects which manage information and halo data |
Definition at line 454 of file scale_meshfieldcomm_base.F90.
References set_bounddata().
Referenced by meshfieldcommbase_exchange_core(), and scale_meshfieldcomm_base::meshfieldcommbase::prepare_pc().
| subroutine, public scale_meshfieldcomm_base::meshfieldcommbase_extract_bounddata | ( | real(rp), dimension(refelem%np * mesh%nea), intent(in) | var, |
| class(elementbase), intent(in) | refelem, | ||
| class(localmeshbase), intent(in) | mesh, | ||
| real(rp), dimension(size(mesh%vmapb)), intent(out) | buf ) |
Extract halo data from data array with MeshField object and set it to the receiving buffer.
Definition at line 606 of file scale_meshfieldcomm_base.F90.
Referenced by scale_meshfieldcomm_base::meshfieldcommbase::prepare_pc().
| subroutine, public scale_meshfieldcomm_base::meshfieldcommbase_extract_bounddata2 | ( | real(rp), dimension(npxnea), intent(in) | var, |
| integer, dimension(vmapb_size), intent(in) | vmapb, | ||
| integer, intent(in) | vmapb_size, | ||
| integer, intent(in) | npxnea, | ||
| real(rp), dimension(vmapb_size), intent(out) | buf ) |
Extract halo data from data array with MeshField object and set it to the receiving buffer.
Definition at line 627 of file scale_meshfieldcomm_base.F90.
Referenced by meshfieldcommbase_extract_bounddata_2(), meshfieldcommbase_extract_bounddata_3(), and scale_meshfieldcomm_base::meshfieldcommbase::prepare_pc().
| subroutine, public scale_meshfieldcomm_base::meshfieldcommbase_extract_bounddata_2 | ( | type(meshfieldcontainer), dimension(:), intent(in), target | field_list, |
| integer, intent(in) | dim, | ||
| integer, intent(in) | varid_s, | ||
| class(localmeshbase), dimension(:), intent(in), target | lcmesh_list, | ||
| integer, intent(in) | vmapb_size, | ||
| real(rp), dimension(vmapb_size,size(field_list),size(lcmesh_list)), intent(out) | buf ) |
Extract halo data from data array with MeshField object and set it to the receiving buffer.
Note: We assume that the size of VmapB is the same for all local meshes. For the future, this subroutine should be modified to handle the case with different sizes of VmapB among local meshes.
| [in] | varid_s | Starting variable ID to extract halo data |
| [in] | dim | Number of dimensions of the field (1, 2, or 3) |
| [in] | lcmesh_list | Array of local mesh objects to extract halo data |
| [in] | vmapb_size | Size of VmapB (we assume that the size of VmapB is the same for all local meshes) |
Definition at line 652 of file scale_meshfieldcomm_base.F90.
References meshfieldcommbase_extract_bounddata2().
Referenced by scale_meshfieldcomm_base::meshfieldcommbase::prepare_pc().
| subroutine, public scale_meshfieldcomm_base::meshfieldcommbase_extract_bounddata_3 | ( | class(meshfieldcontainer), dimension(:), intent(in), target | field_list, |
| integer, intent(in) | dim, | ||
| integer, intent(in) | varid_s, | ||
| class(localmeshbase), dimension(:), intent(in), target | lcmesh_list, | ||
| integer, dimension(vmapb2_size), intent(in) | vmapb2, | ||
| integer, intent(in) | vmapb2_size, | ||
| real(rp), dimension(vmapb2_size,size(field_list),size(lcmesh_list)), intent(out) | buf ) |
Extract halo data from data array with MeshField object and set it to the recieving buffer.
Definition at line 727 of file scale_meshfieldcomm_base.F90.
References meshfieldcommbase_extract_bounddata2().
Referenced by scale_meshfieldcomm_base::meshfieldcommbase::prepare_pc().
| subroutine, public scale_meshfieldcomm_base::meshfieldcommbase_set_bounddata | ( | real(rp), dimension(size(mesh%vmapb)), intent(in) | buf, |
| class(elementbase), intent(in) | refelem, | ||
| class(localmeshbase), intent(in) | mesh, | ||
| real(rp), dimension(refelem%np * mesh%nea), intent(inout) | var ) |
Extract halo data from the receiving buffer and set it to data array with MeshField object.
Definition at line 804 of file scale_meshfieldcomm_base.F90.
Referenced by scale_meshfieldcomm_base::meshfieldcommbase::prepare_pc().
| subroutine, public scale_meshfieldcomm_base::meshfieldcommbase_set_bounddata_3 | ( | real(rp), dimension(vmapb_size), intent(in) | buf, |
| class(elementbase), intent(in) | refelem, | ||
| class(localmeshbase), intent(in) | mesh, | ||
| integer, dimension(vmapb_size), intent(in) | vmapb, | ||
| integer, intent(in) | vmapb_size, | ||
| real(rp), dimension(refelem%np * mesh%nea), intent(inout) | var ) |
Extract halo data from the recieving buffer and set it to data array with MeshField object.
Definition at line 828 of file scale_meshfieldcomm_base.F90.
Referenced by scale_meshfieldcomm_base::meshfieldcommbase::prepare_pc().