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

    r13286 r14219  
    9292   !! * Substitutions 
    9393#  include "domzgr_substitute.h90" 
     94#  include "single_precision_substitute.h90" 
    9495   !!---------------------------------------------------------------------- 
    9596   !! NEMO/OCE 4.0 , NEMO Consortium (2018) 
     
    679680                  zsn   = interp(Kmm,k%I,k%J,jk,'V',ts(:,:,:,jp_sal,Kmm) )  
    680681                  zrhop = interp(Kmm,k%I,k%J,jk,'V',rhop)  
    681                   zrhoi = interp(Kmm,k%I,k%J,jk,'V',rhd*rho0+rho0)  
     682                  zrhoi = interp(Kmm,k%I,k%J,jk,'V',CASTDP(rhd*rho0+rho0))  
    682683                  zsshn =  0.5*( ssh(k%I,k%J,Kmm) + ssh(k%I,k%J+1,Kmm)    ) * vmask(k%I,k%J,1)  
    683684               CASE(2,3)  
     
    685686                  zsn   = interp(Kmm,k%I,k%J,jk,'U',ts(:,:,:,jp_sal,Kmm) )  
    686687                  zrhop = interp(Kmm,k%I,k%J,jk,'U',rhop)  
    687                   zrhoi = interp(Kmm,k%I,k%J,jk,'U',rhd*rho0+rho0)  
     688                  zrhoi = interp(Kmm,k%I,k%J,jk,'U',CASTDP(rhd*rho0+rho0))  
    688689                  zsshn =  0.5*( ssh(k%I,k%J,Kmm) + ssh(k%I+1,k%J,Kmm)    ) * umask(k%I,k%J,1)   
    689690               END SELECT  
     
    852853                 zsn   = interp(Kmm,k%I,k%J,jk,'V',ts(:,:,:,jp_sal,Kmm) )  
    853854                 zrhop = interp(Kmm,k%I,k%J,jk,'V',rhop)  
    854                  zrhoi = interp(Kmm,k%I,k%J,jk,'V',rhd*rho0+rho0)  
     855                 zrhoi = interp(Kmm,k%I,k%J,jk,'V',CASTDP(rhd*rho0+rho0)) 
    855856 
    856857              CASE(2,3)  
     
    858859                 zsn   = interp(Kmm,k%I,k%J,jk,'U',ts(:,:,:,jp_sal,Kmm) )  
    859860                 zrhop = interp(Kmm,k%I,k%J,jk,'U',rhop)  
    860                  zrhoi = interp(Kmm,k%I,k%J,jk,'U',rhd*rho0+rho0)  
     861                 zrhoi = interp(Kmm,k%I,k%J,jk,'U',CASTDP(rhd*rho0+rho0))  
    861862                 zsshn =  0.5*( ssh(k%I,k%J,Kmm)    + ssh(k%I+1,k%J,Kmm)    ) * umask(k%I,k%J,1)   
    862863              END SELECT  
     
    11691170  INTEGER, INTENT(IN)                          :: ki, kj, kk   ! coordinate of point 
    11701171  CHARACTER(len=1), INTENT(IN)                 :: cd_point     ! type of point (U, V) 
    1171   REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(IN) :: ptab         ! variable to compute at (ki, kj, kk ) 
     1172  REAL(dp), DIMENSION(jpi,jpj,jpk), INTENT(IN) :: ptab         ! variable to compute at (ki, kj, kk ) 
    11721173  REAL(wp)                                     :: interp       ! interpolated variable  
    11731174 
Note: See TracChangeset for help on using the changeset viewer.