Changeset 4603
- Timestamp:
- 2014-03-28T11:34:34+01:00 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcana.F90
r4147 r4603 57 57 !! independant except the stresses which increase from zero 58 58 !! during the first nn_tau000 time-step 59 !! CAUTION : never mask the surface stress field !60 59 !! 61 60 !! ** 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 63 62 !!---------------------------------------------------------------------- 64 INTEGER, INTENT(in) :: kt 63 INTEGER, INTENT(in) :: kt ! ocean time step 65 64 ! 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 69 67 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 ! - - 71 70 !! 72 71 NAMELIST/namsbc_ana/ nn_tau000, rn_utau0, rn_vtau0, rn_qns0, rn_qsr0, rn_emp0 … … 96 95 nn_tau000 = MAX( nn_tau000, 1 ) ! must be >= 1 97 96 ! 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 ! 98 102 emp (:,:) = rn_emp0 99 103 sfx (:,:) = 0.0_wp 100 104 qns (:,:) = rn_qns0 - emp(:,:) * sst_m(:,:) * rcp ! including heat content associated with mass flux at SST 101 105 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 ! 108 107 ENDIF 109 108 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 ! 123 130 ENDIF 124 131 !
Note: See TracChangeset
for help on using the changeset viewer.