- Timestamp:
- 2019-10-30T15:10:36+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11756_SI3restart_XIOS/src/OCE/IOM/iom.F90
r11554 r11837 47 47 USE lib_fortran 48 48 USE diurnal_bulk, ONLY : ln_diurnal_only, ln_diurnal 49 #if defined key_si3 50 USE ice, ONLY: nlay_i, nlay_s 51 #endif 52 49 53 50 54 IMPLICIT NONE … … 61 65 62 66 PRIVATE iom_rp0d, iom_rp1d, iom_rp2d, iom_rp3d 63 PRIVATE iom_g0d, iom_g1d, iom_g2d, iom_g3d, iom_g et_123d67 PRIVATE iom_g0d, iom_g1d, iom_g2d, iom_g3d, iom_g4d, iom_get_123d 64 68 PRIVATE iom_p1d, iom_p2d, iom_p3d 65 69 #if defined key_iomput … … 69 73 # endif 70 74 PUBLIC iom_set_rstw_var_active, iom_set_rstw_core, iom_set_rst_vars 75 PRIVATE iom_add 76 INTEGER, PRIVATE :: numrst 71 77 72 78 INTERFACE iom_get 73 MODULE PROCEDURE iom_g0d, iom_g1d, iom_g2d, iom_g3d 79 MODULE PROCEDURE iom_g0d, iom_g1d, iom_g2d, iom_g3d, iom_g4d 74 80 END INTERFACE 75 81 INTERFACE iom_getatt … … 227 233 ! 228 234 ! automatic definitions of some of the xml attributs 229 IF( TRIM(cdname) == TRIM(crxios_context) ) THEN 235 IF( TRIM(cdname) == TRIM(crxios_context) .OR. TRIM(cdname) == TRIM(crixios_context) ) THEN 236 numrst = numror 237 IF(TRIM(cdname) == TRIM(crixios_context)) numrst = numrir 230 238 !set names of the fields in restart file IF using XIOS to read data 231 239 CALL iom_set_rst_context(.TRUE.) 232 240 CALL iom_set_rst_vars(rst_rfields) 233 241 !set which fields are to be read from restart file 234 CALL iom_set_rstr_active( )242 CALL iom_set_rstr_active(fname) 235 243 ELSE IF( TRIM(cdname) == TRIM(cwxios_context) ) THEN 236 244 !set names of the fields in restart file IF using XIOS to write data … … 238 246 CALL iom_set_rst_vars(rst_wfields) 239 247 !set which fields are to be written to a restart file 240 CALL iom_set_rstw_active( fname)248 CALL iom_set_rstw_active(rst_wfields, fname) 241 249 ELSE 242 250 CALL set_xmlatt … … 259 267 END SUBROUTINE iom_init 260 268 261 SUBROUTINE iom_set_rstw_var_active( field)269 SUBROUTINE iom_set_rstw_var_active(drst_wfields, field) 262 270 !!--------------------------------------------------------------------- 263 271 !! *** SUBROUTINE iom_set_rstw_var_active *** … … 266 274 !!--------------------------------------------------------------------- 267 275 CHARACTER(len = *), INTENT(IN) :: field 276 TYPE(RST_FIELD), INTENT(INOUT) :: drst_wfields(max_rst_fields) 268 277 INTEGER :: i 269 278 LOGICAL :: llis_set … … 274 283 275 284 DO i = 1, max_rst_fields 276 IF(TRIM( rst_wfields(i)%vname) == field) THEN277 rst_wfields(i)%active = .TRUE.285 IF(TRIM(drst_wfields(i)%vname) == field) THEN 286 drst_wfields(i)%active = .TRUE. 278 287 llis_set = .TRUE. 279 288 EXIT 280 289 ENDIF 281 290 ENDDO 282 !Warn if variable is not in defined in rst_wfields291 !Warn if variable is not in defined in drst_wfields 283 292 IF(.NOT.llis_set) THEN 284 293 WRITE(ctmp1,*) 'iom_set_rstw_var_active: variable ', field ,' is available for writing but not defined' … … 292 301 END SUBROUTINE iom_set_rstw_var_active 293 302 294 SUBROUTINE iom_set_rstr_active( )303 SUBROUTINE iom_set_rstr_active(rst_file) 295 304 !!--------------------------------------------------------------------- 296 305 !! *** SUBROUTINE iom_set_rstr_active *** … … 308 317 TYPE(xios_filegroup) :: filegroup_hdl 309 318 INTEGER :: i 310 CHARACTER(lc) :: clpath 311 312 clpath = TRIM(cn_ocerst_indir) 313 IF( clpath(LEN_TRIM(clpath):) /= '/' ) clpath = TRIM(clpath) // '/' 314 IF( TRIM(Agrif_CFixed()) == '0' ) THEN 315 rst_file = TRIM(clpath)//TRIM(cn_ocerst_in) 316 ELSE 317 rst_file = TRIM(clpath)//'1_'//TRIM(cn_ocerst_in) 318 ENDIF 319 319 320 !set name of the restart file and enable available fields 320 321 if(lwp) WRITE(numout,*) 'Setting restart filename (for XIOS) to: ',rst_file … … 327 328 DO i = 1, max_rst_fields 328 329 IF( TRIM(rst_rfields(i)%vname) /= "NO_NAME") THEN 329 IF( iom_varid( numror, TRIM(rst_rfields(i)%vname), ldstop = .FALSE. ) > 0 ) THEN 330 IF( iom_varid( numrst, TRIM(rst_rfields(i)%vname), ldstop = .FALSE. ) > 0 ) THEN 331 IF(TRIM(rst_rfields(i)%vname) == "e_s") lrsi3_nemo = .FALSE. ! SI3 restart written by XIOS 330 332 CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_rfields(i)%vname)) 331 333 SELECT CASE (TRIM(rst_rfields(i)%grid)) 334 ! CASE ("grid_Ni_4D") 335 ! CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(rst_rfields(i)%vname), & 336 ! domain_ref="grid_N", axis_ref="nlay_i", axis_ref="numcat", operation = "instant") 337 ! CASE ("grid_Ns_4D") 338 ! CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(rst_rfields(i)%vname), & 339 ! domain_ref="grid_N", axis_ref="nlay_s", axis_ref="numcat", operation = "instant") 340 CASE ("grid_Ni_3D") 341 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(rst_rfields(i)%vname), & 342 domain_ref="grid_N", axis_ref="numcat", operation = "instant") 332 343 CASE ("grid_N_3D") 333 344 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(rst_rfields(i)%vname), & … … 361 372 IF(cdmdl == "OPA") THEN 362 373 !from restart.F90 363 CALL iom_set_rstw_var_active( "rdt")374 CALL iom_set_rstw_var_active(rst_wfields, "rdt") 364 375 IF ( .NOT. ln_diurnal_only ) THEN 365 CALL iom_set_rstw_var_active( 'ub' )366 CALL iom_set_rstw_var_active( 'vb' )367 CALL iom_set_rstw_var_active( 'tb' )368 CALL iom_set_rstw_var_active( 'sb' )369 CALL iom_set_rstw_var_active( 'sshb')376 CALL iom_set_rstw_var_active(rst_wfields, 'ub' ) 377 CALL iom_set_rstw_var_active(rst_wfields, 'vb' ) 378 CALL iom_set_rstw_var_active(rst_wfields, 'tb' ) 379 CALL iom_set_rstw_var_active(rst_wfields, 'sb' ) 380 CALL iom_set_rstw_var_active(rst_wfields, 'sshb') 370 381 ! 371 CALL iom_set_rstw_var_active( 'un' )372 CALL iom_set_rstw_var_active( 'vn' )373 CALL iom_set_rstw_var_active( 'tn' )374 CALL iom_set_rstw_var_active( 'sn' )375 CALL iom_set_rstw_var_active( 'sshn')376 CALL iom_set_rstw_var_active( 'rhop')382 CALL iom_set_rstw_var_active(rst_wfields, 'un' ) 383 CALL iom_set_rstw_var_active(rst_wfields, 'vn' ) 384 CALL iom_set_rstw_var_active(rst_wfields, 'tn' ) 385 CALL iom_set_rstw_var_active(rst_wfields, 'sn' ) 386 CALL iom_set_rstw_var_active(rst_wfields, 'sshn') 387 CALL iom_set_rstw_var_active(rst_wfields, 'rhop') 377 388 ! extra variable needed for the ice sheet coupling 378 389 IF ( ln_iscpl ) THEN 379 CALL iom_set_rstw_var_active( 'tmask')380 CALL iom_set_rstw_var_active( 'umask')381 CALL iom_set_rstw_var_active( 'vmask')382 CALL iom_set_rstw_var_active( 'smask')383 CALL iom_set_rstw_var_active( 'e3t_n')384 CALL iom_set_rstw_var_active( 'e3u_n')385 CALL iom_set_rstw_var_active( 'e3v_n')386 CALL iom_set_rstw_var_active( 'gdepw_n')390 CALL iom_set_rstw_var_active(rst_wfields, 'tmask') 391 CALL iom_set_rstw_var_active(rst_wfields, 'umask') 392 CALL iom_set_rstw_var_active(rst_wfields, 'vmask') 393 CALL iom_set_rstw_var_active(rst_wfields, 'smask') 394 CALL iom_set_rstw_var_active(rst_wfields, 'e3t_n') 395 CALL iom_set_rstw_var_active(rst_wfields, 'e3u_n') 396 CALL iom_set_rstw_var_active(rst_wfields, 'e3v_n') 397 CALL iom_set_rstw_var_active(rst_wfields, 'gdepw_n') 387 398 END IF 388 399 ENDIF 389 IF(ln_diurnal) CALL iom_set_rstw_var_active( 'Dsst')400 IF(ln_diurnal) CALL iom_set_rstw_var_active(rst_wfields, 'Dsst') 390 401 !from trasbc.F90 391 CALL iom_set_rstw_var_active( 'sbc_hc_b')392 CALL iom_set_rstw_var_active( 'sbc_sc_b')402 CALL iom_set_rstw_var_active(rst_wfields, 'sbc_hc_b') 403 CALL iom_set_rstw_var_active(rst_wfields, 'sbc_sc_b') 393 404 ENDIF 394 405 #else … … 407 418 !!--------------------------------------------------------------------- 408 419 TYPE(RST_FIELD), INTENT(INOUT) :: fields(max_rst_fields) 409 INTEGER :: i 420 INTEGER :: i, jk 421 CHARACTER(len=2) :: zchar 422 CHARACTER(len=25) :: znam 410 423 411 424 i = 0 412 i = i + 1; fields(i)%vname="rdt"; fields(i)%grid="grid_scalar"413 i = i + 1; fields(i)%vname="un"; fields(i)%grid="grid_N_3D"414 i = i + 1; fields(i)%vname="ub"; fields(i)%grid="grid_N_3D"415 i = i + 1; fields(i)%vname="vn"; fields(i)%grid="grid_N_3D"416 i = i + 1; fields(i)%vname="vb"; fields(i)%grid="grid_N_3D"417 i = i + 1; fields(i)%vname="tn"; fields(i)%grid="grid_N_3D"418 i = i + 1; fields(i)%vname="tb"; fields(i)%grid="grid_N_3D"419 i = i + 1; fields(i)%vname="sn"; fields(i)%grid="grid_N_3D"420 i = i + 1; fields(i)%vname="sb"; fields(i)%grid="grid_N_3D"421 i = i + 1; fields(i)%vname="sshn"; fields(i)%grid="grid_N"422 i = i + 1; fields(i)%vname="sshb"; fields(i)%grid="grid_N"423 i = i + 1; fields(i)%vname="rhop"; fields(i)%grid="grid_N_3D"424 i = i + 1; fields(i)%vname="kt"; fields(i)%grid="grid_scalar"425 i = i + 1; fields(i)%vname="ndastp"; fields(i)%grid="grid_scalar"426 i = i + 1; fields(i)%vname="adatrj"; fields(i)%grid="grid_scalar"427 i = i + 1; fields(i)%vname="utau_b"; fields(i)%grid="grid_N"428 i = i + 1; fields(i)%vname="vtau_b"; fields(i)%grid="grid_N"429 i = i + 1; fields(i)%vname="qns_b"; fields(i)%grid="grid_N"430 i = i + 1; fields(i)%vname="emp_b"; fields(i)%grid="grid_N"431 i = i + 1; fields(i)%vname="sfx_b"; fields(i)%grid="grid_N"432 i = i + 1; fields(i)%vname="en" ; fields(i)%grid="grid_N_3D"433 i = i + 1; fields(i)%vname="avt_k"; fields(i)%grid="grid_N_3D"434 i = i + 1; fields(i)%vname="avm_k"; fields(i)%grid="grid_N_3D"435 i = i + 1; fields(i)%vname="dissl"; fields(i)%grid="grid_N_3D"436 i = i + 1; fields(i)%vname="sbc_hc_b"; fields(i)%grid="grid_N"437 i = i + 1; fields(i)%vname="sbc_sc_b"; fields(i)%grid="grid_N"438 i = i + 1; fields(i)%vname="qsr_hc_b"; fields(i)%grid="grid_N_3D"439 i = i + 1; fields(i)%vname="fraqsr_1lev"; fields(i)%grid="grid_N"440 i = i + 1; fields(i)%vname="greenland_icesheet_mass"425 i = iom_add(i); fields(i)%vname="rdt"; fields(i)%grid="grid_scalar" 426 i = iom_add(i); fields(i)%vname="un"; fields(i)%grid="grid_N_3D" 427 i = iom_add(i); fields(i)%vname="ub"; fields(i)%grid="grid_N_3D" 428 i = iom_add(i); fields(i)%vname="vn"; fields(i)%grid="grid_N_3D" 429 i = iom_add(i); fields(i)%vname="vb"; fields(i)%grid="grid_N_3D" 430 i = iom_add(i); fields(i)%vname="tn"; fields(i)%grid="grid_N_3D" 431 i = iom_add(i); fields(i)%vname="tb"; fields(i)%grid="grid_N_3D" 432 i = iom_add(i); fields(i)%vname="sn"; fields(i)%grid="grid_N_3D" 433 i = iom_add(i); fields(i)%vname="sb"; fields(i)%grid="grid_N_3D" 434 i = iom_add(i); fields(i)%vname="sshn"; fields(i)%grid="grid_N" 435 i = iom_add(i); fields(i)%vname="sshb"; fields(i)%grid="grid_N" 436 i = iom_add(i); fields(i)%vname="rhop"; fields(i)%grid="grid_N_3D" 437 i = iom_add(i); fields(i)%vname="kt"; fields(i)%grid="grid_scalar" 438 i = iom_add(i); fields(i)%vname="ndastp"; fields(i)%grid="grid_scalar" 439 i = iom_add(i); fields(i)%vname="adatrj"; fields(i)%grid="grid_scalar" 440 i = iom_add(i); fields(i)%vname="utau_b"; fields(i)%grid="grid_N" 441 i = iom_add(i); fields(i)%vname="vtau_b"; fields(i)%grid="grid_N" 442 i = iom_add(i); fields(i)%vname="qns_b"; fields(i)%grid="grid_N" 443 i = iom_add(i); fields(i)%vname="emp_b"; fields(i)%grid="grid_N" 444 i = iom_add(i); fields(i)%vname="sfx_b"; fields(i)%grid="grid_N" 445 i = iom_add(i); fields(i)%vname="en" ; fields(i)%grid="grid_N_3D" 446 i = iom_add(i); fields(i)%vname="avt_k"; fields(i)%grid="grid_N_3D" 447 i = iom_add(i); fields(i)%vname="avm_k"; fields(i)%grid="grid_N_3D" 448 i = iom_add(i); fields(i)%vname="dissl"; fields(i)%grid="grid_N_3D" 449 i = iom_add(i); fields(i)%vname="sbc_hc_b"; fields(i)%grid="grid_N" 450 i = iom_add(i); fields(i)%vname="sbc_sc_b"; fields(i)%grid="grid_N" 451 i = iom_add(i); fields(i)%vname="qsr_hc_b"; fields(i)%grid="grid_N_3D" 452 i = iom_add(i); fields(i)%vname="fraqsr_1lev"; fields(i)%grid="grid_N" 453 i = iom_add(i); fields(i)%vname="greenland_icesheet_mass" 441 454 fields(i)%grid="grid_scalar" 442 i = i + 1; fields(i)%vname="greenland_icesheet_timelapsed"455 i = iom_add(i); fields(i)%vname="greenland_icesheet_timelapsed" 443 456 fields(i)%grid="grid_scalar" 444 i = i + 1; fields(i)%vname="greenland_icesheet_mass_roc"457 i = iom_add(i); fields(i)%vname="greenland_icesheet_mass_roc" 445 458 fields(i)%grid="grid_scalar" 446 i = i + 1; fields(i)%vname="antarctica_icesheet_mass"459 i = iom_add(i); fields(i)%vname="antarctica_icesheet_mass" 447 460 fields(i)%grid="grid_scalar" 448 i = i + 1; fields(i)%vname="antarctica_icesheet_timelapsed"461 i = iom_add(i); fields(i)%vname="antarctica_icesheet_timelapsed" 449 462 fields(i)%grid="grid_scalar" 450 i = i + 1; fields(i)%vname="antarctica_icesheet_mass_roc"463 i = iom_add(i); fields(i)%vname="antarctica_icesheet_mass_roc" 451 464 fields(i)%grid="grid_scalar" 452 i = i + 1; fields(i)%vname="frc_v"; fields(i)%grid="grid_scalar" 453 i = i + 1; fields(i)%vname="frc_t"; fields(i)%grid="grid_scalar" 454 i = i + 1; fields(i)%vname="frc_s"; fields(i)%grid="grid_scalar" 455 i = i + 1; fields(i)%vname="frc_wn_t"; fields(i)%grid="grid_scalar" 456 i = i + 1; fields(i)%vname="frc_wn_s"; fields(i)%grid="grid_scalar" 457 i = i + 1; fields(i)%vname="ssh_ini"; fields(i)%grid="grid_N" 458 i = i + 1; fields(i)%vname="e3t_ini"; fields(i)%grid="grid_N_3D" 459 i = i + 1; fields(i)%vname="hc_loc_ini"; fields(i)%grid="grid_N_3D" 460 i = i + 1; fields(i)%vname="sc_loc_ini"; fields(i)%grid="grid_N_3D" 461 i = i + 1; fields(i)%vname="ssh_hc_loc_ini"; fields(i)%grid="grid_N" 462 i = i + 1; fields(i)%vname="ssh_sc_loc_ini"; fields(i)%grid="grid_N" 463 i = i + 1; fields(i)%vname="tilde_e3t_b"; fields(i)%grid="grid_N" 464 i = i + 1; fields(i)%vname="tilde_e3t_n"; fields(i)%grid="grid_N" 465 i = i + 1; fields(i)%vname="hdiv_lf"; fields(i)%grid="grid_N" 466 i = i + 1; fields(i)%vname="ub2_b"; fields(i)%grid="grid_N" 467 i = i + 1; fields(i)%vname="vb2_b"; fields(i)%grid="grid_N" 468 i = i + 1; fields(i)%vname="sshbb_e"; fields(i)%grid="grid_N" 469 i = i + 1; fields(i)%vname="ubb_e"; fields(i)%grid="grid_N" 470 i = i + 1; fields(i)%vname="vbb_e"; fields(i)%grid="grid_N" 471 i = i + 1; fields(i)%vname="sshb_e"; fields(i)%grid="grid_N" 472 i = i + 1; fields(i)%vname="ub_e"; fields(i)%grid="grid_N" 473 i = i + 1; fields(i)%vname="vb_e"; fields(i)%grid="grid_N" 474 i = i + 1; fields(i)%vname="fwf_isf_b"; fields(i)%grid="grid_N" 475 i = i + 1; fields(i)%vname="isf_sc_b"; fields(i)%grid="grid_N" 476 i = i + 1; fields(i)%vname="isf_hc_b"; fields(i)%grid="grid_N" 477 i = i + 1; fields(i)%vname="ssh_ibb"; fields(i)%grid="grid_N" 478 i = i + 1; fields(i)%vname="rnf_b"; fields(i)%grid="grid_N" 479 i = i + 1; fields(i)%vname="rnf_hc_b"; fields(i)%grid="grid_N" 480 i = i + 1; fields(i)%vname="rnf_sc_b"; fields(i)%grid="grid_N" 481 i = i + 1; fields(i)%vname="nn_fsbc"; fields(i)%grid="grid_scalar" 482 i = i + 1; fields(i)%vname="ssu_m"; fields(i)%grid="grid_N" 483 i = i + 1; fields(i)%vname="ssv_m"; fields(i)%grid="grid_N" 484 i = i + 1; fields(i)%vname="sst_m"; fields(i)%grid="grid_N" 485 i = i + 1; fields(i)%vname="sss_m"; fields(i)%grid="grid_N" 486 i = i + 1; fields(i)%vname="ssh_m"; fields(i)%grid="grid_N" 487 i = i + 1; fields(i)%vname="e3t_m"; fields(i)%grid="grid_N" 488 i = i + 1; fields(i)%vname="frq_m"; fields(i)%grid="grid_N" 489 i = i + 1; fields(i)%vname="avmb"; fields(i)%grid="grid_vector" 490 i = i + 1; fields(i)%vname="avtb"; fields(i)%grid="grid_vector" 491 i = i + 1; fields(i)%vname="ub2_i_b"; fields(i)%grid="grid_N" 492 i = i + 1; fields(i)%vname="vb2_i_b"; fields(i)%grid="grid_N" 493 i = i + 1; fields(i)%vname="ntime"; fields(i)%grid="grid_scalar" 494 i = i + 1; fields(i)%vname="Dsst"; fields(i)%grid="grid_scalar" 495 i = i + 1; fields(i)%vname="tmask"; fields(i)%grid="grid_N_3D" 496 i = i + 1; fields(i)%vname="umask"; fields(i)%grid="grid_N_3D" 497 i = i + 1; fields(i)%vname="vmask"; fields(i)%grid="grid_N_3D" 498 i = i + 1; fields(i)%vname="smask"; fields(i)%grid="grid_N_3D" 499 i = i + 1; fields(i)%vname="gdepw_n"; fields(i)%grid="grid_N_3D" 500 i = i + 1; fields(i)%vname="e3t_n"; fields(i)%grid="grid_N_3D" 501 i = i + 1; fields(i)%vname="e3u_n"; fields(i)%grid="grid_N_3D" 502 i = i + 1; fields(i)%vname="e3v_n"; fields(i)%grid="grid_N_3D" 503 i = i + 1; fields(i)%vname="surf_ini"; fields(i)%grid="grid_N" 504 i = i + 1; fields(i)%vname="e3t_b"; fields(i)%grid="grid_N_3D" 505 i = i + 1; fields(i)%vname="hmxl_n"; fields(i)%grid="grid_N_3D" 506 i = i + 1; fields(i)%vname="un_bf"; fields(i)%grid="grid_N" 507 i = i + 1; fields(i)%vname="vn_bf"; fields(i)%grid="grid_N" 508 i = i + 1; fields(i)%vname="hbl"; fields(i)%grid="grid_N" 509 i = i + 1; fields(i)%vname="hbli"; fields(i)%grid="grid_N" 510 i = i + 1; fields(i)%vname="wn"; fields(i)%grid="grid_N_3D" 511 512 IF( i-1 > max_rst_fields) THEN 513 WRITE(ctmp1,*) 'E R R O R : iom_set_rst_vars SIZE of RST_FIELD array is too small' 514 CALL ctl_stop( 'iom_set_rst_vars:', ctmp1 ) 515 ENDIF 465 i = iom_add(i); fields(i)%vname="frc_v"; fields(i)%grid="grid_scalar" 466 i = iom_add(i); fields(i)%vname="frc_t"; fields(i)%grid="grid_scalar" 467 i = iom_add(i); fields(i)%vname="frc_s"; fields(i)%grid="grid_scalar" 468 i = iom_add(i); fields(i)%vname="frc_wn_t"; fields(i)%grid="grid_scalar" 469 i = iom_add(i); fields(i)%vname="frc_wn_s"; fields(i)%grid="grid_scalar" 470 i = iom_add(i); fields(i)%vname="ssh_ini"; fields(i)%grid="grid_N" 471 i = iom_add(i); fields(i)%vname="e3t_ini"; fields(i)%grid="grid_N_3D" 472 i = iom_add(i); fields(i)%vname="hc_loc_ini"; fields(i)%grid="grid_N_3D" 473 i = iom_add(i); fields(i)%vname="sc_loc_ini"; fields(i)%grid="grid_N_3D" 474 i = iom_add(i); fields(i)%vname="ssh_hc_loc_ini"; fields(i)%grid="grid_N" 475 i = iom_add(i); fields(i)%vname="ssh_sc_loc_ini"; fields(i)%grid="grid_N" 476 i = iom_add(i); fields(i)%vname="tilde_e3t_b"; fields(i)%grid="grid_N" 477 i = iom_add(i); fields(i)%vname="tilde_e3t_n"; fields(i)%grid="grid_N" 478 i = iom_add(i); fields(i)%vname="hdiv_lf"; fields(i)%grid="grid_N" 479 i = iom_add(i); fields(i)%vname="ub2_b"; fields(i)%grid="grid_N" 480 i = iom_add(i); fields(i)%vname="vb2_b"; fields(i)%grid="grid_N" 481 i = iom_add(i); fields(i)%vname="sshbb_e"; fields(i)%grid="grid_N" 482 i = iom_add(i); fields(i)%vname="ubb_e"; fields(i)%grid="grid_N" 483 i = iom_add(i); fields(i)%vname="vbb_e"; fields(i)%grid="grid_N" 484 i = iom_add(i); fields(i)%vname="sshb_e"; fields(i)%grid="grid_N" 485 i = iom_add(i); fields(i)%vname="ub_e"; fields(i)%grid="grid_N" 486 i = iom_add(i); fields(i)%vname="vb_e"; fields(i)%grid="grid_N" 487 i = iom_add(i); fields(i)%vname="fwf_isf_b"; fields(i)%grid="grid_N" 488 i = iom_add(i); fields(i)%vname="isf_sc_b"; fields(i)%grid="grid_N" 489 i = iom_add(i); fields(i)%vname="isf_hc_b"; fields(i)%grid="grid_N" 490 i = iom_add(i); fields(i)%vname="ssh_ibb"; fields(i)%grid="grid_N" 491 i = iom_add(i); fields(i)%vname="rnf_b"; fields(i)%grid="grid_N" 492 i = iom_add(i); fields(i)%vname="rnf_hc_b"; fields(i)%grid="grid_N" 493 i = iom_add(i); fields(i)%vname="rnf_sc_b"; fields(i)%grid="grid_N" 494 i = iom_add(i); fields(i)%vname="nn_fsbc"; fields(i)%grid="grid_scalar" 495 i = iom_add(i); fields(i)%vname="ssu_m"; fields(i)%grid="grid_N" 496 i = iom_add(i); fields(i)%vname="ssv_m"; fields(i)%grid="grid_N" 497 i = iom_add(i); fields(i)%vname="sst_m"; fields(i)%grid="grid_N" 498 i = iom_add(i); fields(i)%vname="sss_m"; fields(i)%grid="grid_N" 499 i = iom_add(i); fields(i)%vname="ssh_m"; fields(i)%grid="grid_N" 500 i = iom_add(i); fields(i)%vname="e3t_m"; fields(i)%grid="grid_N" 501 i = iom_add(i); fields(i)%vname="frq_m"; fields(i)%grid="grid_N" 502 i = iom_add(i); fields(i)%vname="avmb"; fields(i)%grid="grid_vector" 503 i = iom_add(i); fields(i)%vname="avtb"; fields(i)%grid="grid_vector" 504 i = iom_add(i); fields(i)%vname="ub2_i_b"; fields(i)%grid="grid_N" 505 i = iom_add(i); fields(i)%vname="vb2_i_b"; fields(i)%grid="grid_N" 506 i = iom_add(i); fields(i)%vname="ntime"; fields(i)%grid="grid_scalar" 507 i = iom_add(i); fields(i)%vname="Dsst"; fields(i)%grid="grid_scalar" 508 i = iom_add(i); fields(i)%vname="tmask"; fields(i)%grid="grid_N_3D" 509 i = iom_add(i); fields(i)%vname="umask"; fields(i)%grid="grid_N_3D" 510 i = iom_add(i); fields(i)%vname="vmask"; fields(i)%grid="grid_N_3D" 511 i = iom_add(i); fields(i)%vname="smask"; fields(i)%grid="grid_N_3D" 512 i = iom_add(i); fields(i)%vname="gdepw_n"; fields(i)%grid="grid_N_3D" 513 i = iom_add(i); fields(i)%vname="e3t_n"; fields(i)%grid="grid_N_3D" 514 i = iom_add(i); fields(i)%vname="e3u_n"; fields(i)%grid="grid_N_3D" 515 i = iom_add(i); fields(i)%vname="e3v_n"; fields(i)%grid="grid_N_3D" 516 i = iom_add(i); fields(i)%vname="surf_ini"; fields(i)%grid="grid_N" 517 i = iom_add(i); fields(i)%vname="e3t_b"; fields(i)%grid="grid_N_3D" 518 i = iom_add(i); fields(i)%vname="hmxl_n"; fields(i)%grid="grid_N_3D" 519 i = iom_add(i); fields(i)%vname="un_bf"; fields(i)%grid="grid_N" 520 i = iom_add(i); fields(i)%vname="vn_bf"; fields(i)%grid="grid_N" 521 i = iom_add(i); fields(i)%vname="hbl"; fields(i)%grid="grid_N" 522 i = iom_add(i); fields(i)%vname="hbli"; fields(i)%grid="grid_N" 523 i = iom_add(i); fields(i)%vname="wn"; fields(i)%grid="grid_N_3D" 524 #ifdef key_si3 525 !ICE/icedia.F90 526 i = iom_add(i); fields(i)%vname="kt_ice"; fields(i)%grid="grid_scalar" 527 i = iom_add(i); fields(i)%vname="frc_voltop"; fields(i)%grid="grid_scalar" 528 i = iom_add(i); fields(i)%vname="frc_volbot"; fields(i)%grid="grid_scalar" 529 i = iom_add(i); fields(i)%vname="frc_temtop"; fields(i)%grid="grid_scalar" 530 i = iom_add(i); fields(i)%vname="frc_tembot"; fields(i)%grid="grid_scalar" 531 i = iom_add(i); fields(i)%vname="frc_sal"; fields(i)%grid="grid_scalar" 532 i = iom_add(i); fields(i)%vname="vol_loc_ini"; fields(i)%grid="grid_N" 533 i = iom_add(i); fields(i)%vname="tem_loc_ini"; fields(i)%grid="grid_N" 534 i = iom_add(i); fields(i)%vname="sal_loc_ini"; fields(i)%grid="grid_N" 535 i = iom_add(i); fields(i)%vname="sal_loc_ini"; fields(i)%grid="grid_N" 536 !ICE/icedyn_adv_pra.F90 grid_Ni_3D - jpi,jpj,jpl 537 i = iom_add(i); fields(i)%vname="sxice"; fields(i)%grid="grid_Ni_3D" 538 i = iom_add(i); fields(i)%vname="syice"; fields(i)%grid="grid_Ni_3D" 539 i = iom_add(i); fields(i)%vname="sxxice"; fields(i)%grid="grid_Ni_3D" 540 i = iom_add(i); fields(i)%vname="syyice"; fields(i)%grid="grid_Ni_3D" 541 i = iom_add(i); fields(i)%vname="sxyice"; fields(i)%grid="grid_Ni_3D" 542 i = iom_add(i); fields(i)%vname="sxsn"; fields(i)%grid="grid_Ni_3D" 543 i = iom_add(i); fields(i)%vname="sysn"; fields(i)%grid="grid_Ni_3D" 544 i = iom_add(i); fields(i)%vname="sxxsn"; fields(i)%grid="grid_Ni_3D" 545 i = iom_add(i); fields(i)%vname="syysn"; fields(i)%grid="grid_Ni_3D" 546 i = iom_add(i); fields(i)%vname="sxysn"; fields(i)%grid="grid_Ni_3D" 547 i = iom_add(i); fields(i)%vname="sxa"; fields(i)%grid="grid_Ni_3D" 548 i = iom_add(i); fields(i)%vname="sya"; fields(i)%grid="grid_Ni_3D" 549 i = iom_add(i); fields(i)%vname="sxxa"; fields(i)%grid="grid_Ni_3D" 550 i = iom_add(i); fields(i)%vname="syya"; fields(i)%grid="grid_Ni_3D" 551 i = iom_add(i); fields(i)%vname="sxya"; fields(i)%grid="grid_Ni_3D" 552 i = iom_add(i); fields(i)%vname="sxsal"; fields(i)%grid="grid_Ni_3D" 553 i = iom_add(i); fields(i)%vname="sysal"; fields(i)%grid="grid_Ni_3D" 554 i = iom_add(i); fields(i)%vname="sxxsal"; fields(i)%grid="grid_Ni_3D" 555 i = iom_add(i); fields(i)%vname="syysal"; fields(i)%grid="grid_Ni_3D" 556 i = iom_add(i); fields(i)%vname="sxysal"; fields(i)%grid="grid_Ni_3D" 557 i = iom_add(i); fields(i)%vname="sxage"; fields(i)%grid="grid_Ni_3D" 558 i = iom_add(i); fields(i)%vname="syage"; fields(i)%grid="grid_Ni_3D" 559 i = iom_add(i); fields(i)%vname="sxxage"; fields(i)%grid="grid_Ni_3D" 560 i = iom_add(i); fields(i)%vname="syyage"; fields(i)%grid="grid_Ni_3D" 561 i = iom_add(i); fields(i)%vname="sxyage"; fields(i)%grid="grid_Ni_3D" 562 !this part is in addition to 4D grids, to handle old format of SI3 resart 563 !NEMO format restart 564 DO jk = 1, nlay_s 565 WRITE(zchar,'(I2.2)') jk 566 znam = 'sxc0'//'_l'//zchar 567 i = iom_add(i); fields(i)%vname=znam; fields(i)%grid="grid_Ni_3D" 568 znam = 'syc0'//'_l'//zchar 569 i = iom_add(i); fields(i)%vname=znam; fields(i)%grid="grid_Ni_3D" 570 znam = 'sxxc0'//'_l'//zchar 571 i = iom_add(i); fields(i)%vname=znam; fields(i)%grid="grid_Ni_3D" 572 znam = 'syyc0'//'_l'//zchar 573 i = iom_add(i); fields(i)%vname=znam; fields(i)%grid="grid_Ni_3D" 574 znam = 'sxyc0'//'_l'//zchar 575 i = iom_add(i); fields(i)%vname=znam; fields(i)%grid="grid_Ni_3D" 576 END DO 577 !XIOS format restart 578 i = iom_add(i); fields(i)%vname="sxc0"; fields(i)%grid="grid_Ns_4D" 579 i = iom_add(i); fields(i)%vname="syc0"; fields(i)%grid="grid_Ns_4D" 580 i = iom_add(i); fields(i)%vname="sxxc0"; fields(i)%grid="grid_Ns_4D" 581 i = iom_add(i); fields(i)%vname="syyc0"; fields(i)%grid="grid_Ns_4D" 582 i = iom_add(i); fields(i)%vname="sxxc0"; fields(i)%grid="grid_Ns_4D" 583 ! 584 !NEMO format restart 585 DO jk = 1, nlay_i 586 WRITE(zchar,'(I2.2)') jk 587 znam = 'sxe'//'_l'//zchar 588 i = iom_add(i); fields(i)%vname=znam; fields(i)%grid="grid_Ni_3D" 589 znam = 'sye'//'_l'//zchar 590 i = iom_add(i); fields(i)%vname=znam; fields(i)%grid="grid_Ni_3D" 591 znam = 'sxxe'//'_l'//zchar 592 i = iom_add(i); fields(i)%vname=znam; fields(i)%grid="grid_Ni_3D" 593 znam = 'syye'//'_l'//zchar 594 i = iom_add(i); fields(i)%vname=znam; fields(i)%grid="grid_Ni_3D" 595 znam = 'sxye'//'_l'//zchar 596 i = iom_add(i); fields(i)%vname=znam; fields(i)%grid="grid_Ni_3D" 597 ENDDO 598 !XIOS format restart 599 i = iom_add(i); fields(i)%vname="sxe"; fields(i)%grid="grid_Ni_4D" 600 i = iom_add(i); fields(i)%vname="sye"; fields(i)%grid="grid_Ni_4D" 601 i = iom_add(i); fields(i)%vname="sxxe"; fields(i)%grid="grid_Ni_4D" 602 i = iom_add(i); fields(i)%vname="syye"; fields(i)%grid="grid_Ni_4D" 603 i = iom_add(i); fields(i)%vname="sxye"; fields(i)%grid="grid_Ni_4D" 604 !common for both 605 i = iom_add(i); fields(i)%vname="sxap"; fields(i)%grid="grid_Ni_3D" 606 i = iom_add(i); fields(i)%vname="syap"; fields(i)%grid="grid_Ni_3D" 607 i = iom_add(i); fields(i)%vname="sxxap"; fields(i)%grid="grid_Ni_3D" 608 i = iom_add(i); fields(i)%vname="syyap"; fields(i)%grid="grid_Ni_3D" 609 i = iom_add(i); fields(i)%vname="sxyap"; fields(i)%grid="grid_Ni_3D" 610 i = iom_add(i); fields(i)%vname="sxvp"; fields(i)%grid="grid_Ni_3D" 611 i = iom_add(i); fields(i)%vname="syvp"; fields(i)%grid="grid_Ni_3D" 612 i = iom_add(i); fields(i)%vname="sxxvp"; fields(i)%grid="grid_Ni_3D" 613 i = iom_add(i); fields(i)%vname="syyvp"; fields(i)%grid="grid_Ni_3D" 614 i = iom_add(i); fields(i)%vname="sxyvp"; fields(i)%grid="grid_Ni_3D" 615 i = iom_add(i); fields(i)%vname="stress1_i"; fields(i)%grid="grid_N" 616 i = iom_add(i); fields(i)%vname="stress2_i"; fields(i)%grid="grid_N" 617 i = iom_add(i); fields(i)%vname="stress12_i"; fields(i)%grid="grid_N" 618 i = iom_add(i); fields(i)%vname="nn_fsbc"; fields(i)%grid="grid_scalar" 619 i = iom_add(i); fields(i)%vname="kt_ice"; fields(i)%grid="grid_scalar" 620 i = iom_add(i); fields(i)%vname="v_i"; fields(i)%grid="grid_Ni_3D" 621 i = iom_add(i); fields(i)%vname="v_s"; fields(i)%grid="grid_Ni_3D" 622 i = iom_add(i); fields(i)%vname="sv_i"; fields(i)%grid="grid_Ni_3D" 623 i = iom_add(i); fields(i)%vname="a_i"; fields(i)%grid="grid_Ni_3D" 624 i = iom_add(i); fields(i)%vname="t_su"; fields(i)%grid="grid_Ni_3D" 625 i = iom_add(i); fields(i)%vname="u_ice"; fields(i)%grid="grid_N" 626 i = iom_add(i); fields(i)%vname="v_ice"; fields(i)%grid="grid_N" 627 !NEMO format restat 628 DO jk = 1, nlay_s 629 WRITE(zchar,'(I2.2)') jk 630 znam = 'e_s'//'_l'//zchar 631 i = iom_add(i); fields(i)%vname=znam; fields(i)%grid="grid_Ni_3D" 632 END DO 633 !XIOS format restart 634 i = iom_add(i); fields(i)%vname="e_s"; fields(i)%grid="grid_Ns_4D" 635 !NEMO format restat 636 DO jk = 1, nlay_i 637 WRITE(zchar,'(I2.2)') jk 638 znam = 'e_i'//'_l'//zchar 639 i = iom_add(i); fields(i)%vname=znam; fields(i)%grid="grid_Ni_3D" 640 END DO 641 !XIOS format restart 642 i = iom_add(i); fields(i)%vname="e_i"; fields(i)%grid="grid_Ni_4D" 643 !common for both 644 i = iom_add(i); fields(i)%vname="oa_i"; fields(i)%grid="grid_Ni_3D" 645 i = iom_add(i); fields(i)%vname="a_ip"; fields(i)%grid="grid_Ni_3D" 646 i = iom_add(i); fields(i)%vname="v_ip"; fields(i)%grid="grid_Ni_3D" 647 i = iom_add(i); fields(i)%vname="cnd_ice"; fields(i)%grid="grid_Ni_3D" 648 i = iom_add(i); fields(i)%vname="t1_ice"; fields(i)%grid="grid_Ni_3D" 649 i = iom_add(i); fields(i)%vname="snwice_mass"; fields(i)%grid="grid_N" 650 i = iom_add(i); fields(i)%vname="snwice_mass_b"; fields(i)%grid="grid_N" 651 #endif 516 652 END SUBROUTINE iom_set_rst_vars 517 653 518 654 519 SUBROUTINE iom_set_rstw_active( cdrst_file)655 SUBROUTINE iom_set_rstw_active(drst_wfields, cdrst_file) 520 656 !!--------------------------------------------------------------------- 521 657 !! *** SUBROUTINE iom_set_rstw_active *** … … 525 661 !!--------------------------------------------------------------------- 526 662 !sets enabled = .TRUE. for each field in restart file 527 CHARACTER(len=*) :: cdrst_file 663 CHARACTER(len=*), INTENT(IN) :: cdrst_file 664 TYPE(RST_FIELD), INTENT(IN) :: drst_wfields(max_rst_fields) 528 665 #if defined key_iomput 529 666 TYPE(xios_field) :: field_hdl … … 549 686 !define fields for restart context 550 687 DO i = 1, max_rst_fields 551 IF( rst_wfields(i)%active ) THEN552 CALL xios_add_child(file_hdl, field_hdl, TRIM( rst_wfields(i)%vname))553 SELECT CASE (TRIM( rst_wfields(i)%grid))688 IF( drst_wfields(i)%active ) THEN 689 CALL xios_add_child(file_hdl, field_hdl, TRIM(drst_wfields(i)%vname)) 690 SELECT CASE (TRIM(drst_wfields(i)%grid)) 554 691 CASE ("grid_N_3D") 555 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM( rst_wfields(i)%vname), &692 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(drst_wfields(i)%vname), & 556 693 domain_ref="grid_N", axis_ref="nav_lev", prec = 8, operation = "instant") 557 694 CASE ("grid_N") 558 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM( rst_wfields(i)%vname), &695 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(drst_wfields(i)%vname), & 559 696 domain_ref="grid_N", prec = 8, operation = "instant") 560 697 CASE ("grid_vector") 561 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM( rst_wfields(i)%vname), &698 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(drst_wfields(i)%vname), & 562 699 axis_ref="nav_lev", prec = 8, operation = "instant") 563 700 CASE ("grid_scalar") 564 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM( rst_wfields(i)%vname), &701 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(drst_wfields(i)%vname), & 565 702 scalar_ref = "grid_scalar", prec = 8, operation = "instant") 566 703 END SELECT … … 588 725 TYPE(xios_scalar) :: scalar_hdl 589 726 TYPE(xios_scalargroup) :: scalargroup_hdl 727 INTEGER :: ji 590 728 591 729 CALL xios_get_handle("domain_definition",domaingroup_hdl) … … 602 740 CALL xios_get_handle("scalar_definition", scalargroup_hdl) 603 741 CALL xios_add_child(scalargroup_hdl, scalar_hdl, "grid_scalar") 742 #if defined key_si3 743 CALL xios_get_handle("axis_definition",axisgroup_hdl) 744 CALL xios_add_child(axisgroup_hdl, axis_hdl, "numcat") 745 CALL iom_set_axis_attr( "numcat", (/ (REAL(ji,wp), ji=1,jpl) /) ) 746 CALL xios_add_child(axisgroup_hdl, axis_hdl, "nlay_i") 747 CALL iom_set_axis_attr( "nlay_i", (/ (REAL(ji,wp), ji=1,nlay_i) /) ) 748 CALL xios_add_child(axisgroup_hdl, axis_hdl, "nlay_s") 749 CALL iom_set_axis_attr( "nlay_s", (/ (REAL(ji,wp), ji=1,nlay_s) /) ) 750 #endif 604 751 #endif 605 752 END SUBROUTINE iom_set_rst_context … … 614 761 #if defined key_iomput 615 762 TYPE(xios_context) :: nemo_hdl 616 763 617 764 IF( TRIM(Agrif_CFixed()) == '0' ) THEN 618 765 CALL xios_get_handle(TRIM(cdname),nemo_hdl) … … 942 1089 #if defined key_iomput 943 1090 IF(lwp) WRITE(numout,*) 'XIOS RST READ (0D): ', trim(cdvar) 944 CALL iom_swap( TRIM(crxios_context) )945 1091 CALL xios_recv_field( trim(cdvar), pvar) 946 CALL iom_swap( TRIM(cxios_context) )947 1092 #else 948 1093 WRITE(ctmp1,*) 'Can not use XIOS in iom_g0d, file: '//trim(clname)//', var:'//trim(cdvar) … … 1010 1155 ENDIF 1011 1156 END SUBROUTINE iom_g3d 1157 1158 SUBROUTINE iom_g4d( kiomid, kdom, cdvar, pvar, ktime, kstart, kcount, lrowattr, ldxios ) 1159 INTEGER , INTENT(in ) :: kiomid ! Identifier of the file 1160 INTEGER , INTENT(in ) :: kdom ! Type of domain to be read 1161 CHARACTER(len=*), INTENT(in ) :: cdvar ! Name of the variable 1162 REAL(wp) , INTENT( out), DIMENSION(:,:,:,:) :: pvar ! read field 1163 INTEGER , INTENT(in ) , OPTIONAL :: ktime ! record number 1164 INTEGER , INTENT(in ), DIMENSION(4) , OPTIONAL :: kstart ! start axis position of the reading 1165 INTEGER , INTENT(in ), DIMENSION(4) , OPTIONAL :: kcount ! number of points in each axis 1166 LOGICAL , INTENT(in ) , OPTIONAL :: lrowattr ! logical flag telling iom_get to 1167 ! look for and use a file attribute 1168 ! called open_ocean_jstart to set the start 1169 ! value for the 2nd dimension (netcdf only) 1170 LOGICAL , INTENT(in ), OPTIONAL :: ldxios ! read data using XIOS 1171 ! 1172 IF( kiomid > 0 ) THEN 1173 IF( iom_file(kiomid)%nfid > 0 ) CALL iom_get_123d( kiomid, kdom , cdvar , pv_r4d=pvar, & 1174 & ktime=ktime, kstart=kstart, kcount=kcount, & 1175 & lrowattr=lrowattr, ldxios=ldxios ) 1176 ENDIF 1177 END SUBROUTINE iom_g4d 1012 1178 !!---------------------------------------------------------------------- 1013 1179 1014 1180 SUBROUTINE iom_get_123d( kiomid, kdom , cdvar , & 1015 & pv_r1d, pv_r2d, pv_r3d, &1181 & pv_r1d, pv_r2d, pv_r3d, pv_r4d, & 1016 1182 & ktime , kstart, kcount, & 1017 1183 & lrowattr, ldxios ) … … 1029 1195 REAL(wp), DIMENSION(:,:) , INTENT( out), OPTIONAL :: pv_r2d ! read field (2D case) 1030 1196 REAL(wp), DIMENSION(:,:,:) , INTENT( out), OPTIONAL :: pv_r3d ! read field (3D case) 1197 REAL(wp), DIMENSION(:,:,:,:),INTENT( out), OPTIONAL :: pv_r4d ! read field (4D case) 1031 1198 INTEGER , INTENT(in ), OPTIONAL :: ktime ! record number 1032 1199 INTEGER , DIMENSION(:) , INTENT(in ), OPTIONAL :: kstart ! start position of the reading in each axis … … 1293 1460 #if defined key_iomput 1294 1461 !would be good to be able to check which context is active and swap only if current is not restart 1295 CALL iom_swap( TRIM(crxios_context) ) 1296 IF( PRESENT(pv_r3d) ) THEN 1462 IF( PRESENT(pv_r4d) ) THEN 1463 pv_r4d(:, :, :, :) = 0. 1464 if(lwp) write(numout,*) 'XIOS RST READ (4D): ',trim(cdvar) 1465 CALL xios_recv_field( trim(cdvar), pv_r4d) 1466 IF(idom /= jpdom_unknown ) then 1467 CALL lbc_lnk( 'iom', pv_r4d,'Z', -999., kfillmode = jpfillnothing) 1468 ENDIF 1469 ELSEIF( PRESENT(pv_r3d) ) THEN 1297 1470 pv_r3d(:, :, :) = 0. 1298 1471 if(lwp) write(numout,*) 'XIOS RST READ (3D): ',trim(cdvar) … … 1313 1486 CALL xios_recv_field( trim(cdvar), pv_r1d) 1314 1487 ENDIF 1315 CALL iom_swap( TRIM(cxios_context) )1316 1488 #else 1317 1489 istop = istop + 1 … … 1336 1508 IF( zscf /= 1.) pv_r3d(:,:,:) = pv_r3d(:,:,:) * zscf 1337 1509 IF( zofs /= 0.) pv_r3d(:,:,:) = pv_r3d(:,:,:) + zofs 1510 ELSEIF( PRESENT(pv_r4d) ) THEN 1511 IF( zscf /= 1.) pv_r4d(:,:,:,:) = pv_r4d(:,:,:,:) * zscf 1512 IF( zofs /= 0.) pv_r4d(:,:,:,:) = pv_r4d(:,:,:,:) + zofs 1338 1513 ENDIF 1339 1514 ! … … 2395 2570 END FUNCTION iom_sdate 2396 2571 2572 INTEGER FUNCTION iom_add(idm) 2573 INTEGER :: idm 2574 2575 iom_add = idm + 1 2576 IF( iom_add > max_rst_fields) THEN 2577 WRITE(ctmp1,*) 'E R R O R : iom_set_rst_vars SIZE of RST_FIELD array is too small' 2578 CALL ctl_stop( 'iom_add:', ctmp1 ) 2579 ENDIF 2580 2581 END FUNCTION iom_add 2582 2397 2583 #else 2398 2584 !!----------------------------------------------------------------------
Note: See TracChangeset
for help on using the changeset viewer.