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/ZDF/zdfmfc.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/ZDF/zdfmfc.F90

    r14072 r14219  
    5959#  include "do_loop_substitute.h90" 
    6060#  include "domzgr_substitute.h90" 
     61#  include "single_precision_substitute.h90" 
    6162   !!---------------------------------------------------------------------- 
    6263   !! NEMO/OCE 4.2 , NEMO Consortium (2018) 
     
    9596      !!---------------------------------------------------------------------- 
    9697      INTEGER                                  , INTENT(in)    :: Kmm, Krhs ! time level indices 
    97       REAL(wp), DIMENSION(jpi,jpj,jpk,jpts,jpt), INTENT(inout) :: pts       ! active tracers and RHS of tracer equation 
     98      REAL(dp), DIMENSION(jpi,jpj,jpk,jpts,jpt), INTENT(inout) :: pts       ! active tracers and RHS of tracer equation 
    9899      REAL(wp), DIMENSION(jpi,jpj,jpk,2) ::   ztsp         ! T/S of the plume 
    99100      REAL(wp), DIMENSION(jpi,jpj,jpk,2) ::   ztse         ! T/S at W point 
     
    106107      REAL(wp), DIMENSION(jpi,jpj) :: zustar, zustar2   ! 
    107108      REAL(wp), DIMENSION(jpi,jpj) :: zuws, zvws, zsws, zfnet          ! 
    108       REAL(wp), DIMENSION(jpi,jpj) :: zfbuo, zrautbm1, zrautb, zraupl 
     109      REAL(wp), DIMENSION(jpi,jpj) :: zfbuo, zrautbm1 
     110      REAL(dp), DIMENSION(jpi,jpj) :: zrautb, zraupl 
    109111      REAL(wp), DIMENSION(jpi,jpj) :: zwpsurf            ! 
    110112      REAL(wp), DIMENSION(jpi,jpj) :: zop0 , zsp0 ! 
     
    208210         ! Compute the buoyancy acceleration on T-points at jk-1 
    209211         zrautbm1(:,:) = zrautb(:,:) 
    210          CALL eos( pts (:,:,jk  ,:,Kmm) ,  zrautb(:,:)   ) 
    211          CALL eos( ztsp(:,:,jk-1,:    ) ,  zraupl(:,:)   ) 
     212         CALL eos( CASTWP(pts (:,:,jk  ,:,Kmm)) ,  zrautb(:,:)   ) 
     213         CALL eos( CASTWP(ztsp(:,:,jk-1,:    )) ,  zraupl(:,:)   ) 
    212214 
    213215         zphm1(:,:)  = zphm1(:,:)  + grav * zrautbm1(:,:) * e3t(:,:,jk-1, Kmm) 
     
    376378      ! 
    377379      ! 
    378       CALL lbc_lnk_multi( 'zdfmfc', edmfm,'T',1., edmfa,'T',1., edmfb,'T',1., edmfc,'T',1., edmftra(:,:,:,jp_tem),'T',1., edmftra(:,:,:,jp_sal),'T',1.) 
     380      CALL lbc_lnk_multi( 'zdfmfc', edmfm,'T',1._wp, edmfa,'T',1._wp, edmfb,'T',1._wp, edmfc,'T',1._wp, edmftra(:,:,:,jp_tem),'T',1._wp, edmftra(:,:,:,jp_sal),'T',1._wp) 
    379381      ! 
    380382   END SUBROUTINE tra_mfc 
     
    383385   SUBROUTINE diag_mfc( zdiagi, zdiagd, zdiags, p2dt, Kaa ) 
    384386 
    385       REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::  zdiagi, zdiagd, zdiags  ! inout: tridaig. terms  
     387      REAL(dp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::  zdiagi, zdiagd, zdiags  ! inout: tridaig. terms  
    386388      REAL(wp)                        , INTENT(in   ) ::   p2dt                   ! tracer time-step 
    387389      INTEGER                         , INTENT(in   ) ::   Kaa                    ! ocean time level indices 
     
    399401   SUBROUTINE rhs_mfc( zrhs, jjn ) 
    400402 
    401       REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   zrhs                   ! inout: rhs trend  
     403      REAL(dp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   zrhs                   ! inout: rhs trend  
    402404      INTEGER                         , INTENT(in   ) ::   jjn                    ! tracer indices 
    403405 
Note: See TracChangeset for help on using the changeset viewer.