DOUG 0.2
Functions/Subroutines | Variables

Domain_decomp

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)'.

Function/Subroutine Documentation

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().


Variable Documentation

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.