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/DYN/wet_dry.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/DYN/wet_dry.F90

    r14986 r15540  
    3838   !! --------------------------------------------------------------------- 
    3939 
    40    REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:) ::   wdmask   !: u- and v- limiter  
     40   REAL(dp), PUBLIC, ALLOCATABLE, DIMENSION(:,:) ::   wdmask   !: u- and v- limiter  
    4141   !                                                           !  (can include negative depths) 
    42    REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:) ::   wdramp, wdrampu, wdrampv !: for hpg limiting 
     42   REAL(dp), PUBLIC, ALLOCATABLE, DIMENSION(:,:) ::   wdramp, wdrampu, wdrampv !: for hpg limiting 
    4343 
    4444   LOGICAL,  PUBLIC  ::   ln_wd_il    !: Wetting/drying il activation switch (T:on,F:off) 
     
    4646   REAL(wp), PUBLIC  ::   rn_wdmin0   !: depth at which wetting/drying starts 
    4747   REAL(wp), PUBLIC  ::   rn_wdmin1   !: minimum water depth on dried cells 
    48    REAL(wp), PUBLIC  ::   r_rn_wdmin1 !: 1/minimum water depth on dried cells  
     48   REAL(dp), PUBLIC  ::   r_rn_wdmin1 !: 1/minimum water depth on dried cells  
    4949   REAL(wp), PUBLIC  ::   rn_wdmin2   !: tolerance of minimum water depth on dried cells 
    5050   REAL(wp), PUBLIC  ::   rn_wd_sbcdep   !: Depth at which to taper sbc fluxes 
     
    5555                                      !: where the flow is from wet points on less than half the barotropic sub-steps   
    5656   LOGICAL,  PUBLIC  ::  ln_wd_dl_rmp !: use a ramp for the dl flux limiter between 2 rn_wdmin1 and rn_wdmin1 (rather than a cut-off at rn_wdmin1)       
    57    REAL(wp), PUBLIC  ::   ssh_ref     !: height of z=0 with respect to the geoid;  
     57   REAL(dp), PUBLIC  ::   ssh_ref     !: height of z=0 with respect to the geoid;  
    5858 
    5959   LOGICAL,  PUBLIC  ::   ll_wd = .FALSE. !: Wetting/drying activation switch (ln_wd_il or ln_wd_dl) <- default def if wad_init not called 
     
    134134      !!---------------------------------------------------------------------- 
    135135      REAL(dp), DIMENSION(:,:)            , INTENT(inout) ::   psshb1 
    136       REAL(wp), DIMENSION(:,:)            , INTENT(in   ) ::   psshemp 
    137       REAL(wp)                            , INTENT(in   ) ::   z2dt 
     136      REAL(dp), DIMENSION(:,:)            , INTENT(in   ) ::   psshemp 
     137      REAL(dp)                            , INTENT(in   ) ::   z2dt 
    138138      INTEGER                             , INTENT(in   ) ::   Kmm       ! time level index 
    139139      REAL(dp), DIMENSION(jpi,jpj,jpk,jpt), INTENT(inout) ::   puu, pvv  ! velocity arrays 
     
    141141      INTEGER  ::   ji, jj, jk, jk1     ! dummy loop indices 
    142142      INTEGER  ::   jflag               ! local scalar 
    143       REAL(wp) ::   zcoef, zdep1, zdep2 ! local scalars 
    144       REAL(wp) ::   zzflxp, zzflxn      ! local scalars 
    145       REAL(wp) ::   zdepwd              ! local scalar, always wet cell depth 
    146       REAL(wp) ::   ztmp                ! local scalars 
    147       REAL(wp),  DIMENSION(jpi,jpj) ::   zwdlmtu, zwdlmtv   ! W/D flux limiters 
    148       REAL(wp),  DIMENSION(jpi,jpj) ::   zflxp  ,  zflxn    ! local 2D workspace 
    149       REAL(wp),  DIMENSION(jpi,jpj) ::   zflxu  ,  zflxv    ! local 2D workspace 
    150       REAL(wp),  DIMENSION(jpi,jpj) ::   zflxu1 , zflxv1    ! local 2D workspace 
     143      REAL(dp) ::   zcoef, zdep1, zdep2 ! local scalars 
     144      REAL(dp) ::   zzflxp, zzflxn      ! local scalars 
     145      REAL(dp) ::   zdepwd              ! local scalar, always wet cell depth 
     146      REAL(dp) ::   ztmp                ! local scalars 
     147      REAL(dp),  DIMENSION(jpi,jpj) ::   zwdlmtu, zwdlmtv   ! W/D flux limiters 
     148      REAL(dp),  DIMENSION(jpi,jpj) ::   zflxp  ,  zflxn    ! local 2D workspace 
     149      REAL(dp),  DIMENSION(jpi,jpj) ::   zflxu  ,  zflxv    ! local 2D workspace 
     150      REAL(dp),  DIMENSION(jpi,jpj) ::   zflxu1 , zflxv1    ! local 2D workspace 
    151151      !!---------------------------------------------------------------------- 
    152152      IF( ln_timing )   CALL timing_start('wad_lmt')      ! 
     
    282282      !! ** Action  : - calculate flux limiter and W/D flag 
    283283      !!---------------------------------------------------------------------- 
    284       REAL(wp)                , INTENT(in   ) ::   rDt_e    ! ocean time-step index 
     284      REAL(dp)                , INTENT(in   ) ::   rDt_e    ! ocean time-step index 
    285285      REAL(dp), DIMENSION(:,:), INTENT(inout) ::   sshn_e, zssh_frc 
    286       REAL(wp), DIMENSION(:,:), INTENT(inout) ::   zflxu,  zflxv   
     286      REAL(dp), DIMENSION(:,:), INTENT(inout) ::   zflxu,  zflxv   
    287287      ! 
    288288      INTEGER  ::   ji, jj, jk, jk1     ! dummy loop indices 
    289289      INTEGER  ::   jflag               ! local integer 
    290       REAL(wp) ::   z2dt 
    291       REAL(wp) ::   zcoef, zdep1, zdep2 ! local scalars 
    292       REAL(wp) ::   zzflxp, zzflxn      ! local scalars 
    293       REAL(wp) ::   zdepwd              ! local scalar, always wet cell depth 
    294       REAL(wp) ::   ztmp                ! local scalars 
    295       REAL(wp), DIMENSION(jpi,jpj) ::   zwdlmtu, zwdlmtv         !: W/D flux limiters 
    296       REAL(wp), DIMENSION(jpi,jpj) ::   zflxp,  zflxn            ! local 2D workspace 
    297       REAL(wp), DIMENSION(jpi,jpj) ::   zflxu1, zflxv1           ! local 2D workspace 
     290      REAL(dp) ::   z2dt 
     291      REAL(dp) ::   zcoef, zdep1, zdep2 ! local scalars 
     292      REAL(dp) ::   zzflxp, zzflxn      ! local scalars 
     293      REAL(dp) ::   zdepwd              ! local scalar, always wet cell depth 
     294      REAL(dp) ::   ztmp                ! local scalars 
     295      REAL(dp), DIMENSION(jpi,jpj) ::   zwdlmtu, zwdlmtv         !: W/D flux limiters 
     296      REAL(dp), DIMENSION(jpi,jpj) ::   zflxp,  zflxn            ! local 2D workspace 
     297      REAL(dp), DIMENSION(jpi,jpj) ::   zflxu1, zflxv1           ! local 2D workspace 
    298298      !!---------------------------------------------------------------------- 
    299299      IF( ln_timing )   CALL timing_start('wad_lmt_bt')      ! 
Note: See TracChangeset for help on using the changeset viewer.