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 13228 for NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/IOM/iom_nf90.F90 – NEMO

Ignore:
Timestamp:
2020-07-02T16:41:07+02:00 (4 years ago)
Author:
smasson
Message:

better e3: update with trunk@13227 see #2385

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/IOM/iom_nf90.F90

    r13193 r13228  
    3333 
    3434   INTERFACE iom_nf90_get 
    35       MODULE PROCEDURE iom_nf90_g0d, iom_nf90_g123d 
     35      MODULE PROCEDURE iom_nf90_g0d_sp                    
     36      MODULE PROCEDURE iom_nf90_g0d_dp, iom_nf90_g123d_dp 
    3637   END INTERFACE 
    3738   INTERFACE iom_nf90_rstput 
    38       MODULE PROCEDURE iom_nf90_rp0123d 
     39      MODULE PROCEDURE iom_nf90_rp0123d_dp 
    3940   END INTERFACE 
    4041 
     
    276277   !!---------------------------------------------------------------------- 
    277278 
    278    SUBROUTINE iom_nf90_g0d( kiomid, kvid, pvar, kstart ) 
     279   SUBROUTINE iom_nf90_g0d_sp( kiomid, kvid, pvar, kstart ) 
    279280      !!----------------------------------------------------------------------- 
    280281      !!                  ***  ROUTINE  iom_nf90_g0d  *** 
     
    284285      INTEGER ,               INTENT(in   )            ::   kiomid   ! Identifier of the file 
    285286      INTEGER ,               INTENT(in   )            ::   kvid     ! variable id 
    286       REAL(wp),               INTENT(  out)            ::   pvar     ! read field 
     287      REAL(sp),               INTENT(  out)            ::   pvar     ! read field 
    287288      INTEGER , DIMENSION(1), INTENT(in   ), OPTIONAL  ::   kstart   ! start position of the reading in each axis 
    288289      ! 
     
    291292      clinfo = 'iom_nf90_g0d , file: '//TRIM(iom_file(kiomid)%name)//', var: '//TRIM(iom_file(kiomid)%cn_var(kvid)) 
    292293      CALL iom_nf90_check(NF90_GET_VAR(iom_file(kiomid)%nfid, iom_file(kiomid)%nvid(kvid), pvar, start = kstart), clinfo ) 
    293    END SUBROUTINE iom_nf90_g0d 
    294  
    295  
    296    SUBROUTINE iom_nf90_g123d( kiomid, kvid, knbdim, kstart, kcount, kx1, kx2, ky1, ky2,   & 
     294   END SUBROUTINE iom_nf90_g0d_sp 
     295 
     296   SUBROUTINE iom_nf90_g0d_dp( kiomid, kvid, pvar, kstart ) 
     297      !!----------------------------------------------------------------------- 
     298      !!                  ***  ROUTINE  iom_nf90_g0d  *** 
     299      !! 
     300      !! ** Purpose : read a scalar with NF90 
     301      !!----------------------------------------------------------------------- 
     302      INTEGER ,               INTENT(in   )            ::   kiomid   ! Identifier of the file 
     303      INTEGER ,               INTENT(in   )            ::   kvid     ! variable id 
     304      REAL(dp),               INTENT(  out)            ::   pvar     ! read field 
     305      INTEGER , DIMENSION(1), INTENT(in   ), OPTIONAL  ::   kstart   ! start position of the reading in each axis 
     306      ! 
     307      CHARACTER(LEN=100)      ::   clinfo   ! info character 
     308      !--------------------------------------------------------------------- 
     309      clinfo = 'iom_nf90_g0d , file: '//TRIM(iom_file(kiomid)%name)//', var: '//TRIM(iom_file(kiomid)%cn_var(kvid)) 
     310      CALL iom_nf90_check(NF90_GET_VAR(iom_file(kiomid)%nfid, iom_file(kiomid)%nvid(kvid), pvar, start = kstart), clinfo ) 
     311   END SUBROUTINE iom_nf90_g0d_dp 
     312 
     313   SUBROUTINE iom_nf90_g123d_dp( kiomid, kvid, knbdim, kstart, kcount, kx1, kx2, ky1, ky2,   & 
    297314         &                    pv_r1d, pv_r2d, pv_r3d ) 
    298315      !!----------------------------------------------------------------------- 
     
    309326      INTEGER , DIMENSION(:)     , INTENT(in   )           ::   kcount    ! number of points to be read in each axis 
    310327      INTEGER ,                    INTENT(in   )           ::   kx1, kx2, ky1, ky2   ! subdomain indexes 
    311       REAL(wp), DIMENSION(:)     , INTENT(  out), OPTIONAL ::   pv_r1d    ! read field (1D case) 
    312       REAL(wp), DIMENSION(:,:)   , INTENT(  out), OPTIONAL ::   pv_r2d    ! read field (2D case) 
    313       REAL(wp), DIMENSION(:,:,:) , INTENT(  out), OPTIONAL ::   pv_r3d    ! read field (3D case) 
     328      REAL(dp), DIMENSION(:)     , INTENT(  out), OPTIONAL ::   pv_r1d    ! read field (1D case) 
     329      REAL(dp), DIMENSION(:,:)   , INTENT(  out), OPTIONAL ::   pv_r2d    ! read field (2D case) 
     330      REAL(dp), DIMENSION(:,:,:) , INTENT(  out), OPTIONAL ::   pv_r3d    ! read field (3D case) 
    314331      ! 
    315332      CHARACTER(LEN=100) ::   clinfo               ! info character 
     
    332349      ENDIF 
    333350      ! 
    334    END SUBROUTINE iom_nf90_g123d 
     351   END SUBROUTINE iom_nf90_g123d_dp 
     352 
    335353 
    336354 
     
    506524   END SUBROUTINE iom_nf90_putatt 
    507525 
    508  
    509    SUBROUTINE iom_nf90_rp0123d( kt, kwrite, kiomid, cdvar , kvid  , ktype,   & 
     526   SUBROUTINE iom_nf90_rp0123d_dp( kt, kwrite, kiomid, cdvar , kvid  , ktype,   & 
    510527         &                                  pv_r0d, pv_r1d, pv_r2d, pv_r3d ) 
    511528      !!-------------------------------------------------------------------- 
     
    520537      INTEGER                     , INTENT(in)           ::   kvid     ! variable id 
    521538      INTEGER                     , INTENT(in), OPTIONAL ::   ktype    ! variable type (default R8) 
    522       REAL(wp)                    , INTENT(in), OPTIONAL ::   pv_r0d   ! written Od field 
    523       REAL(wp), DIMENSION(      :), INTENT(in), OPTIONAL ::   pv_r1d   ! written 1d field 
    524       REAL(wp), DIMENSION(:, :   ), INTENT(in), OPTIONAL ::   pv_r2d   ! written 2d field 
    525       REAL(wp), DIMENSION(:, :, :), INTENT(in), OPTIONAL ::   pv_r3d   ! written 3d field 
     539      REAL(dp)                    , INTENT(in), OPTIONAL ::   pv_r0d   ! written Od field 
     540      REAL(dp), DIMENSION(      :), INTENT(in), OPTIONAL ::   pv_r1d   ! written 1d field 
     541      REAL(dp), DIMENSION(:, :   ), INTENT(in), OPTIONAL ::   pv_r2d   ! written 2d field 
     542      REAL(dp), DIMENSION(:, :, :), INTENT(in), OPTIONAL ::   pv_r3d   ! written 3d field 
    526543      ! 
    527544      INTEGER               :: idims                ! number of dimension 
     
    704721      ENDIF 
    705722      !      
    706    END SUBROUTINE iom_nf90_rp0123d 
     723   END SUBROUTINE iom_nf90_rp0123d_dp 
    707724 
    708725 
Note: See TracChangeset for help on using the changeset viewer.