All serial and local || Decomp_type=0
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(pc_type), | intent(inout) | :: | self | |||
class(fieldmat_type), | intent(inout) | :: | fieldmat |
subroutine pc_decomp_all_serial_local(self, fieldmat)
implicit none
class(pc_type), intent(inout) :: self
class(fieldmat_type), intent(in out) :: fieldmat
integer :: ik, is, ic, ifq
integer :: nrow_tmp
!First of all override previously found is_local array
!to force all cells to be considered on every processor
self%is_local=1
!Now we calculate how much data is available
call self%count_avail(fieldmat)
!Set the number of rows responsible
self%nresp_per_cell=self%navail_per_cell
!Now loop over all cells, setting the row_llim of
!their row blocks
do ik=1,fieldmat%naky
do is=1,fieldmat%kyb(ik)%nsupercell
nrow_tmp=fieldmat%kyb(ik)%supercells(is)%nrow
do ic=1,fieldmat%kyb(ik)%supercells(is)%ncell
do ifq=1,fieldmat%kyb(ik)%supercells(is)%cells(ic)%nrb
fieldmat%kyb(ik)%supercells(is)%cells(ic)%rb(ifq)%row_llim=1
fieldmat%kyb(ik)%supercells(is)%cells(ic)%rb(ifq)%row_ulim=nrow_tmp
call fieldmat%kyb(ik)%supercells(is)%cells(ic)%rb(ifq)%set_nrow
enddo
enddo
enddo
enddo
end subroutine pc_decomp_all_serial_local