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, 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 293 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 743 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 781 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 802 of file par_vec.F90.
|
private |
Definition at line 825 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 922 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 985 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 1047 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 1150 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 1213 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 1275 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 1378 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 1441 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 1503 of file par_vec.F90.