57 USE modi_get_latlonmask_n
60 USE modi_get_surf_mask_n
62 USE modi_get_type_dim_n
79 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
80 CHARACTER(LEN=7),
INTENT(IN) :: HSURF
81 CHARACTER(LEN=28),
INTENT(IN) :: HFILE
82 INTEGER,
INTENT(IN) :: KLUOUT
84 REAL,
POINTER,
DIMENSION(:,:,:) :: PFIELD
88 REAL,
DIMENSION(:),
ALLOCATABLE :: ZLAT
89 REAL,
DIMENSION(:),
ALLOCATABLE :: ZLON
90 REAL,
DIMENSION(:),
ALLOCATABLE :: ZDEPTH
91 REAL,
DIMENSION(:,:,:),
ALLOCATABLE :: ZFIELD
92 REAL,
DIMENSION(:,:,:,:),
ALLOCATABLE :: ZFIELDR
94 INTEGER,
DIMENSION(0:NPROC-1) :: INB
100 INTEGER :: INFOMPI, JJ
102 INTEGER,
DIMENSION(:),
POINTER :: IMASK
103 CHARACTER(LEN=6) :: YMASK
104 REAL(KIND=JPRB) :: ZHOOK_HANDLE
107 IF (
lhook)
CALL dr_hook(
'PREP_OCEAN_ASCLLV',0,zhook_handle)
109 IF (.NOT.
ALLOCATED(
nnum))
THEN 110 ALLOCATE(
nnum(u%NDIM_FULL))
113 ALLOCATE(
nindex(u%NDIM_FULL))
126 CALL mpi_bcast(ug%NGRID_FULL_PAR,kind(ug%NGRID_FULL_PAR)/4,mpi_integer,
npio,
ncomm,infompi)
128 IF (
nrank/=
npio)
ALLOCATE(ug%XGRID_FULL_PAR(ug%NGRID_FULL_PAR))
130 CALL mpi_bcast(ug%XGRID_FULL_PAR,&
131 SIZE(ug%XGRID_FULL_PAR)*kind(ug%XGRID_FULL_PAR)/4,mpi_real,
npio,
ncomm,infompi)
150 WRITE(kluout,*)
"==================================== " 151 WRITE(kluout,*)
"Control print in prep_ocean_ascllv " 152 WRITE(kluout,*)
"NL, NOCKMAX",
nl,
nockmax 162 WRITE(kluout,*)
"ZFIELDR",shape(zfieldr)
163 WRITE(kluout,*)
"File name used in ocean ascllv", hfile
165 WRITE(kluout,*)
"USURF= " , hsurf
166 WRITE(kluout,*)
"NL (dim)=",
nl 167 WRITE(kluout,*)
"IL (dim)=", il
171 CALL open_file(hprogram,iglb,hfile,
'FORMATTED',haction=
'READ')
176 READ(iglb,*,end=99) zlat(ji),zlon(ji), zdepth(jk), &
177 zfieldr(ji,jk,1,1), zfieldr(ji,jk,2,1),zfieldr(ji,jk,3,1), &
189 WRITE(kluout,*) minval(zfieldr), maxval(zfieldr)
195 zfield(:,:,1) = zfieldr(:,:,1,1)
197 zfield(:,:,1) = zfieldr(:,:,2,1)
199 zfield(:,:,1) = zfieldr(:,:,3,1)
201 zfield(:,:,1) = zfieldr(:,:,4,1)
215 WRITE(kluout,*)
"IDIM (dim sea) =", idim
217 ALLOCATE(pfield(1:idim,1:
SIZE(zfield,2),1:
SIZE(zfield,3)))
219 IF (idim/=
SIZE(pfield,1))
THEN 220 WRITE(kluout,*)
'Wrong dimension of MASK: ',idim,
SIZE(pfield)
221 CALL abor1_sfx(
'PGD_FIELD: WRONG DIMENSION OF MASK')
224 ALLOCATE(imask(idim))
235 IF (
ALLOCATED(zlon ))
DEALLOCATE(zlon )
236 IF (
ALLOCATED(zlat ))
DEALLOCATE(zlat )
237 IF (
ALLOCATED(zdepth ))
DEALLOCATE(zdepth )
238 IF (
ALLOCATED(zfield ))
DEALLOCATE(zfield )
239 IF (
ALLOCATED(zfieldr ))
DEALLOCATE(zfieldr )
243 DEALLOCATE(
nindex,ug%XGRID_FULL_PAR)
247 IF (
lhook)
CALL dr_hook(
'PREP_OCEAN_ASCLLV',1,zhook_handle)
subroutine get_type_dim_n(DTCO, U, HTYPE, KDIM)
subroutine get_latlonmask_n(UG, OLATLONMASK, HGRID, PGRID_PAR, KGRID_PAR
subroutine open_file(HPROGRAM, KUNIT, HFILE, HFORM, HACTION, HACCESS, KR
logical, dimension(720, 360) llatlonmask
character(len=6) cinterp_type
subroutine prep_ocean_ascllv(DTCO, UG, U, HPROGRAM, HSURF, HFILE, KLUOUT, PFIELD)
integer, dimension(:), allocatable nnum
subroutine abor1_sfx(YTEXT)
subroutine get_surf_mask_n(DTCO, U, HTYPE, KDIM, KMASK, KLU, KLUOUT)
real, dimension(:), pointer xgrid_par
subroutine close_file(HPROGRAM, KUNIT)
integer, dimension(:), allocatable nindex