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 4603 for trunk/NEMOGCM/NEMO/OPA_SRC/SBC – NEMO

Ignore:
Timestamp:
2014-03-28T11:34:34+01:00 (10 years ago)
Author:
gm
Message:

#1264 trunk: correct an incompatibility ln_ana & ln_ssr

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcana.F90

    r4147 r4603  
    5757      !!              independant except the stresses which increase from zero 
    5858      !!              during the first nn_tau000 time-step  
    59       !!                CAUTION : never mask the surface stress field ! 
    6059      !! 
    6160      !! ** Action  : - set the ocean surface boundary condition, i.e.   
    62       !!                   utau, vtau, taum, wndm, qns, qsr, emp 
     61      !!                   utau, vtau, taum, wndm, qns, qsr, emp, sfx 
    6362      !!---------------------------------------------------------------------- 
    64       INTEGER, INTENT(in) ::   kt       ! ocean time step 
     63      INTEGER, INTENT(in) ::   kt   ! ocean time step 
    6564      ! 
    66       INTEGER  ::   ios                   ! Local integer output status for namelist read 
    67       REAL(wp) ::   zfacto                ! local scalar 
    68       REAL(wp) ::   zrhoa  = 1.22_wp      ! Air density kg/m3 
     65      INTEGER  ::   ios                   ! local integer 
     66      REAL(wp) ::   zrhoa  = 1.22_wp      ! air density kg/m3 
    6967      REAL(wp) ::   zcdrag = 1.5e-3_wp    ! drag coefficient 
    70       REAL(wp) ::   ztx, zty, zmod, zcoef ! temporary variables 
     68      REAL(wp) ::   zfact, ztx            ! local scalars 
     69      REAL(wp) ::   zcoef, zty, zmod      !   -      - 
    7170      !! 
    7271      NAMELIST/namsbc_ana/ nn_tau000, rn_utau0, rn_vtau0, rn_qns0, rn_qsr0, rn_emp0 
     
    9695         nn_tau000 = MAX( nn_tau000, 1 )     ! must be >= 1 
    9796         ! 
     97         utau(:,:) = rn_utau0 
     98         vtau(:,:) = rn_vtau0 
     99         taum(:,:) = SQRT ( rn_utau0 * rn_utau0 + rn_vtau0 * rn_vtau0 ) 
     100         wndm(:,:) = SQRT ( taum(1,1) /  ( zrhoa * zcdrag ) ) 
     101         ! 
    98102         emp (:,:) = rn_emp0 
    99103         sfx (:,:) = 0.0_wp 
    100104         qns (:,:) = rn_qns0 - emp(:,:) * sst_m(:,:) * rcp      ! including heat content associated with mass flux at SST 
    101105         qsr (:,:) = rn_qsr0 
    102          ! 
    103          utau(:,:) = rn_utau0 
    104          vtau(:,:) = rn_vtau0 
    105          taum(:,:) = SQRT ( rn_utau0 * rn_utau0 + rn_vtau0 * rn_vtau0 ) 
    106          wndm(:,:) = SQRT ( taum(1,1) /  ( zrhoa * zcdrag ) ) 
    107          ! 
     106         !          
    108107      ENDIF 
    109108 
    110     
    111       ! Increase the surface stress to its nominal value during the first nn_tau000 time-steps 
    112       IF( kt <= nn_tau000 ) THEN 
    113          zfacto = 0.5 * (  1. - COS( rpi * FLOAT( kt ) / FLOAT( nn_tau000 ) )  ) 
    114          zcoef = 1. / ( zrhoa * zcdrag )  
    115          ztx = zfacto * rn_utau0 
    116          zty = zfacto * rn_vtau0 
    117          zmod = SQRT( ztx * ztx + zty * zty ) 
    118          utau(:,:) = ztx 
    119          vtau(:,:) = zty 
    120          taum(:,:) = zmod 
    121          zmod = SQRT( zmod * zcoef ) 
    122          wndm(:,:) = zmod 
     109      IF( MOD( kt - 1, nn_fsbc ) == 0 ) THEN  
     110         ! 
     111         IF( kt <= nn_tau000 ) THEN       ! Increase the stress to its nominal value  
     112            !                             ! during the first nn_tau000 time-steps 
     113            zfact = 0.5 * (  1. - COS( rpi * REAL( kt, wp ) / REAL( nn_tau000, wp ) )  ) 
     114            zcoef = 1. / ( zrhoa * zcdrag )  
     115            ztx   = zfact * rn_utau0 
     116            zty   = zfact * rn_vtau0 
     117            zmod  = SQRT( ztx * ztx + zty * zty ) 
     118            utau(:,:) = ztx 
     119            vtau(:,:) = zty 
     120            taum(:,:) = zmod 
     121            wndm(:,:) = SQRT( zmod * zcoef ) 
     122         ENDIF 
     123         !                                ! update heat and fresh water fluxes 
     124         !                                ! as they may have been changed by sbcssr module 
     125         emp (:,:) = rn_emp0              ! NB: qns changes with SST if emp /= 0 
     126         sfx (:,:) = 0._wp 
     127         qns (:,:) = rn_qns0 - emp(:,:) * sst_m(:,:) * rcp 
     128         qsr (:,:) = rn_qsr0 
     129         ! 
    123130      ENDIF 
    124131      ! 
Note: See TracChangeset for help on using the changeset viewer.