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 14495 – NEMO

Changeset 14495


Ignore:
Timestamp:
2021-02-18T18:06:18+01:00 (3 years ago)
Author:
mcastril
Message:

Further changes to make the mixed precision branch compliant with cpp -traditional and GNU compiler

Location:
NEMO/branches/2020/dev_r14116_HPC-04_mcastril_Mixed_Precision_implementation_final/src
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r14116_HPC-04_mcastril_Mixed_Precision_implementation_final/src/ICE/icethd_dh.F90

    r14072 r14495  
    369369               !--- zswi2  if dh/dt > 3.6e-7 
    370370               zgrr     = MIN( 1.0e-3, MAX ( dh_i_bog(ji) * r1_Dt_ice , epsi10 ) ) 
    371                zswi2    = MAX( 0._wp , SIGN( 1._wp , zgrr - 3.6e-7 ) ) 
    372                zswi12   = MAX( 0._wp , SIGN( 1._wp , zgrr - 2.0e-8 ) ) * ( 1.0 - zswi2 ) 
     371               zswi2    = MAX( 0._wp , SIGN( 1._wp , zgrr - 3.6e-7_wp ) ) 
     372               zswi12   = MAX( 0._wp , SIGN( 1._wp , zgrr - 2.0e-8_wp ) ) * ( 1.0 - zswi2 ) 
    373373               zswi1    = 1. - zswi2 * zswi12 
    374374               zfracs   = MIN( zswi1  * 0.12 + zswi12 * ( 0.8925 + 0.0568 * LOG( 100.0 * zgrr ) )   & 
  • NEMO/branches/2020/dev_r14116_HPC-04_mcastril_Mixed_Precision_implementation_final/src/OCE/FLO/flodom.F90

    r14219 r14495  
    372372      LOGICAL , INTENT(out) ::  ldinmesh            ! ??? 
    373373      !! 
    374       REAL(wp) ::   zabt, zbct, zcdt, zdat, zabpt, zbcpt, zcdpt, zdapt 
     374      REAL(dp) ::   zabt, zbct, zcdt, zdat, zabpt, zbcpt, zcdpt, zdapt 
    375375      !!--------------------------------------------------------------------- 
    376376      !! Statement function 
    377       REAL(wp) ::   fsline 
    378       REAL(wp) ::   psax, psay, psbx, psby, psx, psy 
     377      REAL(dp) ::   fsline 
     378      REAL(dp) ::   psax, psay, psbx, psby, psx, psy 
    379379      fsline( psax, psay, psbx, psby, psx, psy ) = psy  * ( psbx - psax )   & 
    380380         &                                       - psx  * ( psby - psay )   & 
     
    389389       
    390390      ! 4 semi plane defined by the 4 points and including the extrememity 
    391       zabpt = fsline(pax,pay,pbx,pby,px,py) 
    392       zbcpt = fsline(pbx,pby,pcx,pcy,px,py) 
    393       zcdpt = fsline(pcx,pcy,pdx,pdy,px,py) 
    394       zdapt = fsline(pdx,pdy,pax,pay,px,py) 
     391      zabpt = fsline(pax,pay,pbx,pby,CASTDP(px),CASTDP(py)) 
     392      zbcpt = fsline(pbx,pby,pcx,pcy,CASTDP(px),CASTDP(py)) 
     393      zcdpt = fsline(pcx,pcy,pdx,pdy,CASTDP(px),CASTDP(py)) 
     394      zdapt = fsline(pdx,pdy,pax,pay,CASTDP(px),CASTDP(py)) 
    395395        
    396396      ! We compare the semi plane T with the semi plane including the point 
  • NEMO/branches/2020/dev_r14116_HPC-04_mcastril_Mixed_Precision_implementation_final/src/OCE/LBC/mpp_nfd_generic.h90

    r14219 r14495  
     1#  define PASTE(a) a 
     2#  define ADD_TRAIL_USCORE(a) PASTE(a)_ 
     3#  define CONCATENATE(a,b) ADD_TRAIL_USCORE(a)b 
     4 
    15#if defined MULTI 
    26#   define NAT_IN(k)                cd_nat(k)    
     
    6771#    define RECVROUTINE mpprecv_sp 
    6872#    define MPI_TYPE MPI_REAL 
    69 #    define HUGEVAL(x)   HUGE(x##_sp) 
     73#    define HUGEVAL(x)   HUGE(CONCATENATE(x,sp)) 
    7074# else 
    7175#    define PRECISION dp 
     
    7377#    define RECVROUTINE mpprecv_dp 
    7478#    define MPI_TYPE MPI_DOUBLE_PRECISION 
    75 #    define HUGEVAL(x)   HUGE(x##_dp) 
     79#    define HUGEVAL(x)   HUGE(CONCATENATE(x,dp)) 
    7680# endif 
    7781 
  • NEMO/branches/2020/dev_r14116_HPC-04_mcastril_Mixed_Precision_implementation_final/src/OCE/SBC/sbcblk_algo_coare3p0.F90

    r14072 r14495  
    399399            ! Charnock's constant, increases with the wind : 
    400400            zgt10 = 0.5 + SIGN(0.5_wp,(zw - 10))  ! If zw<10. --> 0, else --> 1 
    401             zgt18 = 0.5 + SIGN(0.5_wp,(zw - 18.)) ! If zw<18. --> 0, else --> 1 
     401            zgt18 = 0.5 + SIGN(0.5_wp,(zw - 18._wp)) ! If zw<18. --> 0, else --> 1 
    402402            ! 
    403403            charn_coare3p0(ji,jj) =  (1. - zgt10)*0.011    &    ! wind is lower than 10 m/s 
  • NEMO/branches/2020/dev_r14116_HPC-04_mcastril_Mixed_Precision_implementation_final/src/OCE/TRA/traadv_fct.F90

    r14219 r14495  
    474474         zau = MIN( 1._wp, zbetdo(ji,jj,jk), zbetup(ji+1,jj,jk) ) 
    475475         zbu = MIN( 1._wp, zbetup(ji,jj,jk), zbetdo(ji+1,jj,jk) ) 
    476          zcu =       ( 0.5  + SIGN( 0.5_wp , paa(ji,jj,jk) ) ) 
     476         zcu =       ( 0.5  + SIGN( 0.5_wp , CASTWP(paa(ji,jj,jk)) ) ) 
    477477         paa(ji,jj,jk) = paa(ji,jj,jk) * ( zcu * zau + ( 1._wp - zcu) * zbu ) 
    478478 
    479479         zav = MIN( 1._wp, zbetdo(ji,jj,jk), zbetup(ji,jj+1,jk) ) 
    480480         zbv = MIN( 1._wp, zbetup(ji,jj,jk), zbetdo(ji,jj+1,jk) ) 
    481          zcv =       ( 0.5  + SIGN( 0.5_wp , pbb(ji,jj,jk) ) ) 
     481         zcv =       ( 0.5  + SIGN( 0.5_wp , CASTWP(pbb(ji,jj,jk)) ) ) 
    482482         pbb(ji,jj,jk) = pbb(ji,jj,jk) * ( zcv * zav + ( 1._wp - zcv) * zbv ) 
    483483 
     
    486486         za = MIN( 1., zbetdo(ji,jj,jk+1), zbetup(ji,jj,jk) ) 
    487487         zb = MIN( 1., zbetup(ji,jj,jk+1), zbetdo(ji,jj,jk) ) 
    488          zc =       ( 0.5  + SIGN( 0.5_wp , pcc(ji,jj,jk+1) ) ) 
     488         zc =       ( 0.5  + SIGN( 0.5_wp , CASTWP(pcc(ji,jj,jk+1)) ) ) 
    489489         pcc(ji,jj,jk+1) = pcc(ji,jj,jk+1) * ( zc * za + ( 1._wp - zc) * zb ) 
    490490      END_3D 
  • NEMO/branches/2020/dev_r14116_HPC-04_mcastril_Mixed_Precision_implementation_final/src/OCE/TRA/trabbl.F90

    r14219 r14495  
    372372               &      - zb * ( zts(ji+1,jj,jp_sal) - zts(ji,jj,jp_sal) )  ) * umask(ji,jj,1) 
    373373            ! 
    374             zsign  = SIGN(  0.5_wp, -zgdrho * REAL( mgrhu(ji,jj) )  )    ! sign of ( i-gradient * i-slope ) 
     374            zsign  = SIGN(  0.5_wp, CASTWP(-zgdrho * REAL( mgrhu(ji,jj)) )  )    ! sign of ( i-gradient * i-slope ) 
    375375            ahu_bbl(ji,jj) = ( 0.5 - zsign ) * ahu_bbl_0(ji,jj)       ! masked diffusive flux coeff. 
    376376            ! 
     
    382382               &      - zb * ( zts(ji,jj+1,jp_sal) - zts(ji,jj,jp_sal) )  ) * vmask(ji,jj,1) 
    383383            ! 
    384             zsign = SIGN(  0.5_wp, -zgdrho * REAL( mgrhv(ji,jj) )  )     ! sign of ( j-gradient * j-slope ) 
     384            zsign = SIGN(  0.5_wp, CASTWP(-zgdrho * REAL( mgrhv(ji,jj)) )  )     ! sign of ( j-gradient * j-slope ) 
    385385            ahv_bbl(ji,jj) = ( 0.5 - zsign ) * ahv_bbl_0(ji,jj) 
    386386         END_2D 
     
    402402                         - zb * ( zts(ji+1,jj,jp_sal) - zts(ji,jj,jp_sal) )  ) * umask(ji,jj,1) 
    403403               ! 
    404                zsign = SIGN(  0.5_wp, - zgdrho   * REAL( mgrhu(ji,jj) )  )   ! sign of i-gradient * i-slope 
    405                zsigna= SIGN(  0.5_wp, zub(ji,jj) * REAL( mgrhu(ji,jj) )  )   ! sign of u * i-slope 
     404               zsign = SIGN(  0.5_wp, CASTWP(- zgdrho   * REAL( mgrhu(ji,jj)) )  )   ! sign of i-gradient * i-slope 
     405               zsigna= SIGN(  0.5_wp, CASTWP(zub(ji,jj) * REAL( mgrhu(ji,jj)) )  )   ! sign of u * i-slope 
    406406               ! 
    407407               !                                                          ! bbl velocity 
     
    414414               zgdrho = (  za * ( zts(ji,jj+1,jp_tem) - zts(ji,jj,jp_tem) )    & 
    415415                  &      - zb * ( zts(ji,jj+1,jp_sal) - zts(ji,jj,jp_sal) )  ) * vmask(ji,jj,1) 
    416                zsign = SIGN(  0.5_wp, - zgdrho   * REAL( mgrhv(ji,jj) )  )   ! sign of j-gradient * j-slope 
    417                zsigna= SIGN(  0.5_wp, zvb(ji,jj) * REAL( mgrhv(ji,jj) )  )   ! sign of u * i-slope 
     416               zsign = SIGN(  0.5_wp, CASTWP(- zgdrho   * REAL( mgrhv(ji,jj)) )  )   ! sign of j-gradient * j-slope 
     417               zsigna= SIGN(  0.5_wp, CASTWP(zvb(ji,jj) * REAL( mgrhv(ji,jj)) )  )   ! sign of u * i-slope 
    418418               ! 
    419419               !                                                          ! bbl transport 
  • NEMO/branches/2020/dev_r14116_HPC-04_mcastril_Mixed_Precision_implementation_final/src/OCE/ZDF/zdfmfc.F90

    r14219 r14495  
    181181         &      grav * ( 2.e-4_wp *zfnet(:,:) - 7.6E-4_wp*pts(:,:,1,jp_sal,Kmm)*zsws(:,:)/zrautb(:,:)) * zhcmo(:,:) 
    182182 
    183       zedmf(:,:,1) = -0.065_wp*(ABS(zfbuo(:,:)))**(1._wp/3._wp)*SIGN(1.,zfbuo(:,:)) 
     183      zedmf(:,:,1) = -0.065_wp*(ABS(zfbuo(:,:)))**(1._wp/3._wp)*SIGN(1._wp,zfbuo(:,:)) 
    184184      zedmf(:,:,1) = MAX(0., zedmf(:,:,1)) 
    185185 
Note: See TracChangeset for help on using the changeset viewer.