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/sbcana.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/sbcana.F90

    r1000 r1025  
    6666      !!---------------------------------------------------------------------- 
    6767      INTEGER, INTENT(in) ::   kt       ! ocean time step 
    68       ! 
     68      !! 
    6969      INTEGER             ::   ji, jj          ! dummy loop indices 
    7070      REAL(wp)            ::   zfacto          ! local scalar 
    7171      REAL(wp)            ::   ztx, zty, ztau  ! local scalar 
     72      !! 
     73      NAMELIST/namsbc_ana/ nn_tau000, rn_utau0, rn_vtau0, rn_qns0, rn_qsr0, rn_emp0 
    7274      !!--------------------------------------------------------------------- 
    73       NAMELIST/namsbc_ana/ nn_tau000, rn_utau0, rn_vtau0, rn_qns0, rn_qsr0, rn_emp0 
    7475      ! 
    7576      IF( kt == nit000 ) THEN 
     
    7778         REWIND ( numnam )                   ! Read Namelist namsbc : surface fluxes 
    7879         READ   ( numnam, namsbc_ana ) 
    79  
     80         ! 
    8081         IF(lwp) WRITE(numout,*)' ' 
    8182         IF(lwp) WRITE(numout,*)' sbc_ana : Constant surface fluxes read in namsbc_ana namelist' 
     
    8788         IF(lwp) WRITE(numout,*)'              solar heat flux        rn_qsr0   = ', rn_qsr0  , ' W/m2' 
    8889         IF(lwp) WRITE(numout,*)'              net heat flux          rn_emp0   = ', rn_emp0  , ' Kg/m2/s' 
    89  
     90         ! 
    9091         nn_tau000 = MAX( nn_tau000, 1 )   ! must be >= 1 
    9192         qns   (:,:) = rn_qns0 
     
    9798    
    9899      ! Increase the surface stress to its nominal value during the first nn_tau000 time-steps 
    99           
    100100      IF( kt <= nn_tau000 ) THEN 
    101101         zfacto = 0.5 * (  1. - COS( rpi * FLOAT( kt ) / FLOAT( nn_tau000 ) )  ) 
     
    103103         vtau(:,:) = zfacto * rn_vtau0 
    104104      ENDIF 
     105 
     106      ! Estimation of wind speed as a function of wind stress ( |tau|=rhoa*Cd*|U|^2 ) 
     107      zfacto = 0.5 / ( rhoa * cdrag ) 
     108!CDIR NOVERRCHK 
     109      DO jj = 2, jpjm1 
     110!CDIR NOVERRCHK 
     111         DO ji = fs_2, fs_jpim1   ! vect. opt. 
     112            ztx = utau(ji-1,jj  ) + utau(ji,jj)             
     113            zty = vtau(ji  ,jj-1) + vtau(ji,jj)  
     114            ztau = SQRT( ztx * ztx + zty * zty ) 
     115            wndm(ji,jj) = SQRT ( ztau * zfacto ) * tmask(ji,jj,1) 
     116         END DO 
     117      END DO 
     118      CALL lbc_lnk( wndm(:,:) , 'T', 1. ) 
    105119      ! 
    106     
    107       ! Estimation of wind speed as a function of wind stress 
    108 !CDIR NOVERRCHK 
    109       DO jj = 1, jpj 
    110 !CDIR NOVERRCHK 
    111          DO ji = 1, jpi 
    112             ztx  = utau(ji,jj) * umask(ji,jj,1) 
    113             zty  = vtau(ji,jj) * vmask(ji,jj,1) 
    114             ztau = SQRT( ztx * ztx + zty * zty ) 
    115             wndm(ji,jj) = SQRT ( ztau / ( rhoa * cdrag ) ) 
    116          ENDDO 
    117       ENDDO 
    118  
    119120   END SUBROUTINE sbc_ana 
    120121 
     
    151152      REAL(wp) ::   zcos_sais1, zcos_sais2, ztrp, zconv, t_star 
    152153      REAL(wp) ::   zsumemp, zsurf 
    153       REAL(wp) ::   ztx, zty 
     154      REAL(wp) ::   ztx, zty, zfacto 
    154155      !!--------------------------------------------------------------------- 
    155156          
     
    268269      END DO 
    269270 
    270       ! Estimation of wind speed as a function of wind stress 
     271      ! Estimation of wind speed as a function of wind stress ( |tau|=rhoa*Cd*|U|^2 ) 
     272      zfacto = 0.5 / ( rhoa * cdrag ) 
    271273!CDIR NOVERRCHK 
    272       DO jj = 1, jpj 
     274      DO jj = 2, jpjm1 
    273275!CDIR NOVERRCHK 
    274          DO ji = 1, jpi 
    275             ztx  = utau(ji,jj) * umask(ji,jj,1) 
    276             zty  = vtau(ji,jj) * vmask(ji,jj,1) 
     276         DO ji = fs_2, fs_jpim1   ! vect. opt. 
     277            ztx = utau(ji-1,jj  ) + utau(ji,jj) 
     278            zty = vtau(ji  ,jj-1) + vtau(ji,jj) 
    277279            ztau = SQRT( ztx * ztx + zty * zty ) 
    278             wndm(ji,jj) = SQRT ( ztau / ( rhoa * cdrag ) ) 
    279          ENDDO 
    280       ENDDO 
     280            wndm(ji,jj) = SQRT ( ztau * zfacto ) * tmask(ji,jj,1) 
     281         END DO 
     282      END DO 
     283      CALL lbc_lnk( wndm(:,:) , 'T', 1. ) 
    281284 
    282285      ! ---------------------------------- ! 
Note: See TracChangeset for help on using the changeset viewer.