![]() |
Octopus
|
Some general things and nomenclature: More...
Some general things and nomenclature:
A globally defined vector v has two parts:
Usage example for par_vec routines.
! Initialize parallelization with mesh and operator op ! initialized and given. ! mesh = sys%gr%mesh ! stencil = op%stencil real(real64) :: uu(np_global), vv(np_global) real(real64), allocatable :: ul(:), vl(:), wl(:) type(mesh_t) :: mesh ! Fill uu, vv with sensible values. ! ... ! Allocate space for local vectors. allocate(ul(np_part)) allocate(vl(np_part)) allocate(wl(np_part)) ! Distribute vectors. call vec_scatter(vp, uu, ul) call vec_scatter(vp, vv, vl) ! Compute some operator op: vl = op ul call X(vec_ghost_update)(vp, ul) call X(nl_operator_operate)(op, ul, vl) !! Gather result of op in one vector vv. call vec_gather(vp, vv, vl) ! Clean up. deallocate(ul, vl, wl)
Data Types | |
| interface | par_vec_allgather |
| interface | par_vec_gather |
| interface | par_vec_scatter |
| type | par_vec_t |
| Parallel information. More... | |
Functions/Subroutines | |
| subroutine, public | par_vec_init (mpi_grp, np_global, idx, stencil, space, partition, pv, namespace) |
| Initializes a par_vec_type object (parallel vector). More... | |
| subroutine, public | par_vec_end (pv) |
| Deallocate memory used by pv. More... | |
| integer function, public | par_vec_global2local (pv, ipg) |
| Returns local number of global point ip on the local node If the result is zero, the point is not available on the local node. More... | |
| integer(int64) function, public | par_vec_local2global (pv, ip) |
| Returns global index of local point ip. More... | |
| subroutine | gather_local_vec (pv, root, local_vec) |
| subroutine | zpar_vec_scatter (pv, root, v_local, v) |
| Generally: Xpar_vec_gather and Xpar_vec_scatter only consider inner points. Xpar_vec_scatter_bndry takes care of boundary points (there is no Xpar_vec_gather_bndry as they are only written and not read). Xpar_vec_scatter_all is Xpar_vec_scatter followd by Xpar_vec_scatter_bndry. More... | |
| subroutine | zpar_vec_gather (pv, root, v_local, v) |
| Reverse operation of Xpar_vec_scatter. All v_locals from the nodes are packed together into v on node root in correct order. More... | |
| subroutine | zpar_vec_allgather (pv, v, v_local) |
| Like Xpar_vec_gather but the result is gathered on all nodes, i. e. v has to be a properly allocated array on all nodes. More... | |
| subroutine | dpar_vec_scatter (pv, root, v_local, v) |
| Generally: Xpar_vec_gather and Xpar_vec_scatter only consider inner points. Xpar_vec_scatter_bndry takes care of boundary points (there is no Xpar_vec_gather_bndry as they are only written and not read). Xpar_vec_scatter_all is Xpar_vec_scatter followd by Xpar_vec_scatter_bndry. More... | |
| subroutine | dpar_vec_gather (pv, root, v_local, v) |
| Reverse operation of Xpar_vec_scatter. All v_locals from the nodes are packed together into v on node root in correct order. More... | |
| subroutine | dpar_vec_allgather (pv, v, v_local) |
| Like Xpar_vec_gather but the result is gathered on all nodes, i. e. v has to be a properly allocated array on all nodes. More... | |
| subroutine | ipar_vec_scatter (pv, root, v_local, v) |
| Generally: Xpar_vec_gather and Xpar_vec_scatter only consider inner points. Xpar_vec_scatter_bndry takes care of boundary points (there is no Xpar_vec_gather_bndry as they are only written and not read). Xpar_vec_scatter_all is Xpar_vec_scatter followd by Xpar_vec_scatter_bndry. More... | |
| subroutine | ipar_vec_gather (pv, root, v_local, v) |
| Reverse operation of Xpar_vec_scatter. All v_locals from the nodes are packed together into v on node root in correct order. More... | |
| subroutine | ipar_vec_allgather (pv, v, v_local) |
| Like Xpar_vec_gather but the result is gathered on all nodes, i. e. v has to be a properly allocated array on all nodes. More... | |
| subroutine | spar_vec_scatter (pv, root, v_local, v) |
| Generally: Xpar_vec_gather and Xpar_vec_scatter only consider inner points. Xpar_vec_scatter_bndry takes care of boundary points (there is no Xpar_vec_gather_bndry as they are only written and not read). Xpar_vec_scatter_all is Xpar_vec_scatter followd by Xpar_vec_scatter_bndry. More... | |
| subroutine | spar_vec_gather (pv, root, v_local, v) |
| Reverse operation of Xpar_vec_scatter. All v_locals from the nodes are packed together into v on node root in correct order. More... | |
| subroutine | spar_vec_allgather (pv, v, v_local) |
| Like Xpar_vec_gather but the result is gathered on all nodes, i. e. v has to be a properly allocated array on all nodes. More... | |
| subroutine | cpar_vec_scatter (pv, root, v_local, v) |
| Generally: Xpar_vec_gather and Xpar_vec_scatter only consider inner points. Xpar_vec_scatter_bndry takes care of boundary points (there is no Xpar_vec_gather_bndry as they are only written and not read). Xpar_vec_scatter_all is Xpar_vec_scatter followd by Xpar_vec_scatter_bndry. More... | |
| subroutine | cpar_vec_gather (pv, root, v_local, v) |
| Reverse operation of Xpar_vec_scatter. All v_locals from the nodes are packed together into v on node root in correct order. More... | |
| subroutine | cpar_vec_allgather (pv, v, v_local) |
| Like Xpar_vec_gather but the result is gathered on all nodes, i. e. v has to be a properly allocated array on all nodes. More... | |
| subroutine, public par_vec_oct_m::par_vec_init | ( | type(mpi_grp_t), intent(in) | mpi_grp, |
| integer(int64), intent(in) | np_global, | ||
| type(index_t), intent(in) | idx, | ||
| type(stencil_t), intent(in) | stencil, | ||
| class(space_t), intent(in) | space, | ||
| type(partition_t), intent(in) | partition, | ||
| type(par_vec_t), intent(inout) | pv, | ||
| type(namespace_t), intent(in) | namespace | ||
| ) |
Initializes a par_vec_type object (parallel vector).
It computes the local-to-global and global-to-local index tables and the ghost point exchange.
| [in] | mpi_grp | MPI group to use. |
| [in] | np_global | meshnp_global |
| [in] | stencil | The stencil for which to calculate ghost points. |
| [in,out] | pv | Description of partition. |
Definition at line 299 of file par_vec.F90.
| subroutine, public par_vec_oct_m::par_vec_end | ( | type(par_vec_t), intent(inout) | pv | ) |
Deallocate memory used by pv.
Definition at line 749 of file par_vec.F90.
| integer function, public par_vec_oct_m::par_vec_global2local | ( | type(par_vec_t), intent(in) | pv, |
| integer(int64), intent(in) | ipg | ||
| ) |
Returns local number of global point ip on the local node If the result is zero, the point is not available on the local node.
Definition at line 787 of file par_vec.F90.
| integer(int64) function, public par_vec_oct_m::par_vec_local2global | ( | type(par_vec_t), intent(in) | pv, |
| integer, intent(in) | ip | ||
| ) |
Returns global index of local point ip.
Definition at line 808 of file par_vec.F90.
|
private |
Definition at line 831 of file par_vec.F90.
|
private |
Generally: Xpar_vec_gather and Xpar_vec_scatter only consider inner points. Xpar_vec_scatter_bndry takes care of boundary points (there is no Xpar_vec_gather_bndry as they are only written and not read). Xpar_vec_scatter_all is Xpar_vec_scatter followd by Xpar_vec_scatter_bndry.
Definition at line 928 of file par_vec.F90.
|
private |
Reverse operation of Xpar_vec_scatter. All v_locals from the nodes are packed together into v on node root in correct order.
| [out] | v | in order to prevent unassociated pointer errors, |
Definition at line 991 of file par_vec.F90.
|
private |
Like Xpar_vec_gather but the result is gathered on all nodes, i. e. v has to be a properly allocated array on all nodes.
Definition at line 1054 of file par_vec.F90.
|
private |
Generally: Xpar_vec_gather and Xpar_vec_scatter only consider inner points. Xpar_vec_scatter_bndry takes care of boundary points (there is no Xpar_vec_gather_bndry as they are only written and not read). Xpar_vec_scatter_all is Xpar_vec_scatter followd by Xpar_vec_scatter_bndry.
Definition at line 1157 of file par_vec.F90.
|
private |
Reverse operation of Xpar_vec_scatter. All v_locals from the nodes are packed together into v on node root in correct order.
| [out] | v | in order to prevent unassociated pointer errors, |
Definition at line 1220 of file par_vec.F90.
|
private |
Like Xpar_vec_gather but the result is gathered on all nodes, i. e. v has to be a properly allocated array on all nodes.
Definition at line 1283 of file par_vec.F90.
|
private |
Generally: Xpar_vec_gather and Xpar_vec_scatter only consider inner points. Xpar_vec_scatter_bndry takes care of boundary points (there is no Xpar_vec_gather_bndry as they are only written and not read). Xpar_vec_scatter_all is Xpar_vec_scatter followd by Xpar_vec_scatter_bndry.
Definition at line 1386 of file par_vec.F90.
|
private |
Reverse operation of Xpar_vec_scatter. All v_locals from the nodes are packed together into v on node root in correct order.
| [out] | v | in order to prevent unassociated pointer errors, |
Definition at line 1449 of file par_vec.F90.
|
private |
Like Xpar_vec_gather but the result is gathered on all nodes, i. e. v has to be a properly allocated array on all nodes.
Definition at line 1512 of file par_vec.F90.
|
private |
Generally: Xpar_vec_gather and Xpar_vec_scatter only consider inner points. Xpar_vec_scatter_bndry takes care of boundary points (there is no Xpar_vec_gather_bndry as they are only written and not read). Xpar_vec_scatter_all is Xpar_vec_scatter followd by Xpar_vec_scatter_bndry.
Definition at line 1619 of file par_vec.F90.
|
private |
Reverse operation of Xpar_vec_scatter. All v_locals from the nodes are packed together into v on node root in correct order.
| [out] | v | in order to prevent unassociated pointer errors, |
Definition at line 1682 of file par_vec.F90.
|
private |
Like Xpar_vec_gather but the result is gathered on all nodes, i. e. v has to be a properly allocated array on all nodes.
Definition at line 1745 of file par_vec.F90.
|
private |
Generally: Xpar_vec_gather and Xpar_vec_scatter only consider inner points. Xpar_vec_scatter_bndry takes care of boundary points (there is no Xpar_vec_gather_bndry as they are only written and not read). Xpar_vec_scatter_all is Xpar_vec_scatter followd by Xpar_vec_scatter_bndry.
Definition at line 1852 of file par_vec.F90.
|
private |
Reverse operation of Xpar_vec_scatter. All v_locals from the nodes are packed together into v on node root in correct order.
| [out] | v | in order to prevent unassociated pointer errors, |
Definition at line 1915 of file par_vec.F90.
|
private |
Like Xpar_vec_gather but the result is gathered on all nodes, i. e. v has to be a properly allocated array on all nodes.
Definition at line 1978 of file par_vec.F90.