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/ldftra.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/ldftra.F90

    r14986 r15540  
    8585   LOGICAL , PUBLIC ::   l_ldfeiv_time = .FALSE.   !: flag for time variation of the eiv coef. 
    8686 
    87    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   ahtu, ahtv   !: eddy diffusivity coef. at U- and V-points   [m2/s] 
    88    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   aeiu, aeiv   !: eddy induced velocity coeff.                [m2/s] 
    89  
    90    REAL(wp) ::   aht0, aei0               ! constant eddy coefficients (deduced from namelist values)                     [m2/s] 
    91    REAL(wp) ::   r1_2  = 0.5_wp           ! =1/2 
    92    REAL(wp) ::   r1_4  = 0.25_wp          ! =1/4 
    93    REAL(wp) ::   r1_12 = 1._wp / 12._wp   ! =1/12 
     87   REAL(dp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   ahtu, ahtv   !: eddy diffusivity coef. at U- and V-points   [m2/s] 
     88   REAL(dp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   aeiu, aeiv   !: eddy induced velocity coeff.                [m2/s] 
     89 
     90   REAL(dp) ::   aht0, aei0               ! constant eddy coefficients (deduced from namelist values)                     [m2/s] 
     91   REAL(dp) ::   r1_2  = 0.5_wp           ! =1/2 
     92   REAL(dp) ::   r1_4  = 0.25_wp          ! =1/4 
     93   REAL(dp) ::   r1_12 = 1._wp / 12._wp   ! =1/12 
    9494 
    9595   !! * Substitutions 
    9696#  include "do_loop_substitute.h90" 
     97#  include "single_precision_substitute.h90" 
    9798#  include "domzgr_substitute.h90" 
    9899   !!---------------------------------------------------------------------- 
     
    633634      INTEGER                         , INTENT(in   ) ::   kt             ! ocean time-step index 
    634635      INTEGER                         , INTENT(in   ) ::   Kmm            ! ocean time level indices 
    635       REAL(wp)                        , INTENT(in   ) ::   paei0          ! max value            [m2/s] 
    636       REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   paeiu, paeiv   ! eiv coefficient      [m2/s] 
     636      REAL(dp)                        , INTENT(in   ) ::   paei0          ! max value            [m2/s] 
     637      REAL(dp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   paeiu, paeiv   ! eiv coefficient      [m2/s] 
    637638      ! 
    638639      INTEGER  ::   ji, jj, jk    ! dummy loop indices 
    639640      REAL(wp) ::   zfw, ze3w, zn2, z1_f20, zzaei    ! local scalars 
    640       REAL(wp), DIMENSION(jpi,jpj) ::   zn, zah, zhw, zRo, zaeiw   ! 2D workspace 
     641      REAL(wp), DIMENSION(jpi,jpj)  :: zn, zah, zhw, zRo! 2D workspace 
     642      REAL(dp), DIMENSION(jpi,jpj)  :: zaeiw! 2D workspace 
    641643      !!---------------------------------------------------------------------- 
    642644      ! 
     
    735737      !! 
    736738      INTEGER  ::   ji, jj, jk                 ! dummy loop indices 
    737       REAL(wp) ::   zuwk, zuwk1, zuwi, zuwi1   ! local scalars 
    738       REAL(wp) ::   zvwk, zvwk1, zvwj, zvwj1   !   -      - 
     739      REAL(dp) ::   zuwk, zuwk1, zuwi, zuwi1   ! local scalars 
     740      REAL(dp) ::   zvwk, zvwk1, zvwj, zvwj1   !   -      - 
    739741      REAL(wp), DIMENSION(A2D(nn_hls),jpk) ::   zpsi_uw, zpsi_vw 
    740742      !!---------------------------------------------------------------------- 
     
    868870      CALL iom_put( "veiv_heattr3d", zztmp * zw3d )                  !  heat transport in j-direction 
    869871      ! 
    870       IF( iom_use( 'sophteiv' ) )   CALL dia_ptr_hst( jp_tem, 'eiv', 0.5_wp * zw3d ) 
     872      IF( iom_use( 'sophteiv' ) )   CALL dia_ptr_hst( jp_tem, 'eiv', CASTDP(0.5_wp * zw3d) ) 
    871873      ! 
    872874      zztmp = 0.5_wp * 0.5 
     
    892894      CALL iom_put( "veiv_salttr3d", zztmp * zw3d )                  !  salt transport in j-direction 
    893895      ! 
    894       IF( iom_use( 'sopsteiv' ) ) CALL dia_ptr_hst( jp_sal, 'eiv', 0.5_wp * zw3d ) 
     896      IF( iom_use( 'sopsteiv' ) ) CALL dia_ptr_hst( jp_sal, 'eiv', CASTDP(0.5_wp * zw3d) ) 
    895897      ! 
    896898      ! 
Note: See TracChangeset for help on using the changeset viewer.