Changeset 1852
- Timestamp:
- Aug 30, 2013, 10:47:10 AM (11 years ago)
- Location:
- LMDZ5/trunk/libf
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/bibio/wxios.F90
r1825 r1852 18 18 TYPE(xios_context), SAVE :: g_ctx 19 19 !$OMP THREADPRIVATE(g_comm,g_cts_name,g_ctx) 20 LOGICAL, SAVE :: g_flag_xml = .FALSE. 21 CHARACTER(len=100) :: g_field_name = "nofield" 22 !$OMP THREADPRIVATE(g_flag_xml,g_field_name) 23 20 24 21 25 CONTAINS … … 25 29 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 26 30 27 SUBROUTINE concat(str, i, str_i) !MAX i = 99 28 CHARACTER(len=*), INTENT(IN) :: str 29 INTEGER, INTENT(IN) :: i 30 CHARACTER(len=100), INTENT(OUT) :: str_i 31 32 33 !INT -> CHAR: 34 CHARACTER(len=10) :: num 35 WRITE(num, "(I5)") i 36 str_i = TRIM(ADJUSTL(str//"_"//TRIM(ADJUSTL(num)))) 37 31 SUBROUTINE concat(str, str2, str_str2) 32 CHARACTER(len=*), INTENT(IN) :: str, str2 33 CHARACTER(len=20), INTENT(OUT) :: str_str2 34 35 36 str_str2 = TRIM(ADJUSTL(str//"_"//TRIM(ADJUSTL(str2)))) 37 !IF (prt_level >= 10) WRITE(lunout,*) "Xios. ",str,"+",str2,"=",str_str2 38 38 END SUBROUTINE concat 39 39 … … 47 47 48 48 INTEGER :: i = 0 49 49 !!!!!!!!!!!!!!!!!! 50 ! Pour XIOS: 51 ! year : y 52 ! month : mo 53 ! day : d 54 ! hour : h 55 ! minute : mi 56 ! second : s 57 !!!!!!!!!!!!!!!!!! 58 50 59 i = INDEX(odate, "day") 51 60 IF (i > 0) THEN 52 61 ndate = odate(1:i-1)//"d" 53 ELSE 54 i = INDEX(odate, "hr") 55 IF (i > 0) THEN 56 ndate = odate(1:i-1)//"h" 57 ELSE 58 ndate = odate 59 END IF 60 END IF 61 62 !WRITE(*,*) "Xios. ", odate, " => ", ndate 62 END IF 63 64 i = INDEX(odate, "hr") 65 IF (i > 0) THEN 66 ndate = odate(1:i-1)//"h" 67 END IF 68 69 i = INDEX(odate, "mth") 70 IF (i > 0) THEN 71 ndate = odate(1:i-1)//"mo" 72 END IF 73 74 !IF (prt_level >= 10) WRITE(lunout,*) "Xios. ", odate, " => ", ndate 63 75 END SUBROUTINE reformadate 64 76 … … 89 101 END IF 90 102 91 ! WRITE(*,*) "Xios. ", op, " => ", reformaop103 !IF (prt_level >= 10) WRITE(lunout,*) "Xios. ", op, " => ", reformaop 92 104 END FUNCTION reformaop 93 105 … … 97 109 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 98 110 99 SUBROUTINE wxios_init(xios_ctx_name) 111 SUBROUTINE wxios_init(xios_ctx_name, locom, outcom) 112 IMPLICIT NONE 113 INCLUDE 'iniprint.h' 114 100 115 CHARACTER(len=*), INTENT(IN) :: xios_ctx_name 101 102 INTEGER :: xios_comm 116 INTEGER, INTENT(IN), OPTIONAL :: locom 117 INTEGER, INTENT(OUT), OPTIONAL :: outcom 118 119 103 120 TYPE(xios_context) :: xios_ctx 104 105 WRITE(*,*) "Xios. Initialization" 106 107 !Lancement de xios: 108 CALL xios_initialize(xios_ctx_name, return_comm = xios_comm ) 109 110 !Initialisation du contexte: 111 CALL xios_context_initialize(xios_ctx_name, xios_comm) 112 CALL xios_get_handle(xios_ctx_name, xios_ctx) !Récupération 113 CALL xios_set_current_context(xios_ctx) !Activation 121 INTEGER :: xios_comm 122 123 IF (prt_level >= 10) WRITE(lunout,*) "Xios. Initialization" 124 125 126 127 IF (PRESENT(locom)) THEN 128 IF (prt_level >= 10) WRITE(lunout,*) "Xios. ctx=",xios_ctx_name,"local_comm=",locom,",return_comm=",xios_comm 129 CALL xios_initialize(xios_ctx_name, local_comm = locom, return_comm = xios_comm ) 130 ELSE 131 IF (prt_level >= 10) WRITE(lunout,*) "Xios. ctx=",xios_ctx_name,"return_comm=",outcom 132 CALL xios_initialize(xios_ctx_name, return_comm = xios_comm ) 133 END IF 134 135 IF (PRESENT(outcom)) THEN 136 outcom = xios_comm 137 END IF 114 138 115 139 !Enregistrement des variables globales: 116 140 g_comm = xios_comm 117 141 g_ctx_name = xios_ctx_name 142 143 CALL wxios_context_init() 144 145 END SUBROUTINE wxios_init 146 147 SUBROUTINE wxios_context_init() 148 IMPLICIT NONE 149 INCLUDE 'iniprint.h' 150 151 TYPE(xios_context) :: xios_ctx 152 153 !Initialisation du contexte: 154 CALL xios_context_initialize(g_ctx_name, g_comm) 155 CALL xios_get_handle(g_ctx_name, xios_ctx) !Récupération 156 CALL xios_set_current_context(xios_ctx) !Activation 118 157 g_ctx = xios_ctx 119 120 WRITE(*,*) "Xios. Current context is ", xios_ctx_name 121 END SUBROUTINE wxios_init 158 159 IF (prt_level >= 10) WRITE(lunout,*) "Xios. Current context is ", g_ctx_name 160 161 !Une première analyse des héritages: 162 CALL xios_solve_inheritance() 163 END SUBROUTINE wxios_context_init 122 164 123 165 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! … … 126 168 127 169 SUBROUTINE wxios_set_cal(pasdetemps, calendrier, annee, mois, jour, heure) 170 IMPLICIT NONE 171 INCLUDE 'iniprint.h' 172 128 173 !Paramètres: 129 174 CHARACTER(len=*), INTENT(IN) :: calendrier … … 146 191 CASE('earth_360d') 147 192 CALL xios_set_context_attr_hdl(g_ctx, calendar_type= "D360") 148 WRITE(*,*) 'Xios. Calendrier terrestre a 360 jours/an'193 IF (prt_level >= 10) WRITE(lunout,*) 'Xios. Calendrier terrestre a 360 jours/an' 149 194 CASE('earth_365d') 150 195 CALL xios_set_context_attr_hdl(g_ctx, calendar_type= "NoLeap") 151 WRITE(*,*) 'Xios. Calendrier terrestre a 365 jours/an'196 IF (prt_level >= 10) WRITE(lunout,*) 'Xios. Calendrier terrestre a 365 jours/an' 152 197 CASE('earth_366d') 153 198 CALL xios_set_context_attr_hdl(g_ctx, calendar_type= "Gregorian") 154 WRITE(*,*) 'Xios. Calendrier gregorien'199 IF (prt_level >= 10) WRITE(lunout,*) 'Xios. Calendrier gregorien' 155 200 CASE DEFAULT 156 201 abort_message = 'Xios. Mauvais choix de calendrier' … … 161 206 WRITE(date, "(i4.4,'-',i2.2,'-',i2.2,' 00:00:00')") annee, mois, jour 162 207 163 WRITE(*,*) "Xios. Initial time: ", date208 IF (prt_level >= 10) WRITE(lunout,*) "Xios. Initial time: ", date 164 209 165 210 CALL xios_set_context_attr_hdl(g_ctx, start_date= date) … … 167 212 !Et enfin,le pas de temps: 168 213 CALL xios_set_timestep(mdtime) 169 WRITE(*,*) "Xios. ts=",mdtime214 IF (prt_level >= 10) WRITE(lunout,*) "Xios. ts=",mdtime 170 215 END SUBROUTINE wxios_set_cal 216 217 SUBROUTINE wxios_set_timestep(ts) 218 REAL, INTENT(IN) :: ts 219 TYPE(xios_time) :: mdtime 220 221 mdtime = xios_time(0, 0, 0, 0, 0, ts) 222 223 CALL xios_set_timestep(mdtime) 224 END SUBROUTINE wxios_set_timestep 171 225 172 226 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 173 227 ! Pour initialiser un domaine !!!!!!!!!!!!!!!!!!!! 174 228 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 175 SUBROUTINE wxios_domain_param(dom_id, is_sequential, iim, jjm, io_lat, io_lon) 229 SUBROUTINE wxios_domain_param(dom_id, is_sequential, ni, nj, ni_glo, nj_glo, & 230 ibegin, iend, ii_begin, ii_end, jbegin, jend, & 231 data_ni, data_ibegin, data_iend, & 232 io_lat, io_lon) 176 233 234 IMPLICIT NONE 235 INCLUDE 'iniprint.h' 236 177 237 CHARACTER (len=*), INTENT(IN) :: dom_id 178 238 LOGICAL, INTENT(IN) :: is_sequential 179 INTEGER, INTENT(IN) :: iim, jjm 239 INTEGER, INTENT(IN) :: ni, nj, ni_glo, nj_glo, ibegin, iend, ii_begin, ii_end, jbegin, jend 240 INTEGER, INTENT(IN) :: data_ni, data_ibegin, data_iend 180 241 REAL, DIMENSION(:) :: io_lat, io_lon 181 242 182 243 183 244 TYPE(xios_domain) :: dom 184 INTEGER :: ni, nj, ni_glo, nj_glo, ibegin, iend, jbegin, jend 185 LOGICAl :: boool 186 187 ni_glo = iim 188 nj_glo = jjm 189 ni = iim 190 nj = jjm 191 ibegin = 1 192 jbegin = 1 193 iend = ibegin + ni - 1 194 jend = jbegin + nj - 1 245 LOGICAL :: boool 246 247 !Masque pour les problèmes de recouvrement MPI: 248 LOGICAL :: mask(ni,nj) 195 249 196 250 !On récupère le handle: 197 251 CALL xios_get_domain_handle(dom_id, dom) 198 252 199 WRITE(*,*) "Xios. ni:",iim," ni_glo:", iim, " nj:", jjm, " nj_glo:", jjm 200 WRITE(*,*) "Xios. Size lon:", SIZE(io_lon), " lat:", SIZE(io_lat) 253 IF (prt_level >= 10) WRITE(lunout,*) "Xios. ni:",ni," ni_glo:", ni_glo, " nj:", nj, " nj_glo:", nj_glo 254 IF (prt_level >= 10) WRITE(lunout,*) "Xios. ibegin:",ibegin," iend:", iend, " jbegin:", jbegin, " jend:", jend 255 IF (prt_level >= 10) WRITE(lunout,*) "Xios. Size lon:", SIZE(io_lon(ibegin:iend)), " lat:", SIZE(io_lat(jbegin:jend)) 201 256 202 257 !On parametrise le domaine: 203 !IF (is_sequential) THEN 204 CALL xios_set_domain_attr_hdl(dom, ni_glo=iim, ibegin=1, ni=iim,& 205 & nj_glo=jjm, jbegin=1,nj=jjm,& 206 & lonvalue=io_lon(ibegin:iend), latvalue=io_lat(jbegin:jend)) 207 !END IF 258 CALL xios_set_domain_attr_hdl(dom, ni_glo=ni_glo, ibegin=ibegin, ni=ni) 259 CALL xios_set_domain_attr_hdl(dom, nj_glo=nj_glo, jbegin=jbegin, nj=nj, data_dim=2) 260 CALL xios_set_domain_attr_hdl(dom, lonvalue=io_lon(ibegin:iend), latvalue=io_lat(jbegin:jend)) 261 262 IF (.NOT.is_sequential) THEN 263 mask(:,:)=.TRUE. 264 mask(1:ii_begin-1,1) = .FALSE. 265 mask(ii_end+1:ni,nj) = .FALSE. 266 IF (prt_level >= 10) WRITE(lunout,*) "Xios. mask" 267 !CALL xios_set_domain_attr_hdl(dom, mask=mask) 268 END IF 269 208 270 CALL xios_is_defined_domain_attr_hdl(dom,ni_glo=boool) 209 271 !Vérification: 210 272 IF (xios_is_valid_domain(dom_id)) THEN 211 WRITE(*,*) "Xios. Domain initialized: ", dom_id, boool212 ELSE 213 WRITE(*,*) "Xios. Invalid domain: ", dom_id273 IF (prt_level >= 10) WRITE(lunout,*) "Xios. Domain initialized: ", dom_id, boool 274 ELSE 275 IF (prt_level >= 10) WRITE(lunout,*) "Xios. Invalid domain: ", dom_id 214 276 END IF 215 277 END SUBROUTINE wxios_domain_param … … 218 280 ! Pour déclarer un axe vertical !!!!!!!!!!!!!!! 219 281 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 220 SUBROUTINE wxios_add_vaxis(axisgroup_id, axis_file_id, axis_size, axis_value) 221 CHARACTER (len=*), INTENT(IN) :: axisgroup_id 222 INTEGER, INTENT(IN) :: axis_file_id, axis_size 282 SUBROUTINE wxios_add_vaxis(axisgroup_id, axis_file, axis_size, axis_value) 283 IMPLICIT NONE 284 INCLUDE 'iniprint.h' 285 286 CHARACTER (len=*), INTENT(IN) :: axisgroup_id, axis_file 287 INTEGER, INTENT(IN) :: axis_size 223 288 REAL, DIMENSION(axis_size), INTENT(IN) :: axis_value 224 289 225 290 TYPE(xios_axisgroup) :: axgroup 226 291 TYPE(xios_axis) :: ax 227 CHARACTER(len= 100) :: axis_id292 CHARACTER(len=20) :: axis_id 228 293 229 294 230 295 !Préparation du nom de l'axe: 231 CALL concat(axisgroup_id, axis_file _id, axis_id)296 CALL concat(axisgroup_id, axis_file, axis_id) 232 297 233 298 !On récupère le groupe d'axes qui va bien: … … 235 300 236 301 !On ajoute l'axe correspondant à ce fichier: 237 CALL xios_add_axis(axgroup, ax, axis_id)302 CALL xios_add_axis(axgroup, ax, TRIM(ADJUSTL(axis_id))) 238 303 239 304 !Et on le parametrise: … … 241 306 242 307 !Vérification: 243 IF (xios_is_valid_axis( axis_id)) THEN244 WRITE(*,*) "Xios. Axis created: ", axis_id245 ELSE 246 WRITE(*,*) "Xios. Invalid axis: ", axis_id308 IF (xios_is_valid_axis(TRIM(ADJUSTL(axis_id)))) THEN 309 IF (prt_level >= 10) WRITE(lunout,*) "Xios. Axis created: ", TRIM(ADJUSTL(axis_id)) 310 ELSE 311 WRITE(*,*) "Xios. Invalid axis: ", TRIM(ADJUSTL(axis_id)) 247 312 END IF 248 313 … … 254 319 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 255 320 SUBROUTINE wxios_add_file(fname, ffreq, flvl) 321 IMPLICIT NONE 322 INCLUDE 'iniprint.h' 323 256 324 CHARACTER(len=*), INTENT(IN) :: fname 257 325 CHARACTER(len=*), INTENT(IN) :: ffreq … … 262 330 CHARACTER(len=100) :: nffreq 263 331 264 !On créé le noeud: 265 CALL xios_get_filegroup_handle("defile", x_fg) 266 CALL xios_add_file(x_fg, x_file, "X"//fname) 267 268 !On reformate la fréquence: 269 CALL reformadate(ffreq, nffreq) 270 271 !On configure: 272 CALL xios_set_file_attr_hdl(x_file, name="X"//fname,& 332 !On regarde si le fichier n'est pas défini par XML: 333 IF (.NOT.xios_is_valid_file(fname)) THEN 334 !On créé le noeud: 335 CALL xios_get_filegroup_handle("defile", x_fg) 336 CALL xios_add_file(x_fg, x_file, fname) 337 338 !On reformate la fréquence: 339 CALL reformadate(ffreq, nffreq) 340 341 !On configure: 342 CALL xios_set_file_attr_hdl(x_file, name="X"//fname,& 273 343 output_freq=TRIM(ADJUSTL(nffreq)), output_level=flvl, enabled=.TRUE.) 274 344 275 IF (xios_is_valid_file("X"//fname)) THEN 276 WRITE(*,*) "Xios. New file: ", "X"//fname 277 WRITE(*,*) "Xios. output_freq=",TRIM(ADJUSTL(nffreq)),"; output_lvl=",flvl 278 ELSE 279 WRITE(*,*) "Xios. Error, invalid file: ", "X"//fname 280 WRITE(*,*) "Xios. output_freq=",TRIM(ADJUSTL(nffreq)),"; output_lvl=",flvl 345 IF (xios_is_valid_file("X"//fname)) THEN 346 IF (prt_level >= 10) WRITE(lunout,*) "Xios. New file: ", "X"//fname 347 IF (prt_level >= 10) WRITE(lunout,*) "Xios. output_freq=",TRIM(ADJUSTL(nffreq)),"; output_lvl=",flvl 348 ELSE 349 WRITE(*,*) "Xios. Error, invalid file: ", "X"//fname 350 WRITE(*,*) "Xios. output_freq=",TRIM(ADJUSTL(nffreq)),"; output_lvl=",flvl 351 END IF 352 ELSE 353 IF (prt_level >= 10) WRITE(lunout,*) "Xios. Fichier ", fname, " défini par XML." 354 CALL xios_set_file_attr(fname, enabled=.TRUE.) 281 355 END IF 282 356 END SUBROUTINE wxios_add_file 283 357 284 358 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 285 ! Pour créer un champ !!!!!!!!!!!!!!! 359 ! Pour créer un champ !!!!!!!!!!!!!!!!!!!! 286 360 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 287 361 SUBROUTINE wxios_add_field(fieldname, fieldgroup, fieldlongname, fieldunit) 288 362 USE netcdf 363 364 IMPLICIT NONE 365 INCLUDE 'iniprint.h' 289 366 290 367 CHARACTER(len=*), INTENT(IN) :: fieldname … … 308 385 !On ajoute le champ: 309 386 CALL xios_add_field(fieldgroup, field, fieldname) 310 ! WRITE(*,*) "Xios. ",fieldname,fieldgroup, fieldlongname, fieldunit387 !IF (prt_level >= 10) WRITE(lunout,*) "Xios. ",fieldname,fieldgroup, fieldlongname, fieldunit 311 388 312 389 !On rentre ses paramètres: 313 390 CALL xios_set_field_attr_hdl(field, standard_name=fieldlongname, unit=newunit, default_value=def) 314 WRITE(*,*) "Xios. Champ ", fieldname, "cree:"315 WRITE(*,*) "Xios. long_name=",fieldlongname,"; unit=",newunit,"; default_value=",nf90_fill_real391 IF (prt_level >= 10) WRITE(lunout,*) "Xios. Champ ", fieldname, "cree:" 392 IF (prt_level >= 10) WRITE(lunout,*) "Xios. long_name=",fieldlongname,"; unit=",newunit,"; default_value=",nf90_fill_real 316 393 317 394 END SUBROUTINE wxios_add_field 318 395 319 396 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 320 ! Pour déclarer un champ !!!!!!!!!!!!!!! 397 ! Pour déclarer un champ !!!!!!!!!!!!!!!!! 321 398 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 322 399 SUBROUTINE wxios_add_field_to_file(fieldname, fdim, fid, fname, fieldlongname, fieldunit, field_level, op) 400 IMPLICIT NONE 401 INCLUDE 'iniprint.h' 402 323 403 CHARACTER(len=*), INTENT(IN) :: fieldname 324 404 INTEGER, INTENT(IN) :: fdim, fid … … 329 409 CHARACTER(len=*), INTENT(IN) :: op 330 410 331 CHARACTER(len= 100) :: axis_id411 CHARACTER(len=20) :: axis_id 332 412 CHARACTER(len=100) :: operation 333 413 TYPE(xios_file) :: f 334 414 TYPE(xios_field) :: field 335 415 TYPE(xios_fieldgroup) :: fieldgroup 416 LOGICAL :: bool=.FALSE. 417 INTEGER :: lvl =0 336 418 337 419 338 420 !Préparation du nom de l'axe: 339 CALL concat("presnivs", f id, axis_id)421 CALL concat("presnivs", fname, axis_id) 340 422 341 423 !on prépare le nom de l'opération: … … 352 434 353 435 !On regarde si le champ à déjà été créé ou non: 354 IF (xios_is_valid_field(fieldname)) THEN 355 WRITE(*,*) "Xios. Champ ", fieldname, "existe" 356 ELSE 357 WRITE(*,*) "Xios. Champ ", fieldname, "nexiste pas" 436 IF (xios_is_valid_field(fieldname) .AND. .NOT. g_field_name == fieldname) THEN 437 !Si ce champ existe via XML (ie, dès le premier passage, ie g_field_name != fieldname) alors rien d'autre à faire 438 IF (prt_level >= 10) WRITE(lunout,*) "Xios. Champ ", fieldname, "existe via XML" 439 g_flag_xml = .TRUE. 440 g_field_name = fieldname 441 442 ELSE IF (.NOT. g_field_name == fieldname) THEN 443 !Si premier pssage et champ indéfini, alors on le créé 444 445 IF (prt_level >= 10) WRITE(lunout,*) "Xios. Champ ", fieldname, "nexiste pas" 358 446 359 447 !On le créé: 360 448 CALL wxios_add_field(fieldname, fieldgroup, fieldlongname, fieldunit) 361 449 IF (xios_is_valid_field(fieldname)) THEN 362 WRITE(*,*) "Xios. Champ ", fieldname, "cree"450 IF (prt_level >= 10) WRITE(lunout,*) "Xios. Champ ", fieldname, "cree" 363 451 ENDIF 364 ENDIF 365 366 !On ajoute le champ: 367 CALL xios_get_file_handle("X"//fname, f) 368 CALL xios_add_fieldtofile(f, field) 369 370 371 !L'operation, sa frequence: 372 CALL xios_set_field_attr_hdl(field, field_ref=fieldname, operation=TRIM(ADJUSTL(operation)), freq_op="1ts", prec=4) 373 374 375 !On rentre ses paramètres: 376 CALL xios_set_field_attr_hdl(field, level=field_level, enabled=.TRUE.) 377 378 IF (fdim.EQ.2) THEN 379 !Si c'est un champ 2D: 380 WRITE(*,*) "Xios. Champ 2D ", fieldname, " de ", "X"//fname ," configure:" 381 WRITE (*,*) "Xios. op=", TRIM(ADJUSTL(operation)) 382 WRITE(*,*) "Xios. freq_op=1ts","; lvl=",field_level 383 ELSE 384 !Si 3D : 385 !On ajoute l'axe vertical qui va bien: 386 CALL xios_set_field_attr_hdl(field, axis_ref=axis_id) 452 453 g_flag_xml = .FALSE. 454 g_field_name = fieldname 455 456 END IF 457 458 IF (.NOT. g_flag_xml) THEN 459 !Champ existe déjà, mais pas XML, alors on l'ajoute 460 !On ajoute le champ: 461 CALL xios_get_file_handle(fname, f) 462 CALL xios_add_fieldtofile(f, field) 387 463 388 WRITE(*,*) "Xios. Champ 3D ", fieldname, " de ", "X"//fname, "configure:" 389 WRITE(*,*) "Xios. freq_op=1ts","; lvl=",field_level 390 WRITE(*,*) "Xios. axe=",axis_id 391 END IF 464 465 !L'operation, sa frequence: 466 CALL xios_set_field_attr_hdl(field, field_ref=fieldname, operation=TRIM(ADJUSTL(operation)), freq_op="1ts", prec=4) 467 468 469 !On rentre ses paramètres: 470 CALL xios_set_field_attr_hdl(field, level=field_level, enabled=.TRUE.) 471 472 IF (fdim.EQ.2) THEN 473 !Si c'est un champ 2D: 474 IF (prt_level >= 10) WRITE(lunout,*) "Xios. Champ 2D ", fieldname, " de ", "X"//fname ," configure:" 475 IF (prt_level >= 10) WRITE(lunout,*) "Xios. op=", TRIM(ADJUSTL(operation)) 476 IF (prt_level >= 10) WRITE(lunout,*) "Xios. freq_op=1ts","; lvl=",field_level 477 ELSE 478 !Si 3D : 479 !On ajoute l'axe vertical qui va bien: 480 CALL xios_set_field_attr_hdl(field, axis_ref=TRIM(ADJUSTL(axis_id))) 481 482 IF (prt_level >= 10) WRITE(lunout,*) "Xios. Champ 3D ", fieldname, " de ", "X"//fname, "configure:" 483 IF (prt_level >= 10) WRITE(lunout,*) "Xios. freq_op=1ts","; lvl=",field_level 484 IF (prt_level >= 10) WRITE(lunout,*) "Xios. axe=",TRIM(ADJUSTL(axis_id)) 485 END IF 486 487 ELSE 488 !Sinon on se contente de l'activer: 489 CALL xios_set_field_attr(fieldname, enabled=.TRUE.) 490 ENDIF 392 491 393 492 END SUBROUTINE wxios_add_field_to_file … … 401 500 CHARACTER(len=*), INTENT(IN) :: fieldname 402 501 REAL, DIMENSION(:,:), INTENT(IN) :: fdata 403 502 404 503 CALL xios_send_field(fieldname, fdata) 405 504 END SUBROUTINE wxios_write_2D -
LMDZ5/trunk/libf/dyn3dpar/abort_gcm.F
r1823 r1852 13 13 #endif 14 14 USE parallel_lmdz 15 16 17 18 15 19 #include "iniprint.h" 16 20 … … 37 41 c$OMP END MASTER 38 42 #endif 43 44 45 39 46 c call histclo(2) 40 47 c call histclo(3) -
LMDZ5/trunk/libf/dyn3dpar/gcm.F
r1825 r1852 10 10 #endif 11 11 12 13 #ifdef CPP_XIOS14 ! ug Pour les sorties XIOS15 USE wxios16 #endif17 12 18 13 USE mod_const_mpi, ONLY: init_const_mpi … … 192 187 c Initialisation partie parallele 193 188 c------------------------------------ 189 194 190 CALL init_const_mpi 195 196 191 call init_parallel 197 192 call ini_getparam("out.def") … … 224 219 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 225 220 226 #ifdef CPP_XIOS227 CALL wxios_init("LMDZ")228 #endif229 221 230 222 c----------------------------------------------------------------------- -
LMDZ5/trunk/libf/dyn3dpar/leapfrog_p.F
r1845 r1852 22 22 USE control_mod 23 23 24 #ifdef CPP_XIOS25 ! ug Pour les sorties XIOS26 USE wxios27 #endif28 24 IMPLICIT NONE 29 25 … … 1380 1376 1381 1377 c$OMP MASTER 1382 1383 #ifdef CPP_XIOS1384 !Fermeture propre de XIOS1385 CALL wxios_close()1386 #endif1387 1378 call fin_getparam 1388 1379 call finalize_parallel -
LMDZ5/trunk/libf/dyn3dpar/mod_const_mpi.F90
r1700 r1852 51 51 52 52 SUBROUTINE Init_mpi 53 #ifdef CPP_XIOS 54 USE wxios 55 #endif 53 56 IMPLICIT NONE 54 57 #ifdef CPP_MPI … … 70 73 COMM_LMDZ=MPI_COMM_WORLD 71 74 MPI_REAL_LMDZ=MPI_REAL8 75 76 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 77 ! Initialisation de XIOS 78 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 79 #ifdef CPP_XIOS 80 CALL wxios_init("LMDZ", outcom=COMM_LMDZ) 81 #endif 72 82 !$OMP END MASTER 83 #else 84 #ifdef CPP_XIOS 85 CALL wxios_init("LMDZ") 73 86 #endif 74 87 #endif 75 88 END SUBROUTINE Init_mpi 76 89 -
LMDZ5/trunk/libf/dyn3dpar/parallel_lmdz.F90
r1823 r1852 199 199 200 200 subroutine Finalize_parallel 201 #ifdef CPP_XIOS 202 ! ug Pour les sorties XIOS 203 USE wxios 204 #endif 201 205 #ifdef CPP_COUPLE 202 206 use mod_prism_proto … … 232 236 #endif 233 237 else 238 #ifdef CPP_XIOS 239 !Fermeture propre de XIOS 240 CALL wxios_close() 241 #endif 234 242 #ifdef CPP_MPI 235 243 IF (using_mpi) call MPI_FINALIZE(ierr) -
LMDZ5/trunk/libf/phydev/physiq.F90
r1759 r1852 19 19 USE mod_phys_lmdz_para, only : jj_nb 20 20 USE phys_state_var_mod, only : phys_state_var_init 21 22 #ifdef CPP_XIOS 23 USE wxios 24 #endif 21 25 22 26 IMPLICIT none … … 101 105 dtime=pdtphys 102 106 call histbeg_phy("histins.nc",itau0,zjulian,dtime,nhori,nid_hist) 107 108 109 103 110 !$OMP MASTER 111 112 113 104 114 ! define vertical coordinate 105 115 call histvert(nid_hist,"presnivs","Vertical levels","Pa",klev, & … … 120 130 ! end definition sequence 121 131 call histend(nid_hist) 132 133 !XIOS 134 #ifdef CPP_XIOS 135 ! Déclaration de l'axe vertical du fichier: 136 !CALL wxios_add_vaxis("presnivs", "histins", klev, presnivs) 137 138 !Déclaration du pas de temps: 139 !CALL wxios_set_timestep(dtime) 140 141 !Finalisation du contexte: 142 !CALL wxios_closedef() 143 #endif 122 144 !$OMP END MASTER 123 145 endif ! of if (debut) … … 154 176 endif 155 177 178 !XIOS 179 #ifdef CPP_XIOS 180 !$OMP MASTER 181 !On incrémente le pas de temps XIOS 182 !CALL wxios_update_calendar(itau) 183 184 !Et on écrit, avec la routine histwrite dédiée: 185 !CALL histwrite_phy("temperature",t) 186 !CALL histwrite_phy("u",u) 187 !CALL histwrite_phy("v",v) 188 !CALL histwrite_phy("ps",paprs(:,1)) 189 !$OMP END MASTER 190 #endif 191 156 192 ! if lastcall, then it is time to write "restartphy.nc" file 157 193 if (lafin) then -
LMDZ5/trunk/libf/phylmd/iophy.F90
r1828 r1852 5 5 6 6 USE phys_output_var_mod 7 #ifdef CPP_XIOS 8 USE wxios 9 #endif 7 10 8 11 #ifdef CPP_XIOS … … 20 23 21 24 !$OMP THREADPRIVATE(itau_iophy) 22 25 26 #ifdef CPP_XIOS 27 INTERFACE histwrite_phy 28 MODULE PROCEDURE histwrite2d_phy,histwrite3d_phy,histwrite2d_phy_old,histwrite3d_phy_old,histwrite2d_xios,histwrite3d_xios 29 END INTERFACE 30 #else 23 31 INTERFACE histwrite_phy 24 32 MODULE PROCEDURE histwrite2d_phy,histwrite3d_phy,histwrite2d_phy_old,histwrite3d_phy_old 25 33 END INTERFACE 34 #endif 26 35 27 36 INTERFACE histbeg_phy_all … … 44 53 USE mod_grid_phy_lmdz 45 54 USE ioipsl 46 55 47 56 IMPLICIT NONE 48 57 INCLUDE 'dimensions.h' … … 61 70 INTEGER,DIMENSION(2) :: dhe 62 71 INTEGER :: i 72 INTEGER :: data_ibegin, data_iend 63 73 64 74 CALL gather(rlat,rlat_glo) … … 79 89 ALLOCATE(io_lon(iim)) 80 90 io_lon(:)=rlon_glo(2-1/(iim*jjm):iim+1-1/(iim*jjm)) 91 !! (I) dtnb : total number of domains 92 !! (I) dnb : domain number 93 !! (I) did(:) : distributed dimensions identifiers 94 !! (up to 5 dimensions are supported) 95 !! (I) dsg(:) : total number of points for each dimension 96 !! (I) dsl(:) : local number of points for each dimension 97 !! (I) dpf(:) : position of first local point for each dimension 98 !! (I) dpl(:) : position of last local point for each dimension 99 !! (I) dhs(:) : start halo size for each dimension 100 !! (I) dhe(:) : end halo size for each dimension 101 !! (C) cdnm : Model domain definition name. 102 !! The names actually supported are : 103 !! "BOX", "APPLE", "ORANGE". 104 !! These names are case insensitive. 81 105 82 106 ddid=(/ 1,2 /) … … 91 115 dhe=(/ iim-ii_end,0 /) 92 116 ENDIF 93 117 118 #ifndef CPP_NO_IOIPSL 94 119 CALL flio_dom_set(mpi_size,mpi_rank,ddid,dsg,dsl,dpf,dpl,dhs,dhe, & 95 120 'APPLE',phys_domain_id) 121 #endif 96 122 #ifdef CPP_XIOS 123 !Pour els soucis en MPI, réglage du masque: 124 IF (mpi_rank == 0) THEN 125 data_ibegin = 0 126 ELSE 127 data_ibegin = ii_begin - 1 128 END IF 129 130 IF (mpi_rank == mpi_size-1) THEN 131 data_iend = nbp_lon 132 ELSE 133 data_iend = ii_end + 1 134 END IF 135 136 WRITE(*,*) "TOTO mpirank=",mpi_rank,"iibeg=",ii_begin , "jjbeg=",jj_begin,"jjnb=",jj_nb,"jjend=",jj_end 137 97 138 !On initialise le domaine xios, maintenant que tout est connu: 98 CALL wxios_domain_param("dom_glo", is_sequential, iim, jjm+1, io_lat, io_lon) 139 !SUBROUTINE wxios_domain_param(dom_id, is_sequential, ni, nj, ni_glo, nj_glo, & 140 ! ibegin, iend, jbegin, jend, & 141 ! data_ni, data_ibegin, & 142 ! io_lat, io_lon) 143 CALL wxios_domain_param("dom_glo", is_sequential, nbp_lon, jj_nb, nbp_lon, nbp_lat, & 144 1, nbp_lon, ii_begin, ii_end, jj_begin, jj_end, & 145 klon_mpi+2*(nbp_lon-1), data_ibegin, data_iend, & 146 io_lat, io_lon) 99 147 #endif 100 148 !$OMP END MASTER … … 137 185 endif 138 186 187 #ifndef CPP_NO_IOIPSL 139 188 call flio_dom_set(mpi_size,mpi_rank,ddid,dsg,dsl,dpf,dpl,dhs,dhe, & 140 189 'APPLE',phys_domain_id) 141 190 #endif 142 191 !$OMP END MASTER 143 192 … … 197 246 198 247 !$OMP MASTER 248 #ifndef CPP_NO_IOIPSL 199 249 if (is_sequential) then 200 250 call histbeg(name,iim,io_lon, jj_nb,io_lat(jj_begin:jj_end), & … … 204 254 1,iim,1,jj_nb,itau0, zjulian, dtime, nhori, nid_day,phys_domain_id) 205 255 endif 206 256 #endif 207 257 !$OMP END MASTER 208 258 … … 334 384 ENDDO 335 385 ! print*,'iophy is_sequential nname, nnhori, nnid_day=',trim(nname),nnhori,nnid_day 386 #ifndef CPP_NO_IOIPSL 336 387 call histbeg(nname,pim,plon,plon_bounds, & 337 388 plat,plat_bounds, & 338 389 itau0, zjulian, dtime, nnhori, nnid_day) 390 #endif 339 391 else 340 392 npproc=0 … … 373 425 ENDIF 374 426 ENDDO 427 #ifndef CPP_NO_IOIPSL 375 428 call histbeg(nname,npstn,npplon,npplon_bounds, & 376 429 npplat,npplat_bounds, & 377 430 itau0,zjulian,dtime,nnhori,nnid_day,phys_domain_id) 431 #endif 378 432 endif 379 433 !$OMP END MASTER … … 534 588 535 589 IF(.NOT.clef_stations(iff)) THEN 590 536 591 #ifdef CPP_XIOS 537 CALL wxios_add_field_to_file(var%name, 2, nid_files(iff), phys_out_filenames(iff), &592 CALL wxios_add_field_to_file(var%name, 2, iff, phys_out_filenames(iff), & 538 593 var%description, var%unit, var%flag(iff), typeecrit) 539 594 #endif 595 #ifndef CPP_NO_IOIPSL 540 596 541 597 IF ( var%flag(iff)<=lev_files(iff) ) THEN … … 550 606 typeecrit, zstophym,zoutm(iff)) 551 607 ENDIF 608 #endif 552 609 ENDIF 553 610 … … 602 659 603 660 IF(.NOT.clef_stations(iff)) THEN 661 604 662 #ifdef CPP_XIOS 605 CALL wxios_add_field_to_file(var%name, 3, nid_files(iff), phys_out_filenames(iff), &663 CALL wxios_add_field_to_file(var%name, 3, iff, phys_out_filenames(iff), & 606 664 var%description, var%unit, var%flag(iff), typeecrit) 607 665 #endif 666 #ifndef CPP_NO_IOIPSL 608 667 609 668 IF ( var%flag(iff)<=lev_files(iff) ) THEN … … 620 679 typeecrit, zstophym,zoutm(iff)) 621 680 ENDIF 681 #endif 622 682 ENDIF 623 683 END SUBROUTINE histdef3d … … 849 909 ALLOCATE(index2d(iim*jj_nb)) 850 910 ALLOCATE(fieldok(iim*jj_nb)) 851 911 #ifndef CPP_NO_IOIPSL 852 912 CALL histwrite(nid_files(iff),var%name,itau_iophy,Field2d,iim*jj_nb,index2d) 913 #endif 853 914 #ifdef CPP_XIOS 854 915 IF (iff == iff_beg) THEN … … 873 934 ENDDO 874 935 ENDIF 875 936 #ifndef CPP_NO_IOIPSL 876 937 CALL histwrite(nid_files(iff),var%name,itau_iophy,fieldok,npstn,index2d) 938 #endif 877 939 ENDIF 878 940 … … 953 1015 ALLOCATE(index3d(iim*jj_nb*nlev)) 954 1016 ALLOCATE(fieldok(iim*jj_nb,nlev)) 1017 1018 #ifndef CPP_NO_IOIPSL 955 1019 CALL histwrite(nid_files(iff),var%name,itau_iophy,Field3d,iim*jj_nb*nlev,index3d) 1020 #endif 956 1021 957 1022 #ifdef CPP_XIOS … … 982 1047 ENDDO 983 1048 ENDIF 1049 #ifndef CPP_NO_IOIPSL 984 1050 CALL histwrite(nid_files(iff),var%name,itau_iophy,fieldok,npstn*nlev,index3d) 1051 #endif 985 1052 ENDIF 986 1053 deallocate(index3d) … … 993 1060 END SUBROUTINE histwrite3d_phy 994 1061 1062 1063 ! VERSION DES HISTWRITE DEDIEES AU TOUT-XIOS-XML DEJA UTILISEE DANS PHYDEV 1064 #ifdef CPP_XIOS 1065 SUBROUTINE histwrite2d_xios(field_name,field) 1066 USE dimphy 1067 USE mod_phys_lmdz_para 1068 USE wxios 1069 1070 1071 IMPLICIT NONE 1072 INCLUDE 'dimensions.h' 1073 INCLUDE 'iniprint.h' 1074 1075 CHARACTER(LEN=*), INTENT(IN) :: field_name 1076 REAL, DIMENSION(:), INTENT(IN) :: field 1077 1078 REAL,DIMENSION(klon_mpi) :: buffer_omp 1079 INTEGER, allocatable, DIMENSION(:) :: index2d 1080 REAL :: Field2d(iim,jj_nb) 1081 1082 INTEGER :: ip 1083 REAL, ALLOCATABLE, DIMENSION(:) :: fieldok 1084 1085 IF (prt_level >= 9) WRITE(lunout,*)'Begin histrwrite2d_xios ',field_name 1086 1087 !Et sinon on.... écrit 1088 IF (SIZE(field)/=klon) CALL abort_gcm('iophy::histwrite2d_xios','Field first DIMENSION not equal to klon',1) 1089 1090 CALL Gather_omp(field,buffer_omp) 1091 !$OMP MASTER 1092 CALL grid1Dto2D_mpi(buffer_omp,Field2d) 1093 1094 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1095 !ATTENTION, STATIONS PAS GEREES ! 1096 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1097 !IF(.NOT.clef_stations(iff)) THEN 1098 IF (.TRUE.) THEN 1099 ALLOCATE(index2d(iim*jj_nb)) 1100 ALLOCATE(fieldok(iim*jj_nb)) 1101 1102 1103 CALL wxios_write_2D(field_name, Field2d) 1104 1105 ELSE 1106 ALLOCATE(fieldok(npstn)) 1107 ALLOCATE(index2d(npstn)) 1108 1109 IF (is_sequential) THEN 1110 DO ip=1, npstn 1111 fieldok(ip)=buffer_omp(nptabij(ip)) 1112 ENDDO 1113 ELSE 1114 DO ip=1, npstn 1115 PRINT*,'histwrite2d_xios is_sequential npstn ip namenptabij',npstn,ip,field_name,nptabij(ip) 1116 IF(nptabij(ip).GE.klon_mpi_begin.AND. & 1117 nptabij(ip).LE.klon_mpi_end) THEN 1118 fieldok(ip)=buffer_omp(nptabij(ip)-klon_mpi_begin+1) 1119 ENDIF 1120 ENDDO 1121 ENDIF 1122 1123 ENDIF 1124 1125 deallocate(index2d) 1126 deallocate(fieldok) 1127 !$OMP END MASTER 1128 1129 IF (prt_level >= 9) WRITE(lunout,*)'End histrwrite2d_xios ',field_name 1130 END SUBROUTINE histwrite2d_xios 1131 1132 1133 ! ug NOUVELLE VERSION DES WRITE AVEC LA BOUCLE DO RENTREE 1134 SUBROUTINE histwrite3d_xios(field_name, field) 1135 USE dimphy 1136 USE mod_phys_lmdz_para 1137 USE wxios 1138 1139 1140 IMPLICIT NONE 1141 INCLUDE 'dimensions.h' 1142 INCLUDE 'iniprint.h' 1143 1144 CHARACTER(LEN=*), INTENT(IN) :: field_name 1145 REAL, DIMENSION(:,:), INTENT(IN) :: field ! --> field(klon,:) 1146 1147 REAL,DIMENSION(klon_mpi,SIZE(field,2)) :: buffer_omp 1148 REAL :: Field3d(iim,jj_nb,SIZE(field,2)) 1149 INTEGER :: ip, n, nlev 1150 INTEGER, ALLOCATABLE, DIMENSION(:) :: index3d 1151 REAL,ALLOCATABLE, DIMENSION(:,:) :: fieldok 1152 1153 IF (prt_level >= 9) write(lunout,*)'Begin histrwrite3d_xios ',field_name 1154 1155 !Et on.... écrit 1156 IF (SIZE(field,1)/=klon) CALL abort_gcm('iophy::histwrite3d','Field first DIMENSION not equal to klon',1) 1157 nlev=SIZE(field,2) 1158 1159 1160 CALL Gather_omp(field,buffer_omp) 1161 !$OMP MASTER 1162 CALL grid1Dto2D_mpi(buffer_omp,field3d) 1163 1164 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1165 !ATTENTION, STATIONS PAS GEREES ! 1166 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1167 !IF (.NOT.clef_stations(iff)) THEN 1168 IF(.TRUE.)THEN 1169 ALLOCATE(index3d(iim*jj_nb*nlev)) 1170 ALLOCATE(fieldok(iim*jj_nb,nlev)) 1171 CALL wxios_write_3D(field_name, Field3d(:,:,1:klev)) 1172 1173 ELSE 1174 nlev=size(field,2) 1175 ALLOCATE(index3d(npstn*nlev)) 1176 ALLOCATE(fieldok(npstn,nlev)) 1177 1178 IF (is_sequential) THEN 1179 DO n=1, nlev 1180 DO ip=1, npstn 1181 fieldok(ip,n)=buffer_omp(nptabij(ip),n) 1182 ENDDO 1183 ENDDO 1184 ELSE 1185 DO n=1, nlev 1186 DO ip=1, npstn 1187 IF(nptabij(ip).GE.klon_mpi_begin.AND. & 1188 nptabij(ip).LE.klon_mpi_end) THEN 1189 fieldok(ip,n)=buffer_omp(nptabij(ip)-klon_mpi_begin+1,n) 1190 ENDIF 1191 ENDDO 1192 ENDDO 1193 ENDIF 1194 ENDIF 1195 deallocate(index3d) 1196 deallocate(fieldok) 1197 !$OMP END MASTER 1198 1199 IF (prt_level >= 9) write(lunout,*)'End histrwrite3d_xios ',field_name 1200 END SUBROUTINE histwrite3d_xios 1201 #endif 995 1202 end module iophy -
LMDZ5/trunk/libf/phylmd/mod_phys_lmdz_para.F90
r1575 r1852 32 32 is_master=.FALSE. 33 33 ENDIF 34 CALL Test_transfert34 CALL Test_transfert 35 35 !$OMP END PARALLEL 36 36 IF (is_using_mpi .OR. is_using_omp) THEN -
LMDZ5/trunk/libf/phylmd/phys_output_ctrlout_mod.F90
r1842 r1852 20 20 !!! Ap et Bp 21 21 TYPE(ctrl_out), SAVE :: o_Ahyb = ctrl_out((/ 1, 1, 1, 1, 1, 1, 11, 11, 11 /), & 22 22 'Ap', '', '', (/ ('', i=1, 9) /)) 23 23 TYPE(ctrl_out), SAVE :: o_Bhyb = ctrl_out((/ 1, 1, 1, 1, 1, 1, 11, 11, 11 /), & 24 24 'Bp', '', '', (/ ('', i=1, 9) /)) 25 25 TYPE(ctrl_out), SAVE :: o_Alt = ctrl_out((/ 1, 1, 1, 1, 1, 1, 11, 11, 11 /), & 26 26 'Alt', '', '', (/ ('', i=1, 9) /)) 27 27 28 28 !!! 1D 29 29 TYPE(ctrl_out), SAVE :: o_phis = ctrl_out((/ 1, 1, 10, 5, 1, 1, 11, 11, 11 /), & 30 30 'phis', 'Surface geop.height', 'm2/s2', (/ ('', i=1, 9) /)) 31 31 TYPE(ctrl_out), SAVE :: o_aire = ctrl_out((/ 1, 1, 10, 10, 1, 1, 11, 11, 11 /), & 32 32 'aire', 'Grid area', '-', (/ 'once', 'once', 'once', 'once', 'once', 'once', & 33 33 'once', 'once', 'once' /)) 34 34 TYPE(ctrl_out), SAVE :: o_contfracATM = ctrl_out((/ 10, 1, 1, 10, 10, 10, 11, 11, 11 /), & 35 35 'contfracATM', '% sfce ter+lic', '-', & 36 36 (/ 'once', 'once', 'once', 'once', 'once', 'once', 'once', 'once', 'once' /)) 37 37 TYPE(ctrl_out), SAVE :: o_contfracOR = ctrl_out((/ 10, 1, 10, 10, 10, 10, 11, 11, 11 /), & 38 38 'contfracOR', '% sfce terre OR', '-', (/ ('', i=1, 9) /)) 39 39 TYPE(ctrl_out), SAVE :: o_aireTER = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 40 40 'aireTER', 'Grid area CONT', '-', (/ ('', i=1, 9) /)) 41 41 42 42 !!! 2D 43 43 TYPE(ctrl_out), SAVE :: o_flat = ctrl_out((/ 5, 1, 10, 10, 5, 10, 11, 11, 11 /), & 44 44 'flat', 'Latent heat flux', 'W/m2', (/ ('', i=1, 9) /)) 45 45 TYPE(ctrl_out), SAVE :: o_slp = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 46 46 'slp', 'Sea Level Pressure', 'Pa', (/ ('', i=1, 9) /)) 47 47 TYPE(ctrl_out), SAVE :: o_tsol = ctrl_out((/ 1, 1, 1, 5, 10, 10, 11, 11, 11 /), & 48 48 'tsol', 'Surface Temperature', 'K', (/ ('', i=1, 9) /)) 49 49 TYPE(ctrl_out), SAVE :: o_t2m = ctrl_out((/ 1, 1, 1, 5, 10, 10, 11, 11, 11 /), & 50 50 't2m', 'Temperature 2m', 'K', (/ ('', i=1, 9) /)) 51 51 TYPE(ctrl_out), SAVE :: o_t2m_min = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 52 52 't2m_min', 'Temp 2m min', 'K', & 53 53 (/ "t_min(X)", "t_min(X)", "t_min(X)", "t_min(X)", "t_min(X)", "t_min(X)", "t_min(X)", "t_min(X)", "t_min(X)" /)) 54 54 TYPE(ctrl_out), SAVE :: o_t2m_max = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 55 55 't2m_max', 'Temp 2m max', 'K', & 56 56 (/ "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", & 57 57 "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)" /)) … … 59 59 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_t2m_srf = (/ & 60 60 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /), & 61 61 't2m_ter', "Temp 2m "//clnsurf(1), "K", (/ ('', i=1, 9) /)), & 62 62 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /), & 63 63 't2m_lic', "Temp 2m "//clnsurf(2), "K", (/ ('', i=1, 9) /)), & 64 64 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /), & 65 65 't2m_oce', "Temp 2m "//clnsurf(3), "K", (/ ('', i=1, 9) /)), & 66 66 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /), & 67 67 't2m_sic', "Temp 2m "//clnsurf(4), "K", (/ ('', i=1, 9) /)) /) 68 68 69 69 TYPE(ctrl_out), SAVE :: o_wind10m = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 70 70 'wind10m', '10-m wind speed', 'm/s', (/ ('', i=1, 9) /)) 71 71 TYPE(ctrl_out), SAVE :: o_wind10max = ctrl_out((/ 10, 1, 10, 10, 10, 10, 11, 11, 11 /), & 72 72 'wind10max', '10m wind speed max', 'm/s', (/ ('', i=1, 9) /)) 73 73 TYPE(ctrl_out), SAVE :: o_sicf = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 74 74 'sicf', 'Sea-ice fraction', '-', (/ ('', i=1, 9) /)) 75 75 TYPE(ctrl_out), SAVE :: o_q2m = ctrl_out((/ 1, 1, 1, 5, 10, 10, 11, 11, 11 /), & 76 76 'q2m', 'Specific humidity 2m', 'kg/kg', (/ ('', i=1, 9) /)) 77 77 TYPE(ctrl_out), SAVE :: o_ustar = ctrl_out((/ 1, 1, 10, 5, 10, 10, 11, 11, 11 /), & 78 78 'ustar', 'Friction velocity', 'm/s', (/ ('', i=1, 9) /)) 79 79 TYPE(ctrl_out), SAVE :: o_u10m = ctrl_out((/ 1, 1, 1, 5, 10, 10, 11, 11, 11 /), & 80 80 'u10m', 'Vent zonal 10m', 'm/s', (/ ('', i=1, 9) /)) 81 81 TYPE(ctrl_out), SAVE :: o_v10m = ctrl_out((/ 1, 1, 1, 5, 10, 10, 11, 11, 11 /), & 82 82 'v10m', 'Vent meridien 10m', 'm/s', (/ ('', i=1, 9) /)) 83 83 TYPE(ctrl_out), SAVE :: o_psol = ctrl_out((/ 1, 1, 1, 5, 10, 10, 11, 11, 11 /), & 84 84 'psol', 'Surface Pressure', 'Pa', (/ ('', i=1, 9) /)) 85 85 TYPE(ctrl_out), SAVE :: o_qsurf = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 86 86 'qsurf', 'Surface Air humidity', 'kg/kg', (/ ('', i=1, 9) /)) 87 87 88 88 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_ustar_srf = (/ & … … 129 129 130 130 TYPE(ctrl_out), SAVE :: o_qsol = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 131 131 'qsol', 'Soil watter content', 'mm', (/ ('', i=1, 9) /)) 132 132 TYPE(ctrl_out), SAVE :: o_ndayrain = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 133 133 'ndayrain', 'Number of dayrain(liq+sol)', '-', & 134 134 (/ "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 135 135 TYPE(ctrl_out), SAVE :: o_precip = ctrl_out((/ 1, 1, 1, 10, 5, 10, 11, 11, 11 /), & 136 136 'precip', 'Precip Totale liq+sol', 'kg/(s*m2)', (/ ('', i=1, 9) /)) 137 137 TYPE(ctrl_out), SAVE :: o_plul = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 138 138 'plul', 'Large-scale Precip.', 'kg/(s*m2)', (/ ('', i=1, 9) /)) 139 139 TYPE(ctrl_out), SAVE :: o_pluc = ctrl_out((/ 1, 1, 1, 10, 5, 10, 11, 11, 11 /), & 140 140 'pluc', 'Convective Precip.', 'kg/(s*m2)', (/ ('', i=1, 9) /)) 141 141 TYPE(ctrl_out), SAVE :: o_snow = ctrl_out((/ 1, 1, 10, 10, 5, 10, 11, 11, 11 /), & 142 142 'snow', 'Snow fall', 'kg/(s*m2)', (/ ('', i=1, 9) /)) 143 143 TYPE(ctrl_out), SAVE :: o_evap = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 144 144 'evap', 'Evaporat', 'kg/(s*m2)', (/ ('', i=1, 9) /)) 145 145 146 146 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_evap_srf = (/ & … … 155 155 156 156 TYPE(ctrl_out), SAVE :: o_msnow = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 157 157 'msnow', 'Surface snow amount', 'kg/m2', (/ ('', i=1, 9) /)) 158 158 TYPE(ctrl_out), SAVE :: o_fsnow = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 159 159 'fsnow', 'Surface snow area fraction', '-', (/ ('', i=1, 9) /)) 160 160 TYPE(ctrl_out), SAVE :: o_tops = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 161 161 'tops', 'Solar rad. at TOA', 'W/m2', (/ ('', i=1, 9) /)) 162 162 TYPE(ctrl_out), SAVE :: o_tops0 = ctrl_out((/ 1, 5, 10, 10, 10, 10, 11, 11, 11 /), & 163 163 'tops0', 'CS Solar rad. at TOA', 'W/m2', (/ ('', i=1, 9) /)) 164 164 TYPE(ctrl_out), SAVE :: o_topl = ctrl_out((/ 1, 1, 10, 5, 10, 10, 11, 11, 11 /), & 165 165 'topl', 'IR rad. at TOA', 'W/m2', (/ ('', i=1, 9) /)) 166 166 TYPE(ctrl_out), SAVE :: o_topl0 = ctrl_out((/ 1, 5, 10, 10, 10, 10, 11, 11, 11 /), & 167 167 'topl0', 'IR rad. at TOA', 'W/m2', (/ ('', i=1, 9) /)) 168 168 TYPE(ctrl_out), SAVE :: o_SWupTOA = ctrl_out((/ 1, 4, 10, 10, 10, 10, 11, 11, 11 /), & 169 169 'SWupTOA', 'SWup at TOA', 'W/m2', (/ ('', i=1, 9) /)) 170 170 TYPE(ctrl_out), SAVE :: o_SWupTOAclr = ctrl_out((/ 1, 4, 10, 10, 10, 10, 11, 11, 11 /), & 171 171 'SWupTOAclr', 'SWup clear sky at TOA', 'W/m2', (/ ('', i=1, 9) /)) 172 172 TYPE(ctrl_out), SAVE :: o_SWdnTOA = ctrl_out((/ 1, 4, 10, 10, 10, 10, 11, 11, 11 /), & 173 173 'SWdnTOA', 'SWdn at TOA', 'W/m2', (/ ('', i=1, 9) /)) 174 174 TYPE(ctrl_out), SAVE :: o_SWdnTOAclr = ctrl_out((/ 1, 4, 10, 10, 10, 10, 11, 11, 11 /), & 175 175 'SWdnTOAclr', 'SWdn clear sky at TOA', 'W/m2', (/ ('', i=1, 9) /)) 176 176 TYPE(ctrl_out), SAVE :: o_nettop = ctrl_out((/ 1, 4, 10, 10, 10, 10, 11, 11, 11 /), & 177 177 'nettop', 'Net dn radiatif flux at TOA', 'W/m2', (/ ('', i=1, 9) /)) 178 178 TYPE(ctrl_out), SAVE :: o_SWup200 = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 179 179 'SWup200', 'SWup at 200mb', 'W/m2', (/ ('', i=1, 9) /)) 180 180 TYPE(ctrl_out), SAVE :: o_SWup200clr = ctrl_out((/ 10, 1, 10, 10, 10, 10, 11, 11, 11 /), & 181 181 'SWup200clr', 'SWup clear sky at 200mb', 'W/m2', (/ ('', i=1, 9) /)) 182 182 TYPE(ctrl_out), SAVE :: o_SWdn200 = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 183 183 'SWdn200', 'SWdn at 200mb', 'W/m2', (/ ('', i=1, 9) /)) 184 184 TYPE(ctrl_out), SAVE :: o_SWdn200clr = ctrl_out((/ 10, 1, 10, 10, 10, 10, 11, 11, 11 /), & 185 185 'SWdn200clr', 'SWdn clear sky at 200mb', 'W/m2', (/ ('', i=1, 9) /)) 186 186 187 187 ! arajouter 188 188 ! type(ctrl_out),save :: o_LWupTOA = ctrl_out((/ 1, 4, 10, 10, 10, 10, 11, 11, 11 /),'LWupTOA', & 189 ! 189 ! (/ ('', i=1, 9) /)) 190 190 ! type(ctrl_out),save :: o_LWupTOAclr = ctrl_out((/ 1, 4, 10, 10, 10, 10, 11, 11, 11 /),'LWupTOAclr', & 191 ! 191 ! (/ ('', i=1, 9) /)) 192 192 ! type(ctrl_out),save :: o_LWdnTOA = ctrl_out((/ 1, 4, 10, 10, 10, 10, 11, 11, 11 /),'LWdnTOA', & 193 ! 193 ! (/ ('', i=1, 9) /)) 194 194 ! type(ctrl_out),save :: o_LWdnTOAclr = ctrl_out((/ 1, 4, 10, 10, 10, 10, 11, 11, 11 /),'LWdnTOAclr', & 195 ! 195 ! (/ ('', i=1, 9) /)) 196 196 TYPE(ctrl_out), SAVE :: o_LWup200 = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 197 197 'LWup200', 'LWup at 200mb', 'W/m2', (/ ('', i=1, 9) /)) 198 198 TYPE(ctrl_out), SAVE :: o_LWup200clr = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 199 199 'LWup200clr', 'LWup clear sky at 200mb', 'W/m2', (/ ('', i=1, 9) /)) 200 200 TYPE(ctrl_out), SAVE :: o_LWdn200 = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 201 201 'LWdn200', 'LWdn at 200mb', 'W/m2', (/ ('', i=1, 9) /)) 202 202 TYPE(ctrl_out), SAVE :: o_LWdn200clr = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 203 203 'LWdn200clr', 'LWdn clear sky at 200mb', 'W/m2', (/ ('', i=1, 9) /)) 204 204 TYPE(ctrl_out), SAVE :: o_sols = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 205 205 'sols', 'Solar rad. at surf.', 'W/m2', (/ ('', i=1, 9) /)) 206 206 TYPE(ctrl_out), SAVE :: o_sols0 = ctrl_out((/ 1, 5, 10, 10, 10, 10, 11, 11, 11 /), & 207 207 'sols0', 'Solar rad. at surf.', 'W/m2', (/ ('', i=1, 9) /)) 208 208 TYPE(ctrl_out), SAVE :: o_soll = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 209 209 'soll', 'IR rad. at surface', 'W/m2', (/ ('', i=1, 9) /)) 210 210 TYPE(ctrl_out), SAVE :: o_soll0 = ctrl_out((/ 1, 5, 10, 10, 10, 10, 11, 11, 11 /), & 211 211 'soll0', 'IR rad. at surface', 'W/m2', (/ ('', i=1, 9) /)) 212 212 TYPE(ctrl_out), SAVE :: o_radsol = ctrl_out((/ 1, 7, 10, 10, 10, 10, 11, 11, 11 /), & 213 213 'radsol', 'Rayonnement au sol', 'W/m2', (/ ('', i=1, 9) /)) 214 214 TYPE(ctrl_out), SAVE :: o_SWupSFC = ctrl_out((/ 1, 4, 10, 10, 5, 10, 11, 11, 11 /), & 215 215 'SWupSFC', 'SWup at surface', 'W/m2', (/ ('', i=1, 9) /)) 216 216 TYPE(ctrl_out), SAVE :: o_SWupSFCclr = ctrl_out((/ 1, 4, 10, 10, 5, 10, 11, 11, 11 /), & 217 217 'SWupSFCclr', 'SWup clear sky at surface', 'W/m2', (/ ('', i=1, 9) /)) 218 218 TYPE(ctrl_out), SAVE :: o_SWdnSFC = ctrl_out((/ 1, 1, 10, 10, 5, 10, 11, 11, 11 /), & 219 219 'SWdnSFC', 'SWdn at surface', 'W/m2', (/ ('', i=1, 9) /)) 220 220 TYPE(ctrl_out), SAVE :: o_SWdnSFCclr = ctrl_out((/ 1, 4, 10, 10, 5, 10, 11, 11, 11 /), & 221 221 'SWdnSFCclr', 'SWdn clear sky at surface', 'W/m2', (/ ('', i=1, 9) /)) 222 222 TYPE(ctrl_out), SAVE :: o_LWupSFC = ctrl_out((/ 1, 4, 10, 10, 5, 10, 11, 11, 11 /), & 223 223 'LWupSFC', 'Upwd. IR rad. at surface', 'W/m2', (/ ('', i=1, 9) /)) 224 224 TYPE(ctrl_out), SAVE :: o_LWupSFCclr = ctrl_out((/ 1, 4, 10, 10, 5, 10, 11, 11, 11 /), & 225 225 'LWupSFCclr', 'CS Upwd. IR rad. at surface', 'W/m2', (/ ('', i=1, 9) /)) 226 226 TYPE(ctrl_out), SAVE :: o_LWdnSFC = ctrl_out((/ 1, 4, 10, 10, 5, 10, 11, 11, 11 /), & 227 227 'LWdnSFC', 'Down. IR rad. at surface', 'W/m2', (/ ('', i=1, 9) /)) 228 228 TYPE(ctrl_out), SAVE :: o_LWdnSFCclr = ctrl_out((/ 1, 4, 10, 10, 5, 10, 11, 11, 11 /), & 229 229 'LWdnSFCclr', 'Down. CS IR rad. at surface', 'W/m2', (/ ('', i=1, 9) /)) 230 230 TYPE(ctrl_out), SAVE :: o_bils = ctrl_out((/ 1, 2, 10, 5, 10, 10, 11, 11, 11 /), & 231 231 'bils', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 9) /)) 232 232 TYPE(ctrl_out), SAVE :: o_bils_tke = ctrl_out((/ 1, 2, 10, 5, 10, 10, 11, 11, 11 /), & 233 233 'bils_tke', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 9) /)) 234 234 TYPE(ctrl_out), SAVE :: o_bils_diss = ctrl_out((/ 1, 2, 10, 5, 10, 10, 11, 11, 11 /), & 235 235 'bils_diss', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 9) /)) 236 236 TYPE(ctrl_out), SAVE :: o_bils_ec = ctrl_out((/ 1, 2, 10, 5, 10, 10, 11, 11, 11 /), & 237 237 'bils_ec', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 9) /)) 238 238 TYPE(ctrl_out), SAVE :: o_bils_kinetic = ctrl_out((/ 1, 2, 10, 5, 10, 10, 11, 11, 11 /), & 239 239 'bils_kinetic', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 9) /)) 240 240 TYPE(ctrl_out), SAVE :: o_bils_enthalp = ctrl_out((/ 1, 2, 10, 5, 10, 10, 11, 11, 11 /), & 241 241 'bils_enthalp', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 9) /)) 242 242 TYPE(ctrl_out), SAVE :: o_bils_latent = ctrl_out((/ 1, 2, 10, 5, 10, 10, 11, 11, 11 /), & 243 243 'bils_latent', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 9) /)) 244 244 TYPE(ctrl_out), SAVE :: o_sens = ctrl_out((/ 1, 1, 10, 10, 5, 10, 11, 11, 11 /), & 245 245 'sens', 'Sensible heat flux', 'W/m2', (/ ('', i=1, 9) /)) 246 246 TYPE(ctrl_out), SAVE :: o_fder = ctrl_out((/ 1, 2, 10, 10, 10, 10, 11, 11, 11 /), & 247 247 'fder', 'Heat flux derivation', 'W/m2', (/ ('', i=1, 9) /)) 248 248 TYPE(ctrl_out), SAVE :: o_ffonte = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 249 249 'ffonte', 'Thermal flux for snow melting', 'W/m2', (/ ('', i=1, 9) /)) 250 250 TYPE(ctrl_out), SAVE :: o_fqcalving = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 251 251 'fqcalving', 'Ice Calving', 'kg/m2/s', (/ ('', i=1, 9) /)) 252 252 TYPE(ctrl_out), SAVE :: o_fqfonte = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 253 253 'fqfonte', 'Land ice melt', 'kg/m2/s', (/ ('', i=1, 9) /)) 254 254 TYPE(ctrl_out), SAVE :: o_taux = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 255 255 'taux', 'Zonal wind stress', 'Pa', (/ ('', i=1, 9) /)) 256 256 TYPE(ctrl_out), SAVE :: o_tauy = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 257 257 'tauy', 'Meridional wind stress', 'Pa', (/ ('', i=1, 9) /)) 258 258 259 259 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_taux_srf = (/ & … … 378 378 379 379 TYPE(ctrl_out), SAVE :: o_cdrm = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 380 380 'cdrm', 'Momentum drag coef.', '-', (/ ('', i=1, 9) /)) 381 381 TYPE(ctrl_out), SAVE :: o_cdrh = ctrl_out((/ 1, 10, 10, 7, 10, 10, 11, 11, 11 /), & 382 382 'cdrh', 'Heat drag coef.', '-', (/ ('', i=1, 9) /)) 383 383 TYPE(ctrl_out), SAVE :: o_cldl = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 384 384 'cldl', 'Low-level cloudiness', '-', (/ ('', i=1, 9) /)) 385 385 TYPE(ctrl_out), SAVE :: o_cldm = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 386 386 'cldm', 'Mid-level cloudiness', '-', (/ ('', i=1, 9) /)) 387 387 TYPE(ctrl_out), SAVE :: o_cldh = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 388 388 'cldh', 'High-level cloudiness', '-', (/ ('', i=1, 9) /)) 389 389 TYPE(ctrl_out), SAVE :: o_cldt = ctrl_out((/ 1, 1, 2, 10, 5, 10, 11, 11, 11 /), & 390 390 'cldt', 'Total cloudiness', '-', (/ ('', i=1, 9) /)) 391 391 TYPE(ctrl_out), SAVE :: o_cldq = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 392 392 'cldq', 'Cloud liquid water path', 'kg/m2', (/ ('', i=1, 9) /)) 393 393 TYPE(ctrl_out), SAVE :: o_lwp = ctrl_out((/ 1, 5, 10, 10, 10, 10, 11, 11, 11 /), & 394 394 'lwp', 'Cloud water path', 'kg/m2', (/ ('', i=1, 9) /)) 395 395 TYPE(ctrl_out), SAVE :: o_iwp = ctrl_out((/ 1, 5, 10, 10, 10, 10, 11, 11, 11 /), & 396 396 'iwp', 'Cloud ice water path', 'kg/m2', (/ ('', i=1, 9) /)) 397 397 TYPE(ctrl_out), SAVE :: o_ue = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 398 398 'ue', 'Zonal energy transport', '-', (/ ('', i=1, 9) /)) 399 399 TYPE(ctrl_out), SAVE :: o_ve = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 400 400 've', 'Merid energy transport', '-', (/ ('', i=1, 9) /)) 401 401 TYPE(ctrl_out), SAVE :: o_uq = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 402 402 'uq', 'Zonal humidity transport', '-', (/ ('', i=1, 9) /)) 403 403 TYPE(ctrl_out), SAVE :: o_vq = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 404 404 'vq', 'Merid humidity transport', '-', (/ ('', i=1, 9) /)) 405 405 TYPE(ctrl_out), SAVE :: o_cape = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 406 406 'cape', 'Conv avlbl pot ener', 'J/kg', (/ ('', i=1, 9) /)) 407 407 TYPE(ctrl_out), SAVE :: o_pbase = ctrl_out((/ 1, 5, 10, 10, 10, 10, 11, 11, 11 /), & 408 408 'pbase', 'Cld base pressure', 'Pa', (/ ('', i=1, 9) /)) 409 409 TYPE(ctrl_out), SAVE :: o_ptop = ctrl_out((/ 1, 5, 10, 10, 10, 10, 11, 11, 11 /), & 410 410 'ptop', 'Cld top pressure', 'Pa', (/ ('', i=1, 9) /)) 411 411 TYPE(ctrl_out), SAVE :: o_fbase = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 412 412 'fbase', 'Cld base mass flux', 'kg/m2/s', (/ ('', i=1, 9) /)) 413 413 TYPE(ctrl_out), SAVE :: o_plcl = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 414 414 'plcl', 'Lifting Condensation Level', 'hPa', (/ ('', i=1, 9) /)) 415 415 TYPE(ctrl_out), SAVE :: o_plfc = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 416 416 'plfc', 'Level of Free Convection', 'hPa', (/ ('', i=1, 9) /)) 417 417 TYPE(ctrl_out), SAVE :: o_wbeff = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 418 418 'wbeff', 'Conv. updraft velocity at LFC (<100)', 'm/s', (/ ('', i=1, 9) /)) 419 419 TYPE(ctrl_out), SAVE :: o_prw = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 420 420 'prw', 'Precipitable water', 'kg/m2', (/ ('', i=1, 9) /)) 421 421 TYPE(ctrl_out), SAVE :: o_s_pblh = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 422 422 's_pblh', 'Boundary Layer Height', 'm', (/ ('', i=1, 9) /)) 423 423 TYPE(ctrl_out), SAVE :: o_s_pblt = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 424 424 's_pblt', 't at Boundary Layer Height', 'K', (/ ('', i=1, 9) /)) 425 425 TYPE(ctrl_out), SAVE :: o_s_lcl = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 426 426 's_lcl', 'Condensation level', 'm', (/ ('', i=1, 9) /)) 427 427 TYPE(ctrl_out), SAVE :: o_s_therm = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 428 428 's_therm', 'Exces du thermique', 'K', (/ ('', i=1, 9) /)) 429 429 !IM : Les champs suivants (s_capCL, s_oliqCL, s_cteiCL, s_trmb1, s_trmb2, s_trmb3) ne sont pas definis dans HBTM.F 430 430 ! type(ctrl_out),save :: o_s_capCL = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'s_capCL', & 431 ! 431 ! (/ ('', i=1, 9) /)) 432 432 ! type(ctrl_out),save :: o_s_oliqCL = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'s_oliqCL', & 433 ! 433 ! (/ ('', i=1, 9) /)) 434 434 ! type(ctrl_out),save :: o_s_cteiCL = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'s_cteiCL', & 435 ! 435 ! (/ ('', i=1, 9) /)) 436 436 ! type(ctrl_out),save :: o_s_trmb1 = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'s_trmb1', & 437 ! 437 ! (/ ('', i=1, 9) /)) 438 438 ! type(ctrl_out),save :: o_s_trmb2 = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'s_trmb2', & 439 ! 439 ! (/ ('', i=1, 9) /)) 440 440 ! type(ctrl_out),save :: o_s_trmb3 = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'s_trmb3', & 441 441 !(/ ('', i=1, 9) /)) 442 442 TYPE(ctrl_out), SAVE :: o_slab_bils = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 443 443 'slab_bils_oce', 'Bilan au sol sur ocean slab', 'W/m2', (/ ('', i=1, 9) /)) 444 444 TYPE(ctrl_out), SAVE :: o_ale_bl = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 445 445 'ale_bl', 'ALE BL', 'm2/s2', (/ ('', i=1, 9) /)) 446 446 TYPE(ctrl_out), SAVE :: o_alp_bl = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 447 447 'alp_bl', 'ALP BL', 'm2/s2', (/ ('', i=1, 9) /)) 448 448 TYPE(ctrl_out), SAVE :: o_ale_wk = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 449 449 'ale_wk', 'ALE WK', 'm2/s2', (/ ('', i=1, 9) /)) 450 450 TYPE(ctrl_out), SAVE :: o_alp_wk = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 451 451 'alp_wk', 'ALP WK', 'm2/s2', (/ ('', i=1, 9) /)) 452 452 TYPE(ctrl_out), SAVE :: o_ale = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 453 453 'ale', 'ALE', 'm2/s2', (/ ('', i=1, 9) /)) 454 454 TYPE(ctrl_out), SAVE :: o_alp = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 455 455 'alp', 'ALP', 'W/m2', (/ ('', i=1, 9) /)) 456 456 TYPE(ctrl_out), SAVE :: o_cin = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 457 457 'cin', 'Convective INhibition', 'm2/s2', (/ ('', i=1, 9) /)) 458 458 TYPE(ctrl_out), SAVE :: o_wape = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 459 459 'wape', '', '', (/ ('', i=1, 9) /)) 460 460 461 461 !!! nrlmd le 10/04/2012 … … 463 463 !-------Spectre de thermiques de type 2 au LCL 464 464 TYPE(ctrl_out), SAVE :: o_n2 = ctrl_out((/ 1, 1, 1, 6, 10, 10, 11, 11, 11 /), & 465 465 'n2', 'Nombre de panaches de type 2', ' ', (/ ('', i=1, 9) /)) 466 466 TYPE(ctrl_out), SAVE :: o_s2 = ctrl_out((/ 1, 1, 1, 6, 10, 10, 11, 11, 11 /), & 467 467 's2', 'Surface moyenne des panaches de type 2', 'm2', (/ ('', i=1, 9) /)) 468 468 469 469 !-------Déclenchement stochastique 470 470 TYPE(ctrl_out), SAVE :: o_proba_notrig = ctrl_out((/ 1, 1, 1, 6, 10, 10, 11, 11, 11 /), & 471 471 'proba_notrig', & 472 472 'Probabilité de non-déclenchement', ' ', (/ ('', i=1, 9) /)) 473 473 TYPE(ctrl_out), SAVE :: o_random_notrig = ctrl_out((/ 1, 1, 1, 6, 10, 10, 11, 11, 11 /), & 474 474 'random_notrig', & 475 475 'Tirage aléatoire de non-déclenchement', ' ', (/ ('', i=1, 9) /)) 476 476 TYPE(ctrl_out), SAVE :: o_ale_bl_stat = ctrl_out((/ 1, 1, 1, 6, 10, 10, 11, 11, 11 /), & 477 477 'ale_bl_stat', & 478 478 'ALE_BL_STAT', 'm2/s2', (/ ('', i=1, 9) /)) 479 479 TYPE(ctrl_out), SAVE :: o_ale_bl_trig = ctrl_out((/ 1, 1, 1, 6, 10, 10, 11, 11, 11 /), & 480 480 'ale_bl_trig', & 481 481 'ALE_BL_STAT + Condition P>Pseuil', 'm2/s2', (/ ('', i=1, 9) /)) 482 482 483 483 !-------Fermeture statistique 484 484 TYPE(ctrl_out), SAVE :: o_alp_bl_det = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 485 485 'alp_bl_det', 'ALP_BL_DET', 'W/m2', (/ ('', i=1, 9) /)) 486 486 TYPE(ctrl_out), SAVE :: o_alp_bl_fluct_m = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 487 487 'alp_bl_fluct_m', 'ALP_BL_FLUCT_M', 'W/m2', (/ ('', i=1, 9) /)) 488 488 TYPE(ctrl_out), SAVE :: o_alp_bl_fluct_tke = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 489 489 'alp_bl_fluct_tke', 'ALP_BL_FLUCT_TKE', 'W/m2', (/ ('', i=1, 9) /)) 490 490 TYPE(ctrl_out), SAVE :: o_alp_bl_conv = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 491 491 'alp_bl_conv', 'ALP_BL_CONV', 'W/m2', (/ ('', i=1, 9) /)) 492 492 TYPE(ctrl_out), SAVE :: o_alp_bl_stat = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 493 493 'alp_bl_stat', 'ALP_BL_STAT', 'W/m2', (/ ('', i=1, 9) /)) 494 494 495 495 !!! fin nrlmd le 10/04/2012 … … 594 594 595 595 TYPE(ctrl_out), SAVE :: o_t_oce_sic = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 596 596 't_oce_sic', 'Temp mixte oce-sic', 'K', (/ ('', i=1, 9) /)) 597 597 TYPE(ctrl_out), SAVE :: o_weakinv = ctrl_out((/ 10, 1, 10, 10, 10, 10, 11, 11, 11 /), & 598 598 'weakinv', 'Weak inversion', '-', (/ ('', i=1, 9) /)) 599 599 TYPE(ctrl_out), SAVE :: o_dthmin = ctrl_out((/ 10, 1, 10, 10, 10, 10, 11, 11, 11 /), & 600 600 'dthmin', 'dTheta mini', 'K/m', (/ ('', i=1, 9) /)) 601 601 602 602 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_u10_srf = (/ & … … 613 613 614 614 TYPE(ctrl_out), SAVE :: o_cldtau = ctrl_out((/ 10, 5, 10, 10, 10, 10, 11, 11, 11 /), & 615 615 'cldtau', 'Cloud optical thickness', '1', (/ ('', i=1, 9) /)) 616 616 TYPE(ctrl_out), SAVE :: o_cldemi = ctrl_out((/ 10, 5, 10, 10, 10, 10, 11, 11, 11 /), & 617 617 'cldemi', 'Cloud optical emissivity', '1', (/ ('', i=1, 9) /)) 618 618 TYPE(ctrl_out), SAVE :: o_rh2m = ctrl_out((/ 5, 5, 10, 10, 10, 10, 11, 11, 11 /), & 619 619 'rh2m', 'Relative humidity at 2m', '%', (/ ('', i=1, 9) /)) 620 620 TYPE(ctrl_out), SAVE :: o_rh2m_min = ctrl_out((/ 10, 5, 10, 10, 10, 10, 11, 11, 11 /), & 621 621 'rh2m_min', 'Min Relative humidity at 2m', '%', & 622 622 (/ 't_min(X)', 't_min(X)', 't_min(X)', 't_min(X)', 't_min(X)', 't_min(X)', 't_min(X)', 't_min(X)', 't_min(X)' /)) 623 623 TYPE(ctrl_out), SAVE :: o_rh2m_max = ctrl_out((/ 10, 5, 10, 10, 10, 10, 11, 11, 11 /), & 624 624 'rh2m_max', 'Max Relative humidity at 2m', '%', & 625 625 (/ 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)', & 626 626 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)' /)) 627 627 TYPE(ctrl_out), SAVE :: o_qsat2m = ctrl_out((/ 10, 5, 10, 10, 10, 10, 11, 11, 11 /), & 628 628 'qsat2m', 'Saturant humidity at 2m', '%', (/ ('', i=1, 9) /)) 629 629 TYPE(ctrl_out), SAVE :: o_tpot = ctrl_out((/ 10, 5, 10, 10, 10, 10, 11, 11, 11 /), & 630 630 'tpot', 'Surface air potential temperature', 'K', (/ ('', i=1, 9) /)) 631 631 TYPE(ctrl_out), SAVE :: o_tpote = ctrl_out((/ 10, 5, 10, 10, 10, 10, 11, 11, 11 /), & 632 632 'tpote', & 633 633 'Surface air equivalent potential temperature', 'K', (/ ('', i=1, 9) /)) 634 634 TYPE(ctrl_out), SAVE :: o_tke = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 635 635 'tke ', 'TKE', 'm2/s2', (/ ('', i=1, 9) /)) 636 636 TYPE(ctrl_out), SAVE :: o_tke_max = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 637 637 'tke_max', 'TKE max', 'm2/s2', & 638 638 (/ 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)', & 639 639 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)' /)) … … 668 668 669 669 TYPE(ctrl_out), SAVE :: o_kz = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 670 670 'kz', 'Kz melange', 'm2/s', (/ ('', i=1, 9) /)) 671 671 TYPE(ctrl_out), SAVE :: o_kz_max = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 672 672 'kz_max', 'Kz melange max', 'm2/s', & 673 673 (/ 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)', & 674 674 't_max(X)', "t_max(X)", "t_max(X)", "t_max(X)" /)) 675 675 TYPE(ctrl_out), SAVE :: o_SWnetOR = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 676 676 'SWnetOR', 'Sfce net SW radiation OR', 'W/m2', (/ ('', i=1, 9) /)) 677 677 TYPE(ctrl_out), SAVE :: o_SWdownOR = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 678 678 'SWdownOR', 'Sfce incident SW radiation OR', 'W/m2', (/ ('', i=1, 9) /)) 679 679 TYPE(ctrl_out), SAVE :: o_LWdownOR = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 680 680 'LWdownOR', 'Sfce incident LW radiation OR', 'W/m2', (/ ('', i=1, 9) /)) 681 681 TYPE(ctrl_out), SAVE :: o_snowl = ctrl_out((/ 10, 1, 10, 10, 10, 10, 11, 11, 11 /), & 682 682 'snowl', 'Solid Large-scale Precip.', 'kg/(m2*s)', (/ ('', i=1, 9) /)) 683 683 TYPE(ctrl_out), SAVE :: o_cape_max = ctrl_out((/ 10, 1, 10, 10, 10, 10, 11, 11, 11 /), & 684 684 'cape_max', 'CAPE max.', 'J/kg', & 685 685 (/ "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", & 686 686 "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)" /)) 687 687 TYPE(ctrl_out), SAVE :: o_solldown = ctrl_out((/ 10, 1, 10, 10, 10, 10, 11, 11, 11 /), & 688 688 'solldown', 'Down. IR rad. at surface', 'W/m2', (/ ('', i=1, 9) /)) 689 689 TYPE(ctrl_out), SAVE :: o_dtsvdfo = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 690 690 'dtsvdfo', 'Boundary-layer dTs(o)', 'K/s', (/ ('', i=1, 9) /)) 691 691 TYPE(ctrl_out), SAVE :: o_dtsvdft = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 692 692 'dtsvdft', 'Boundary-layer dTs(t)', 'K/s', (/ ('', i=1, 9) /)) 693 693 TYPE(ctrl_out), SAVE :: o_dtsvdfg = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 694 694 'dtsvdfg', 'Boundary-layer dTs(g)', 'K/s', (/ ('', i=1, 9) /)) 695 695 TYPE(ctrl_out), SAVE :: o_dtsvdfi = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 696 696 'dtsvdfi', 'Boundary-layer dTs(g)', 'K/s', (/ ('', i=1, 9) /)) 697 697 TYPE(ctrl_out), SAVE :: o_rugs = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 698 698 'rugs', 'rugosity', '-', (/ ('', i=1, 9) /)) 699 699 TYPE(ctrl_out), SAVE :: o_topswad = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 700 700 'topswad', 'ADE at TOA', 'W/m2', (/ ('', i=1, 9) /)) 701 701 TYPE(ctrl_out), SAVE :: o_topswad0 = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 702 702 'topswad0', 'ADE clear-sky at TOA', 'W/m2', (/ ('', i=1, 9) /)) 703 703 TYPE(ctrl_out), SAVE :: o_topswai = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 704 704 'topswai', 'AIE at TOA', 'W/m2', (/ ('', i=1, 9) /)) 705 705 TYPE(ctrl_out), SAVE :: o_solswad = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 706 706 'solswad', 'ADE at SRF', 'W/m2', (/ ('', i=1, 9) /)) 707 707 TYPE(ctrl_out), SAVE :: o_solswad0 = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 708 708 'solswad0', 'ADE clear-sky at SRF', 'W/m2', (/ ('', i=1, 9) /)) 709 709 TYPE(ctrl_out), SAVE :: o_solswai = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 710 710 'solswai', 'AIE at SFR', 'W/m2', (/ ('', i=1, 9) /)) 711 711 712 712 ! type(ctrl_out),save,dimension(10) :: o_tausumaero = (/ ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /),'OD550_ASBCM', & 713 ! 713 ! (/ ('', i=1, 9) /)), & 714 714 type(ctrl_out),save,dimension(11) :: o_tausumaero = & 715 715 (/ ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /),'OD550_ASBCM', & … … 736 736 "Aerosol Optical depth at 550 nm "//name_aero(11),"1", (/ ('', i=1, 9) /)) /) 737 737 TYPE(ctrl_out), SAVE :: o_od550aer = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 738 738 'od550aer', 'Total aerosol optical depth at 550nm', '-', (/ ('', i=1, 9) /)) 739 739 TYPE(ctrl_out), SAVE :: o_od865aer = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 740 740 'od865aer', 'Total aerosol optical depth at 870nm', '-', (/ ('', i=1, 9) /)) 741 741 TYPE(ctrl_out), SAVE :: o_absvisaer = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 742 742 'absvisaer', 'Absorption aerosol visible optical depth', '-', (/ ('', i=1, 9) /)) 743 743 TYPE(ctrl_out), SAVE :: o_od550lt1aer = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 744 744 'od550lt1aer', 'Fine mode optical depth', '-', (/ ('', i=1, 9) /)) 745 745 TYPE(ctrl_out), SAVE :: o_sconcso4 = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 746 746 'sconcso4', 'Surface Concentration of Sulfate ', 'kg/m3', (/ ('', i=1, 9) /)) 747 747 TYPE(ctrl_out), SAVE :: o_sconcoa = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 748 748 'sconcoa', 'Surface Concentration of Organic Aerosol ', 'kg/m3', (/ ('', i=1, 9) /)) 749 749 TYPE(ctrl_out), SAVE :: o_sconcbc = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 750 750 'sconcbc', 'Surface Concentration of Black Carbon ', 'kg/m3', (/ ('', i=1, 9) /)) 751 751 TYPE(ctrl_out), SAVE :: o_sconcss = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 752 752 'sconcss', 'Surface Concentration of Sea Salt ', 'kg/m3', (/ ('', i=1, 9) /)) 753 753 TYPE(ctrl_out), SAVE :: o_sconcdust = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 754 754 'sconcdust', 'Surface Concentration of Dust ', 'kg/m3', (/ ('', i=1, 9) /)) 755 755 TYPE(ctrl_out), SAVE :: o_concso4 = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 756 756 'concso4', 'Concentration of Sulfate ', 'kg/m3', (/ ('', i=1, 9) /)) 757 757 TYPE(ctrl_out), SAVE :: o_concoa = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 758 758 'concoa', 'Concentration of Organic Aerosol ', 'kg/m3', (/ ('', i=1, 9) /)) 759 759 TYPE(ctrl_out), SAVE :: o_concbc = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 760 760 'concbc', 'Concentration of Black Carbon ', 'kg/m3', (/ ('', i=1, 9) /)) 761 761 TYPE(ctrl_out), SAVE :: o_concss = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 762 762 'concss', 'Concentration of Sea Salt ', 'kg/m3', (/ ('', i=1, 9) /)) 763 763 TYPE(ctrl_out), SAVE :: o_concdust = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 764 764 'concdust', 'Concentration of Dust ', 'kg/m3', (/ ('', i=1, 9) /)) 765 765 TYPE(ctrl_out), SAVE :: o_loadso4 = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 766 766 'loadso4', 'Column Load of Sulfate ', 'kg/m2', (/ ('', i=1, 9) /)) 767 767 TYPE(ctrl_out), SAVE :: o_loadoa = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 768 768 'loadoa', 'Column Load of Organic Aerosol ', 'kg/m2', (/ ('', i=1, 9) /)) 769 769 TYPE(ctrl_out), SAVE :: o_loadbc = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 770 770 'loadbc', 'Column Load of Black Carbon ', 'kg/m2', (/ ('', i=1, 9) /)) 771 771 TYPE(ctrl_out), SAVE :: o_loadss = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 772 772 'loadss', 'Column Load of Sea Salt ', 'kg/m2', (/ ('', i=1, 9) /)) 773 773 TYPE(ctrl_out), SAVE :: o_loaddust = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 774 774 'loaddust', 'Column Load of Dust ', 'kg/m2', (/ ('', i=1, 9) /)) 775 775 TYPE(ctrl_out), SAVE :: o_swtoaas_nat = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 776 776 'swtoaas_nat', 'Natural aerosol radiative forcing all-sky at TOA', 'W/m2', (/ ('', i=1, 9) /)) 777 777 TYPE(ctrl_out), SAVE :: o_swsrfas_nat = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 778 778 'swsrfas_nat', 'Natural aerosol radiative forcing all-sky at SRF', 'W/m2', (/ ('', i=1, 9) /)) 779 779 TYPE(ctrl_out), SAVE :: o_swtoacs_nat = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 780 780 'swtoacs_nat', 'Natural aerosol radiative forcing clear-sky at TOA', 'W/m2', (/ ('', i=1, 9) /)) 781 781 TYPE(ctrl_out), SAVE :: o_swsrfcs_nat = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 782 782 'swsrfcs_nat', 'Natural aerosol radiative forcing clear-sky at SRF', 'W/m2', (/ ('', i=1, 9) /)) 783 783 TYPE(ctrl_out), SAVE :: o_swtoaas_ant = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 784 784 'swtoaas_ant', 'Anthropogenic aerosol radiative forcing all-sky at TOA', 'W/m2', (/ ('', i=1, 9) /)) 785 785 TYPE(ctrl_out), SAVE :: o_swsrfas_ant = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 786 786 'swsrfas_ant', 'Anthropogenic aerosol radiative forcing all-sky at SRF', 'W/m2', (/ ('', i=1, 9) /)) 787 787 TYPE(ctrl_out), SAVE :: o_swtoacs_ant = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 788 788 'swtoacs_ant', 'Anthropogenic aerosol radiative forcing clear-sky at TOA', 'W/m2', (/ ('', i=1, 9) /)) 789 789 TYPE(ctrl_out), SAVE :: o_swsrfcs_ant = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 790 790 'swsrfcs_ant', 'Anthropogenic aerosol radiative forcing clear-sky at SRF', 'W/m2', (/ ('', i=1, 9) /)) 791 791 TYPE(ctrl_out), SAVE :: o_swtoacf_nat = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 792 792 'swtoacf_nat', 'Natural aerosol impact on cloud radiative forcing at TOA', 'W/m2', (/ ('', i=1, 9) /)) 793 793 TYPE(ctrl_out), SAVE :: o_swsrfcf_nat = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 794 794 'swsrfcf_nat', 'Natural aerosol impact on cloud radiative forcing at SRF', 'W/m2', (/ ('', i=1, 9) /)) 795 795 TYPE(ctrl_out), SAVE :: o_swtoacf_ant = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 796 796 'swtoacf_ant', 'Anthropogenic aerosol impact on cloud radiative forcing at TOA', 'W/m2', (/ ('', i=1, 9) /)) 797 797 TYPE(ctrl_out), SAVE :: o_swsrfcf_ant = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 798 798 'swsrfcf_ant', 'Anthropogenic aerosol impact on cloud radiative forcing at SRF', 'W/m2', (/ ('', i=1, 9) /)) 799 799 TYPE(ctrl_out), SAVE :: o_swtoacf_zero = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 800 800 'swtoacf_zero', 'Cloud radiative forcing (allsky-clearsky fluxes) at TOA', 'W/m2', (/ ('', i=1, 9) /)) 801 801 TYPE(ctrl_out), SAVE :: o_swsrfcf_zero = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 802 802 'swsrfcf_zero', 'Cloud radiative forcing (allsky-clearsky fluxes) at SRF', 'W/m2', (/ ('', i=1, 9) /)) 803 803 TYPE(ctrl_out), SAVE :: o_cldncl = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 804 804 'cldncl', 'CDNC at top of liquid water cloud', 'm-3', (/ ('', i=1, 9) /)) 805 805 TYPE(ctrl_out), SAVE :: o_reffclwtop = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 806 806 'reffclwtop', 'Droplet effective radius at top of liquid water cloud', 'm', (/ ('', i=1, 9) /)) 807 807 TYPE(ctrl_out), SAVE :: o_cldnvi = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 808 808 'cldnvi', 'Column Integrated Cloud Droplet Number', 'm-2', (/ ('', i=1, 9) /)) 809 809 TYPE(ctrl_out), SAVE :: o_lcc = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 810 810 'lcc', 'Cloud liquid fraction at top of cloud', '1', (/ ('', i=1, 9) /)) 811 811 812 812 813 813 !!!!!!!!!!!!!!!!!!!!!! 3D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 814 814 TYPE(ctrl_out), SAVE :: o_ec550aer = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 815 815 'ec550aer', 'Extinction at 550nm', 'm^-1', (/ ('', i=1, 9) /)) 816 816 TYPE(ctrl_out), SAVE :: o_lwcon = ctrl_out((/ 2, 5, 10, 10, 10, 10, 11, 11, 11 /), & 817 817 'lwcon', 'Cloud liquid water content', 'kg/kg', (/ ('', i=1, 9) /)) 818 818 TYPE(ctrl_out), SAVE :: o_iwcon = ctrl_out((/ 2, 5, 10, 10, 10, 10, 11, 11, 11 /), & 819 819 'iwcon', 'Cloud ice water content', 'kg/kg', (/ ('', i=1, 9) /)) 820 820 TYPE(ctrl_out), SAVE :: o_temp = ctrl_out((/ 2, 3, 4, 10, 10, 10, 11, 11, 11 /), & 821 821 'temp', 'Air temperature', 'K', (/ ('', i=1, 9) /)) 822 822 TYPE(ctrl_out), SAVE :: o_theta = ctrl_out((/ 2, 3, 4, 10, 10, 10, 11, 11, 11 /), & 823 823 'theta', 'Potential air temperature', 'K', (/ ('', i=1, 9) /)) 824 824 TYPE(ctrl_out), SAVE :: o_ovap = ctrl_out((/ 2, 3, 4, 10, 10, 10, 11, 11, 11 /), & 825 825 'ovap', 'Specific humidity', 'kg/kg', (/ ('', i=1, 9) /)) 826 826 TYPE(ctrl_out), SAVE :: o_ovapinit = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 827 827 'ovapinit', 'Specific humidity (begin of timestep)', 'kg/kg', (/ ('', i=1, 9) /)) 828 828 TYPE(ctrl_out), SAVE :: o_oliq = ctrl_out((/ 2, 3, 4, 10, 10, 10, 11, 11, 11 /), & 829 829 'oliq', 'Condensed water', 'kg/kg', (/ ('', i=1, 9) /)) 830 830 TYPE(ctrl_out), SAVE :: o_wvapp = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 831 831 'wvapp', '', '', (/ ('', i=1, 9) /)) 832 832 TYPE(ctrl_out), SAVE :: o_geop = ctrl_out((/ 2, 3, 10, 10, 10, 10, 11, 11, 11 /), & 833 833 'geop', 'Geopotential height', 'm2/s2', (/ ('', i=1, 9) /)) 834 834 TYPE(ctrl_out), SAVE :: o_vitu = ctrl_out((/ 2, 3, 4, 6, 10, 10, 11, 11, 11 /), & 835 835 'vitu', 'Zonal wind', 'm/s', (/ ('', i=1, 9) /)) 836 836 TYPE(ctrl_out), SAVE :: o_vitv = ctrl_out((/ 2, 3, 4, 6, 10, 10, 11, 11, 11 /), & 837 837 'vitv', 'Meridional wind', 'm/s', (/ ('', i=1, 9) /)) 838 838 TYPE(ctrl_out), SAVE :: o_vitw = ctrl_out((/ 2, 3, 10, 6, 10, 10, 11, 11, 11 /), & 839 839 'vitw', 'Vertical wind', 'Pa/s', (/ ('', i=1, 9) /)) 840 840 TYPE(ctrl_out), SAVE :: o_pres = ctrl_out((/ 2, 3, 10, 10, 10, 10, 11, 11, 11 /), & 841 841 'pres', 'Air pressure', 'Pa', (/ ('', i=1, 9) /)) 842 842 TYPE(ctrl_out), SAVE :: o_paprs = ctrl_out((/ 2, 3, 10, 10, 10, 10, 11, 11, 11 /), & 843 843 'paprs', 'Air pressure Inter-Couches', 'Pa', (/ ('', i=1, 9) /)) 844 844 TYPE(ctrl_out), SAVE :: o_mass = ctrl_out((/ 2, 3, 10, 10, 10, 10, 11, 11, 11 /), & 845 845 'mass', 'Masse Couches', 'kg/m2', (/ ('', i=1, 9) /)) 846 846 TYPE(ctrl_out), SAVE :: o_zfull = ctrl_out((/ 2, 3, 10, 10, 10, 10, 11, 11, 11 /), & 847 847 'zfull', 'Altitude of full pressure levels', 'm', (/ ('', i=1, 9) /)) 848 848 TYPE(ctrl_out), SAVE :: o_zhalf = ctrl_out((/ 2, 3, 10, 10, 10, 10, 11, 11, 11 /), & 849 849 'zhalf', 'Altitude of half pressure levels', 'm', (/ ('', i=1, 9) /)) 850 850 TYPE(ctrl_out), SAVE :: o_rneb = ctrl_out((/ 2, 5, 10, 10, 10, 10, 11, 11, 11 /), & 851 851 'rneb', 'Cloud fraction', '-', (/ ('', i=1, 9) /)) 852 852 TYPE(ctrl_out), SAVE :: o_rnebcon = ctrl_out((/ 2, 5, 10, 10, 10, 10, 11, 11, 11 /), & 853 853 'rnebcon', 'Convective Cloud Fraction', '-', (/ ('', i=1, 9) /)) 854 854 TYPE(ctrl_out), SAVE :: o_rnebls = ctrl_out((/ 2, 5, 10, 10, 10, 10, 11, 11, 11 /), & 855 855 'rnebls', 'LS Cloud fraction', '-', (/ ('', i=1, 9) /)) 856 856 TYPE(ctrl_out), SAVE :: o_rhum = ctrl_out((/ 2, 5, 10, 10, 10, 10, 11, 11, 11 /), & 857 857 'rhum', 'Relative humidity', '-', (/ ('', i=1, 9) /)) 858 858 TYPE(ctrl_out), SAVE :: o_ozone = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 859 859 'ozone', 'Ozone mole fraction', '-', (/ ('', i=1, 9) /)) 860 860 TYPE(ctrl_out), SAVE :: o_ozone_light = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 861 861 'ozone_daylight', 'Daylight ozone mole fraction', '-', (/ ('', i=1, 9) /)) 862 862 TYPE(ctrl_out), SAVE :: o_upwd = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 863 863 'upwd', 'saturated updraft', 'kg/m2/s', (/ ('', i=1, 9) /)) 864 864 TYPE(ctrl_out), SAVE :: o_dtphy = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 865 865 'dtphy', 'Physics dT', 'K/s', (/ ('', i=1, 9) /)) 866 866 TYPE(ctrl_out), SAVE :: o_dqphy = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 867 867 'dqphy', 'Physics dQ', '(kg/kg)/s', (/ ('', i=1, 9) /)) 868 868 TYPE(ctrl_out), SAVE :: o_pr_con_l = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 869 869 'pr_con_l', 'Convective precipitation lic', ' ', (/ ('', i=1, 9) /)) 870 870 TYPE(ctrl_out), SAVE :: o_pr_con_i = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 871 871 'pr_con_i', 'Convective precipitation ice', ' ', (/ ('', i=1, 9) /)) 872 872 TYPE(ctrl_out), SAVE :: o_pr_lsc_l = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 873 873 'pr_lsc_l', 'Large scale precipitation lic', ' ', (/ ('', i=1, 9) /)) 874 874 TYPE(ctrl_out), SAVE :: o_pr_lsc_i = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 875 875 'pr_lsc_i', 'Large scale precipitation ice', ' ', (/ ('', i=1, 9) /)) 876 876 TYPE(ctrl_out), SAVE :: o_re = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 877 877 're', 'Cloud droplet effective radius', 'um', (/ ('', i=1, 9) /)) 878 878 TYPE(ctrl_out), SAVE :: o_fl = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 879 879 'fl', 'Denominator of Cloud droplet effective radius', ' ', (/ ('', i=1, 9) /)) 880 880 TYPE(ctrl_out), SAVE :: o_scdnc = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 881 881 'scdnc', 'Cloud droplet number concentration', 'm-3', (/ ('', i=1, 9) /)) 882 882 TYPE(ctrl_out), SAVE :: o_reffclws = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 883 883 'reffclws', 'Stratiform Cloud Droplet Effective Radius (aerosol diags.)', 'm', (/ ('', i=1, 9) /)) 884 884 TYPE(ctrl_out), SAVE :: o_reffclwc = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 885 885 'reffclwc', 'Convective Cloud Droplet Effective Radius (aerosol diags.)', 'm', (/ ('', i=1, 9) /)) 886 886 TYPE(ctrl_out), SAVE :: o_lcc3d = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 887 887 'lcc3d', 'Cloud liquid fraction', '1', (/ ('', i=1, 9) /)) 888 888 TYPE(ctrl_out), SAVE :: o_lcc3dcon = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 889 889 'lcc3dcon', 'Convective cloud liquid fraction', '1', (/ ('', i=1, 9) /)) 890 890 TYPE(ctrl_out), SAVE :: o_lcc3dstra = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 891 891 'lcc3dstra', 'Stratiform cloud liquid fraction', '1', (/ ('', i=1, 9) /)) 892 892 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 893 893 … … 911 911 912 912 TYPE(ctrl_out), SAVE :: o_alb1 = ctrl_out((/ 3, 10, 10, 10, 10, 10, 11, 11, 11 /), & 913 913 'alb1', 'Surface VIS albedo', '-', (/ ('', i=1, 9) /)) 914 914 TYPE(ctrl_out), SAVE :: o_alb2 = ctrl_out((/ 3, 10, 10, 10, 10, 10, 11, 11, 11 /), & 915 915 'alb2', 'Surface Near IR albedo', '-', (/ ('', i=1, 9) /)) 916 916 TYPE(ctrl_out), SAVE :: o_clwcon = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 917 917 'clwcon', 'Convective Cloud Liquid water content', 'kg/kg', (/ ('', i=1, 9) /)) 918 918 TYPE(ctrl_out), SAVE :: o_Ma = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 919 919 'Ma', 'undilute adiab updraft', 'kg/m2/s', (/ ('', i=1, 9) /)) 920 920 TYPE(ctrl_out), SAVE :: o_dnwd = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 921 921 'dnwd', 'saturated downdraft', 'kg/m2/s', (/ ('', i=1, 9) /)) 922 922 TYPE(ctrl_out), SAVE :: o_dnwd0 = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 923 923 'dnwd0', 'unsat. downdraft', 'kg/m2/s', (/ ('', i=1, 9) /)) 924 924 TYPE(ctrl_out), SAVE :: o_mc = ctrl_out((/ 4, 5, 10, 10, 10, 10, 11, 11, 11 /), & 925 925 'mc', 'Convective mass flux', 'kg/m2/s', (/ ('', i=1, 9) /)) 926 926 TYPE(ctrl_out), SAVE :: o_ftime_con = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 927 927 'ftime_con', 'Fraction of time convection Occurs', ' ', & 928 928 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)) 929 929 TYPE(ctrl_out), SAVE :: o_dtdyn = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 930 930 'dtdyn', 'Dynamics dT', 'K/s', (/ ('', i=1, 9) /)) 931 931 TYPE(ctrl_out), SAVE :: o_dqdyn = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 932 932 'dqdyn', 'Dynamics dQ', '(kg/kg)/s', (/ ('', i=1, 9) /)) 933 933 TYPE(ctrl_out), SAVE :: o_dudyn = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 934 934 'dudyn', 'Dynamics dU', 'm/s2', (/ ('', i=1, 9) /)) 935 935 TYPE(ctrl_out), SAVE :: o_dvdyn = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 936 936 'dvdyn', 'Dynamics dV', 'm/s2', (/ ('', i=1, 9) /)) 937 937 TYPE(ctrl_out), SAVE :: o_dtcon = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 938 938 'dtcon', 'Convection dT', 'K/s', (/ ('', i=1, 9) /)) 939 939 TYPE(ctrl_out), SAVE :: o_ducon = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 940 940 'ducon', 'Convection du', 'm/s2', (/ ('', i=1, 9) /)) 941 941 TYPE(ctrl_out), SAVE :: o_dvcon = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 942 942 'dvcon', 'Convection dv', 'm/s2', (/ ('', i=1, 9) /)) 943 943 TYPE(ctrl_out), SAVE :: o_dqcon = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 944 944 'dqcon', 'Convection dQ', '(kg/kg)/s', (/ ('', i=1, 9) /)) 945 945 TYPE(ctrl_out), SAVE :: o_dtwak = ctrl_out((/ 4, 5, 10, 10, 10, 10, 11, 11, 11 /), & 946 946 'dtwak', 'Wake dT', 'K/s', (/ ('', i=1, 9) /)) 947 947 TYPE(ctrl_out), SAVE :: o_dqwak = ctrl_out((/ 4, 5, 10, 10, 10, 10, 11, 11, 11 /), & 948 948 'dqwak', 'Wake dQ', '(kg/kg)/s', (/ ('', i=1, 9) /)) 949 949 TYPE(ctrl_out), SAVE :: o_wake_h = ctrl_out((/ 4, 5, 10, 10, 10, 10, 11, 11, 11 /), & 950 950 'wake_h', 'wake_h', '-', (/ ('', i=1, 9) /)) 951 951 TYPE(ctrl_out), SAVE :: o_wake_s = ctrl_out((/ 4, 5, 10, 10, 10, 10, 11, 11, 11 /), & 952 952 'wake_s', 'wake_s', '-', (/ ('', i=1, 9) /)) 953 953 TYPE(ctrl_out), SAVE :: o_wake_deltat = ctrl_out((/ 4, 5, 10, 10, 10, 10, 11, 11, 11 /), & 954 954 'wake_deltat', 'wake_deltat', ' ', (/ ('', i=1, 9) /)) 955 955 TYPE(ctrl_out), SAVE :: o_wake_deltaq = ctrl_out((/ 4, 5, 10, 10, 10, 10, 11, 11, 11 /), & 956 956 'wake_deltaq', 'wake_deltaq', ' ', (/ ('', i=1, 9) /)) 957 957 TYPE(ctrl_out), SAVE :: o_wake_omg = ctrl_out((/ 4, 5, 10, 10, 10, 10, 11, 11, 11 /), & 958 958 'wake_omg', 'wake_omg', ' ', (/ ('', i=1, 9) /)) 959 959 TYPE(ctrl_out), SAVE :: o_wdtrainA = ctrl_out((/ 4, 1, 10, 4, 1, 10, 11, 11, 110 /), & 960 960 'wdtrainA', 'precipitation from AA', '-', (/ ('', i=1, 9) /)) 961 961 TYPE(ctrl_out), SAVE :: o_wdtrainM = ctrl_out((/ 4, 1, 10, 4, 1, 10, 11, 11, 110 /), & 962 962 'wdtrainM', 'precipitation from mixture', '-', (/ ('', i=1, 9) /)) 963 963 TYPE(ctrl_out), SAVE :: o_Vprecip = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 964 964 'Vprecip', 'precipitation vertical profile', '-', (/ ('', i=1, 9) /)) 965 965 TYPE(ctrl_out), SAVE :: o_ftd = ctrl_out((/ 4, 5, 10, 10, 10, 10, 11, 11, 11 /), & 966 966 'ftd', 'tend temp due aux descentes precip', '-', (/ ('', i=1, 9) /)) 967 967 TYPE(ctrl_out), SAVE :: o_fqd = ctrl_out((/ 4, 5, 10, 10, 10, 10, 11, 11, 11 /), & 968 968 'fqd', 'tend vap eau due aux descentes precip', '-', (/ ('', i=1, 9) /)) 969 969 TYPE(ctrl_out), SAVE :: o_dtlsc = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 970 970 'dtlsc', 'Condensation dT', 'K/s', (/ ('', i=1, 9) /)) 971 971 TYPE(ctrl_out), SAVE :: o_dtlschr = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 972 972 'dtlschr', 'Large-scale condensational heating rate', 'K/s', (/ ('', i=1, 9) /)) 973 973 TYPE(ctrl_out), SAVE :: o_dqlsc = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 974 974 'dqlsc', 'Condensation dQ', '(kg/kg)/s', (/ ('', i=1, 9) /)) 975 975 TYPE(ctrl_out), SAVE :: o_beta_prec = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 976 976 'beta_prec', 'LS Conversion rate to prec', '(kg/kg)/s', (/ ('', i=1, 9) /)) 977 977 TYPE(ctrl_out), SAVE :: o_dtvdf = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 978 978 'dtvdf', 'Boundary-layer dT', 'K/s', (/ ('', i=1, 9) /)) 979 979 TYPE(ctrl_out), SAVE :: o_dtdis = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 980 980 'dtdis', 'TKE dissipation dT', 'K/s', (/ ('', i=1, 9) /)) 981 981 TYPE(ctrl_out), SAVE :: o_dqvdf = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 982 982 'dqvdf', 'Boundary-layer dQ', '(kg/kg)/s', (/ ('', i=1, 9) /)) 983 983 TYPE(ctrl_out), SAVE :: o_dteva = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 984 984 'dteva', 'Reevaporation dT', 'K/s', (/ ('', i=1, 9) /)) 985 985 TYPE(ctrl_out), SAVE :: o_dqeva = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 986 986 'dqeva', 'Reevaporation dQ', '(kg/kg)/s', (/ ('', i=1, 9) /)) 987 987 988 988 !!!!!!!!!!!!!!!! Specifique thermiques 989 989 TYPE(ctrl_out), SAVE :: o_dqlscth = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 990 990 'dqlscth', 'dQ therm.', '(kg/kg)/s', (/ ('', i=1, 9) /)) 991 991 TYPE(ctrl_out), SAVE :: o_dqlscst = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 992 992 'dqlscst', 'dQ strat.', '(kg/kg)/s', (/ ('', i=1, 9) /)) 993 993 TYPE(ctrl_out), SAVE :: o_dtlscth = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 994 994 'dtlscth', 'dQ therm.', 'K/s', (/ ('', i=1, 9) /)) 995 995 TYPE(ctrl_out), SAVE :: o_dtlscst = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 996 996 'dtlscst', 'dQ strat.', 'K/s', (/ ('', i=1, 9) /)) 997 997 TYPE(ctrl_out), SAVE :: o_plulth = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 998 998 'plulth', 'Rainfall therm.', 'K/s', (/ ('', i=1, 9) /)) 999 999 TYPE(ctrl_out), SAVE :: o_plulst = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1000 1000 'plulst', 'Rainfall strat.', 'K/s', (/ ('', i=1, 9) /)) 1001 1001 TYPE(ctrl_out), SAVE :: o_lmaxth = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1002 1002 'lmaxth', "Upper level thermals", "", (/ ('', i=1, 9) /)) 1003 1003 TYPE(ctrl_out), SAVE :: o_ptconvth = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1004 1004 'ptconvth', 'POINTS CONVECTIFS therm.', ' ', (/ ('', i=1, 9) /)) 1005 1005 !!!!!!!!!!!!!!!!!!!!!!!! 1006 1006 TYPE(ctrl_out), SAVE :: o_ptconv = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1007 1007 'ptconv', 'POINTS CONVECTIFS', ' ', (/ ('', i=1, 9) /)) 1008 1008 TYPE(ctrl_out), SAVE :: o_ratqs = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1009 1009 'ratqs', 'RATQS', ' ', (/ ('', i=1, 9) /)) 1010 1010 TYPE(ctrl_out), SAVE :: o_dtthe = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1011 1011 'dtthe', 'Thermal dT', 'K/s', (/ ('', i=1, 9) /)) 1012 1012 TYPE(ctrl_out), SAVE :: o_f_th = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1013 1013 'f_th', 'Thermal plume mass flux', 'kg/(m2*s)', (/ ('', i=1, 9) /)) 1014 1014 TYPE(ctrl_out), SAVE :: o_e_th = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1015 1015 'e_th', 'Thermal plume entrainment', 'K/s', (/ ('', i=1, 9) /)) 1016 1016 TYPE(ctrl_out), SAVE :: o_w_th = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1017 1017 'w_th', 'Thermal plume vertical velocity', 'm/s', (/ ('', i=1, 9) /)) 1018 1018 TYPE(ctrl_out), SAVE :: o_lambda_th = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1019 1019 'lambda_th', 'Thermal plume vertical velocity', 'm/s', (/ ('', i=1, 9) /)) 1020 1020 TYPE(ctrl_out), SAVE :: o_ftime_th = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1021 1021 'ftime_th', 'Fraction of time Shallow convection occurs', ' ', (/ ('', i=1, 9) /)) 1022 1022 TYPE(ctrl_out), SAVE :: o_q_th = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1023 1023 'q_th', 'Thermal plume total humidity', 'kg/kg', (/ ('', i=1, 9) /)) 1024 1024 TYPE(ctrl_out), SAVE :: o_a_th = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1025 1025 'a_th', "Thermal plume fraction", "", (/ ('', i=1, 9) /)) 1026 1026 TYPE(ctrl_out), SAVE :: o_d_th = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1027 1027 'd_th', 'Thermal plume detrainment', 'K/s', (/ ('', i=1, 9) /)) 1028 1028 TYPE(ctrl_out), SAVE :: o_f0_th = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1029 1029 'f0_th', 'Thermal closure mass flux', 'K/s', (/ ('', i=1, 9) /)) 1030 1030 TYPE(ctrl_out), SAVE :: o_zmax_th = ctrl_out((/ 4, 4, 4, 5, 10, 10, 11, 11, 11 /), & 1031 1031 'zmax_th', 'Thermal plume height', 'K/s', (/ ('', i=1, 9) /)) 1032 1032 TYPE(ctrl_out), SAVE :: o_dqthe = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1033 1033 'dqthe', 'Thermal dQ', '(kg/kg)/s', (/ ('', i=1, 9) /)) 1034 1034 TYPE(ctrl_out), SAVE :: o_dtajs = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1035 1035 'dtajs', 'Dry adjust. dT', 'K/s', (/ ('', i=1, 9) /)) 1036 1036 TYPE(ctrl_out), SAVE :: o_dqajs = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1037 1037 'dqajs', 'Dry adjust. dQ', '(kg/kg)/s', (/ ('', i=1, 9) /)) 1038 1038 TYPE(ctrl_out), SAVE :: o_dtswr = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1039 1039 'dtswr', 'SW radiation dT', 'K/s', (/ ('', i=1, 9) /)) 1040 1040 TYPE(ctrl_out), SAVE :: o_dtsw0 = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1041 1041 'dtsw0', 'CS SW radiation dT', 'K/s', (/ ('', i=1, 9) /)) 1042 1042 TYPE(ctrl_out), SAVE :: o_dtlwr = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1043 1043 'dtlwr', 'LW radiation dT', 'K/s', (/ ('', i=1, 9) /)) 1044 1044 TYPE(ctrl_out), SAVE :: o_dtlw0 = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1045 1045 'dtlw0', 'CS LW radiation dT', 'K/s', (/ ('', i=1, 9) /)) 1046 1046 TYPE(ctrl_out), SAVE :: o_dtec = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1047 1047 'dtec', 'Cinetic dissip dT', 'K/s', (/ ('', i=1, 9) /)) 1048 1048 TYPE(ctrl_out), SAVE :: o_duvdf = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1049 1049 'duvdf', 'Boundary-layer dU', 'm/s2', (/ ('', i=1, 9) /)) 1050 1050 TYPE(ctrl_out), SAVE :: o_dvvdf = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1051 1051 'dvvdf', 'Boundary-layer dV', 'm/s2', (/ ('', i=1, 9) /)) 1052 1052 TYPE(ctrl_out), SAVE :: o_duoro = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1053 1053 'duoro', 'Orography dU', 'm/s2', (/ ('', i=1, 9) /)) 1054 1054 TYPE(ctrl_out), SAVE :: o_dvoro = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1055 1055 'dvoro', 'Orography dV', 'm/s2', (/ ('', i=1, 9) /)) 1056 1056 TYPE(ctrl_out), SAVE :: o_dulif = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1057 1057 'dulif', 'Orography dU', 'm/s2', (/ ('', i=1, 9) /)) 1058 1058 TYPE(ctrl_out), SAVE :: o_dvlif = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1059 1059 'dvlif', 'Orography dV', 'm/s2', (/ ('', i=1, 9) /)) 1060 1060 TYPE(ctrl_out), SAVE :: o_duhin = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1061 1061 'duhin', 'Hines GWD dU', 'm/s2', (/ ('', i=1, 9) /)) 1062 1062 TYPE(ctrl_out), SAVE :: o_dvhin = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1063 1063 'dvhin', 'Hines GWD dV', 'm/s2', (/ ('', i=1, 9) /)) 1064 1064 TYPE(ctrl_out), SAVE :: o_dtoro = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1065 1065 'dtoro', 'Orography dT', 'K/s', (/ ('', i=1, 9) /)) 1066 1066 TYPE(ctrl_out), SAVE :: o_dtlif = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1067 1067 'dtlif', 'Orography dT', 'K/s', (/ ('', i=1, 9) /)) 1068 1068 TYPE(ctrl_out), SAVE :: o_dthin = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1069 1069 'dthin', 'Hines GWD dT', 'K/s', (/ ('', i=1, 9) /)) 1070 1070 1071 1071 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_trac(:) … … 1087 1087 1088 1088 TYPE(ctrl_out), SAVE :: o_rsu = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1089 1089 'rsu', 'SW upward radiation', 'W m-2', (/ ('', i=1, 9) /)) 1090 1090 TYPE(ctrl_out), SAVE :: o_rsd = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1091 1091 'rsd', 'SW downward radiation', 'W m-2', (/ ('', i=1, 9) /)) 1092 1092 TYPE(ctrl_out), SAVE :: o_rlu = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1093 1093 'rlu', 'LW upward radiation', 'W m-2', (/ ('', i=1, 9) /)) 1094 1094 TYPE(ctrl_out), SAVE :: o_rld = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1095 1095 'rld', 'LW downward radiation', 'W m-2', (/ ('', i=1, 9) /)) 1096 1096 TYPE(ctrl_out), SAVE :: o_rsucs = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1097 1097 'rsucs', 'SW CS upward radiation', 'W m-2', (/ ('', i=1, 9) /)) 1098 1098 TYPE(ctrl_out), SAVE :: o_rsdcs = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1099 1099 'rsdcs', 'SW CS downward radiation', 'W m-2', (/ ('', i=1, 9) /)) 1100 1100 TYPE(ctrl_out), SAVE :: o_rlucs = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1101 1101 'rlucs', 'LW CS upward radiation', 'W m-2', (/ ('', i=1, 9) /)) 1102 1102 TYPE(ctrl_out), SAVE :: o_rldcs = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1103 1103 'rldcs', 'LW CS downward radiation', 'W m-2', (/ ('', i=1, 9) /)) 1104 1104 TYPE(ctrl_out), SAVE :: o_tnt = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1105 1105 'tnt', 'Tendency of air temperature', 'K s-1', (/ ('', i=1, 9) /)) 1106 1106 TYPE(ctrl_out), SAVE :: o_tntc = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1107 1107 'tntc', 'Tendency of air temperature due to Moist Convection', 'K s-1', (/ ('', i=1, 9) /)) 1108 1108 TYPE(ctrl_out), SAVE :: o_tntr = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1109 1109 'tntr', 'Air temperature tendency due to Radiative heating', 'K s-1', (/ ('', i=1, 9) /)) 1110 1110 TYPE(ctrl_out), SAVE :: o_tntscpbl = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1111 1111 'tntscpbl', 'Air temperature tendency due to St cloud and precipitation and BL mixing', & 1112 1112 'K s-1', (/ ('', i=1, 9) /)) 1113 1113 TYPE(ctrl_out), SAVE :: o_tnhus = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1114 1114 'tnhus', 'Tendency of specific humidity', 's-1', (/ ('', i=1, 9) /)) 1115 1115 TYPE(ctrl_out), SAVE :: o_tnhusc = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1116 1116 'tnhusc', 'Tendency of specific humidity due to convection', 's-1', (/ ('', i=1, 9) /)) 1117 1117 TYPE(ctrl_out), SAVE :: o_tnhusscpbl = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1118 1118 'tnhusscpbl', 'Tendency of Specific humidity due to ST cl, precip and BL mixing', 's-1', (/ ('', i=1, 9) /)) 1119 1119 TYPE(ctrl_out), SAVE :: o_evu = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1120 1120 'evu', 'Eddy viscosity coefficient for Momentum Variables', 'm2 s-1', (/ ('', i=1, 9) /)) 1121 1121 TYPE(ctrl_out), SAVE :: o_h2o = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1122 1122 'h2o', 'Mass Fraction of Water', '1', (/ ('', i=1, 9) /)) 1123 1123 TYPE(ctrl_out), SAVE :: o_mcd = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1124 1124 'mcd', 'Downdraft COnvective Mass Flux', 'kg/(m2*s)', (/ ('', i=1, 9) /)) 1125 1125 TYPE(ctrl_out), SAVE :: o_dmc = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1126 1126 'dmc', 'Deep COnvective Mass Flux', 'kg/(m2*s)', (/ ('', i=1, 9) /)) 1127 1127 TYPE(ctrl_out), SAVE :: o_ref_liq = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1128 1128 'ref_liq', 'Effective radius of convective cloud liquid water particle', 'm', (/ ('', i=1, 9) /)) 1129 1129 TYPE(ctrl_out), SAVE :: o_ref_ice = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1130 1130 'ref_ice', 'Effective radius of startiform cloud ice particle', 'm', (/ ('', i=1, 9) /)) 1131 1131 TYPE(ctrl_out), SAVE :: o_rsut4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1132 1132 'rsut4co2', 'TOA Out SW in 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /)) 1133 1133 TYPE(ctrl_out), SAVE :: o_rlut4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1134 1134 'rlut4co2', 'TOA Out LW in 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /)) 1135 1135 TYPE(ctrl_out), SAVE :: o_rsutcs4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1136 1136 'rsutcs4co2', 'TOA Out CS SW in 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /)) 1137 1137 TYPE(ctrl_out), SAVE :: o_rlutcs4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1138 1138 'rlutcs4co2', 'TOA Out CS LW in 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /)) 1139 1139 TYPE(ctrl_out), SAVE :: o_rsu4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1140 1140 'rsu4co2', 'Upwelling SW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /)) 1141 1141 TYPE(ctrl_out), SAVE :: o_rlu4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1142 1142 'rlu4co2', 'Upwelling LW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /)) 1143 1143 TYPE(ctrl_out), SAVE :: o_rsucs4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1144 1144 'rsucs4co2', 'Upwelling CS SW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /)) 1145 1145 TYPE(ctrl_out), SAVE :: o_rlucs4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1146 1146 'rlucs4co2', 'Upwelling CS LW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /)) 1147 1147 TYPE(ctrl_out), SAVE :: o_rsd4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1148 1148 'rsd4co2', 'Downwelling SW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /)) 1149 1149 TYPE(ctrl_out), SAVE :: o_rld4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1150 1150 'rld4co2', 'Downwelling LW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /)) 1151 1151 TYPE(ctrl_out), SAVE :: o_rsdcs4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1152 1152 'rsdcs4co2', 'Downwelling CS SW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /)) 1153 1153 TYPE(ctrl_out), SAVE :: o_rldcs4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1154 1154 'rldcs4co2', 'Downwelling CS LW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /)) 1155 1155 1156 1156 !!!!!!!!!!!!! Sorties niveaux standards de pression NMC -
LMDZ5/trunk/libf/phylmd/phys_output_mod.F90
r1843 r1852 282 282 zoutm(iff) = ecrit_files(iff) ! Frequence ou l on ecrit en seconde 283 283 284 285 #ifdef CPP_XIOS 286 ! ug déclaration des axes verticaux de chaque fichier: 287 CALL wxios_add_vaxis("presnivs", phys_out_filenames(iff), & 288 levmax(iff) - levmin(iff) + 1, presnivs(levmin(iff):levmax(iff))) 289 CALL wxios_add_vaxis("Ahyb", phys_out_filenames(iff), & 290 levmax(iff) - levmin(iff) + 1, Ahyb) 291 CALL wxios_add_vaxis("Bhyb", phys_out_filenames(iff), & 292 levmax(iff) - levmin(iff) + 1, Bhyb) 293 CALL wxios_add_vaxis("Ahyb", phys_out_filenames(iff), & 294 levmax(iff) - levmin(iff) + 1, Alt) 295 296 IF (clef_files(iff)) THEN 297 CALL wxios_add_file(phys_out_filenames(iff),chtimestep(iff),lev_files(iff)) 298 END IF 299 #endif 300 284 301 IF (clef_files(iff)) THEN 285 302 … … 299 316 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 300 317 IF (phys_out_regfkey(iff)) then 301 302 318 imin_ins=1 303 319 imax_ins=iim … … 340 356 else 341 357 CALL histbeg_phy_all(phys_out_filenames(iff),itau_phy,zjulian,& 342 dtime, chtimestep(iff),lev_files(iff),nhorim(iff),nid_files(iff))358 dtime,nhorim(iff),nid_files(iff)) 343 359 endif 344 360 361 #ifndef CPP_NO_IOIPSL 345 362 if (iff.le.6) then 346 363 CALL histvert(nid_files(iff), "presnivs", "Vertical levels", "Pa", & … … 357 374 levmax(iff) - levmin(iff) + 1,Alt,nvertAlt(iff)) 358 375 359 360 376 else 361 377 CALL histvert(nid_files(iff), "plev", "pressure", "Pa", & … … 363 379 rlevSTD(levmin(iff):levmax(iff)), nvertm(iff), "down") 364 380 endif 365 #ifdef CPP_XIOS366 ! ug déclaration des axes verticaux de chaque fichier:367 CALL wxios_add_vaxis("presnivs", nid_files(iff), levmax(iff) - levmin(iff) + 1, presnivs(levmin(iff):levmax(iff)))368 CALL wxios_add_vaxis("Ahyb", nid_files(iff), levmax(iff) - levmin(iff) + 1, Ahyb)369 CALL wxios_add_vaxis("Bhyb", nid_files(iff), levmax(iff) - levmin(iff) + 1, Bhyb)370 CALL wxios_add_vaxis("Ahyb", nid_files(iff), levmax(iff) - levmin(iff) + 1, Alt)371 381 #endif 372 382 -
LMDZ5/trunk/libf/phylmd/phys_output_write_mod.F90
r1828 r1852 90 90 ! On le donne à iophy pour que les histwrite y aient accès: 91 91 CALL set_itau_iophy(itau_w) 92 93 ! ug OMP en chantier... 94 !IF(is_using_mpi .AND. .NOT. is_mpi_root) THEN 95 ! vars_defined=.TRUE. 96 !END IF 97 92 98 93 IF(.NOT.vars_defined) THEN 99 94 iinitend = 2 … … 1066 1061 IF(.NOT.vars_defined) THEN 1067 1062 !$OMP MASTER 1063 #ifndef CPP_NO_IOIPSL 1068 1064 DO iff=1,nfiles 1069 1065 IF (clef_files(iff)) THEN … … 1074 1070 ENDIF ! clef_files 1075 1071 ENDDO ! iff 1072 #endif 1076 1073 #ifdef CPP_XIOS 1077 1074 !On finalise l'initialisation: 1078 1075 CALL wxios_closedef() 1079 1076 #endif 1077 1080 1078 !$OMP END MASTER 1081 1079 !$OMP BARRIER … … 1089 1087 IF(vars_defined) THEN 1090 1088 ! On synchronise les fichiers pour IOIPSL 1089 #ifndef CPP_NO_IOIPSL 1091 1090 !$OMP MASTER 1092 1091 DO iff=1,nfiles … … 1096 1095 END DO 1097 1096 !$OMP END MASTER 1097 #endif 1098 1098 ENDIF 1099 1099 -
LMDZ5/trunk/libf/phylmd/radlwsw_m.F90
r1764 r1852 334 334 !===== iflag_rrtm ================================================ 335 335 ! 336 print*,'iflag_rrtm = ', iflag_rrtm 336 337 IF (iflag_rrtm == 0) THEN 337 338 ! Old radiation scheme, used for AR4 runs
Note: See TracChangeset
for help on using the changeset viewer.