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 |
---|