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 12276 for NEMO/trunk/src/OCE/IOM/iom.F90 – NEMO

Ignore:
Timestamp:
2019-12-20T12:14:26+01:00 (4 years ago)
Author:
cetlod
Message:

trunk : merge in some cmip6 diagnostics into the trunk before copying it to release-4.0.2(-head). SETTE tests are OK and the is no difference with the revision 12248

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/src/OCE/IOM/iom.F90

    r12132 r12276  
    5656   LOGICAL, PUBLIC, PARAMETER ::   lk_iomput = .FALSE.       !: iom_put flag 
    5757#endif 
    58    PUBLIC iom_init, iom_swap, iom_open, iom_close, iom_setkt, iom_varid, iom_get 
     58   PUBLIC iom_init, iom_swap, iom_open, iom_close, iom_setkt, iom_varid, iom_get, iom_get_var 
    5959   PUBLIC iom_chkatt, iom_getatt, iom_putatt, iom_getszuld, iom_rstput, iom_delay_rst, iom_put 
    6060   PUBLIC iom_use, iom_context_finalize, iom_miss_val 
     
    6262   PRIVATE iom_rp0d, iom_rp1d, iom_rp2d, iom_rp3d 
    6363   PRIVATE iom_g0d, iom_g1d, iom_g2d, iom_g3d, iom_get_123d 
    64    PRIVATE iom_p1d, iom_p2d, iom_p3d 
     64   PRIVATE iom_p1d, iom_p2d, iom_p3d, iom_p4d 
    6565#if defined key_iomput 
    6666   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 
     
    8383   END INTERFACE 
    8484   INTERFACE iom_put 
    85       MODULE PROCEDURE iom_p0d, iom_p1d, iom_p2d, iom_p3d 
     85      MODULE PROCEDURE iom_p0d, iom_p1d, iom_p2d, iom_p3d, iom_p4d 
    8686   END INTERFACE iom_put 
    8787   
     
    108108      TYPE(xios_date)     :: start_date 
    109109      CHARACTER(len=lc) :: clname 
     110      INTEGER             :: irefyear, irefmonth, irefday 
    110111      INTEGER           :: ji, jkmin 
    111112      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 
     
    223228          CALL iom_set_axis_attr( "icbcla", class_num ) 
    224229          CALL iom_set_axis_attr( "iax_20C", (/ REAL(20,wp) /) )   ! strange syntaxe and idea... 
     230          CALL iom_set_axis_attr( "iax_26C", (/ REAL(26,wp) /) )   ! strange syntaxe and idea... 
    225231          CALL iom_set_axis_attr( "iax_28C", (/ REAL(28,wp) /) )   ! strange syntaxe and idea... 
     232          CALL iom_set_axis_attr( "basin"  , (/ (REAL(ji,wp), ji=1,5) /) ) 
    226233      ENDIF 
    227234      ! 
     
    806813      CHARACTER(LEN=100)    ::   clinfo    ! info character 
    807814      !--------------------------------------------------------------------- 
    808       ! 
    809       IF( iom_open_init == 0 )   RETURN   ! avoid to use iom_file(jf)%nfid that us not yet initialized 
    810815      ! 
    811816      clinfo = '                    iom_close ~~~  ' 
     
    13421347   END SUBROUTINE iom_get_123d 
    13431348 
     1349   SUBROUTINE iom_get_var( cdname, z2d) 
     1350      CHARACTER(LEN=*), INTENT(in ) ::   cdname 
     1351      REAL(wp), DIMENSION(jpi,jpj) ::   z2d  
     1352#if defined key_iomput 
     1353      IF( xios_field_is_active( cdname, at_current_timestep_arg = .TRUE. ) ) THEN 
     1354         z2d(:,:) = 0._wp 
     1355         CALL xios_recv_field( cdname, z2d) 
     1356      ENDIF 
     1357#else 
     1358      IF( .FALSE. )   WRITE(numout,*) cdname, z2d ! useless test to avoid compilation warnings 
     1359#endif 
     1360   END SUBROUTINE iom_get_var 
     1361 
    13441362 
    13451363   FUNCTION iom_getszuld ( kiomid )   
     
    17111729   END SUBROUTINE iom_p3d 
    17121730 
     1731   SUBROUTINE iom_p4d( cdname, pfield4d ) 
     1732      CHARACTER(LEN=*)                  , INTENT(in) ::   cdname 
     1733      REAL(wp),       DIMENSION(:,:,:,:), INTENT(in) ::   pfield4d 
     1734#if defined key_iomput 
     1735      CALL xios_send_field(cdname, pfield4d) 
     1736#else 
     1737      IF( .FALSE. )   WRITE(numout,*) cdname, pfield4d   ! useless test to avoid compilation warnings 
     1738#endif 
     1739   END SUBROUTINE iom_p4d 
     1740 
     1741 
    17131742#if defined key_iomput 
    17141743   !!---------------------------------------------------------------------- 
     
    20532082      ALLOCATE( zlon(ni*nj) )       ;       zlon(:) = 0._wp 
    20542083      ! 
    2055       CALL dom_ngb( -168.53, 65.03, ix, iy, 'T' ) !  i-line that passes through Bering Strait: Reference latitude (used in plots) 
    2056 !      CALL dom_ngb( 180., 90., ix, iy, 'T' ) !  i-line that passes near the North Pole : Reference latitude (used in plots) 
     2084!      CALL dom_ngb( -168.53, 65.03, ix, iy, 'T' ) !  i-line that passes through Bering Strait: Reference latitude (used in plots) 
     2085      CALL dom_ngb( 180., 90., ix, iy, 'T' ) !  i-line that passes near the North Pole : Reference latitude (used in plots) 
    20572086      CALL iom_set_domain_attr("gznl", ni_glo=jpiglo, nj_glo=jpjglo, ibegin=nimpp+nldi-2, jbegin=njmpp+nldj-2, ni=ni, nj=nj) 
    20582087      CALL iom_set_domain_attr("gznl", data_dim=2, data_ibegin = 1-nldi, data_ni = jpi, data_jbegin = 1-nldj, data_nj = jpj) 
    20592088      CALL iom_set_domain_attr("gznl", lonvalue = zlon,   & 
    20602089         &                             latvalue = RESHAPE(plat(nldi:nlei, nldj:nlej),(/ ni*nj /)))   
    2061       CALL iom_set_zoom_domain_attr("znl_T", ibegin=ix-1, jbegin=0, ni=1, nj=jpjglo) 
    2062       CALL iom_set_zoom_domain_attr("znl_W", ibegin=ix-1, jbegin=0, ni=1, nj=jpjglo) 
     2090      CALL iom_set_zoom_domain_attr("ptr", ibegin=ix-1, jbegin=0, ni=1, nj=jpjglo) 
    20632091      ! 
    20642092      CALL iom_update_file_name('ptr') 
Note: See TracChangeset for help on using the changeset viewer.