- Timestamp:
- 2017-10-17T14:31:49+02:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_r8600_xios_write/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90
r8573 r8630 41 41 USE dianam ! build name of file 42 42 USE xios 43 USE iom_def, ONLY : wxioso 43 44 # endif 44 45 USE ioipsl, ONLY : ju2ymds ! for calendar 45 46 USE crs ! Grid coarsening 47 USE sbc_oce, ONLY : lk_oasis, ln_coupled_iceshelf_fluxes, ln_apr_dyn, ln_rnf, nn_components, jp_iam_sas 48 USE diadct, ONLY : lk_diadct 46 49 47 50 IMPLICIT NONE 51 ! values needed to set correctlyfiles in reast file when using XIOS for writing 52 LOGICAL, PUBLIC :: lr_vvl_ztilde, lr_vvl_layer, lr_traadv_cen2 53 48 54 PUBLIC ! must be public to be able to access iom_def through iom 49 50 55 #if defined key_iomput 51 56 LOGICAL, PUBLIC, PARAMETER :: lk_iomput = .TRUE. !: iom_put flag … … 56 61 PUBLIC iom_getatt, iom_putatt, iom_gettime, iom_rstput, iom_put 57 62 PUBLIC iom_use, iom_context_finalize 58 59 63 PRIVATE iom_rp0d, iom_rp1d, iom_rp2d, iom_rp3d 60 64 PRIVATE iom_g0d, iom_g1d, iom_g2d, iom_g3d, iom_get_123d … … 63 67 PRIVATE iom_set_domain_attr, iom_set_axis_attr, iom_set_field_attr, iom_set_file_attr, iom_get_file_attr, iom_set_grid_attr 64 68 PRIVATE set_grid, set_grid_bounds, set_scalar, set_xmlatt, set_mooring, iom_update_file_name, iom_sdate 69 PRIVATE set_rstw_active 65 70 # endif 66 71 … … 124 129 & start_date = xios_date(nyear,nmonth,nday,0,0,0) ) 125 130 END SELECT 126 127 131 ! horizontal grid definition 128 132 CALL set_scalar 129 133 130 IF( TRIM(cdname) == TRIM(cxios_context) 131 CALL set_grid( "T", glamt, gphit )132 CALL set_grid( "U", glamu, gphiu )133 CALL set_grid( "V", glamv, gphiv )134 CALL set_grid( "W", glamt, gphit )134 IF( TRIM(cdname) == TRIM(cxios_context)) THEN 135 CALL set_grid( "T", glamt, gphit, .TRUE. ) 136 CALL set_grid( "U", glamu, gphiu, .TRUE. ) 137 CALL set_grid( "V", glamv, gphiv, .TRUE. ) 138 CALL set_grid( "W", glamt, gphit, .TRUE. ) 135 139 CALL set_grid_znl( gphit ) 136 140 ! … … 150 154 CALL dom_grid_crs ! Save the parent grid information & Switch to coarse grid domain 151 155 ! 152 CALL set_grid( "T", glamt_crs, gphit_crs )153 CALL set_grid( "U", glamu_crs, gphiu_crs )154 CALL set_grid( "V", glamv_crs, gphiv_crs )155 CALL set_grid( "W", glamt_crs, gphit_crs )156 CALL set_grid( "T", glamt_crs, gphit_crs, ln_mskland ) 157 CALL set_grid( "U", glamu_crs, gphiu_crs, ln_mskland ) 158 CALL set_grid( "V", glamv_crs, gphiv_crs, ln_mskland ) 159 CALL set_grid( "W", glamt_crs, gphit_crs, ln_mskland ) 156 160 CALL set_grid_znl( gphit_crs ) 157 161 ! 158 162 CALL dom_grid_glo ! Return to parent grid domain 159 163 ! 160 IF( ln_cfmeta 164 IF( ln_cfmeta) THEN ! Add additional grid metadata 161 165 CALL iom_set_domain_attr("grid_T", area = e1e2t_crs(nldi:nlei, nldj:nlej)) 162 166 CALL iom_set_domain_attr("grid_U", area = e1u_crs(nldi:nlei, nldj:nlej) * e2u_crs(nldi:nlei, nldj:nlej)) … … 171 175 172 176 ! vertical grid definition 173 CALL iom_set_axis_attr( "deptht", gdept_1d )174 CALL iom_set_axis_attr( "depthu", gdept_1d )175 CALL iom_set_axis_attr( "depthv", gdept_1d )176 CALL iom_set_axis_attr( "depthw", gdepw_1d )177 CALL iom_set_axis_attr( "deptht", paxis = gdept_1d ) 178 CALL iom_set_axis_attr( "depthu", paxis = gdept_1d ) 179 CALL iom_set_axis_attr( "depthv", paxis = gdept_1d ) 180 CALL iom_set_axis_attr( "depthw", paxis = gdepw_1d ) 177 181 178 182 ! Add vertical grid bounds … … 200 204 CALL iom_set_axis_attr( "iax_28C", (/ REAL(28,wp) /) ) 201 205 202 ! automatic definitions of some of the xml attributs203 206 CALL set_xmlatt 204 207 … … 213 216 214 217 #endif 215 218 216 219 END SUBROUTINE iom_init 217 220 221 SUBROUTINE iom_rstw_init( cdname, filename ) 222 !!---------------------------------------------------------------------- 223 !! *** ROUTINE *** 224 !! 225 !! ** Purpose : 226 !! 227 !!---------------------------------------------------------------------- 228 CHARACTER(len=*), INTENT(in) :: cdname 229 #if defined key_iomput 230 #if defined key_xios2 231 TYPE(xios_duration) :: dtime = xios_duration(0, 0, 0, 0, 0, 0) 232 TYPE(xios_date) :: start_date 233 TYPE(xios_domaingroup) :: domaingroup_hdl 234 TYPE(xios_domain) :: domain_hdl 235 TYPE(xios_axisgroup) :: axisgroup_hdl 236 TYPE(xios_axis) :: axis_hdl 237 TYPE(xios_scalar) :: scalar_hdl 238 TYPE(xios_scalargroup) :: scalargroup_hdl 239 #endif 240 CHARACTER(len=128) :: clname 241 INTEGER :: ji 242 ! 243 CHARACTER(len=*), OPTIONAL, INTENT(in) :: filename 244 !!---------------------------------------------------------------------- 245 246 clname = cdname 247 IF( TRIM(Agrif_CFixed()) /= '0' ) clname = TRIM(Agrif_CFixed())//"_"//TRIM(cdname) 248 CALL xios_context_initialize(TRIM(clname), mpi_comm_opa) 249 CALL iom_swap( cdname ) 250 ! calendar parameters 251 #if defined key_xios2 252 ! Calendar type is now defined in xml file 253 SELECT CASE ( nleapy ) ! Choose calendar for IOIPSL 254 CASE ( 1) ; CALL xios_define_calendar( TYPE = "Gregorian", time_origin = xios_date(1900,01,01,00,00,00), & 255 & start_date = xios_date(nyear,nmonth,nday,0,0,0) ) 256 CASE ( 0) ; CALL xios_define_calendar( TYPE = "NoLeap" , time_origin = xios_date(1900,01,01,00,00,00), & 257 & start_date = xios_date(nyear,nmonth,nday,0,0,0) ) 258 CASE (30) ; CALL xios_define_calendar( TYPE = "D360" , time_origin = xios_date(1900,01,01,00,00,00), & 259 & start_date = xios_date(nyear,nmonth,nday,0,0,0) ) 260 END SELECT 261 262 #endif 263 CALL xios_get_handle("domain_definition",domaingroup_hdl) 264 CALL xios_add_child(domaingroup_hdl, domain_hdl, "grid_N") 265 CALL set_grid("N", glamt, gphit, .FALSE.) 266 267 CALL xios_get_handle("axis_definition",axisgroup_hdl) 268 CALL xios_add_child(axisgroup_hdl, axis_hdl, "deptht") 269 !if unit="m" is present AGRIF configuration fails to compile 270 CALL xios_set_axis_attr( "deptht", long_name="Vertical levels in meters", positive="down") 271 ! vertical grid definition 272 CALL iom_set_axis_attr( "deptht", paxis = gdept_1d ) 273 274 CALL xios_get_handle("scalar_definition",scalargroup_hdl) 275 CALL xios_add_child(scalargroup_hdl, scalar_hdl, "grid_scalar") 276 277 ! automatic definitions of some of the xml attributs 278 IF( TRIM(cdname) == TRIM(wxios_context)) THEN 279 !set which fields are to be read from restart file 280 CALL set_rstw_active(filename) 281 ENDIF 282 283 ! end file definition 284 dtime%second = rdt 285 CALL xios_set_timestep(dtime) 286 CALL xios_close_context_definition() 287 #endif 288 289 END SUBROUTINE iom_rstw_init 290 291 SUBROUTINE set_rstw_active(rst_file) 292 !sets enabled = .TRUE. for each field in restart file 293 CHARACTER(len=*) :: rst_file 294 TYPE(xios_file) :: file_hdl 295 TYPE(xios_filegroup) :: filegroup_hdl 296 297 !set then name of the restart file (OUTPUT!) and enable available fields 298 if(lwp) WRITE(numout,*) 'Setting (output) restart filename (for XIOS) to: ',TRIM(rst_file) 299 CALL xios_get_handle("file_definition", filegroup_hdl ) 300 CALL xios_add_child(filegroup_hdl, file_hdl, 'wrestart') 301 IF(wxioso.eq.1) THEN 302 CALL xios_set_file_attr( "wrestart", type="one_file", name = TRIM(rst_file), & 303 enabled=.TRUE., mode="write", output_freq=xios_timestep) 304 if(lwp) write(numout,*) 'OPEN ', trim(rst_file), ' in one_file mode' 305 ELSE 306 CALL xios_set_file_attr( "wrestart", type="multiple_file", name = TRIM(rst_file),& 307 enabled=.TRUE., mode="write", output_freq=xios_timestep) 308 if(lwp) write(numout,*) 'OPEN ', trim(rst_file), ' in multiple_file mode' 309 ENDIF 310 311 CALL xios_set_file_attr( "wrestart", name=trim(rst_file)) 312 CALL set_numro_active(file_hdl) 313 314 END SUBROUTINE set_rstw_active 315 316 SUBROUTINE set_numro_active(file_hdl) 317 TYPE(xios_field) :: field_hdl 318 TYPE(xios_file) :: file_hdl 319 320 CALL xios_add_child(file_hdl, field_hdl, "rdt") 321 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 322 scalar_ref = "grid_scalar", operation = "instant") 323 324 CALL xios_add_child(file_hdl, field_hdl, "rdttra1") 325 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 326 scalar_ref = "grid_scalar", operation = "instant") 327 328 CALL xios_add_child(file_hdl, field_hdl, "un") 329 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 330 domain_ref="grid_N", axis_ref="deptht", operation = "instant") 331 332 CALL xios_add_child(file_hdl, field_hdl, "ub") 333 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 334 domain_ref="grid_N", axis_ref="deptht", operation = "instant") 335 336 CALL xios_add_child(file_hdl, field_hdl, "vn") 337 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 338 domain_ref="grid_N", axis_ref="deptht", operation = "instant") 339 340 CALL xios_add_child(file_hdl, field_hdl, "vb") 341 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 342 domain_ref="grid_N", axis_ref="deptht", operation = "instant") 343 344 CALL xios_add_child(file_hdl, field_hdl, "tn") 345 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 346 domain_ref="grid_N", axis_ref="deptht", operation = "instant") 347 348 CALL xios_add_child(file_hdl, field_hdl, "tb") 349 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 350 domain_ref="grid_N", axis_ref="deptht", operation = "instant") 351 352 CALL xios_add_child(file_hdl, field_hdl, "sn") 353 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 354 domain_ref="grid_N", axis_ref="deptht", operation = "instant") 355 356 CALL xios_add_child(file_hdl, field_hdl, "sb") 357 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 358 domain_ref="grid_N", axis_ref="deptht", operation = "instant") 359 360 CALL xios_add_child(file_hdl, field_hdl, "sshn") 361 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 362 domain_ref = "grid_N", operation = "instant") 363 364 CALL xios_add_child(file_hdl, field_hdl, "sshb") 365 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 366 domain_ref = "grid_N", operation = "instant") 367 368 CALL xios_add_child(file_hdl, field_hdl, "hdivn") 369 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 370 domain_ref="grid_N", axis_ref="deptht", operation = "instant") 371 372 CALL xios_add_child(file_hdl, field_hdl, "hdivb") 373 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 374 domain_ref="grid_N", axis_ref="deptht", operation = "instant") 375 376 CALL xios_add_child(file_hdl, field_hdl, "rhop") 377 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 378 domain_ref="grid_N", axis_ref="deptht", operation = "instant") 379 380 CALL xios_add_child(file_hdl, field_hdl, "rotn") 381 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 382 domain_ref="grid_N", axis_ref="deptht", operation = "instant") 383 384 CALL xios_add_child(file_hdl, field_hdl, "rotb") 385 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 386 domain_ref="grid_N", axis_ref="deptht", operation = "instant") 387 388 !in daymod.F90 389 CALL xios_add_child(file_hdl, field_hdl, "kt") 390 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 391 scalar_ref = "grid_scalar", operation = "instant") 392 393 CALL xios_add_child(file_hdl, field_hdl, "ndastp") 394 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 395 scalar_ref = "grid_scalar", operation = "instant") 396 397 CALL xios_add_child(file_hdl, field_hdl, "adatrj") 398 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 399 scalar_ref = "grid_scalar", operation = "instant") 400 !end daymod.F90 401 !sbcmod.F90 402 CALL xios_add_child(file_hdl, field_hdl, "utau_b") 403 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 404 domain_ref = "grid_N", operation = "instant") 405 406 CALL xios_add_child(file_hdl, field_hdl, "vtau_b") 407 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 408 domain_ref = "grid_N", operation = "instant") 409 410 CALL xios_add_child(file_hdl, field_hdl, "qns_b") 411 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 412 domain_ref = "grid_N", operation = "instant") 413 414 CALL xios_add_child(file_hdl, field_hdl, "emp_b") 415 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 416 domain_ref = "grid_N", operation = "instant") 417 418 CALL xios_add_child(file_hdl, field_hdl, "sfx_b") 419 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 420 domain_ref = "grid_N", operation = "instant") 421 !end sbcmod.F90 422 !ALL FIELDS ABOUVE ALWAYS 423 !zdftke.F90 424 #if defined key_zdftke || defined key_esopa 425 CALL xios_add_child(file_hdl, field_hdl, "en") 426 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 427 domain_ref="grid_N", axis_ref="deptht", operation = "instant") 428 429 CALL xios_add_child(file_hdl, field_hdl, "avt") 430 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 431 domain_ref="grid_N", axis_ref="deptht", operation = "instant") 432 433 CALL xios_add_child(file_hdl, field_hdl, "avm") 434 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 435 domain_ref="grid_N", axis_ref="deptht", operation = "instant") 436 437 CALL xios_add_child(file_hdl, field_hdl, "avmu") 438 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 439 domain_ref="grid_N", axis_ref="deptht", operation = "instant") 440 441 CALL xios_add_child(file_hdl, field_hdl, "avmv") 442 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 443 domain_ref="grid_N", axis_ref="deptht", operation = "instant") 444 445 CALL xios_add_child(file_hdl, field_hdl, "dissl") 446 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 447 domain_ref="grid_N", axis_ref="deptht", operation = "instant") 448 #endif 449 !end zdftke.F90 450 !traqsr.F90 451 CALL xios_add_child(file_hdl, field_hdl, "qsr_hc_b") 452 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 453 domain_ref="grid_N", axis_ref="deptht" , operation = "instant") 454 455 CALL xios_add_child(file_hdl, field_hdl, "fraqsr_1lev") 456 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 457 domain_ref = "grid_N", operation = "instant") 458 !END traqsr.F90 459 #if defined key_dynspg_flt || defined key_esopa 460 !dynspg_flt.F90 461 CALL xios_add_child(file_hdl, field_hdl, "gcx") 462 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 463 domain_ref = "grid_N", operation = "instant") 464 465 CALL xios_add_child(file_hdl, field_hdl, "gcxb") 466 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 467 domain_ref = "grid_N", operation = "instant") 468 !end dynspg_flt.F90 469 #endif 470 !trasbc.F90 START 471 CALL xios_add_child(file_hdl, field_hdl, "sbc_hc_b") 472 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 473 domain_ref = "grid_N", operation = "instant") 474 475 CALL xios_add_child(file_hdl, field_hdl, "sbc_sc_b") 476 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 477 domain_ref = "grid_N", operation = "instant") 478 479 CALL xios_add_child(file_hdl, field_hdl, "fwf_isf_b") 480 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 481 domain_ref = "grid_N", operation = "instant") 482 483 CALL xios_add_child(file_hdl, field_hdl, "isf_sc_b") 484 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 485 domain_ref = "grid_N", operation = "instant") 486 487 CALL xios_add_child(file_hdl, field_hdl, "isf_hc_b") 488 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 489 domain_ref = "grid_N", operation = "instant") 490 !trasbc.F90 END 491 IF( lk_oasis) THEN 492 ! ln_coupled_iceshelf_fluxes uninitialised unless lk_oasis=true 493 IF( ln_coupled_iceshelf_fluxes ) THEN 494 CALL xios_add_child(file_hdl, field_hdl, "greenland_icesheet_mass") 495 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 496 scalar_ref = "grid_scalar", operation = "instant") 497 498 CALL xios_add_child(file_hdl, field_hdl, "greenland_icesheet_timelapsed") 499 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 500 scalar_ref = "grid_scalar", operation = "instant") 501 502 CALL xios_add_child(file_hdl, field_hdl, "greenland_icesheet_mass_roc") 503 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 504 scalar_ref = "grid_scalar", operation = "instant") 505 506 CALL xios_add_child(file_hdl, field_hdl, "antarctica_icesheet_mass") 507 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 508 scalar_ref = "grid_scalar", operation = "instant") 509 510 CALL xios_add_child(file_hdl, field_hdl, "antarctica_icesheet_timelapsed") 511 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 512 scalar_ref = "grid_scalar", operation = "instant") 513 514 CALL xios_add_child(file_hdl, field_hdl, "antarctica_icesheet_mass_roc") 515 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 516 scalar_ref = "grid_scalar", operation = "instant") 517 ENDIF 518 ENDIF 519 #if defined key_zdfkpp 520 CALL xios_add_child(file_hdl, field_hdl, "rhd") 521 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 522 domain_ref="grid_N", axis_ref="deptht", operation = "instant") 523 #endif 524 !dia_hsb_rst 525 #if defined key_diadct 526 IF( lk_diadct ) THEN 527 CALL xios_add_child(file_hdl, field_hdl, "frc_v") 528 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 529 scalar_ref = "grid_scalar", operation = "instant") 530 531 CALL xios_add_child(file_hdl, field_hdl, "frc_t") 532 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 533 scalar_ref = "grid_scalar", operation = "instant") 534 535 CALL xios_add_child(file_hdl, field_hdl, "frc_s") 536 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 537 scalar_ref = "grid_scalar", operation = "instant") 538 539 CALL xios_add_child(file_hdl, field_hdl, "ssh_ini") 540 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 541 domain_ref = "grid_N", operation = "instant") 542 543 CALL xios_add_child(file_hdl, field_hdl, "e3t_ini") 544 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 545 domain_ref="grid_N", axis_ref="deptht", operation = "instant") 546 547 CALL xios_add_child(file_hdl, field_hdl, "hc_loc_ini") 548 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 549 domain_ref="grid_N", axis_ref="deptht", operation = "instant") 550 551 CALL xios_add_child(file_hdl, field_hdl, "sc_loc_ini") 552 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 553 domain_ref="grid_N", axis_ref="deptht", operation = "instant") 554 555 556 IF( .NOT. lk_vvl ) THEN 557 CALL xios_add_child(file_hdl, field_hdl, "frc_wn_t") 558 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 559 scalar_ref = "grid_scalar", operation = "instant") 560 561 CALL xios_add_child(file_hdl, field_hdl, "frc_wn_s") 562 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 563 scalar_ref = "grid_scalar", operation = "instant") 564 565 CALL xios_add_child(file_hdl, field_hdl, "ssh_hc_loc_ini") 566 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 567 domain_ref = "grid_N", operation = "instant") 568 569 CALL xios_add_child(file_hdl, field_hdl, "ssh_sc_loc_ini") 570 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 571 domain_ref = "grid_N", operation = "instant") 572 573 574 ENDIF 575 ENDIF 576 #endif 577 !end dia_hsb_rst 578 !domvvl.F90 579 IF( lk_vvl ) THEN 580 CALL xios_add_child(file_hdl, field_hdl, "fse3t_b") 581 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 582 domain_ref="grid_N", axis_ref="deptht", operation = "instant") 583 584 CALL xios_add_child(file_hdl, field_hdl, "fse3t_n") 585 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 586 domain_ref="grid_N", axis_ref="deptht", operation = "instant") 587 588 IF( lr_vvl_ztilde .OR. lr_vvl_layer ) THEN ! z_tilde and layer cases ! 589 CALL xios_add_child(file_hdl, field_hdl, "tilde_e3t_b") 590 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 591 domain_ref = "grid_N", operation = "instant") 592 593 CALL xios_add_child(file_hdl, field_hdl, "tilde_e3t_n") 594 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 595 domain_ref = "grid_N", operation = "instant") 596 END IF 597 IF( lr_vvl_ztilde ) THEN ! z_tilde case ! 598 CALL xios_add_child(file_hdl, field_hdl, "hdiv_lf") 599 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 600 domain_ref = "grid_N", operation = "instant") 601 ENDIF 602 ENDIF 603 !end domvvl.F90 604 !dynspg_ts.F90 605 #if defined key_dynspg_ts || defined key_esopa 606 CALL xios_add_child(file_hdl, field_hdl, "ub2_b") 607 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 608 domain_ref = "grid_N", operation = "instant") 609 610 CALL xios_add_child(file_hdl, field_hdl, "vb2_b") 611 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 612 domain_ref = "grid_N", operation = "instant") 613 614 615 IF (.NOT.ln_bt_av) THEN 616 CALL xios_add_child(file_hdl, field_hdl, "sshbb_e") 617 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 618 domain_ref = "grid_N", operation = "instant") 619 620 CALL xios_add_child(file_hdl, field_hdl, "ubb_e") 621 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 622 domain_ref = "grid_N", operation = "instant") 623 624 CALL xios_add_child(file_hdl, field_hdl, "vbb_e") 625 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 626 domain_ref = "grid_N", operation = "instant") 627 628 CALL xios_add_child(file_hdl, field_hdl, "sshb_e") 629 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 630 domain_ref = "grid_N", operation = "instant") 631 632 CALL xios_add_child(file_hdl, field_hdl, "ub_e") 633 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 634 domain_ref = "grid_N", operation = "instant") 635 636 CALL xios_add_child(file_hdl, field_hdl, "vb_e") 637 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 638 domain_ref = "grid_N", operation = "instant") 639 ENDIF 640 #if defined key_agrif 641 ! Save time integrated fluxes 642 IF ( .NOT.Agrif_Root() ) THEN 643 CALL xios_add_child(file_hdl, field_hdl, "ub2_i_b") 644 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 645 domain_ref = "grid_N", operation = "instant") 646 647 CALL xios_add_child(file_hdl, field_hdl, "vb2_i_b") 648 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 649 domain_ref = "grid_N", operation = "instant") 650 ENDIF 651 #endif 652 #endif 653 !end dynspg_ts.F90 654 !sbcapr.F90 655 IF( ln_apr_dyn) THEN 656 CALL xios_add_child(file_hdl, field_hdl, "ssh_ibb") 657 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 658 domain_ref = "grid_N", operation = "instant") 659 ENDIF 660 !end sbcapr.F90 661 !sbcrnf.F90 662 IF( ln_rnf ) THEN 663 CALL xios_add_child(file_hdl, field_hdl, "rnf_b") 664 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 665 domain_ref = "grid_N", operation = "instant") 666 667 CALL xios_add_child(file_hdl, field_hdl, "rnf_hc_b") 668 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 669 domain_ref = "grid_N", operation = "instant") 670 671 CALL xios_add_child(file_hdl, field_hdl, "rnf_sc_b") 672 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 673 domain_ref = "grid_N", operation = "instant") 674 ENDIF 675 !end sbcrnf.F90 676 !sbcssm.F90 677 IF( nn_components /= jp_iam_sas .AND. nn_fsbc .NE. 1) THEN 678 CALL xios_add_child(file_hdl, field_hdl, "nn_fsbc") 679 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 680 scalar_ref = "grid_scalar", operation = "instant") 681 682 CALL xios_add_child(file_hdl, field_hdl, "ssu_m") 683 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 684 domain_ref = "grid_N", operation = "instant") 685 686 CALL xios_add_child(file_hdl, field_hdl, "ssv_m") 687 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 688 domain_ref = "grid_N", operation = "instant") 689 690 CALL xios_add_child(file_hdl, field_hdl, "sst_m") 691 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 692 domain_ref = "grid_N", operation = "instant") 693 694 CALL xios_add_child(file_hdl, field_hdl, "sss_m") 695 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 696 domain_ref = "grid_N", operation = "instant") 697 698 CALL xios_add_child(file_hdl, field_hdl, "ssh_m") 699 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 700 domain_ref = "grid_N", operation = "instant") 701 702 CALL xios_add_child(file_hdl, field_hdl, "frq_m") 703 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 704 domain_ref = "grid_N", operation = "instant") 705 706 IF( lk_vvl ) THEN 707 CALL xios_add_child(file_hdl, field_hdl, "e3t_m") 708 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 709 domain_ref = "grid_N", operation = "instant") 710 ENDIF 711 ENDIF 712 !end sbcssm.F90 713 IF( lr_traadv_cen2 ) THEN 714 CALL xios_add_child(file_hdl, field_hdl, "avmb") 715 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 716 axis_ref = "deptht", operation = "instant") 717 718 CALL xios_add_child(file_hdl, field_hdl, "avtb") 719 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 720 axis_ref = "deptht", operation = "instant") 721 ENDIF 722 723 END SUBROUTINE set_numro_active 218 724 219 725 SUBROUTINE iom_swap( cdname ) … … 905 1411 IF( zofs /= 0. ) pv_r1d(:) = pv_r1d(:) + zofs 906 1412 ELSEIF( PRESENT(pv_r2d) ) THEN 907 1413 IF( zscf /= 1.) pv_r2d(:,:) = pv_r2d(:,:) * zscf 908 1414 IF( zofs /= 0.) pv_r2d(:,:) = pv_r2d(:,:) + zofs 909 1415 ELSEIF( PRESENT(pv_r3d) ) THEN … … 1115 1621 !! INTERFACE iom_rstput 1116 1622 !!---------------------------------------------------------------------- 1117 SUBROUTINE iom_rp0d( kt, kwrite, kiomid, cdvar, pvar, ktype )1623 SUBROUTINE iom_rp0d( kt, kwrite, kiomid, cdvar, pvar, ktype, lxios ) 1118 1624 INTEGER , INTENT(in) :: kt ! ocean time-step 1119 1625 INTEGER , INTENT(in) :: kwrite ! writing time-step … … 1122 1628 REAL(wp) , INTENT(in) :: pvar ! written field 1123 1629 INTEGER , INTENT(in), OPTIONAL :: ktype ! variable external type 1630 LOGICAL, OPTIONAL :: lxios ! xios write flag 1631 LOGICAL :: lx ! local xios write flag 1124 1632 INTEGER :: ivid ! variable id 1125 IF( kiomid > 0 ) THEN 1126 IF( iom_file(kiomid)%nfid > 0 ) THEN 1127 ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 1128 SELECT CASE (iom_file(kiomid)%iolib) 1129 CASE (jpnf90 ) ; CALL iom_nf90_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r0d = pvar ) 1130 CASE DEFAULT 1131 CALL ctl_stop( 'iom_rp0d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 1132 END SELECT 1633 lx = .FALSE. 1634 IF(PRESENT(lxios)) lx = lxios 1635 IF( lx ) THEN 1636 #ifdef key_iomput 1637 IF( kt == kwrite ) THEN 1638 IF(lwp) write(numout,*) 'RESTART: write (XIOS 0D) ',trim(cdvar) 1639 CALL xios_send_field(trim(cdvar), pvar) 1640 ENDIF 1641 #endif 1642 ELSE 1643 IF( kiomid > 0 ) THEN 1644 IF( iom_file(kiomid)%nfid > 0 ) THEN 1645 ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 1646 SELECT CASE (iom_file(kiomid)%iolib) 1647 CASE (jpioipsl ) ; CALL iom_ioipsl_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r0d = pvar ) 1648 CASE (jpnf90 ) ; CALL iom_nf90_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r0d = pvar ) 1649 CASE (jprstdimg) ; IF( kt == kwrite ) CALL iom_rstdimg_rstput( kiomid, cdvar, ivid, pvar ) 1650 CASE DEFAULT 1651 CALL ctl_stop( 'iom_rp0d: accepted IO library are only jpioipsl, jpnf90 and jprstdimg' ) 1652 END SELECT 1653 ENDIF 1133 1654 ENDIF 1134 1655 ENDIF 1135 1656 END SUBROUTINE iom_rp0d 1136 1657 1137 SUBROUTINE iom_rp1d( kt, kwrite, kiomid, cdvar, pvar, ktype )1658 SUBROUTINE iom_rp1d( kt, kwrite, kiomid, cdvar, pvar, ktype, lxios ) 1138 1659 INTEGER , INTENT(in) :: kt ! ocean time-step 1139 1660 INTEGER , INTENT(in) :: kwrite ! writing time-step … … 1142 1663 REAL(wp) , INTENT(in), DIMENSION( :) :: pvar ! written field 1143 1664 INTEGER , INTENT(in), OPTIONAL :: ktype ! variable external type 1665 LOGICAL, OPTIONAL :: lxios ! xios write flag 1666 LOGICAL :: lx ! local xios write flag 1144 1667 INTEGER :: ivid ! variable id 1145 IF( kiomid > 0 ) THEN 1146 IF( iom_file(kiomid)%nfid > 0 ) THEN 1147 ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 1148 SELECT CASE (iom_file(kiomid)%iolib) 1149 CASE (jpnf90 ) ; CALL iom_nf90_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r1d = pvar ) 1150 CASE DEFAULT 1151 CALL ctl_stop( 'iom_rp1d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 1152 END SELECT 1668 lx = .FALSE. 1669 IF(PRESENT(lxios)) lx = lxios 1670 IF( lx ) THEN 1671 #ifdef key_iomput 1672 IF( kt == kwrite ) THEN 1673 IF(lwp) write(numout,*) 'RESTART: write (XIOS 1D) ',trim(cdvar) 1674 CALL xios_send_field(trim(cdvar), pvar) 1675 ENDIF 1676 #endif 1677 ELSE 1678 IF( kiomid > 0 ) THEN 1679 IF( iom_file(kiomid)%nfid > 0 ) THEN 1680 ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 1681 SELECT CASE (iom_file(kiomid)%iolib) 1682 CASE (jpioipsl ) ; CALL iom_ioipsl_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r1d = pvar ) 1683 CASE (jpnf90 ) ; CALL iom_nf90_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r1d = pvar ) 1684 CASE (jprstdimg) ; IF( kt == kwrite ) CALL iom_rstdimg_rstput( kiomid, cdvar, ivid, pv_r1d = pvar ) 1685 CASE DEFAULT 1686 CALL ctl_stop( 'iom_rp1d: accepted IO library are only jpioipsl, jpnf90 and jprstdimg' ) 1687 END SELECT 1688 ENDIF 1153 1689 ENDIF 1154 1690 ENDIF 1155 1691 END SUBROUTINE iom_rp1d 1156 1692 1157 SUBROUTINE iom_rp2d( kt, kwrite, kiomid, cdvar, pvar, ktype )1693 SUBROUTINE iom_rp2d( kt, kwrite, kiomid, cdvar, pvar, ktype, lxios ) 1158 1694 INTEGER , INTENT(in) :: kt ! ocean time-step 1159 1695 INTEGER , INTENT(in) :: kwrite ! writing time-step … … 1162 1698 REAL(wp) , INTENT(in), DIMENSION(:, : ) :: pvar ! written field 1163 1699 INTEGER , INTENT(in), OPTIONAL :: ktype ! variable external type 1700 LOGICAL, OPTIONAL :: lxios ! xios write flag 1701 LOGICAL :: lx ! local xios write flag 1164 1702 INTEGER :: ivid ! variable id 1165 IF( kiomid > 0 ) THEN 1166 IF( iom_file(kiomid)%nfid > 0 ) THEN 1167 ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 1168 SELECT CASE (iom_file(kiomid)%iolib) 1169 CASE (jpnf90 ) ; CALL iom_nf90_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r2d = pvar ) 1170 CASE DEFAULT 1171 CALL ctl_stop( 'iom_rp2d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 1172 END SELECT 1703 lx = .FALSE. 1704 IF(PRESENT(lxios)) lx = lxios 1705 IF( lx ) THEN 1706 #ifdef key_iomput 1707 IF( kt == kwrite ) THEN 1708 IF(lwp) write(numout,*) 'RESTART: write (XIOS 2D) ',trim(cdvar) 1709 CALL xios_send_field(trim(cdvar), pvar) 1710 ENDIF 1711 #endif 1712 ELSE 1713 IF( kiomid > 0 ) THEN 1714 IF( iom_file(kiomid)%nfid > 0 ) THEN 1715 ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 1716 SELECT CASE (iom_file(kiomid)%iolib) 1717 CASE (jpioipsl ) ; CALL iom_ioipsl_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r2d = pvar ) 1718 CASE (jpnf90 ) ; CALL iom_nf90_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r2d = pvar ) 1719 CASE (jprstdimg) ; IF( kt == kwrite ) CALL iom_rstdimg_rstput( kiomid, cdvar, ivid, pv_r2d = pvar ) 1720 CASE DEFAULT 1721 CALL ctl_stop( 'iom_rp2d: accepted IO library are only jpioipsl, jpnf90 and jprstdimg' ) 1722 END SELECT 1723 ENDIF 1173 1724 ENDIF 1174 1725 ENDIF 1175 1726 END SUBROUTINE iom_rp2d 1176 1727 1177 SUBROUTINE iom_rp3d( kt, kwrite, kiomid, cdvar, pvar, ktype )1728 SUBROUTINE iom_rp3d( kt, kwrite, kiomid, cdvar, pvar, ktype, lxios ) 1178 1729 INTEGER , INTENT(in) :: kt ! ocean time-step 1179 1730 INTEGER , INTENT(in) :: kwrite ! writing time-step … … 1182 1733 REAL(wp) , INTENT(in), DIMENSION(:,:,:) :: pvar ! written field 1183 1734 INTEGER , INTENT(in), OPTIONAL :: ktype ! variable external type 1735 LOGICAL, OPTIONAL :: lxios ! xios write flag 1736 LOGICAL :: lx ! local xios write flag 1184 1737 INTEGER :: ivid ! variable id 1185 IF( kiomid > 0 ) THEN 1186 IF( iom_file(kiomid)%nfid > 0 ) THEN 1187 ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 1188 SELECT CASE (iom_file(kiomid)%iolib) 1189 CASE (jpnf90 ) ; CALL iom_nf90_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r3d = pvar ) 1190 CASE DEFAULT 1191 CALL ctl_stop( 'iom_rp3d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 1192 END SELECT 1738 lx = .FALSE. 1739 IF(PRESENT(lxios)) lx = lxios 1740 IF( lx ) THEN 1741 #ifdef key_iomput 1742 IF( kt == kwrite ) THEN 1743 IF(lwp) write(numout,*) 'RESTART: write (XIOS 3D) ',trim(cdvar) 1744 CALL xios_send_field(trim(cdvar), pvar) 1745 ENDIF 1746 #endif 1747 ELSE 1748 IF( kiomid > 0 ) THEN 1749 IF( iom_file(kiomid)%nfid > 0 ) THEN 1750 ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 1751 SELECT CASE (iom_file(kiomid)%iolib) 1752 CASE (jpioipsl ) ; CALL iom_ioipsl_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r3d = pvar ) 1753 CASE (jpnf90 ) ; CALL iom_nf90_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r3d = pvar ) 1754 CASE (jprstdimg) ; IF( kt == kwrite ) CALL iom_rstdimg_rstput( kiomid, cdvar, ivid, pv_r3d = pvar ) 1755 CASE DEFAULT 1756 CALL ctl_stop( 'iom_rp3d: accepted IO library are only jpioipsl and jprstdimg' ) 1757 END SELECT 1758 ENDIF 1193 1759 ENDIF 1194 1760 ENDIF … … 1234 1800 SUBROUTINE iom_p3d( cdname, pfield3d ) 1235 1801 CHARACTER(LEN=*) , INTENT(in) :: cdname 1236 REAL(wp), DIMENSION(:,:,:), INTENT(in) :: pfield3d1237 1802 #if defined key_iomput 1238 1803 CALL xios_send_field(cdname, pfield3d) … … 1368 1933 SUBROUTINE iom_context_finalize( cdname ) 1369 1934 CHARACTER(LEN=*), INTENT(in) :: cdname 1370 ! 1371 IF( xios_is_valid_context(cdname) ) THEN 1935 CHARACTER(LEN=120) :: clname 1936 ! 1937 clname = cdname 1938 IF( TRIM(Agrif_CFixed()) .NE. '0' ) clname = TRIM(Agrif_CFixed())//"_"//clname 1939 1940 IF( xios_is_valid_context(clname) ) THEN 1372 1941 CALL iom_swap( cdname ) ! swap to cdname context 1373 1942 CALL xios_context_finalize() ! finalize the context … … 1378 1947 1379 1948 1380 SUBROUTINE set_grid( cdgrd, plon, plat )1949 SUBROUTINE set_grid( cdgrd, plon, plat, lxios ) 1381 1950 !!---------------------------------------------------------------------- 1382 1951 !! *** ROUTINE set_grid *** … … 1391 1960 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zmask 1392 1961 INTEGER :: ni,nj 1962 LOGICAL :: lxios 1393 1963 1394 1964 ni=nlei-nldi+1 ; nj=nlej-nldj+1 … … 1396 1966 CALL iom_set_domain_attr("grid_"//cdgrd, ni_glo=jpiglo, nj_glo=jpjglo, ibegin=nimpp+nldi-2, jbegin=njmpp+nldj-2, ni=ni, nj=nj) 1397 1967 CALL iom_set_domain_attr("grid_"//cdgrd, data_dim=2, data_ibegin = 1-nldi, data_ni = jpi, data_jbegin = 1-nldj, data_nj = jpj) 1398 CALL iom_set_domain_attr("grid_"//cdgrd, lonvalue = RESHAPE(plon(nldi:nlei, nldj:nlej),(/ ni*nj /)), &1968 if(.NOT.lxios) CALL iom_set_domain_attr("grid_"//cdgrd, lonvalue = RESHAPE(plon(nldi:nlei, nldj:nlej),(/ ni*nj /)), & 1399 1969 & latvalue = RESHAPE(plat(nldi:nlei, nldj:nlej),(/ ni*nj /))) 1400 1970 1401 IF ( ln_mskland ) THEN1971 IF ( ln_mskland.AND.(.NOT.lxios) ) THEN 1402 1972 ! mask land points, keep values on coast line -> specific mask for U, V and W points 1403 1973 SELECT CASE ( cdgrd ) … … 1439 2009 ! Offset of coordinate representing bottom-left corner 1440 2010 SELECT CASE ( TRIM(cdgrd) ) 1441 CASE ('T', 'W' )2011 CASE ('T', 'W', 'N') 1442 2012 icnr = -1 ; jcnr = -1 1443 2013 CASE ('U')
Note: See TracChangeset
for help on using the changeset viewer.