6 kproc,ksize,kprocmin,ksize_task,oshadows)
26 USE modi_init_io_surf_n
28 USE modi_read_gridtype
31 USE modi_end_io_surf_n
33 USE yomhook
,ONLY : lhook, dr_hook
34 USE parkind1
,ONLY : jprb
46 INTEGER,
INTENT(IN) :: kproc
47 INTEGER,
INTENT(IN) :: ksize
48 INTEGER,
INTENT(IN) :: kprocmin
49 LOGICAL,
INTENT(IN),
OPTIONAL :: oshadows
55 INTEGER,
DIMENSION(0:KPROC-1),
INTENT(OUT) :: ksize_task
60 INTEGER :: isize, ireste, inreste
62 INTEGER :: isize_y,iny_thread,iny_reste
64 REAL(KIND=JPRB) :: zhook_handle
66 IF (lhook) CALL dr_hook(
'GET_SIZES_PARALLEL',0,zhook_handle)
69 IF (present(oshadows))
THEN
85 csurf_filetype,
'FULL ',
'SURF ',
'READ ')
87 csurf_filetype,
'GRID_TYPE',ug%CGRID,iresp,hdir=
'A')
89 csurf_filetype,ug%CGRID,ug%NGRID_PAR,u%NDIM_FULL,.false.,hdir=
"A")
90 ALLOCATE(ug%XGRID_FULL_PAR(ug%NGRID_PAR))
92 csurf_filetype,ug%CGRID,ug%NGRID_PAR,u%NDIM_FULL,.true.,ug%XGRID_FULL_PAR,iresp,hdir=
"A")
94 CALL
get_grid_dim(ug%CGRID,
SIZE(ug%XGRID_FULL_PAR),ug%XGRID_FULL_PAR,grect,nix,niy)
95 ug%XGRID_FULL_PAR=>null()
109 iny_thread=isize_y/kproc
110 iny_reste=isize_y-kproc*iny_thread
112 ksize_task(:)=iny_thread*nix
114 DO j=kprocmin+kproc-iny_reste,kprocmin+kproc-1
115 ksize_task(mod(j,kproc))=ksize_task(mod(j,kproc))+nix
119 isize = ceiling(ksize*1./kproc)
121 inreste = kproc*isize - ksize
128 ksize_task(:) = isize
130 DO j = kprocmin+kproc-inreste,kprocmin+kproc-1
131 ksize_task(mod(j,kproc)) = ireste
147 IF (lhook) CALL dr_hook(
'GET_SIZES_PARALLEL',1,zhook_handle)
subroutine init_io_surf_n(DTCO, DGU, U, HPROGRAM, HMASK, HSCHEME, HACTION)
subroutine read_gridtype(HPROGRAM, HGRID, KGRID_PAR, KLU, OREAD, PGRID_PAR, KRESP, HDIR)
subroutine get_sizes_parallel(DTCO, DGU, UG, U, KPROC, KSIZE, KPROCMIN, KSIZE_TASK, OSHADOWS)
subroutine get_grid_dim(HGRID, KGRID_PAR, PGRID_PAR, ORECT, KDIM1, KDIM2)
subroutine end_io_surf_n(HPROGRAM)