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.
ocesbc_cpl_noice.h90 in trunk/NEMO/OPA_SRC/SBC – NEMO

source: trunk/NEMO/OPA_SRC/SBC/ocesbc_cpl_noice.h90 @ 3

Last change on this file since 3 was 3, checked in by opalod, 20 years ago

Initial revision

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.0 KB
Line 
1   !!----------------------------------------------------------------------
2   !!                       ***  ocesbc_cpl_noice.h90  ***
3   !!----------------------------------------------------------------------
4
5   SUBROUTINE oce_sbc(kt)
6      !!---------------------------------------------------------------------
7      !!                 ***  ROUTINE oce_sbc  ***
8      !!                   
9      !! ** Purpose :   Ocean surface boundaries conditions in
10      !!                coupled ocean/atmosphere case without sea-ice
11      !!
12      !! History :
13      !!   1.0  !  00-10  (O. Marti)  Original code
14      !!   2.0  !  02-12  (G. Madec)  F90: Free form and module
15      !!----------------------------------------------------------------------
16      !! * Modules used
17      USE cpl_oce
18
19      !! * arguments
20      INTEGER, INTENT( in  ) ::   kt ! ocean time step
21
22      !! * Local declarations
23      INTEGER  ::   ji, jj, jf
24
25      REAL(wp) ::   ztrp
26      REAL(wp) ::   ztgel,zice,zhemis,zqrp,zqri,zq,zqi,zerp,ze,zei,zro
27
28      ! Compute fluxes
29      ! --------------
30
31      ! constant initialization
32      ztrp = -40.   ! restoring term for temperature (w/m2/k)
33
34      DO jj = 1, jpj
35         DO ji = 1, jpi
36
37            ztgel = fzptn(ji,jj)   ! local freezing temperature
38
39            ! opa model ice freeze()
40
41            zice = tmask(ji,jj,1)
42            IF( tn(ji,jj,1) >=  ztgel ) zice = 0.
43            freeze(ji,jj) = zice
44
45            ! hemisphere indicator (=1 north, =-1 south)
46           
47            zhemis = float(isign(1, mjg(jj)-(jpjglo/2+1)))
48           
49            ! a) net downward radiative flux qsr()
50            ! - AGCM qsrc if no ice
51            ! - zero under ice (zice=1)
52
53            qsr(ji,jj) = (1.-zice)*qsrc(ji,jj)*tmask(ji,jj,1)
54
55            ! b) heat flux damping term qrp()
56            ! - no damping if no  ice      (zice=0)
57            ! - gamma*min(0,t-tgel) if ice (zice=1)
58
59            zqrp = 0.
60            zqri = ztrp*MIN( 0., tb(ji,jj,1)-ztgel )
61            qrp(ji,jj) = ( ( 1. - zice ) * zqrp + zice * zqri ) * tmask(ji,jj,1)
62
63
64            ! c) net downward heat flux q() = q0 + qrp()
65            ! for q0
66            ! - AGCM qc if no  ice (zice=0)
67            ! - -2 watt/m2 (arctic) or -4 watt/m2 (antarctic) if ice (zice=1)
68            zq  = qc(ji,jj)
69            zqi = -3. + zhemis
70            qt(ji,jj) = ( (1.-zice) * zq + zice * zqi ) * tmask(ji,jj,1) + qrp(ji,jj)
71            q (ji,jj) = qt(ji,jj)
72           
73            ! d) water flux damping term erp()
74            ! - no damping
75            zerp = 0.
76            erp(ji,jj) = zerp
77           
78            ! e) net upward water flux e() = eo + runoff() + erp()
79            ! for e0
80            ! - AGCM if no ice (zice=0)
81            ! - 1.mm/day if climatological and opa ice (zice=1)
82            ze  = ec(ji,jj)
83            zei = 1./rday
84            zro = runoff(ji,jj)
85            emp(ji,jj) = ( ( 1. - zice ) *  ze + zice * zei + zro ) * tmask(ji,jj,1) + erp(ji,jj)
86           
87         END DO
88      END DO
89
90   END SUBROUTINE oce_sbc
Note: See TracBrowser for help on using the repository browser.