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/LDF/ldfslp.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/LDF/ldfslp.F90

    r14986 r15540  
    5656    
    5757   !                                                     !! Classic operator (Madec) 
    58    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)     ::   uslp, wslpi          !: i_slope at U- and W-points 
    59    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)     ::   vslp, wslpj          !: j-slope at V- and W-points 
     58   REAL(dp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)     ::   uslp, wslpi          !: i_slope at U- and W-points 
     59   REAL(dp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)     ::   vslp, wslpj          !: j-slope at V- and W-points 
    6060   !                                                     !! triad operator (Griffies) 
    61    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)     ::   wslp2                !: wslp**2 from Griffies quarter cells 
    62    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:,:) ::   triadi_g, triadj_g   !: skew flux  slopes relative to geopotentials 
    63    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:,:) ::   triadi  , triadj     !: isoneutral slopes relative to model-coordinate 
     61   REAL(dp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)     ::   wslp2                !: wslp**2 from Griffies quarter cells 
     62   REAL(dp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:,:) ::   triadi_g, triadj_g   !: skew flux  slopes relative to geopotentials 
     63   REAL(dp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:,:) ::   triadi  , triadj     !: isoneutral slopes relative to model-coordinate 
    6464   !                                                     !! both operators 
    6565   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)     ::   ah_wslp2             !: ah * slope^2 at w-point 
     
    6868   !                                                     !! Madec operator 
    6969   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   omlmask           ! mask of the surface mixed layer at T-pt 
    70    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   uslpml, wslpiml   ! i_slope at U- and W-points just below the mixed layer 
    71    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   vslpml, wslpjml   ! j_slope at V- and W-points just below the mixed layer 
    72  
    73    REAL(wp) ::   repsln = 1.e-25_wp       ! tiny value used as minium of di(rho), dj(rho) and dk(rho) 
     70   REAL(dp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   uslpml, wslpiml   ! i_slope at U- and W-points just below the mixed layer 
     71   REAL(dp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   vslpml, wslpjml   ! j_slope at V- and W-points just below the mixed layer 
     72 
     73   REAL(dp) ::   repsln = 1.e-25_wp       ! tiny value used as minium of di(rho), dj(rho) and dk(rho) 
    7474 
    7575   !! * Substitutions 
     
    110110      INTEGER , INTENT(in)                   ::   kt    ! ocean time-step index 
    111111      INTEGER , INTENT(in)                   ::   Kbb, Kmm   ! ocean time level indices 
    112       REAL(wp), INTENT(in), DIMENSION(:,:,:) ::   prd   ! in situ density 
    113       REAL(wp), INTENT(in), DIMENSION(:,:,:) ::   pn2   ! Brunt-Vaisala frequency (locally ref.) 
     112      REAL(dp), INTENT(in), DIMENSION(:,:,:) ::   prd   ! in situ density 
     113      REAL(dp), INTENT(in), DIMENSION(:,:,:) ::   pn2   ! Brunt-Vaisala frequency (locally ref.) 
    114114      !! 
    115115      INTEGER  ::   ji , jj , jk    ! dummy loop indices 
     
    122122      REAL(wp) ::   zdepu, zdepv                   !   -      - 
    123123      REAL(wp), DIMENSION(jpi,jpj)     ::  zslpml_hmlpu, zslpml_hmlpv 
    124       REAL(wp), DIMENSION(jpi,jpj,jpk) ::  zgru, zwz, zdzr 
    125       REAL(wp), DIMENSION(jpi,jpj,jpk) ::  zgrv, zww 
     124      REAL(wp), DIMENSION(jpi,jpj,jpk)  :: zgru, zdzr 
     125      REAL(dp), DIMENSION(jpi,jpj,jpk)  :: zwz 
     126      REAL(wp), DIMENSION(jpi,jpj,jpk)  :: zgrv 
     127      REAL(dp), DIMENSION(jpi,jpj,jpk)  :: zww 
    126128      !!---------------------------------------------------------------------- 
    127129      ! 
     
    349351      INTEGER  ::   ji, jj, jk, jl, ip, jp, kp  ! dummy loop indices 
    350352      INTEGER  ::   iku, ikv                    ! local integer 
    351       REAL(wp) ::   zfacti, zfactj              ! local scalars 
    352       REAL(wp) ::   znot_thru_surface           ! local scalars 
    353       REAL(wp) ::   zdit, zdis, zdkt, zbu, zbti, zisw 
    354       REAL(wp) ::   zdjt, zdjs, zdks, zbv, zbtj, zjsw 
    355       REAL(wp) ::   zdxrho_raw, zti_coord, zti_raw, zti_lim, zti_g_raw, zti_g_lim 
    356       REAL(wp) ::   zdyrho_raw, ztj_coord, ztj_raw, ztj_lim, ztj_g_raw, ztj_g_lim 
    357       REAL(wp) ::   zdzrho_raw 
    358       REAL(wp) ::   zbeta0, ze3_e1, ze3_e2 
    359       REAL(wp), DIMENSION(jpi,jpj)     ::   z1_mlbw 
    360       REAL(wp), DIMENSION(jpi,jpj,jpk,0:1) ::   zdxrho , zdyrho, zdzrho     ! Horizontal and vertical density gradients 
    361       REAL(wp), DIMENSION(jpi,jpj,0:1,0:1) ::   zti_mlb, ztj_mlb            ! for Griffies operator only 
     353      REAL(dp) ::   zfacti, zfactj              ! local scalars 
     354      REAL(dp) ::   znot_thru_surface           ! local scalars 
     355      REAL(dp) ::   zdit, zdis, zdkt, zbu, zbti, zisw 
     356      REAL(dp) ::   zdjt, zdjs, zdks, zbv, zbtj, zjsw 
     357      REAL(dp) ::   zdxrho_raw, zti_coord, zti_raw, zti_lim, zti_g_raw, zti_g_lim 
     358      REAL(dp) ::   zdyrho_raw, ztj_coord, ztj_raw, ztj_lim, ztj_g_raw, ztj_g_lim 
     359      REAL(dp) ::   zdzrho_raw 
     360      REAL(dp) ::   zbeta0, ze3_e1, ze3_e2 
     361      REAL(dp), DIMENSION(jpi,jpj)     ::   z1_mlbw 
     362      REAL(dp), DIMENSION(jpi,jpj,jpk,0:1) ::   zdxrho , zdyrho, zdzrho     ! Horizontal and vertical density gradients 
     363      REAL(dp), DIMENSION(jpi,jpj,0:1,0:1) ::   zti_mlb, ztj_mlb            ! for Griffies operator only 
    362364      !!---------------------------------------------------------------------- 
    363365      ! 
     
    573575      !!                omlmask         :  mixed layer mask 
    574576      !!---------------------------------------------------------------------- 
    575       REAL(wp), DIMENSION(:,:,:), INTENT(in) ::   prd            ! in situ density 
    576       REAL(wp), DIMENSION(:,:,:), INTENT(in) ::   pn2            ! Brunt-Vaisala frequency (locally ref.) 
     577      REAL(dp), DIMENSION(:,:,:), INTENT(in) ::   prd            ! in situ density 
     578      REAL(dp), DIMENSION(:,:,:), INTENT(in) ::   pn2            ! Brunt-Vaisala frequency (locally ref.) 
    577579      REAL(wp), DIMENSION(:,:,:), INTENT(in) ::   p_gru, p_grv   ! i- & j-gradient of density (u- & v-pts) 
    578580      REAL(wp), DIMENSION(:,:,:), INTENT(in) ::   p_dzr          ! z-gradient of density      (T-point) 
     
    582584      INTEGER  ::   iku, ikv, ik, ikm1             ! local integers 
    583585      REAL(wp) ::   zeps, zm1_g, zm1_2g, z1_slpmax ! local scalars 
    584       REAL(wp) ::   zci, zfi, zau, zbu, zai, zbi   !   -      - 
    585       REAL(wp) ::   zcj, zfj, zav, zbv, zaj, zbj   !   -      - 
    586       REAL(wp) ::   zck, zfk,      zbw             !   -      - 
     586      REAL(wp)  :: zci, zau, zbu, zai, zbi!   -      - 
     587      REAL(dp)  :: zfi                    !   -      - 
     588      REAL(wp)  :: zcj, zav, zbv, zaj, zbj!   -      - 
     589      REAL(dp)  :: zfj                    !   -      - 
     590      REAL(wp)  :: zbw                    !   -      - 
     591      REAL(dp)  :: zck, zfk               !   -      - 
    587592      !!---------------------------------------------------------------------- 
    588593      ! 
Note: See TracChangeset for help on using the changeset viewer.