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/CRS/crsfld.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/CRS/crsfld.F90

    r13472 r14219  
    3434#  include "do_loop_substitute.h90" 
    3535#  include "domzgr_substitute.h90" 
     36#  include "single_precision_substitute.h90" 
    3637   !!---------------------------------------------------------------------- 
    3738   !! NEMO/OCE 4.0 , NEMO Consortium (2018) 
     
    101102      !  Temperature 
    102103      zt(:,:,:) = ts(:,:,:,jp_tem,Kmm)  ;      zt_crs(:,:,:) = 0._wp 
    103       CALL crs_dom_ope( zt, 'VOL', 'T', tmask, zt_crs, p_e12=e1e2t, p_e3=ze3t, psgn=1.0_wp ) 
     104      CALL crs_dom_ope( zt, 'VOL', 'T', tmask, zt_crs, p_e12=CASTWP(e1e2t), p_e3=ze3t, psgn=1.0_wp ) 
    104105      tsn_crs(:,:,:,jp_tem) = zt_crs(:,:,:) 
    105106 
     
    110111      !  Salinity 
    111112      zs(:,:,:) = ts(:,:,:,jp_sal,Kmm)  ;      zs_crs(:,:,:) = 0._wp 
    112       CALL crs_dom_ope( zs, 'VOL', 'T', tmask, zs_crs, p_e12=e1e2t, p_e3=ze3t, psgn=1.0_wp ) 
     113      CALL crs_dom_ope( zs, 'VOL', 'T', tmask, zs_crs, p_e12=CASTWP(e1e2t), p_e3=ze3t, psgn=1.0_wp ) 
    113114      tsn_crs(:,:,:,jp_sal) = zt_crs(:,:,:) 
    114115 
     
    117118 
    118119      !  U-velocity 
    119       CALL crs_dom_ope( uu(:,:,:,Kmm), 'SUM', 'U', umask, un_crs, p_e12=e2u, p_e3=ze3u, p_surf_crs=e2e3u_msk, psgn=-1.0_wp ) 
     120      CALL crs_dom_ope( CASTWP(uu(:,:,:,Kmm)), 'SUM', 'U', umask, un_crs, p_e12=CASTWP(e2u), p_e3=ze3u, p_surf_crs=e2e3u_msk, psgn=-1.0_wp ) 
    120121      ! 
    121122      zt(:,:,:) = 0._wp     ;    zs(:,:,:) = 0._wp  ;   zt_crs(:,:,:) = 0._wp   ;    zs_crs(:,:,:) = 0._wp 
     
    132133 
    133134      !  V-velocity 
    134       CALL crs_dom_ope( vv(:,:,:,Kmm), 'SUM', 'V', vmask, vn_crs, p_e12=e1v, p_e3=ze3v, p_surf_crs=e1e3v_msk, psgn=-1.0_wp ) 
     135      CALL crs_dom_ope( CASTWP(vv(:,:,:,Kmm)), 'SUM', 'V', vmask, vn_crs, p_e12=CASTWP(e1v), p_e3=ze3v, p_surf_crs=e1e3v_msk, psgn=-1.0_wp ) 
    135136      !                                                                                  
    136137      zt(:,:,:) = 0._wp     ;    zs(:,:,:) = 0._wp  ;   zt_crs(:,:,:) = 0._wp   ;    zs_crs(:,:,:) = 0._wp 
     
    158159         CALL lbc_lnk( 'crsfld', z3d, 'T', 1.0_wp ) 
    159160         ! 
    160          CALL crs_dom_ope( z3d, 'VOL', 'T', tmask, zt_crs, p_e12=e1e2t, p_e3=ze3t, psgn=1.0_wp ) 
     161         CALL crs_dom_ope( z3d, 'VOL', 'T', tmask, zt_crs, p_e12=CASTWP(e1e2t), p_e3=ze3t, psgn=1.0_wp ) 
    161162         CALL iom_put( "ke", zt_crs ) 
    162163      ENDIF 
     
    183184      !  W-velocity 
    184185      IF( ln_crs_wn ) THEN 
    185          CALL crs_dom_ope( ww, 'SUM', 'W', tmask, wn_crs, p_e12=e1e2t, p_surf_crs=e1e2w_msk, psgn=1.0_wp ) 
     186         CALL crs_dom_ope( ww, 'SUM', 'W', tmask, wn_crs, p_e12=CASTWP(e1e2t), p_surf_crs=e1e2w_msk, psgn=1.0_wp ) 
    186187       !  CALL crs_dom_ope( ww, 'VOL', 'W', tmask, wn_crs, p_e12=e1e2t, p_e3=ze3w ) 
    187188      ELSE 
     
    197198      SELECT CASE ( nn_crs_kz ) 
    198199         CASE ( 0 ) 
    199             CALL crs_dom_ope( avt, 'VOL', 'W', tmask, avt_crs, p_e12=e1e2t, p_e3=ze3w, psgn=1.0_wp ) 
    200             CALL crs_dom_ope( avs, 'VOL', 'W', tmask, avs_crs, p_e12=e1e2t, p_e3=ze3w, psgn=1.0_wp ) 
     200            CALL crs_dom_ope( avt, 'VOL', 'W', tmask, avt_crs, p_e12=CASTWP(e1e2t), p_e3=ze3w, psgn=1.0_wp ) 
     201            CALL crs_dom_ope( avs, 'VOL', 'W', tmask, avs_crs, p_e12=CASTWP(e1e2t), p_e3=ze3w, psgn=1.0_wp ) 
    201202         CASE ( 1 ) 
    202             CALL crs_dom_ope( avt, 'MAX', 'W', tmask, avt_crs, p_e12=e1e2t, p_e3=ze3w, psgn=1.0_wp ) 
    203             CALL crs_dom_ope( avs, 'MAX', 'W', tmask, avs_crs, p_e12=e1e2t, p_e3=ze3w, psgn=1.0_wp ) 
     203            CALL crs_dom_ope( avt, 'MAX', 'W', tmask, avt_crs, p_e12=CASTWP(e1e2t), p_e3=ze3w, psgn=1.0_wp ) 
     204            CALL crs_dom_ope( avs, 'MAX', 'W', tmask, avs_crs, p_e12=CASTWP(e1e2t), p_e3=ze3w, psgn=1.0_wp ) 
    204205         CASE ( 2 ) 
    205             CALL crs_dom_ope( avt, 'MIN', 'W', tmask, avt_crs, p_e12=e1e2t, p_e3=ze3w, psgn=1.0_wp ) 
    206             CALL crs_dom_ope( avs, 'MIN', 'W', tmask, avs_crs, p_e12=e1e2t, p_e3=ze3w, psgn=1.0_wp ) 
     206            CALL crs_dom_ope( avt, 'MIN', 'W', tmask, avt_crs, p_e12=CASTWP(e1e2t), p_e3=ze3w, psgn=1.0_wp ) 
     207            CALL crs_dom_ope( avs, 'MIN', 'W', tmask, avs_crs, p_e12=CASTWP(e1e2t), p_e3=ze3w, psgn=1.0_wp ) 
    207208      END SELECT 
    208209      ! 
     
    211212       
    212213      !  sbc fields   
    213       CALL crs_dom_ope( ssh(:,:,Kmm) , 'VOL', 'T', tmask, sshn_crs , p_e12=e1e2t, p_e3=ze3t           , psgn=1.0_wp )   
     214      CALL crs_dom_ope( CASTWP(ssh(:,:,Kmm)) , 'VOL', 'T', tmask, sshn_crs , p_e12=CASTWP(e1e2t), p_e3=ze3t           , psgn=1.0_wp )   
    214215      CALL crs_dom_ope( utau , 'SUM', 'U', umask, utau_crs , p_e12=e2u  , p_surf_crs=e2u_crs  , psgn=1.0_wp ) 
    215216      CALL crs_dom_ope( vtau , 'SUM', 'V', vmask, vtau_crs , p_e12=e1v  , p_surf_crs=e1v_crs  , psgn=1.0_wp ) 
    216       CALL crs_dom_ope( wndm , 'SUM', 'T', tmask, wndm_crs , p_e12=e1e2t, p_surf_crs=e1e2t_crs, psgn=1.0_wp ) 
     217      CALL crs_dom_ope( wndm , 'SUM', 'T', tmask, wndm_crs , p_e12=CASTWP(e1e2t), p_surf_crs=e1e2t_crs, psgn=1.0_wp ) 
    217218      CALL crs_dom_ope( rnf  , 'MAX', 'T', tmask, rnf_crs                                     , psgn=1.0_wp ) 
    218       CALL crs_dom_ope( qsr  , 'SUM', 'T', tmask, qsr_crs  , p_e12=e1e2t, p_surf_crs=e1e2t_crs, psgn=1.0_wp ) 
    219       CALL crs_dom_ope( emp_b, 'SUM', 'T', tmask, emp_b_crs, p_e12=e1e2t, p_surf_crs=e1e2t_crs, psgn=1.0_wp ) 
    220       CALL crs_dom_ope( emp  , 'SUM', 'T', tmask, emp_crs  , p_e12=e1e2t, p_surf_crs=e1e2t_crs, psgn=1.0_wp ) 
    221       CALL crs_dom_ope( sfx  , 'SUM', 'T', tmask, sfx_crs  , p_e12=e1e2t, p_surf_crs=e1e2t_crs, psgn=1.0_wp ) 
    222       CALL crs_dom_ope( fr_i , 'SUM', 'T', tmask, fr_i_crs , p_e12=e1e2t, p_surf_crs=e1e2t_crs, psgn=1.0_wp ) 
     219      CALL crs_dom_ope( qsr  , 'SUM', 'T', tmask, qsr_crs  , p_e12=CASTWP(e1e2t), p_surf_crs=e1e2t_crs, psgn=1.0_wp ) 
     220      CALL crs_dom_ope( emp_b, 'SUM', 'T', tmask, emp_b_crs, p_e12=CASTWP(e1e2t), p_surf_crs=e1e2t_crs, psgn=1.0_wp ) 
     221      CALL crs_dom_ope( emp  , 'SUM', 'T', tmask, emp_crs  , p_e12=CASTWP(e1e2t), p_surf_crs=e1e2t_crs, psgn=1.0_wp ) 
     222      CALL crs_dom_ope( sfx  , 'SUM', 'T', tmask, sfx_crs  , p_e12=CASTWP(e1e2t), p_surf_crs=e1e2t_crs, psgn=1.0_wp ) 
     223      CALL crs_dom_ope( fr_i , 'SUM', 'T', tmask, fr_i_crs , p_e12=CASTWP(e1e2t), p_surf_crs=e1e2t_crs, psgn=1.0_wp ) 
    223224 
    224225      CALL iom_put( "ssh"      , sshn_crs )   ! ssh output  
Note: See TracChangeset for help on using the changeset viewer.