59 CHARACTER(LEN=*),
DIMENSION(:),
INTENT(IN) :: HSELECT
61 TYPE(
ocean_t),
INTENT(INOUT) :: O
64 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
71 CHARACTER(LEN=12) :: YRECFM
72 CHARACTER(LEN=4 ) :: YLVL
73 CHARACTER(LEN=100):: YCOMMENT
74 CHARACTER(LEN=14) :: YFORM
78 REAL,
DIMENSION(SIZE(O%XSEAT,1)) :: ZWORK
79 REAL(KIND=JPRB) :: ZHOOK_HANDLE
82 IF (
lhook)
CALL dr_hook(
'WRITESURF_OCEAN_N',0,zhook_handle)
87 ycomment=
'flag to use OCEAN model' 88 CALL write_surf(hselect, hprogram,yrecfm,o%LMERCATOR,iresp,hcomment=ycomment
90 IF (.NOT. o%LMERCATOR .AND.
lhook)
CALL dr_hook(
'WRITESURF_OCEAN_N',1,zhook_handle
91 IF (.NOT. o%LMERCATOR)
RETURN 95 ycomment=
'Number of OCEAN levels' 99 WRITE(ylvl,
'(I4)') jlevel
100 yrecfm=
'LEVL_OC'//adjustl(ylvl(:len_trim(ylvl)))
101 yform=
'(A21,I1.1,A4)' 102 IF (jlevel >= 10) yform=
'(A21,I2.2,A4)' 103 WRITE(ycomment,fmt=yform)
'Depth of OCEAN level ',jlevel,
' (m)' 104 CALL write_surf(hselect, hprogram,yrecfm,
xzhoc(jlevel),iresp,hcomment=ycomment
109 ycomment=
'Relaxation time of ocean model (s)' 110 CALL write_surf(hselect, hprogram,yrecfm,or%XTAU_REL,iresp,hcomment=ycomment
113 ycomment=
'FLAG FOR RELAXATION ON CURRENT' 114 CALL write_surf(hselect, hprogram,yrecfm,or%LREL_CUR,iresp,hcomment=ycomment
117 ycomment=
'FLAG FOR RELAXATION ON T,S' 118 CALL write_surf(hselect, hprogram,yrecfm,or%LREL_TS,iresp,hcomment=ycomment
120 yrecfm=
'LFLX_NULL_OC' 121 ycomment=
'FLAG FOR ZERO FLUX ' 122 CALL write_surf(hselect, hprogram,yrecfm,or%LFLUX_NULL,iresp,hcomment=ycomment
125 ycomment=
'FLAG FOR FLUX CORRECTION ' 126 CALL write_surf(hselect, hprogram,yrecfm,or%LFLX_CORR,iresp,hcomment=ycomment
129 ycomment=
'FLUX CORRECTION COEFF (W/M2/K)' 130 CALL write_surf(hselect, hprogram,yrecfm,or%XQCORR,iresp,hcomment=ycomment
133 ycomment=
'FLAG FOR DIAPYCNAL MIXING ' 134 CALL write_surf(hselect, hprogram,yrecfm,or%LDIAPYCNAL,iresp,hcomment=ycomment
144 WRITE(ylvl,
'(I4)') jlevel
145 yrecfm=
'DTFNSOL'//adjustl(ylvl(:len_trim(ylvl)))
146 yform=
'(A11,I1.1,A5)' 147 IF (jlevel >= 10) yform=
'(A11,I2.2,A5)' 149 WRITE(ycomment,fmt=yform)
'X_Y_DTFNSOL',jlevel,
' (°C)' 151 CALL write_surf(hselect,hprogram,yrecfm,zwork,iresp,hcomment=ycomment)
156 WRITE(ylvl,
'(I4)') jlevel
157 yrecfm=
'TEMP_OC'//adjustl(ylvl(:len_trim(ylvl)))
158 yform=
'(A11,I1.1,A5)' 159 IF (jlevel >= 10) yform=
'(A11,I2.2,A5)' 161 WRITE(ycomment,fmt=yform)
'X_Y_TEMP_OC',jlevel,
' (°C)' 162 zwork=o%XSEAT(:,jlevel)
163 CALL write_surf(hselect,hprogram,yrecfm,zwork,iresp,hcomment=ycomment)
168 WRITE(ylvl,
'(I4)') jlevel
169 yrecfm=
'DTFSOL'//adjustl(ylvl(:len_trim(ylvl)))
170 yform=
'(A11,I1.1,A5)' 171 IF (jlevel >= 10) yform=
'(A11,I2.2,A5)' 173 WRITE(ycomment,fmt=yform)
'X_Y_DTFSOL',jlevel,
' (°C/s)' 174 zwork=o%XDTFSOL(:,jlevel)
175 CALL write_surf(hselect,hprogram,yrecfm,zwork,iresp,hcomment=ycomment)
181 WRITE(ylvl,
'(I4)') jlevel
182 yrecfm=
'T_OC_REL'//adjustl(ylvl(:len_trim(ylvl)))
183 yform=
'(A11,I1.1,A5)' 184 IF (jlevel >= 10) yform=
'(A11,I2.2,A5)' 186 WRITE(ycomment,fmt=yform)
'X_Y_T_OC_REL',jlevel,
' (°C)' 187 zwork=or%XSEAT_REL(:,jlevel)
188 CALL write_surf(hselect,hprogram,yrecfm,zwork,iresp,hcomment=ycomment)
194 WRITE(ylvl,
'(I4)') jlevel
195 yrecfm=
'SALT_OC'//adjustl(ylvl(:len_trim(ylvl)))
196 yform=
'(A11,I1.1,A5)' 197 IF (jlevel >= 10) yform=
'(A11,I2.2,A5)' 198 WRITE(ycomment,fmt=yform)
'X_Y_SALT_OC',jlevel,
'(psu)' 199 zwork=o%XSEAS(:,jlevel)
200 CALL write_surf(hselect,hprogram,yrecfm,zwork,iresp,hcomment=ycomment)
206 WRITE(ylvl,
'(I4)') jlevel
207 yrecfm=
'S_OC_REL'//adjustl(ylvl(:len_trim(ylvl)))
208 yform=
'(A11,I1.1,A5)' 209 IF (jlevel >= 10) yform=
'(A11,I2.2,A5)' 210 WRITE(ycomment,fmt=yform)
'X_Y_S_OC_REL',jlevel,
'(psu)' 211 zwork=or%XSEAS_REL(:,jlevel)
212 CALL write_surf(hselect,hprogram,yrecfm,zwork,iresp,hcomment=ycomment)
218 WRITE(ylvl,
'(I4)') jlevel
219 yrecfm=
'U_OC_REL'//adjustl(ylvl(:len_trim(ylvl)))
220 yform=
'(A11,I1.1,A5)' 221 IF (jlevel >= 10) yform=
'(A11,I2.2,A5)' 222 WRITE(ycomment,fmt=yform)
'X_Y_U_OC_REL',jlevel,
' M/S' 223 zwork=or%XSEAU_REL(:,jlevel)
224 CALL write_surf(hselect, hprogram,yrecfm,zwork,iresp,hcomment=ycomment
228 WRITE(ylvl,
'(I4)') jlevel
229 yrecfm=
'UCUR_OC'//adjustl(ylvl(:len_trim(ylvl)))
230 yform=
'(A11,I1.1,A5)' 231 IF (jlevel >= 10) yform=
'(A11,I2.2,A5)' 232 WRITE(ycomment,fmt=yform)
'X_Y_UCUR_OC',jlevel,
' (m/s)' 233 zwork=o%XSEAU(:,jlevel)
234 CALL write_surf(hselect,hprogram,yrecfm,zwork,iresp,hcomment=ycomment)
240 WRITE(ylvl,
'(I4)') jlevel
241 yrecfm=
'V_OC_REL'//adjustl(ylvl(:len_trim(ylvl)))
242 yform=
'(A11,I1.1,A5)' 243 IF (jlevel >= 10) yform=
'(A11,I2.2,A5)' 244 WRITE(ycomment,fmt=yform)
'X_Y_V_OC_REL',jlevel,
' M/S' 245 zwork=or%XSEAV_REL(:,jlevel)
246 CALL write_surf(hselect,hprogram,yrecfm,zwork,iresp,hcomment=ycomment)
250 WRITE(ylvl,
'(I4)') jlevel
251 yrecfm=
'VCUR_OC'//adjustl(ylvl(:len_trim(ylvl)))
252 yform=
'(A11,I1.1,A5)' 253 IF (jlevel >= 10) yform=
'(A11,I2.2,A5)' 254 WRITE(ycomment,fmt=yform)
'X_Y_VCUR_OC',jlevel,
'(m/s)' 255 zwork=o%XSEAV(:,jlevel)
256 CALL write_surf(hselect,hprogram,yrecfm,zwork,iresp,hcomment=ycomment)
262 WRITE(ylvl,
'(I4)') jlevel
263 yrecfm=
'TKE_OC'//adjustl(ylvl(:len_trim(ylvl)))
264 yform=
'(A11,I1.1,A5)' 265 IF (jlevel >= 10) yform=
'(A11,I2.2,A5)' 266 WRITE(ycomment,fmt=yform)
'X_Y_TKE_OC',jlevel,
' (J)' 267 zwork=o%XSEAE(:,jlevel)
268 CALL write_surf(hselect,hprogram,yrecfm,zwork,iresp,hcomment=ycomment)
274 WRITE(ylvl,
'(I4)') jlevel
275 yrecfm=
'KMEL_OC'//adjustl(ylvl(:len_trim(ylvl)))
276 yform=
'(A11,I1.1,A5)' 277 IF (jlevel >= 10) yform=
'(A11,I2.2,A5)' 278 WRITE(ycomment,fmt=yform)
'X_Y_KMEL_OC',jlevel,
' (m2/s2)' 279 zwork=o%XKMEL(:,jlevel)
280 CALL write_surf(hselect,hprogram,yrecfm,zwork,iresp,hcomment=ycomment)
291 WRITE(ylvl,
'(I4)') jlevel
292 yrecfm=
'SEAINDBATH'//adjustl(ylvl(:len_trim(ylvl)))
293 yform=
'(A11,I1.1,A5)' 294 IF (jlevel >= 10) yform=
'(A11,I2.2,A5)' 295 WRITE(ycomment,fmt=yform)
'X_Y_SEAINDBATH',jlevel,
' (J)' 296 zwork=o%XSEABATH(:,jlevel)
297 CALL write_surf(hselect,hprogram,yrecfm,zwork,iresp,hcomment=ycomment)
311 CALL write_surf(hselect,hprogram,yrecfm,o%XSEAHMO(:),iresp,hcomment=ycomment
313 IF (
lhook)
CALL dr_hook(
'WRITESURF_OCEAN_N',1,zhook_handle)
subroutine writesurf_ocean_n(HSELECT, O, OR, HPROGRAM)
real, dimension(:), pointer xzhoc