|
DOUG 0.2
|
Functions/Subroutines | |
| subroutine | SpMtx_arrangement::SpMtx_build_ghost (clr, ol, A, A_ghost, M, clrorder, clrstarts) |
| Calculates overlap and then figures out which vector values need to be exchanged and which matrix values must be used in parallel matrix-vector multiplication and first level preconditioner. | |
Variables | |
| integer | SpMtx_class::SpMtx::ol0nnz = -1 |
| This is needed in parallel aggregation case with zero overlap. | |
Block structure | |
| integer | SpMtx_class::SpMtx::nblocks = -1 |
| number of blocks | |
| integer | SpMtx_class::SpMtx::mtx_inner_bound = -1 |
| Bound to separate inner nodes. | |
| integer, dimension(:,:), pointer | SpMtx_class::SpMtx::mtx_bbs |
| Subblock start: mtx_bbs[2*nblocks,2*nblocks] For the block (i,j) bs=mtx_bbs(i,j) gives the starting block index 'bs' for 'indi(bs)', 'indj(bs)' and 'val(bs)'. | |
| integer, dimension(:,:), pointer | SpMtx_class::SpMtx::mtx_bbe |
| Subblock end: mtx_bbe[2*nblocks,2*nblocks] For the block (i,j) be=mtx_bbe(i,j) gives the ending block index 'be' for 'indi(be)', 'indj(be)' and 'val(be)'. | |
| subroutine SpMtx_arrangement::SpMtx_build_ghost | ( | integer,intent(in) | clr, |
| integer,intent(in) | ol, | ||
| type(SpMtx),intent(inout) | A, | ||
| type(SpMtx),intent(inout) | A_ghost, | ||
| type(Mesh) | M, | ||
| integer,dimension(:),pointer | clrorder, | ||
| integer,dimension(:),pointer | clrstarts | ||
| ) |
Calculates overlap and then figures out which vector values need to be exchanged and which matrix values must be used in parallel matrix-vector multiplication and first level preconditioner.
The implementation takes 2 times overlap from the point of each domain, so that it can move steps back and deduce the overlap from the perspective of each neighbour.
Definition at line 1028 of file SpMtx_arrangement.F90.
References DOUG_utils::DOUG_abort(), globals::numprocs, DOUG_utils::quicksort(), RealKind::rk, globals::sctls, SpMtx_class::SpMtx_newInit(), and globals::stream.
Referenced by SpMtx_distribution_mod::SpMtx_localize().
integer,dimension(:,:),pointer SpMtx_class::SpMtx::mtx_bbe [inherited] |
Subblock end: mtx_bbe[2*nblocks,2*nblocks] For the block (i,j) be=mtx_bbe(i,j) gives the ending block index 'be' for 'indi(be)', 'indj(be)' and 'val(be)'.
Definition at line 129 of file SpMtx_class.F90.
integer,dimension(:,:),pointer SpMtx_class::SpMtx::mtx_bbs [inherited] |
Subblock start: mtx_bbs[2*nblocks,2*nblocks] For the block (i,j) bs=mtx_bbs(i,j) gives the starting block index 'bs' for 'indi(bs)', 'indj(bs)' and 'val(bs)'.
Definition at line 125 of file SpMtx_class.F90.
integer SpMtx_class::SpMtx::mtx_inner_bound = -1 [inherited] |
Bound to separate inner nodes.
Definition at line 121 of file SpMtx_class.F90.
integer SpMtx_class::SpMtx::nblocks = -1 [inherited] |
number of blocks
Definition at line 119 of file SpMtx_class.F90.
integer SpMtx_class::SpMtx::ol0nnz = -1 [inherited] |
This is needed in parallel aggregation case with zero overlap.
then Amtx_bbe(2,2)+1,...,Annz holds the "incoming" nonzeroes, ie, indi local, indj ghost Annz+1,...,Aol0nnz holds the "outgoing" nonzeroes, ie, indi ghost, indj local
Definition at line 138 of file SpMtx_class.F90.
1.7.3-20110217