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/DIA/diaar5.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/DIA/diaar5.F90

    r14986 r15540  
    3030   PUBLIC   dia_ar5_hst    ! heat/salt transport 
    3131 
    32    REAL(wp)                         ::   vol0         ! ocean volume (interior domain) 
    33    REAL(wp)                         ::   area_tot     ! total ocean surface (interior domain) 
     32   REAL(dp)                         ::   vol0         ! ocean volume (interior domain) 
     33   REAL(dp)                         ::   area_tot     ! total ocean surface (interior domain) 
    3434   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:  ) ::   thick0       ! ocean thickness (interior domain) 
    3535   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sn0          ! initial salinity 
     
    7878      ! 
    7979      REAL(wp), ALLOCATABLE, DIMENSION(:,:)     :: zarea_ssh , zbotpres       ! 2D workspace 
    80       REAL(wp), ALLOCATABLE, DIMENSION(:,:)     :: z2d, zpe                   ! 2D workspace 
    81       REAL(wp), ALLOCATABLE, DIMENSION(:,:,:)   :: z3d, zrhd, ztpot, zgdept   ! 3D workspace (zgdept: needed to use the substitute) 
     80      REAL(wp), ALLOCATABLE, DIMENSION(:,:)      :: z2d! 2D workspace 
     81      REAL(dp), ALLOCATABLE, DIMENSION(:,:)      :: zpe! 2D workspace 
     82      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:)    :: zgdept! 3D workspace (zgdept: needed to use the substitute) 
     83      REAL(dp), ALLOCATABLE, DIMENSION(:,:,:)    :: z3d, zrhd, ztpot! 3D workspace (zgdept: needed to use the substitute) 
    8284      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) :: ztsn                       ! 4D workspace 
    8385 
     
    137139            zgdept(:,:,jk) = gdept(:,:,jk,Kmm) 
    138140         END DO 
    139          CALL eos( ztsn, zrhd, zgdept)                       ! now in situ density using initial salinity 
     141         CALL eos( CASTDP(ztsn), zrhd, CASTDP(zgdept))                       ! now in situ density using initial salinity 
    140142         ! 
    141143         zbotpres(:,:) = 0._wp                        ! no atmospheric surface pressure, levitating sea-ice 
     
    232234            ztpot(:,:,jpk) = 0._wp 
    233235            DO jk = 1, jpkm1 
    234                ztpot(:,:,jk) = eos_pt_from_ct( CASTWP(ts(:,:,jk,jp_tem,Kmm)), CASTWP(ts(:,:,jk,jp_sal,Kmm)) ) 
     236               ztpot(:,:,jk) = eos_pt_from_ct( ts(:,:,jk,jp_tem,Kmm), ts(:,:,jk,jp_sal,Kmm) ) 
    235237            END DO 
    236238            ! 
     
    315317      INTEGER                         , INTENT(in )  :: ktra  ! tracer index 
    316318      CHARACTER(len=3)                , INTENT(in)   :: cptr  ! transport type  'adv'/'ldf' 
    317       REAL(wp), DIMENSION(A2D(nn_hls),jpk)    , INTENT(in)   :: puflx  ! u-flux of advection/diffusion 
    318       REAL(wp), DIMENSION(A2D(nn_hls),jpk)    , INTENT(in)   :: pvflx  ! v-flux of advection/diffusion 
     319      REAL(dp), DIMENSION(A2D(nn_hls),jpk)    , INTENT(in)   :: puflx  ! u-flux of advection/diffusion 
     320      REAL(dp), DIMENSION(A2D(nn_hls),jpk)    , INTENT(in)   :: pvflx  ! v-flux of advection/diffusion 
    319321      ! 
    320322      INTEGER    ::  ji, jj, jk 
    321       REAL(wp), DIMENSION(A2D(nn_hls))  :: z2d 
     323      REAL(dp), DIMENSION(A2D(nn_hls))  :: z2d 
    322324 
    323325      z2d(:,:) = puflx(:,:,1) 
     
    360362      INTEGER  ::   ji, jj, jk  ! dummy loop indices 
    361363      REAL(wp) ::   zztmp 
    362       REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) ::   zsaldta   ! Jan/Dec levitus salinity 
     364      REAL(dp), ALLOCATABLE, DIMENSION(:,:,:,:) ::   zsaldta   ! Jan/Dec levitus salinity 
    363365      REAL(wp), ALLOCATABLE, DIMENSION(:,:)     ::   zvol0 
    364366      ! 
Note: See TracChangeset for help on using the changeset viewer.