New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 12193 for NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/IOM – NEMO

Ignore:
Timestamp:
2019-12-11T17:15:54+01:00 (5 years ago)
Author:
davestorkey
Message:

2019/dev_r11943_MERGE_2019: Merge in dev_r12072_TOP-01_ENHANCE-11_cethe

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/IOM/iom.F90

    r12182 r12193  
    5555   LOGICAL, PUBLIC, PARAMETER ::   lk_iomput = .FALSE.       !: iom_put flag 
    5656#endif 
    57    PUBLIC iom_init, iom_swap, iom_open, iom_close, iom_setkt, iom_varid, iom_get 
     57   PUBLIC iom_init, iom_swap, iom_open, iom_close, iom_setkt, iom_varid, iom_get, iom_get_var 
    5858   PUBLIC iom_chkatt, iom_getatt, iom_putatt, iom_getszuld, iom_rstput, iom_delay_rst, iom_put 
    5959   PUBLIC iom_use, iom_context_finalize, iom_miss_val 
     
    6161   PRIVATE iom_rp0d, iom_rp1d, iom_rp2d, iom_rp3d 
    6262   PRIVATE iom_g0d, iom_g1d, iom_g2d, iom_g3d, iom_get_123d 
    63    PRIVATE iom_p1d, iom_p2d, iom_p3d 
     63   PRIVATE iom_p1d, iom_p2d, iom_p3d, iom_p4d 
    6464#if defined key_iomput 
    6565   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 
     
    8282   END INTERFACE 
    8383   INTERFACE iom_put 
    84       MODULE PROCEDURE iom_p0d, iom_p1d, iom_p2d, iom_p3d 
     84      MODULE PROCEDURE iom_p0d, iom_p1d, iom_p2d, iom_p3d, iom_p4d 
    8585   END INTERFACE iom_put 
    8686   
     
    107107      TYPE(xios_date)     :: start_date 
    108108      CHARACTER(len=lc) :: clname 
     109      INTEGER             :: irefyear, irefmonth, irefday 
    109110      INTEGER           :: ji, jkmin 
    110111      LOGICAL :: llrst_context              ! is context related to restart 
     
    139140 
    140141      ! Calendar type is now defined in xml file  
     142      IF (.NOT.(xios_getvar('ref_year' ,irefyear ))) irefyear  = 1900 
     143      IF (.NOT.(xios_getvar('ref_month',irefmonth))) irefmonth = 01 
     144      IF (.NOT.(xios_getvar('ref_day'  ,irefday  ))) irefday   = 01 
     145 
    141146      SELECT CASE ( nleapy )        ! Choose calendar for IOIPSL 
    142       CASE ( 1)   ; CALL xios_define_calendar( TYPE = "Gregorian", time_origin = xios_date(1900,01,01,00,00,00), & 
     147      CASE ( 1)   ; CALL xios_define_calendar( TYPE = "Gregorian", time_origin = xios_date(irefyear,irefmonth,irefday,00,00,00), & 
    143148          &                                    start_date = xios_date(nyear,nmonth,nday,0,0,0) ) 
    144       CASE ( 0)   ; CALL xios_define_calendar( TYPE = "NoLeap"   , time_origin = xios_date(1900,01,01,00,00,00), & 
     149      CASE ( 0)   ; CALL xios_define_calendar( TYPE = "NoLeap"   , time_origin = xios_date(irefyear,irefmonth,irefday,00,00,00), & 
    145150          &                                    start_date = xios_date(nyear,nmonth,nday,0,0,0) ) 
    146       CASE (30)   ; CALL xios_define_calendar( TYPE = "D360"     , time_origin = xios_date(1900,01,01,00,00,00), & 
     151      CASE (30)   ; CALL xios_define_calendar( TYPE = "D360"     , time_origin = xios_date(irefyear,irefmonth,irefday,00,00,00), & 
    147152          &                                    start_date = xios_date(nyear,nmonth,nday,0,0,0) ) 
    148153      END SELECT 
     
    241246          CALL iom_set_axis_attr( "icbcla", class_num ) 
    242247          CALL iom_set_axis_attr( "iax_20C", (/ REAL(20,wp) /) )   ! strange syntaxe and idea... 
     248          CALL iom_set_axis_attr( "iax_26C", (/ REAL(26,wp) /) )   ! strange syntaxe and idea... 
    243249          CALL iom_set_axis_attr( "iax_28C", (/ REAL(28,wp) /) )   ! strange syntaxe and idea... 
     250          CALL iom_set_axis_attr( "basin"  , (/ (REAL(ji,wp), ji=1,5) /) ) 
    244251      ENDIF 
    245252      ! 
     
    13481355   END SUBROUTINE iom_get_123d 
    13491356 
     1357   SUBROUTINE iom_get_var( cdname, z2d) 
     1358      CHARACTER(LEN=*), INTENT(in ) ::   cdname 
     1359      REAL(wp), DIMENSION(jpi,jpj) ::   z2d  
     1360#if defined key_iomput 
     1361      IF( xios_field_is_active( cdname, at_current_timestep_arg = .TRUE. ) ) THEN 
     1362         z2d(:,:) = 0._wp 
     1363         CALL xios_recv_field( cdname, z2d) 
     1364      ENDIF 
     1365#else 
     1366      IF( .FALSE. )   WRITE(numout,*) cdname, z2d ! useless test to avoid compilation warnings 
     1367#endif 
     1368   END SUBROUTINE iom_get_var 
     1369 
    13501370 
    13511371   FUNCTION iom_getszuld ( kiomid )   
     
    17171737   END SUBROUTINE iom_p3d 
    17181738 
     1739   SUBROUTINE iom_p4d( cdname, pfield4d ) 
     1740      CHARACTER(LEN=*)                , INTENT(in) ::   cdname 
     1741      REAL(wp),       DIMENSION(:,:,:,:), INTENT(in) ::   pfield4d 
     1742#if defined key_iomput 
     1743      CALL xios_send_field(cdname, pfield4d) 
     1744#else 
     1745      IF( .FALSE. )   WRITE(numout,*) cdname, pfield4d   ! useless test to avoid compilation warnings 
     1746#endif 
     1747   END SUBROUTINE iom_p4d 
     1748 
     1749 
    17191750#if defined key_iomput 
    17201751   !!---------------------------------------------------------------------- 
     
    20592090      ALLOCATE( zlon(ni*nj) )       ;       zlon(:) = 0._wp 
    20602091      ! 
    2061       CALL dom_ngb( -168.53, 65.03, ix, iy, 'T' ) !  i-line that passes through Bering Strait: Reference latitude (used in plots) 
    2062 !      CALL dom_ngb( 180., 90., ix, iy, 'T' ) !  i-line that passes near the North Pole : Reference latitude (used in plots) 
     2092!      CALL dom_ngb( -168.53, 65.03, ix, iy, 'T' ) !  i-line that passes through Bering Strait: Reference latitude (used in plots) 
     2093      CALL dom_ngb( 180., 90., ix, iy, 'T' ) !  i-line that passes near the North Pole : Reference latitude (used in plots) 
    20632094      CALL iom_set_domain_attr("gznl", ni_glo=jpiglo, nj_glo=jpjglo, ibegin=nimpp+nldi-2, jbegin=njmpp+nldj-2, ni=ni, nj=nj) 
    20642095      CALL iom_set_domain_attr("gznl", data_dim=2, data_ibegin = 1-nldi, data_ni = jpi, data_jbegin = 1-nldj, data_nj = jpj) 
    20652096      CALL iom_set_domain_attr("gznl", lonvalue = zlon,   & 
    20662097         &                             latvalue = RESHAPE(plat(nldi:nlei, nldj:nlej),(/ ni*nj /)))   
    2067       CALL iom_set_zoom_domain_attr("znl_T", ibegin=ix-1, jbegin=0, ni=1, nj=jpjglo) 
    2068       CALL iom_set_zoom_domain_attr("znl_W", ibegin=ix-1, jbegin=0, ni=1, nj=jpjglo) 
     2098      CALL iom_set_zoom_domain_attr("ptr", ibegin=ix-1, jbegin=0, ni=1, nj=jpjglo) 
    20692099      ! 
    20702100      CALL iom_update_file_name('ptr') 
Note: See TracChangeset for help on using the changeset viewer.