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 1025 for trunk/NEMO/OPA_SRC/SBC/sbcblk_core.F90 – NEMO

Ignore:
Timestamp:
2008-05-30T13:26:09+02:00 (16 years ago)
Author:
cetlod
Message:

adding wind speed module variable, see ticket 172

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/SBC/sbcblk_core.F90

    r1000 r1025  
    227227      REAL(wp) ::   zcoef_qsatw 
    228228      REAL(wp), DIMENSION(jpi,jpj) ::   zwnd_i, zwnd_j    ! wind speed components at T-point 
    229       REAL(wp), DIMENSION(jpi,jpj) ::   zwind_speed_t     ! wind speed module     at T-point ( = | U10m - Uoce | ) 
    230229      REAL(wp), DIMENSION(jpi,jpj) ::   zqsatw            ! specific humidity at pst 
    231230      REAL(wp), DIMENSION(jpi,jpj) ::   zqlw, zqsb        ! long wave and sensible heat fluxes 
     
    247246      !      0   Wind components and module at T-point relative to the moving ocean   ! 
    248247      ! ----------------------------------------------------------------------------- ! 
    249  
    250       ! Store the wind speed U10m 
    251 !CDIR NOVERRCHK 
    252 !CDIR COLLAPSE 
    253       DO jj = 1, jpj 
    254          DO ji = 1, jpi   ! vect. opt. 
    255             wndm(ji,jj) = SQRT(  sf(jp_wndi)%fnow(ji,jj) * sf(jp_wndi)%fnow(ji,jj)   & 
    256          &                     + sf(jp_wndj)%fnow(ji,jj) * sf(jp_wndj)%fnow(ji,jj) ) 
    257          ENDDO 
    258       ENDDO 
    259248 
    260249      ! ... components ( U10m - U_oce ) at T-point (unmasked) 
     
    275264!CDIR NOVERRCHK 
    276265!CDIR COLLAPSE 
    277       zwind_speed_t(:,:) = SQRT(  zwnd_i(:,:) * zwnd_i(:,:)   & 
    278          &                      + zwnd_j(:,:) * zwnd_j(:,:)  ) * tmask(:,:,1) 
     266      wndm(:,:) = SQRT(  zwnd_i(:,:) * zwnd_i(:,:)   & 
     267         &             + zwnd_j(:,:) * zwnd_j(:,:)  ) * tmask(:,:,1) 
    279268 
    280269      ! ----------------------------------------------------------------------------- ! 
     
    300289      IF( ln_2m ) THEN 
    301290         !! If air temp. and spec. hum. are given at different height (2m) than wind (10m) : 
    302          CALL TURB_CORE_2Z(2.,10., zst   , sf(jp_tair)%fnow,                  & 
    303             &                      zqsatw, sf(jp_humi)%fnow, zwind_speed_t,   & 
    304             &                      Cd, Ch, Ce, zt_zu, zq_zu ) 
     291         CALL TURB_CORE_2Z(2.,10., zst   , sf(jp_tair)%fnow,         & 
     292            &                      zqsatw, sf(jp_humi)%fnow, wndm,   & 
     293            &                      Cd    , Ch              , Ce  ,   & 
     294            &                      zt_zu , zq_zu                   ) 
    305295      ELSE 
    306296         !! If air temp. and spec. hum. are given at same height than wind (10m) : 
    307297!gm bug?  at the compiling phase, add a copy in temporary arrays...  ==> check perf 
    308 !         CALL TURB_CORE_1Z( 10., zst   (:,:), sf(jp_tair)%fnow(:,:),                       & 
    309 !            &                    zqsatw(:,:), sf(jp_humi)%fnow(:,:), zwind_speed_t(:,:),   & 
    310 !            &                    Cd(:,:), Ch(:,:), Ce(:,:) ) 
     298!         CALL TURB_CORE_1Z( 10., zst   (:,:), sf(jp_tair)%fnow(:,:),              & 
     299!            &                    zqsatw(:,:), sf(jp_humi)%fnow(:,:), wndm(:,:),   & 
     300!            &                    Cd    (:,:),             Ch  (:,:), Ce  (:,:) ) 
    311301!gm bug 
    312          CALL TURB_CORE_1Z( 10., zst   , sf(jp_tair)%fnow,                  & 
    313             &                    zqsatw, sf(jp_humi)%fnow, zwind_speed_t,   & 
    314             &                    Cd, Ch, Ce ) 
     302         CALL TURB_CORE_1Z( 10., zst   , sf(jp_tair)%fnow,         & 
     303            &                    zqsatw, sf(jp_humi)%fnow, wndm,   & 
     304            &                    Cd    , Ch              , Ce    ) 
    315305      ENDIF 
    316306 
    317307      ! ... utau, vtau at U- and V_points, resp. 
    318308      !     Note the use of 0.5*(2-umask) in order to unmask the stress along coastlines 
    319       zwnd_i(:,:) = rhoa * zwind_speed_t(:,:) * Cd(:,:) * zwnd_i(:,:) 
    320       zwnd_j(:,:) = rhoa * zwind_speed_t(:,:) * Cd(:,:) * zwnd_j(:,:) 
     309      zwnd_i(:,:) = rhoa * wndm(:,:) * Cd(:,:) * zwnd_i(:,:) 
     310      zwnd_j(:,:) = rhoa * wndm(:,:) * Cd(:,:) * zwnd_j(:,:) 
    321311      DO jj = 1, jpjm1 
    322312         DO ji = 1, fs_jpim1 
     
    332322      IF( ln_2m ) THEN 
    333323         ! Values of temp. and hum. adjusted to 10m must be used instead of 2m values 
    334          zevap(:,:) = MAX( 0.e0, rhoa    *Ce(:,:)*( zqsatw(:,:) - zq_zu(:,:) ) * zwind_speed_t(:,:) )   ! Evaporation 
    335          zqsb (:,:) =            rhoa*cpa*Ch(:,:)*( zst   (:,:) - zt_zu(:,:) ) * zwind_speed_t(:,:)     ! Sensible Heat 
     324         zevap(:,:) = MAX( 0.e0, rhoa    *Ce(:,:)*( zqsatw(:,:) - zq_zu(:,:) ) * wndm(:,:) )   ! Evaporation 
     325         zqsb (:,:) =            rhoa*cpa*Ch(:,:)*( zst   (:,:) - zt_zu(:,:) ) * wndm(:,:)     ! Sensible Heat 
    336326      ELSE 
    337327!CDIR COLLAPSE 
    338          zevap(:,:) = MAX( 0.e0, rhoa    *Ce(:,:)*( zqsatw(:,:) - sf(jp_humi)%fnow(:,:) ) * zwind_speed_t(:,:) )   ! Evaporation 
    339 !CDIR COLLAPSE 
    340          zqsb (:,:) =            rhoa*cpa*Ch(:,:)*( zst   (:,:) - sf(jp_tair)%fnow(:,:) ) * zwind_speed_t(:,:)     ! Sensible Heat 
     328         zevap(:,:) = MAX( 0.e0, rhoa    *Ce(:,:)*( zqsatw(:,:) - sf(jp_humi)%fnow(:,:) ) * wndm(:,:) )   ! Evaporation 
     329!CDIR COLLAPSE 
     330         zqsb (:,:) =            rhoa*cpa*Ch(:,:)*( zst   (:,:) - sf(jp_tair)%fnow(:,:) ) * wndm(:,:)     ! Sensible Heat 
    341331      ENDIF 
    342332!CDIR COLLAPSE 
     
    344334 
    345335      IF(ln_ctl) THEN 
    346          CALL prt_ctl( tab2d_1=zqla   , clinfo1=' blk_oce_core: zqla   : ', tab2d_2=Ce , clinfo2=' Ce  : ' ) 
    347          CALL prt_ctl( tab2d_1=zqsb   , clinfo1=' blk_oce_core: zqsb   : ', tab2d_2=Ch , clinfo2=' Ch  : ' ) 
    348          CALL prt_ctl( tab2d_1=zqlw   , clinfo1=' blk_oce_core: zqlw   : ', tab2d_2=qsr, clinfo2=' qsr : ' ) 
    349          CALL prt_ctl( tab2d_1=zqsatw , clinfo1=' blk_oce_core: zqsatw : ', tab2d_2=zst, clinfo2=' zst : ' ) 
    350          CALL prt_ctl( tab2d_1=utau   , clinfo1=' blk_oce_core: utau   : ', mask1=umask,   & 
    351             &          tab2d_2=vtau   , clinfo2=' vtau : ', mask2=vmask ) 
    352          CALL prt_ctl( tab2d_1=zwind_speed_t, clinfo1=' blk_oce_core: zwind_speed_t : ') 
    353          CALL prt_ctl( tab2d_1=zst    , clinfo1=' blk_oce_core: zst    : ') 
     336         CALL prt_ctl( tab2d_1=zqla  , clinfo1=' blk_oce_core: zqla   : ', tab2d_2=Ce , clinfo2=' Ce  : ' ) 
     337         CALL prt_ctl( tab2d_1=zqsb  , clinfo1=' blk_oce_core: zqsb   : ', tab2d_2=Ch , clinfo2=' Ch  : ' ) 
     338         CALL prt_ctl( tab2d_1=zqlw  , clinfo1=' blk_oce_core: zqlw   : ', tab2d_2=qsr, clinfo2=' qsr : ' ) 
     339         CALL prt_ctl( tab2d_1=zqsatw, clinfo1=' blk_oce_core: zqsatw : ', tab2d_2=zst, clinfo2=' zst : ' ) 
     340         CALL prt_ctl( tab2d_1=utau  , clinfo1=' blk_oce_core: utau   : ', mask1=umask,   & 
     341            &          tab2d_2=vtau  , clinfo2=              ' vtau : '  , mask2=vmask ) 
     342         CALL prt_ctl( tab2d_1=wndm  , clinfo1=' blk_oce_core: wndm  : ') 
     343         CALL prt_ctl( tab2d_1=zst   , clinfo1=' blk_oce_core: zst    : ') 
    354344      ENDIF 
    355345        
Note: See TracChangeset for help on using the changeset viewer.