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 13195 for NEMO/branches/2020/dev_r12953_ENHANCE-10_acc_fix_traqsr/src – NEMO

Ignore:
Timestamp:
2020-07-01T15:47:10+02:00 (4 years ago)
Author:
acc
Message:

2020/dev_r12953_ENHANCE-10_acc_fix_traqsr. Merge in trunk changes from 13115 to 13136 in preparation for the mid-year merge. Fully SETTE tested

Location:
NEMO/branches/2020/dev_r12953_ENHANCE-10_acc_fix_traqsr/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r12953_ENHANCE-10_acc_fix_traqsr/src/OCE/SBC/sbcblk.F90

    r13121 r13195  
    627627 
    628628      END SELECT 
    629  
    630       CALL iom_put("Cd_oce", zcd_oce) 
    631       CALL iom_put("Ce_oce", zce_oce) 
    632       CALL iom_put("Ch_oce", zch_oce) 
     629       
     630      IF( iom_use('Cd_oce') )   CALL iom_put("Cd_oce",   zcd_oce * tmask(:,:,1)) 
     631      IF( iom_use('Ce_oce') )   CALL iom_put("Ce_oce",   zce_oce * tmask(:,:,1)) 
     632      IF( iom_use('Ch_oce') )   CALL iom_put("Ch_oce",   zch_oce * tmask(:,:,1)) 
     633      !! LB: mainly here for debugging purpose: 
     634      IF( iom_use('theta_zt') ) CALL iom_put("theta_zt", (ztpot-rt0) * tmask(:,:,1)) ! potential temperature at z=zt 
     635      IF( iom_use('q_zt') )     CALL iom_put("q_zt",     zqair       * tmask(:,:,1)) ! specific humidity       " 
     636      IF( iom_use('theta_zu') ) CALL iom_put("theta_zu", (t_zu -rt0) * tmask(:,:,1)) ! potential temperature at z=zu 
     637      IF( iom_use('q_zu') )     CALL iom_put("q_zu",     q_zu        * tmask(:,:,1)) ! specific humidity       " 
     638      IF( iom_use('ssq') )      CALL iom_put("ssq",      pssq        * tmask(:,:,1)) ! saturation specific humidity at z=0 
     639      IF( iom_use('wspd_blk') ) CALL iom_put("wspd_blk", zU_zu       * tmask(:,:,1)) ! bulk wind speed at z=zu 
    633640       
    634641      IF( ln_skin_cs .OR. ln_skin_wl ) THEN 
     
    883890      ENDIF 
    884891       
    885       CALL iom_put("Cd_ice", Cd_ice) 
    886       CALL iom_put("Ce_ice", Ce_ice) 
    887       CALL iom_put("Ch_ice", Ch_ice) 
     892      IF( iom_use('Cd_ice') ) CALL iom_put("Cd_ice", Cd_ice) 
     893      IF( iom_use('Ce_ice') ) CALL iom_put("Ce_ice", Ce_ice) 
     894      IF( iom_use('Ch_ice') ) CALL iom_put("Ch_ice", Ch_ice) 
    888895       
    889896      ! local scalars ( place there for vector optimisation purposes) 
  • NEMO/branches/2020/dev_r12953_ENHANCE-10_acc_fix_traqsr/src/OCE/stpctl.F90

    r13121 r13195  
    119119      !                                   !==            test of local extrema           ==! 
    120120      !                                   !==  done by all processes at every time step  ==! 
     121      ! 
     122      ! define zmax default value. needed for land processors 
     123      IF( ll_colruns ) THEN    ! default value: must not be kept when calling mpp_max -> must be as small as possible 
     124         zmax(:) = -HUGE(1._wp) 
     125      ELSE                     ! default value: must not give true for any of the tests bellow (-> avoid manipulating HUGE...) 
     126         zmax(:) =  0._wp 
     127         zmax(3) = -1._wp      ! avoid salinity minimum at 0. 
     128      ENDIF 
     129      ! 
    121130      llmsk(:,:,1) = ssmask(:,:) == 1._wp 
    122       IF( ll_wd ) THEN 
    123          zmax(1) = MAXVAL( ABS( ssh(:,:,Kmm) + ssh_ref ), mask = llmsk(:,:,1) )   ! ssh max 
    124       ELSE 
    125          zmax(1) = MAXVAL( ABS( ssh(:,:,Kmm)           ), mask = llmsk(:,:,1) )   ! ssh max 
    126       ENDIF 
    127       llmsk(:,:,:) = umask(:,:,:) == 1._wp 
    128       zmax(2) = MAXVAL(  ABS( uu(:,:,:,Kmm) ), mask = llmsk )                     ! velocity max (zonal only) 
     131      IF( COUNT( llmsk(:,:,1) ) > 0 ) THEN   ! avoid huge values sent back for land processors... 
     132         IF( ll_wd ) THEN 
     133            zmax(1) = MAXVAL( ABS( ssh(:,:,Kmm) + ssh_ref ), mask = llmsk(:,:,1) )   ! ssh max 
     134         ELSE 
     135            zmax(1) = MAXVAL( ABS( ssh(:,:,Kmm)           ), mask = llmsk(:,:,1) )   ! ssh max 
     136         ENDIF 
     137      ENDIF 
     138      zmax(2) = MAXVAL( ABS( uu(:,:,:,Kmm) ) )                                       ! velocity max (zonal only) 
    129139      llmsk(:,:,:) = tmask(:,:,:) == 1._wp 
    130       zmax(3) = MAXVAL( -ts(:,:,:,jp_sal,Kmm), mask = llmsk )                     ! minus salinity max 
    131       zmax(4) = MAXVAL(  ts(:,:,:,jp_sal,Kmm), mask = llmsk )                     !      salinity max 
    132       IF( ll_colruns .OR. jpnij == 1 ) THEN     ! following variables are used only in the netcdf file 
    133          zmax(5) = MAXVAL( -ts(:,:,:,jp_tem,Kmm), mask = llmsk )                  ! minus temperature max 
    134          zmax(6) = MAXVAL(  ts(:,:,:,jp_tem,Kmm), mask = llmsk )                  !      temperature max 
    135          IF( ln_zad_Aimp ) THEN 
    136             zmax(7) = MAXVAL(   Cu_adv(:,:,:)   , mask = llmsk )                  ! partitioning coeff. max 
    137             llmsk(:,:,:) = wmask(:,:,:) == 1._wp 
    138             zmax(8) = MAXVAL(  ABS( wi(:,:,:) ) , mask = llmsk )                  ! implicit vertical vel. max 
    139          ELSE 
    140             zmax(7:8) = 0._wp 
    141          ENDIF 
    142       ELSE 
    143          zmax(5:8) = 0._wp 
     140      IF( COUNT( llmsk(:,:,:) ) > 0 ) THEN   ! avoid huge values sent back for land processors... 
     141         zmax(3) = MAXVAL( -ts(:,:,:,jp_sal,Kmm), mask = llmsk )                     ! minus salinity max 
     142         zmax(4) = MAXVAL(  ts(:,:,:,jp_sal,Kmm), mask = llmsk )                     !       salinity max 
     143         IF( ll_colruns .OR. jpnij == 1 ) THEN     ! following variables are used only in the netcdf file 
     144            zmax(5) = MAXVAL( -ts(:,:,:,jp_tem,Kmm), mask = llmsk )                  ! minus temperature max 
     145            zmax(6) = MAXVAL(  ts(:,:,:,jp_tem,Kmm), mask = llmsk )                  !       temperature max 
     146            IF( ln_zad_Aimp ) THEN 
     147               zmax(7) = MAXVAL(   Cu_adv(:,:,:)   , mask = llmsk )                  ! partitioning coeff. max 
     148               llmsk(:,:,:) = wmask(:,:,:) == 1._wp 
     149               IF( COUNT( llmsk(:,:,:) ) > 0 ) THEN   ! avoid huge values sent back for land processors... 
     150                  zmax(8) = MAXVAL(ABS( wi(:,:,:) ), mask = llmsk )                  ! implicit vertical vel. max 
     151               ENDIF 
     152            ENDIF 
     153         ENDIF 
    144154      ENDIF 
    145155      zmax(9) = REAL( nstop, wp )                                              ! stop indicator 
  • NEMO/branches/2020/dev_r12953_ENHANCE-10_acc_fix_traqsr/src/SAS/stpctl.F90

    r13121 r13195  
    112112      !                                   !==  done by all processes at every time step  ==! 
    113113      llmsk(:,:) = tmask(:,:,1) == 1._wp 
    114       zmax(1) = MAXVAL(      vt_i (:,:)            , mask = llmsk )   ! max ice thickness 
    115       zmax(2) = MAXVAL( ABS( u_ice(:,:) )          , mask = llmsk )   ! max ice velocity (zonal only) 
    116       zmax(3) = MAXVAL(     -tm_i (:,:) + 273.15_wp, mask = llmsk )   ! min ice temperature 
     114      IF( COUNT( llmsk(:,:) ) > 0 ) THEN   ! avoid huge values sent back for land processors... 
     115         zmax(1) = MAXVAL(      vt_i (:,:)            , mask = llmsk )   ! max ice thickness 
     116         zmax(2) = MAXVAL( ABS( u_ice(:,:) )          , mask = llmsk )   ! max ice velocity (zonal only) 
     117         zmax(3) = MAXVAL(     -tm_i (:,:) + 273.15_wp, mask = llmsk )   ! min ice temperature 
     118      ELSE 
     119         IF( ll_colruns ) THEN    ! default value: must not be kept when calling mpp_max -> must be as small as possible 
     120            zmax(1:3) = -HUGE(1._wp) 
     121         ELSE                     ! default value: must not give true for any of the tests bellow (-> avoid manipulating HUGE...) 
     122            zmax(1:3) = 0._wp 
     123         ENDIF 
     124      ENDIF 
    117125      zmax(4) = REAL( nstop, wp )                                     ! stop indicator 
    118126      !                                   !==               get global extrema             ==! 
Note: See TracChangeset for help on using the changeset viewer.