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 13981 for NEMO/branches/2020/dev_r13648_ASINTER-04_laurent_bulk_ice/src/OCE/SBC/sbcblk.F90 – NEMO

Ignore:
Timestamp:
2020-12-02T11:50:03+01:00 (3 years ago)
Author:
laurent
Message:

Canceled changes in dynatf.F90, NEW "iom_put-able" "[uv]tau_oce" and "[uv]tau_ice" at T-points!

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r13648_ASINTER-04_laurent_bulk_ice/src/OCE/SBC/sbcblk.F90

    r13893 r13981  
    6464 
    6565   USE sbc_phy        ! Catalog of functions for physical/meteorological parameters in the marine boundary layer 
    66    USE zdfdrg  , ONLY : ln_drgice_imp  ! to know if we should iom_put wind stress vector (utau,vtau) #laurent 
    6766 
    6867   IMPLICIT NONE 
     
    856855         ENDIF 
    857856 
    858          CALL iom_put( "taum_oce", taum*tmask(:,:,1) )   ! output wind stress module 
    859          IF ( .NOT. (ln_drgice_imp.OR.ln_isfcav) ) THEN 
    860             ! #Laurent: because otherwize utau and vtau are saved into dyn_atf() of dynatf.F90 
    861             CALL iom_put( "utau", utau(:,:) ) 
    862             CALL iom_put( "vtau", vtau(:,:) ) 
    863          END IF 
     857         ! Saving open-ocean wind-stress (module and components) on T-points: 
     858         CALL iom_put( "taum_oce",   taum(:,:)*tmask(:,:,1) )   ! output wind stress module 
     859         !#LB: These 2 lines below mostly here for 'STATION_ASF' test-case, otherwize "utau" (U-grid) and vtau" (V-grid) does the job in: [DYN/dynatf.F90]) 
     860         CALL iom_put( "utau_oce", ztau_i(:,:)*tmask(:,:,1) )  ! utau at T-points! 
     861         CALL iom_put( "vtau_oce", ztau_j(:,:)*tmask(:,:,1) )  ! vtau at T-points! 
    864862          
    865863         IF(sn_cfctl%l_prtctl) THEN 
     
    10531051         !! 
    10541052      END SELECT 
    1055  
    1056       IF( iom_use('Cd_ice').OR.iom_use('Ce_ice').OR.iom_use('Ch_ice').OR.iom_use('taum_ai') ) & 
     1053       
     1054      IF( iom_use('Cd_ice').OR.iom_use('Ce_ice').OR.iom_use('Ch_ice').OR.iom_use('taum_ice').OR.iom_use('utau_ice').OR.iom_use('vtau_ice') ) & 
    10571055         & ztmp(:,:) = ( 1._wp - MAX(0._wp, SIGN( 1._wp, 1.E-6_wp - fr_i )) )*tmask(:,:,1) ! mask for presence of ice ! 
    10581056 
     
    10681066         ! supress moving ice in wind stress computation as we don't know how to do it properly... 
    10691067         DO_2D( 0, 1, 0, 1 )    ! at T point 
    1070          zztmp1        = rhoa(ji,jj) * Cd_ice(ji,jj) * wndm_ice(ji,jj) 
    1071          putaui(ji,jj) =  zztmp1 * pwndi(ji,jj) 
    1072          pvtaui(ji,jj) =  zztmp1 * pwndj(ji,jj) 
     1068            zztmp1        = rhoa(ji,jj) * Cd_ice(ji,jj) * wndm_ice(ji,jj) 
     1069            putaui(ji,jj) =  zztmp1 * pwndi(ji,jj) 
     1070            pvtaui(ji,jj) =  zztmp1 * pwndj(ji,jj) 
    10731071         END_2D 
    1074          !#LB: saving the module of the ai wind-stress: NOT weighted by the ice concentration !!! 
    1075          IF(iom_use('taum_ai')) CALL iom_put( 'taum_ai', SQRT( putaui*putaui + pvtaui*pvtaui )*ztmp ) 
     1072 
     1073         !#LB: saving the module, and x-y components, of the ai wind-stress at T-points: NOT weighted by the ice concentration !!! 
     1074         IF(iom_use('taum_ice')) CALL iom_put('taum_ice', SQRT( putaui*putaui + pvtaui*pvtaui )*ztmp ) 
     1075         !#LB: These 2 lines below mostly here for 'STATION_ASF' test-case, otherwize "utau_oi" (U-grid) and vtau_oi" (V-grid) does the job in: [ICE/icedyn_rhg_evp.F90]) 
     1076         IF(iom_use('utau_ice')) CALL iom_put("utau_ice", putaui*ztmp)  ! utau at T-points! 
     1077         IF(iom_use('vtau_ice')) CALL iom_put("vtau_ice", pvtaui*ztmp)  ! vtau at T-points! 
     1078          
    10761079         ! 
    10771080         DO_2D( 0, 0, 0, 0 )    ! U & V-points (same as ocean). 
    1078          !#LB: QUESTION?? so SI3 expects wind stress vector to be provided at U & V points? Not at T-points ? 
    1079          ! take care of the land-sea mask to avoid "pollution" of coastal stress. p[uv]taui used in frazil and  rheology 
    1080          zztmp1 = 0.5_wp * ( 2. - umask(ji,jj,1) ) * MAX( tmask(ji,jj,1),tmask(ji+1,jj  ,1) ) 
    1081          zztmp2 = 0.5_wp * ( 2. - vmask(ji,jj,1) ) * MAX( tmask(ji,jj,1),tmask(ji  ,jj+1,1) ) 
    1082          putaui(ji,jj) = zztmp1 * ( putaui(ji,jj) + putaui(ji+1,jj  ) ) 
    1083          pvtaui(ji,jj) = zztmp2 * ( pvtaui(ji,jj) + pvtaui(ji  ,jj+1) ) 
     1081            !#LB: QUESTION?? so SI3 expects wind stress vector to be provided at U & V points? Not at T-points ? 
     1082            ! take care of the land-sea mask to avoid "pollution" of coastal stress. p[uv]taui used in frazil and  rheology 
     1083            zztmp1 = 0.5_wp * ( 2. - umask(ji,jj,1) ) * MAX( tmask(ji,jj,1),tmask(ji+1,jj  ,1) ) 
     1084            zztmp2 = 0.5_wp * ( 2. - vmask(ji,jj,1) ) * MAX( tmask(ji,jj,1),tmask(ji  ,jj+1,1) ) 
     1085            putaui(ji,jj) = zztmp1 * ( putaui(ji,jj) + putaui(ji+1,jj  ) ) 
     1086            pvtaui(ji,jj) = zztmp2 * ( pvtaui(ji,jj) + pvtaui(ji  ,jj+1) ) 
    10841087         END_2D 
    10851088         CALL lbc_lnk_multi( 'sbcblk', putaui, 'U', -1._wp, pvtaui, 'V', -1._wp ) 
Note: See TracChangeset for help on using the changeset viewer.