Changeset 14644 for NEMO/branches/2020/dev_r14116_HPC-04_mcastril_Mixed_Precision_implementation_final/src/OCE/IOM/iom.F90
- Timestamp:
- 2021-03-26T15:33:49+01:00 (3 years ago)
- Location:
- NEMO/branches/2020/dev_r14116_HPC-04_mcastril_Mixed_Precision_implementation_final
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r14116_HPC-04_mcastril_Mixed_Precision_implementation_final
- Property svn:externals
-
old new 9 9 10 10 # SETTE 11 ^/utils/CI/sette _wave@13990sette11 ^/utils/CI/sette@14244 sette
-
- Property svn:externals
-
NEMO/branches/2020/dev_r14116_HPC-04_mcastril_Mixed_Precision_implementation_final/src/OCE/IOM/iom.F90
r14219 r14644 36 36 USE phycst ! physical constants 37 37 USE dianam ! build name of file 38 #if defined key_ iomput38 #if defined key_xios 39 39 USE xios 40 40 # endif … … 52 52 PUBLIC ! must be public to be able to access iom_def through iom 53 53 54 #if defined key_ iomput54 #if defined key_xios 55 55 LOGICAL, PUBLIC, PARAMETER :: lk_iomput = .TRUE. !: iom_put flag 56 56 #else … … 69 69 PRIVATE iom_p1d_sp, iom_p2d_sp, iom_p3d_sp, iom_p4d_sp 70 70 PRIVATE iom_p1d_dp, iom_p2d_dp, iom_p3d_dp, iom_p4d_dp 71 #if defined key_ iomput71 #if defined key_xios 72 72 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 73 73 PRIVATE set_grid, set_grid_bounds, set_scalar, set_xmlatt, set_mooring, iom_sdate … … 116 116 INTEGER , OPTIONAL, INTENT(in) :: kdid 117 117 LOGICAL , OPTIONAL, INTENT(in) :: ld_closedef 118 #if defined key_ iomput118 #if defined key_xios 119 119 ! 120 120 TYPE(xios_duration) :: dtime = xios_duration(0, 0, 0, 0, 0, 0) … … 144 144 145 145 llrstr = (cdname == cr_ocerst_cxt) .OR. (cdname == cr_icerst_cxt) 146 llrstr = llrstr .OR. (cdname == cr_ablrst_cxt) 146 147 llrstr = llrstr .OR. (cdname == cr_toprst_cxt) 147 148 llrstr = llrstr .OR. (cdname == cr_sedrst_cxt) 148 149 149 150 llrstw = (cdname == cw_ocerst_cxt) .OR. (cdname == cw_icerst_cxt) 151 llrstw = llrstw .OR. (cdname == cw_ablrst_cxt) 150 152 llrstw = llrstw .OR. (cdname == cw_toprst_cxt) 151 153 llrstw = llrstw .OR. (cdname == cw_sedrst_cxt) … … 309 311 !!---------------------------------------------------------------------- 310 312 CHARACTER(len=*), OPTIONAL, INTENT(IN) :: cdname 311 #if defined key_ iomput313 #if defined key_xios 312 314 LOGICAL :: llrstw 313 315 … … 316 318 llrstw = (cdname == cw_ocerst_cxt) 317 319 llrstw = llrstw .OR. (cdname == cw_icerst_cxt) 320 llrstw = llrstw .OR. (cdname == cw_ablrst_cxt) 318 321 llrstw = llrstw .OR. (cdname == cw_toprst_cxt) 319 322 llrstw = llrstw .OR. (cdname == cw_sedrst_cxt) … … 344 347 INTEGER, INTENT(IN) :: idnum 345 348 346 #if defined key_ iomput349 #if defined key_xios 347 350 INTEGER :: ndims, nvars, natts, unlimitedDimId, dimlen, xtype,mdims 348 351 TYPE(xios_field) :: field_hdl … … 358 361 LOGICAL :: lmeta 359 362 !metadata in restart file for restart read with XIOS 360 INTEGER, PARAMETER :: NMETA = 1 0363 INTEGER, PARAMETER :: NMETA = 11 361 364 CHARACTER(LEN=lc) :: meta(NMETA) 362 365 … … 372 375 meta(9) = "y" 373 376 meta(10) = "numcat" 377 meta(11) = "nav_hgt" 374 378 375 379 clinfo = ' iom_set_vars_active, file: '//TRIM(iom_file(idnum)%name) … … 450 454 !!--------------------------------------------------------------------- 451 455 CHARACTER(len=*) :: cdrst_file 452 #if defined key_ iomput456 #if defined key_xios 453 457 TYPE(xios_file) :: file_hdl 454 458 TYPE(xios_filegroup) :: filegroup_hdl … … 489 493 REAL(dp), OPTIONAL, INTENT(IN), DIMENSION(:, :, :) :: rd3 490 494 REAL(sp), OPTIONAL, INTENT(IN), DIMENSION(:, :, :) :: rs3 491 #if defined key_ iomput495 #if defined key_xios 492 496 TYPE(xios_field) :: field_hdl 493 497 TYPE(xios_file) :: file_hdl … … 549 553 IF(idlev == jpk) THEN 550 554 axis_ref="nav_lev" 555 ELSEIF(idlev == jpka) THEN 556 axis_ref="nav_hgt" 551 557 #if defined key_si3 552 558 ELSEIF(idlev == jpl) THEN … … 594 600 LOGICAL, INTENT(IN) :: ld_rstr 595 601 INTEGER :: ji 596 #if defined key_ iomput602 #if defined key_xios 597 603 TYPE(xios_domaingroup) :: domaingroup_hdl 598 604 TYPE(xios_domain) :: domain_hdl … … 616 622 CALL iom_set_axis_attr( "numcat", (/ (REAL(ji,wp), ji=1,jpl) /) ) 617 623 #endif 624 CALL xios_add_child(axisgroup_hdl, axis_hdl, "nav_hgt") 625 CALL iom_set_axis_attr( "nav_hgt", (/ (REAL(ji,wp), ji=1,jpka) /) ) 618 626 CALL xios_get_handle("scalar_definition", scalargroup_hdl) 619 627 CALL xios_add_child(scalargroup_hdl, scalar_hdl, "grid_scalar") … … 639 647 ELSEIF(kdid == numrir) THEN 640 648 cdcont = cr_icerst_cxt 649 ELSEIF(kdid == numrar) THEN 650 cdcont = cr_ablrst_cxt 641 651 ELSEIF(kdid == numrtr) THEN 642 652 cdcont = cr_toprst_cxt … … 651 661 ELSEIF(kdid == numriw) THEN 652 662 cdcont = cw_icerst_cxt 663 ELSEIF(kdid == numraw) THEN 664 cdcont = cw_ablrst_cxt 653 665 ELSEIF(kdid == numrtw) THEN 654 666 cdcont = cw_toprst_cxt … … 667 679 !!--------------------------------------------------------------------- 668 680 CHARACTER(len=*), INTENT(in) :: cdname 669 #if defined key_ iomput681 #if defined key_xios 670 682 TYPE(xios_context) :: nemo_hdl 671 683 IF( TRIM(Agrif_CFixed()) == '0' ) THEN … … 956 968 ENDIF 957 969 ELSE 958 #if defined key_ iomput970 #if defined key_xios 959 971 IF(lwp) WRITE(numout,*) 'XIOS RST READ (0D): ', trim(cdvar) 960 972 CALL iom_swap(context) … … 1004 1016 ENDIF 1005 1017 ELSE 1006 #if defined key_ iomput1018 #if defined key_xios 1007 1019 IF(lwp) WRITE(numout,*) 'XIOS RST READ (0D): ', trim(cdvar) 1008 1020 CALL iom_swap(context) … … 1368 1380 ! 1369 1381 ELSE ! read using XIOS. Only if KEY_IOMPUT is defined 1370 #if defined key_ iomput1382 #if defined key_xios 1371 1383 !would be good to be able to check which context is active and swap only if current is not restart 1372 1384 idvar = iom_varid( kiomid, cdvar ) … … 1423 1435 CHARACTER(LEN=*), INTENT(in ) :: cdname 1424 1436 REAL(wp), DIMENSION(jpi,jpj) :: z2d 1425 #if defined key_ iomput1437 #if defined key_xios 1426 1438 IF( xios_field_is_active( cdname, at_current_timestep_arg = .TRUE. ) ) THEN 1427 1439 z2d(:,:) = 0._wp … … 1606 1618 1607 1619 IF( llx ) THEN 1608 #ifdef key_ iomput1620 #ifdef key_xios 1609 1621 IF( kt == kwrite ) THEN 1610 1622 IF(lwp) write(numout,*) 'RESTART: write (XIOS 0D) ',trim(cdvar) … … 1646 1658 1647 1659 IF( llx ) THEN 1648 #ifdef key_ iomput1660 #ifdef key_xios 1649 1661 IF( kt == kwrite ) THEN 1650 1662 IF(lwp) write(numout,*) 'RESTART: write (XIOS 0D) ',trim(cdvar) … … 1687 1699 1688 1700 IF( llx ) THEN 1689 #ifdef key_ iomput1701 #ifdef key_xios 1690 1702 IF( kt == kwrite ) THEN 1691 1703 IF(lwp) write(numout,*) 'RESTART: write (XIOS 1D) ',trim(cdvar) … … 1727 1739 1728 1740 IF( llx ) THEN 1729 #ifdef key_ iomput1741 #ifdef key_xios 1730 1742 IF( kt == kwrite ) THEN 1731 1743 IF(lwp) write(numout,*) 'RESTART: write (XIOS 1D) ',trim(cdvar) … … 1768 1780 1769 1781 IF( llx ) THEN 1770 #ifdef key_ iomput1782 #ifdef key_xios 1771 1783 IF( kt == kwrite ) THEN 1772 1784 IF(lwp) write(numout,*) 'RESTART: write (XIOS 2D) ',trim(cdvar) … … 1808 1820 1809 1821 IF( llx ) THEN 1810 #ifdef key_ iomput1822 #ifdef key_xios 1811 1823 IF( kt == kwrite ) THEN 1812 1824 IF(lwp) write(numout,*) 'RESTART: write (XIOS 2D) ',trim(cdvar) … … 1849 1861 1850 1862 IF( llx ) THEN 1851 #ifdef key_ iomput1863 #ifdef key_xios 1852 1864 IF( kt == kwrite ) THEN 1853 1865 IF(lwp) write(numout,*) 'RESTART: write (XIOS 3D) ',trim(cdvar) … … 1889 1901 1890 1902 IF( llx ) THEN 1891 #ifdef key_ iomput1903 #ifdef key_xios 1892 1904 IF( kt == kwrite ) THEN 1893 1905 IF(lwp) write(numout,*) 'RESTART: write (XIOS 3D) ',trim(cdvar) … … 1967 1979 REAL(sp) , INTENT(in) :: pfield0d 1968 1980 !! REAL(wp) , DIMENSION(jpi,jpj) :: zz ! masson 1969 #if defined key_ iomput1981 #if defined key_xios 1970 1982 !!clem zz(:,:)=pfield0d 1971 1983 !!clem CALL xios_send_field(cdname, zz) … … 1980 1992 REAL(dp) , INTENT(in) :: pfield0d 1981 1993 !! REAL(wp) , DIMENSION(jpi,jpj) :: zz ! masson 1982 #if defined key_ iomput1994 #if defined key_xios 1983 1995 !!clem zz(:,:)=pfield0d 1984 1996 !!clem CALL xios_send_field(cdname, zz) … … 1993 2005 CHARACTER(LEN=*) , INTENT(in) :: cdname 1994 2006 REAL(sp), DIMENSION(:), INTENT(in) :: pfield1d 1995 #if defined key_ iomput2007 #if defined key_xios 1996 2008 CALL xios_send_field( cdname, RESHAPE( (/pfield1d/), (/1,1,SIZE(pfield1d)/) ) ) 1997 2009 #else … … 2003 2015 CHARACTER(LEN=*) , INTENT(in) :: cdname 2004 2016 REAL(dp), DIMENSION(:), INTENT(in) :: pfield1d 2005 #if defined key_ iomput2017 #if defined key_xios 2006 2018 CALL xios_send_field( cdname, RESHAPE( (/pfield1d/), (/1,1,SIZE(pfield1d)/) ) ) 2007 2019 #else … … 2014 2026 REAL(sp), DIMENSION(:,:), INTENT(in) :: pfield2d 2015 2027 IF( iom_use(cdname) ) THEN 2016 #if defined key_ iomput2028 #if defined key_xios 2017 2029 CALL xios_send_field( cdname, pfield2d ) 2018 2030 #else … … 2026 2038 REAL(dp), DIMENSION(:,:), INTENT(in) :: pfield2d 2027 2039 IF( iom_use(cdname) ) THEN 2028 #if defined key_ iomput2040 #if defined key_xios 2029 2041 CALL xios_send_field( cdname, pfield2d ) 2030 2042 #else … … 2038 2050 REAL(sp), DIMENSION(:,:,:), INTENT(in) :: pfield3d 2039 2051 IF( iom_use(cdname) ) THEN 2040 #if defined key_ iomput2052 #if defined key_xios 2041 2053 CALL xios_send_field( cdname, pfield3d ) 2042 2054 #else … … 2050 2062 REAL(dp), DIMENSION(:,:,:), INTENT(in) :: pfield3d 2051 2063 IF( iom_use(cdname) ) THEN 2052 #if defined key_ iomput2064 #if defined key_xios 2053 2065 CALL xios_send_field( cdname, pfield3d ) 2054 2066 #else … … 2062 2074 REAL(sp), DIMENSION(:,:,:,:), INTENT(in) :: pfield4d 2063 2075 IF( iom_use(cdname) ) THEN 2064 #if defined key_ iomput2076 #if defined key_xios 2065 2077 CALL xios_send_field (cdname, pfield4d ) 2066 2078 #else … … 2074 2086 REAL(dp), DIMENSION(:,:,:,:), INTENT(in) :: pfield4d 2075 2087 IF( iom_use(cdname) ) THEN 2076 #if defined key_ iomput2088 #if defined key_xios 2077 2089 CALL xios_send_field (cdname, pfield4d ) 2078 2090 #else … … 2082 2094 END SUBROUTINE iom_p4d_dp 2083 2095 2084 #if defined key_ iomput2096 #if defined key_xios 2085 2097 !!---------------------------------------------------------------------- 2086 !! 'key_ iomput' XIOS interface2098 !! 'key_xios' XIOS interface 2087 2099 !!---------------------------------------------------------------------- 2088 2100 … … 2714 2726 #else 2715 2727 !!---------------------------------------------------------------------- 2716 !! NOT 'key_ iomput' a few dummy routines2728 !! NOT 'key_xios' a few dummy routines 2717 2729 !!---------------------------------------------------------------------- 2718 2730 SUBROUTINE iom_setkt( kt, cdname ) … … 2736 2748 LOGICAL FUNCTION iom_use( cdname ) 2737 2749 CHARACTER(LEN=*), INTENT(in) :: cdname 2738 #if defined key_ iomput2750 #if defined key_xios 2739 2751 iom_use = xios_field_is_active( cdname ) 2740 2752 #else … … 2747 2759 REAL(wp) , INTENT(out) :: pmiss_val 2748 2760 REAL(dp) :: ztmp_pmiss_val 2749 #if defined key_ iomput2761 #if defined key_xios 2750 2762 ! get missing value 2751 2763 CALL xios_get_field_attr( cdname, default_value = ztmp_pmiss_val )
Note: See TracChangeset
for help on using the changeset viewer.