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 15540 for NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/OBS/obs_oper.F90 – NEMO

Ignore:
Timestamp:
2021-11-26T12:27:56+01:00 (3 years ago)
Author:
sparonuz
Message:

Mixed precision version, tested up to 30 years on ORCA2.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/OBS/obs_oper.F90

    r14219 r15540  
    108108      INTEGER       , INTENT(in   ) ::   kdaystp         ! Number of time steps per day 
    109109      INTEGER       , INTENT(in   ) ::   kvar            ! Number of variables in prodatqc 
    110       REAL(KIND=wp) , INTENT(in   ), DIMENSION(kpi,kpj,kpk) ::   pvar             ! Model field 
    111       REAL(KIND=wp) , INTENT(in   ), DIMENSION(kpi,kpj,kpk) ::   pmask            ! Land-sea mask 
    112       REAL(KIND=wp) , INTENT(in   ), DIMENSION(kpi,kpj)     ::   plam             ! Model longitude 
    113       REAL(KIND=wp) , INTENT(in   ), DIMENSION(kpi,kpj)     ::   pphi             ! Model latitudes 
    114       REAL(KIND=wp) , INTENT(in   ), DIMENSION(kpi,kpj,kpk) ::   pgdept, pgdepw   ! depth of T and W levels  
     110      REAL(KIND=dp) , INTENT(in   ), DIMENSION(kpi,kpj,kpk) ::   pvar             ! Model field 
     111      REAL(KIND=dp) , INTENT(in   ), DIMENSION(kpi,kpj,kpk) ::   pmask            ! Land-sea mask 
     112      REAL(KIND=dp) , INTENT(in   ), DIMENSION(kpi,kpj)     ::   plam             ! Model longitude 
     113      REAL(KIND=dp) , INTENT(in   ), DIMENSION(kpi,kpj)     ::   pphi             ! Model latitudes 
     114      REAL(KIND=dp) , INTENT(in   ), DIMENSION(kpi,kpj,kpk) ::   pgdept, pgdepw   ! depth of T and W levels  
    115115      INTEGER, DIMENSION(imaxavtypes), OPTIONAL ::   kdailyavtypes             ! Types for daily averages 
    116116 
     
    135135      INTEGER, ALLOCATABLE, DIMENSION(:) :: iv_indic 
    136136 
    137       REAL(KIND=wp) :: zlam 
    138       REAL(KIND=wp) :: zphi 
    139       REAL(KIND=wp) :: zdaystp 
    140       REAL(KIND=wp), DIMENSION(kpk) :: & 
     137      REAL(KIND=dp) :: zlam 
     138      REAL(KIND=dp) :: zphi 
     139      REAL(KIND=dp) :: zdaystp 
     140      REAL(KIND=dp), DIMENSION(kpk) :: & 
    141141         & zobsk,  & 
    142142         & zobs2k 
    143       REAL(KIND=wp), DIMENSION(2,2,1) :: & 
     143      REAL(KIND=dp), DIMENSION(2,2,1) :: & 
    144144         & zweig1, & 
    145145         & zweig 
    146       REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE :: & 
     146      REAL(dp), DIMENSION(:,:,:,:), ALLOCATABLE :: & 
    147147         & zmask,  & 
    148148         & zint,   & 
     
    150150         & zgdept, &  
    151151         & zgdepw 
    152       REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: & 
     152      REAL(dp), DIMENSION(:,:,:), ALLOCATABLE :: & 
    153153         & zglam,  & 
    154154         & zgphi 
    155       REAL(KIND=wp), DIMENSION(1) :: zmsk 
    156       REAL(KIND=wp), DIMENSION(:,:,:), ALLOCATABLE :: interp_corner 
     155      REAL(KIND=dp), DIMENSION(1) :: zmsk 
     156      REAL(KIND=dp), DIMENSION(:,:,:), ALLOCATABLE :: interp_corner 
    157157 
    158158      LOGICAL :: ld_dailyav 
     
    492492      INTEGER, INTENT(IN) :: kdaystp   ! Number of time steps per day 
    493493      INTEGER, INTENT(IN) :: k2dint    ! Horizontal interpolation type (see header) 
    494       REAL(wp), INTENT(IN), DIMENSION(kpi,kpj) :: & 
     494      REAL(dp), INTENT(IN), DIMENSION(kpi,kpj) :: & 
    495495         & psurf,  &                   ! Model surface field 
    496496         & psurfmask                   ! Land-sea mask 
    497497      LOGICAL, INTENT(IN) :: ldnightav ! Logical for averaging night-time data 
    498       REAL(KIND=wp), INTENT(IN) :: & 
     498      REAL(KIND=dp), INTENT(IN) :: & 
    499499         & plamscl, &                  ! Diameter in metres of obs footprint in E/W, N/S directions 
    500500         & pphiscl                     ! This is the full width (rather than half-width) 
     
    520520         & icount_night,      & 
    521521         & imask_night 
    522       REAL(wp) :: zlam 
    523       REAL(wp) :: zphi 
    524       REAL(wp), DIMENSION(1) :: zext, zobsmask 
    525       REAL(wp) :: zdaystp 
    526       REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: & 
     522      REAL(dp) :: zlam 
     523      REAL(dp) :: zphi 
     524      REAL(dp), DIMENSION(1) :: zext, zobsmask 
     525      REAL(dp) :: zdaystp 
     526      REAL(dp), DIMENSION(:,:,:), ALLOCATABLE :: & 
    527527         & zweig,  & 
    528528         & zmask,  & 
     
    535535         & zgphif 
    536536 
    537       REAL(wp), DIMENSION(:,:), SAVE, ALLOCATABLE :: & 
     537      REAL(dp), DIMENSION(:,:), SAVE, ALLOCATABLE :: & 
    538538         & zintmp,  & 
    539539         & zouttmp, & 
     
    655655 
    656656      CALL obs_int_comm_2d( imaxifp, imaxjfp, isurf, kpi, kpj, & 
    657          &                  igrdi, igrdj, CASTWP(glamt), zglam ) 
     657         &                  igrdi, igrdj, glamt, zglam ) 
    658658      CALL obs_int_comm_2d( imaxifp, imaxjfp, isurf, kpi, kpj, & 
    659          &                  igrdi, igrdj, CASTWP(gphit), zgphi ) 
     659         &                  igrdi, igrdj, gphit, zgphi ) 
    660660      CALL obs_int_comm_2d( imaxifp, imaxjfp, isurf, kpi, kpj, & 
    661661         &                  igrdi, igrdj, psurfmask, zmask ) 
     
    663663         &                  igrdi, igrdj, psurf, zsurf ) 
    664664      CALL obs_int_comm_2d( imaxifp+1, imaxjfp+1, isurf, kpi, kpj, & 
    665          &                  igrdip1, igrdjp1, CASTWP(glamf), zglamf ) 
     665         &                  igrdip1, igrdjp1, glamf, zglamf ) 
    666666      CALL obs_int_comm_2d( imaxifp+1, imaxjfp+1, isurf, kpi, kpj, & 
    667          &                  igrdip1, igrdjp1, CASTWP(gphif), zgphif ) 
     667         &                  igrdip1, igrdjp1, gphif, zgphif ) 
    668668 
    669669      ! At the end of the day get interpolated means 
Note: See TracChangeset for help on using the changeset viewer.