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 10288 for NEMO/branches/2018/dev_r9866_HPC_03_globcom/src/ICE/icectl.F90 – NEMO

Ignore:
Timestamp:
2018-11-07T18:25:49+01:00 (5 years ago)
Author:
francesca
Message:

reduce global communications, see #2010

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2018/dev_r9866_HPC_03_globcom/src/ICE/icectl.F90

    • Property svn:keywords set to Id
    r9604 r10288  
    4545   !!---------------------------------------------------------------------- 
    4646   !! NEMO/ICE 4.0 , NEMO Consortium (2018) 
    47    !! $Id: icectl.F90 5043 2015-01-28 16:44:18Z clem $ 
    48    !! Software governed by the CeCILL licence     (./LICENSE) 
     47   !! $Id$ 
     48   !! Software governed by the CeCILL license (see ./LICENSE) 
    4949   !!---------------------------------------------------------------------- 
    5050CONTAINS 
     
    9393            &                  ) *  e1e2t(:,:) ) * zconv 
    9494 
    95          pdiag_v = glob_sum( SUM( v_i * rhoic + v_s * rhosn, dim=3 ) * e1e2t * zconv ) 
    96  
    97          pdiag_s = glob_sum( SUM( sv_i * rhoic             , dim=3 ) * e1e2t * zconv ) 
     95         pdiag_v = glob_sum( SUM( v_i * rhoi + v_s * rhos, dim=3 ) * e1e2t * zconv ) 
     96 
     97         pdiag_s = glob_sum( SUM( sv_i * rhoi            , dim=3 ) * e1e2t * zconv ) 
    9898 
    9999         pdiag_t = glob_sum( (  SUM( SUM( e_i(:,:,1:nlay_i,:), dim=4 ), dim=3 )     & 
     
    120120  
    121121         ! outputs 
    122          zv = ( ( glob_sum( SUM( v_i * rhoic + v_s * rhosn, dim=3 ) * e1e2t ) * zconv  & 
     122         zv = ( ( glob_sum( SUM( v_i * rhoi + v_s * rhos, dim=3 ) * e1e2t ) * zconv  & 
    123123            &     - pdiag_v ) * r1_rdtice - zfv ) * rday 
    124124 
    125          zs = ( ( glob_sum( SUM( sv_i * rhoic             , dim=3 ) * e1e2t ) * zconv  & 
     125         zs = ( ( glob_sum( SUM( sv_i * rhoi            , dim=3 ) * e1e2t ) * zconv  & 
    126126            &     - pdiag_s ) * r1_rdtice + zfs ) * rday 
    127127 
     
    131131 
    132132         ! zvtrp and zetrp must be close to 0 if the advection scheme is conservative 
    133          zvtrp = glob_sum( ( diag_trp_vi * rhoic + diag_trp_vs * rhosn ) * e1e2t  ) * zconv * rday  
    134          zetrp = glob_sum( ( diag_trp_ei         + diag_trp_es         ) * e1e2t  ) * zconv 
     133         zvtrp = glob_sum( ( diag_trp_vi * rhoi + diag_trp_vs * rhos ) * e1e2t  ) * zconv * rday  
     134         zetrp = glob_sum( ( diag_trp_ei        + diag_trp_es        ) * e1e2t  ) * zconv 
    135135 
    136136         zvmin = glob_min( v_i ) 
     
    148148            IF ( ABS( zs   ) > zs_sill )   WRITE(numout,*) 'violation saline [psu*Mt/day] (',cd_routine,') = ',zs 
    149149            IF ( ABS( zt   ) > zt_sill )   WRITE(numout,*) 'violation enthalpy [GW]       (',cd_routine,') = ',zt 
    150             IF ( ABS(zvtrp ) > zv_sill .AND. cd_routine == 'icedyn_adv' ) THEN 
    151                                            WRITE(numout,*) 'violation vtrp [Mt/day]       (',cd_routine,') = ',zvtrp 
    152                                            WRITE(numout,*) 'violation etrp [GW]           (',cd_routine,') = ',zetrp 
    153             ENDIF 
    154150            IF ( zvmin < -epsi10 )         WRITE(numout,*) 'violation v_i<0  [m]          (',cd_routine,') = ',zvmin 
    155151            IF ( zamax > MAX(rn_amax_n,rn_amax_s)+epsi10 .AND. cd_routine /= 'icedyn_adv' .AND. cd_routine /= 'icedyn_rdgrft' )  & 
    156152               &                           WRITE(numout,*) 'violation a_i>amax            (',cd_routine,') = ',zamax 
    157153            IF ( zamin < -epsi10 )         WRITE(numout,*) 'violation a_i<0               (',cd_routine,') = ',zamin 
     154!clem: the following check fails when using UM3-5 advection scheme (see comments in icedyn_adv.F90) 
     155!            IF ( ABS(zvtrp ) > zv_sill .AND. cd_routine == 'icedyn_adv' ) THEN 
     156!                                           WRITE(numout,*) 'violation vtrp [Mt/day]       (',cd_routine,') = ',zvtrp 
     157!                                           WRITE(numout,*) 'violation etrp [GW]           (',cd_routine,') = ',zetrp 
     158!            ENDIF 
    158159         ENDIF 
    159160         ! 
     
    189190 
    190191      ! heat flux 
    191       zhfx  = glob_sum( ( hfx_in - hfx_out - diag_heat - diag_trp_ei - diag_trp_es   & 
     192      zhfx  = glob_sum( ( qt_atm_oi - qt_oce_ai - diag_heat - diag_trp_ei - diag_trp_es   & 
    192193      !  &              - SUM( qevap_ice * a_i_b, dim=3 )                           & !!clem: I think this line must be commented (but need check) 
    193194         &              ) * e1e2t ) * zconv 
     
    382383            DO jj = 1, jpj 
    383384               DO ji = 1, jpi 
    384                   ztmelts    =  -tmut * sz_i(ji,jj,jk,jl) + rt0 
     385                  ztmelts    =  -rTmlt * sz_i(ji,jj,jk,jl) + rt0 
    385386                  IF( t_i(ji,jj,jk,jl) >= ztmelts  .AND.  v_i(ji,jj,jl) > 1.e-10   & 
    386387                     &                             .AND.  a_i(ji,jj,jl) > 0._wp   ) THEN 
     
    572573               WRITE(numout,*) 
    573574               WRITE(numout,*) ' hfx_mass     : ', hfx_thd(ji,jj) + hfx_dyn(ji,jj) + hfx_snw(ji,jj) + hfx_res(ji,jj) 
    574                WRITE(numout,*) ' hfx_in       : ', hfx_in(ji,jj) 
    575                WRITE(numout,*) ' hfx_out      : ', hfx_out(ji,jj) 
     575               WRITE(numout,*) ' qt_atm_oi    : ', qt_atm_oi(ji,jj) 
     576               WRITE(numout,*) ' qt_oce_ai    : ', qt_oce_ai(ji,jj) 
    576577               WRITE(numout,*) ' dhc          : ', diag_heat(ji,jj)               
    577578               WRITE(numout,*) 
     
    579580               WRITE(numout,*) ' hfx_thd      : ', hfx_thd(ji,jj) 
    580581               WRITE(numout,*) ' hfx_res      : ', hfx_res(ji,jj) 
    581                WRITE(numout,*) ' fhtur        : ', fhtur(ji,jj)  
     582               WRITE(numout,*) ' qsb_ice_bot  : ', qsb_ice_bot(ji,jj)  
    582583               WRITE(numout,*) ' qlead        : ', qlead(ji,jj) * r1_rdtice 
    583584               WRITE(numout,*) 
Note: See TracChangeset for help on using the changeset viewer.