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 14219 for NEMO/branches/2020/dev_r14116_HPC-04_mcastril_Mixed_Precision_implementation_final/src/OCE/DOM/domvvl.F90 – NEMO

Ignore:
Timestamp:
2020-12-18T18:52:57+01:00 (4 years ago)
Author:
mcastril
Message:

Add Mixed Precision support by Oriol Tintó

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r14116_HPC-04_mcastril_Mixed_Precision_implementation_final/src/OCE/DOM/domvvl.F90

    r14200 r14219  
    7878   !! * Substitutions 
    7979#  include "do_loop_substitute.h90" 
     80#  include "single_precision_substitute.h90" 
    8081   !!---------------------------------------------------------------------- 
    8182   !! NEMO/OCE 4.0 , NEMO Consortium (2018) 
     
    180181      !                    !== Set of all other vertical scale factors  ==!  (now and before) 
    181182      !                                ! Horizontal interpolation of e3t 
    182       CALL dom_vvl_interpol( e3t(:,:,:,Kbb), e3u(:,:,:,Kbb), 'U' )    ! from T to U 
    183       CALL dom_vvl_interpol( e3t(:,:,:,Kmm), e3u(:,:,:,Kmm), 'U' ) 
    184       CALL dom_vvl_interpol( e3t(:,:,:,Kbb), e3v(:,:,:,Kbb), 'V' )    ! from T to V 
    185       CALL dom_vvl_interpol( e3t(:,:,:,Kmm), e3v(:,:,:,Kmm), 'V' ) 
     183      CALL dom_vvl_interpol( CASTWP(e3t(:,:,:,Kbb)), e3u(:,:,:,Kbb), 'U' )    ! from T to U 
     184      CALL dom_vvl_interpol( CASTWP(e3t(:,:,:,Kmm)), e3u(:,:,:,Kmm), 'U' ) 
     185      CALL dom_vvl_interpol( CASTWP(e3t(:,:,:,Kbb)), e3v(:,:,:,Kbb), 'V' )    ! from T to V 
     186      CALL dom_vvl_interpol( CASTWP(e3t(:,:,:,Kmm)), e3v(:,:,:,Kmm), 'V' ) 
    186187      CALL dom_vvl_interpol( e3u(:,:,:,Kmm), e3f(:,:,:), 'F' )    ! from U to F 
    187188      !                                ! Vertical interpolation of e3t,u,v 
    188       CALL dom_vvl_interpol( e3t(:,:,:,Kmm), e3w (:,:,:,Kmm), 'W'  )  ! from T to W 
    189       CALL dom_vvl_interpol( e3t(:,:,:,Kbb), e3w (:,:,:,Kbb), 'W'  ) 
     189      CALL dom_vvl_interpol( CASTWP(e3t(:,:,:,Kmm)), e3w (:,:,:,Kmm), 'W'  )  ! from T to W 
     190      CALL dom_vvl_interpol( CASTWP(e3t(:,:,:,Kbb)), e3w (:,:,:,Kbb), 'W'  ) 
    190191      CALL dom_vvl_interpol( e3u(:,:,:,Kmm), e3uw(:,:,:,Kmm), 'UW' )  ! from U to UW 
    191192      CALL dom_vvl_interpol( e3u(:,:,:,Kbb), e3uw(:,:,:,Kbb), 'UW' ) 
     
    317318      REAL(wp)               ::   z_tmin, z_tmax        ! local scalars 
    318319      LOGICAL                ::   ll_do_bclinic         ! local logical 
    319       REAL(wp), DIMENSION(jpi,jpj)     ::   zht, z_scale, zwu, zwv, zhdiv 
     320      REAL(dp), DIMENSION(jpi,jpj)     :: z_scale 
     321      REAL(wp), DIMENSION(jpi,jpj)     ::   zht, zwu, zwv, zhdiv 
    320322      REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::   ze3t 
    321323      LOGICAL , DIMENSION(:,:,:), ALLOCATABLE ::   llmsk 
     
    542544      ! *********************************** ! 
    543545 
    544       CALL dom_vvl_interpol( e3t(:,:,:,Kaa), e3u(:,:,:,Kaa), 'U' ) 
    545       CALL dom_vvl_interpol( e3t(:,:,:,Kaa), e3v(:,:,:,Kaa), 'V' ) 
     546      CALL dom_vvl_interpol( CASTWP(e3t(:,:,:,Kaa)), e3u(:,:,:,Kaa), 'U' ) 
     547      CALL dom_vvl_interpol( CASTWP(e3t(:,:,:,Kaa)), e3v(:,:,:,Kaa), 'V' ) 
    546548 
    547549      ! *********************************** ! 
     
    629631 
    630632      ! Vertical scale factor interpolations 
    631       CALL dom_vvl_interpol( e3t(:,:,:,Kmm),  e3w(:,:,:,Kmm), 'W'  ) 
     633      CALL dom_vvl_interpol( CASTWP(e3t(:,:,:,Kmm)),  e3w(:,:,:,Kmm), 'W'  ) 
    632634      CALL dom_vvl_interpol( e3u(:,:,:,Kmm), e3uw(:,:,:,Kmm), 'UW' ) 
    633635      CALL dom_vvl_interpol( e3v(:,:,:,Kmm), e3vw(:,:,:,Kmm), 'VW' ) 
    634       CALL dom_vvl_interpol( e3t(:,:,:,Kbb),  e3w(:,:,:,Kbb), 'W'  ) 
     636      CALL dom_vvl_interpol( CASTWP(e3t(:,:,:,Kbb)),  e3w(:,:,:,Kbb), 'W'  ) 
    635637      CALL dom_vvl_interpol( e3u(:,:,:,Kbb), e3uw(:,:,:,Kbb), 'UW' ) 
    636638      CALL dom_vvl_interpol( e3v(:,:,:,Kbb), e3vw(:,:,:,Kbb), 'VW' ) 
Note: See TracChangeset for help on using the changeset viewer.