55 USE modi_ocean_mercatorvergrid
61 USE modi_get_type_dim_n
70 TYPE(
ocean_t),
INTENT(INOUT) :: O
74 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
83 CHARACTER(LEN=4) :: YLVL
85 CHARACTER(LEN=12) :: YRECFM
86 CHARACTER(LEN=14) :: YFORM
87 REAL,
DIMENSION(:),
ALLOCATABLE :: ZWORK
93 REAL(KIND=JPRB) :: ZHOOK_HANDLE
100 CALL read_surf(hprogram,yrecfm,iversion,iresp)
104 IF (iversion<=3)
THEN 108 CALL read_surf(hprogram,yrecfm,o%LMERCATOR,iresp)
111 IF (.NOT. o%LMERCATOR)
THEN 112 ALLOCATE(o%XSEAT(0,0))
113 ALLOCATE(o%XSEAS(0,0))
114 ALLOCATE(o%XSEAU(0,0))
115 ALLOCATE(o%XSEAV(0,0))
116 ALLOCATE(or%XSEAT_REL(0,0))
117 ALLOCATE(or%XSEAS_REL(0,0))
118 ALLOCATE(or%XSEAU_REL(0,0))
119 ALLOCATE(or%XSEAV_REL(0,0))
121 ALLOCATE(o%XSEAE(0,0))
122 ALLOCATE(o%XSEABATH(0,0))
123 ALLOCATE(o%XSEAHMO(0))
124 ALLOCATE(o%XLE (0,0))
125 ALLOCATE(o%XLK (0,0))
126 ALLOCATE(o%XKMEL (0,0))
127 ALLOCATE(o%XKMELM (0,0))
128 ALLOCATE(o%XSEATEND (0))
129 ALLOCATE(o%XDTFSOL(0,0))
130 ALLOCATE(o%XDTFNSOL(0))
145 WRITE(ylvl,
'(I4)') jlevel
146 yrecfm=
'LEVL_OC'//adjustl(ylvl(:len_trim(ylvl)))
154 CALL read_surf(hprogram,yrecfm,or%XTAU_REL,iresp)
157 CALL read_surf(hprogram,yrecfm,or%LREL_CUR,iresp)
160 CALL read_surf(hprogram,yrecfm,or%LREL_TS,iresp)
161 yrecfm=
'LFLX_NULL_OC' 162 CALL read_surf(hprogram,yrecfm,or%LFLUX_NULL,iresp)
163 yrecfm=
'LFLX_CORR_OC' 164 CALL read_surf(hprogram,yrecfm,or%LFLX_CORR,iresp)
166 CALL read_surf(hprogram,yrecfm,or%XQCORR,iresp)
168 CALL read_surf(hprogram,yrecfm,or%LDIAPYCNAL,iresp)
184 WRITE(ylvl,
'(I4)') jlevel
185 yrecfm=
'TEMP_OC'//adjustl(ylvl(:len_trim(ylvl)))
186 CALL read_surf(hprogram,yrecfm,zwork(:),iresp)
187 o%XSEAT(:,jlevel)=zwork(:)
196 WRITE(ylvl,
'(I4)') jlevel
197 yrecfm=
'T_OC_REL'//adjustl(ylvl(:len_trim(ylvl)))
198 CALL read_surf(hprogram,yrecfm,zwork(:),iresp)
199 or%XSEAT_REL(:,jlevel)=zwork(:)
208 WRITE(ylvl,
'(I4)') jlevel
209 yrecfm=
'SALT_OC'//adjustl(ylvl(:len_trim(ylvl)))
210 CALL read_surf(hprogram,yrecfm,zwork(:),iresp)
211 o%XSEAS(:,jlevel)=zwork(:)
220 WRITE(ylvl,
'(I4)') jlevel
221 yrecfm=
'S_OC_REL'//adjustl(ylvl(:len_trim(ylvl)))
222 CALL read_surf(hprogram,yrecfm,zwork(:),iresp)
223 or%XSEAS_REL(:,jlevel)=zwork(:)
233 WRITE(ylvl,
'(I4)') jlevel
234 yrecfm=
'U_OC_REL'//adjustl(ylvl(:len_trim(ylvl)))
235 CALL read_surf(hprogram,yrecfm,zwork(:),iresp)
236 or%XSEAU_REL(:,jlevel)=zwork(:)
241 WRITE(ylvl,
'(I4)') jlevel
242 yrecfm=
'V_OC_REL'//adjustl(ylvl(:len_trim(ylvl)))
243 CALL read_surf(hprogram,yrecfm,zwork(:),iresp)
244 or%XSEAV_REL(:,jlevel)=zwork(:)
252 WRITE(ylvl,
'(I4)') jlevel
253 yrecfm=
'UCUR_OC'//adjustl(ylvl(:len_trim(ylvl)))
254 CALL read_surf(hprogram,yrecfm,zwork(:),iresp)
255 o%XSEAU(:,jlevel)=zwork(:)
258 WRITE(ylvl,
'(I4)') jlevel
259 yrecfm=
'VCUR_OC'//adjustl(ylvl(:len_trim(ylvl)))
260 CALL read_surf(hprogram,yrecfm,zwork(:),iresp)
261 o%XSEAV(:,jlevel)=zwork(:)
271 WRITE(ylvl,
'(I4)') jlevel
272 yrecfm=
'TKE_OC'//adjustl(ylvl(:len_trim(ylvl)))
273 CALL read_surf(hprogram,yrecfm,zwork(:),iresp)
274 o%XSEAE(:,jlevel)=zwork(:)
289 WRITE(ylvl,
'(I4)') jlevel
290 yrecfm=
'SEAINDBATH'//adjustl(ylvl(:len_trim(ylvl)))
291 CALL read_surf(hprogram,yrecfm,zwork(:),iresp)
292 o%XSEABATH(:,jlevel)=zwork(:)
300 IF (o%XSEABATH(j,jlevel)==0.)
THEN 301 o%XSEAT(j,jlevel)=o%XSEAT(j,jlevel-1)
302 o%XSEAS(j,jlevel)=o%XSEAS(j,jlevel-1)
303 o%XSEAU(j,jlevel)=o%XSEAU(j,jlevel-1)
304 o%XSEAV(j,jlevel)=o%XSEAV(j,jlevel-1)
305 o%XSEAE(j,jlevel)=o%XSEAE(j,jlevel-1)
307 or%XSEAT_REL(j,jlevel)=or%XSEAT_REL(j,jlevel-1)
308 or%XSEAS_REL(j,jlevel)=or%XSEAS_REL(j,jlevel-1)
309 or%XSEAU_REL(j,jlevel)=or%XSEAU_REL(j,jlevel-1)
310 or%XSEAV_REL(j,jlevel)=or%XSEAV_REL(j,jlevel-1)
317 ALLOCATE(o%XSEAHMO(ilu))
319 CALL read_surf(hprogram,yrecfm,o%XSEAHMO(:),iresp)
331 ALLOCATE(o%XSEATEND (
SIZE(o%XSEAT,1)))
335 ALLOCATE(o%XDTFNSOL(ilu))
subroutine get_type_dim_n(DTCO, U, HTYPE, KDIM)
subroutine read_ocean_n(DTCO, O, OR, U, HPROGRAM)
real, dimension(:), pointer xzhoc
subroutine ocean_mercatorvergrid