source: LMDZ6/branches/cirrus/libf/phylmd/Dust/nightingale.F @ 5202

Last change on this file since 5202 was 4593, checked in by yann meurdesoif, 17 months ago

Replace #include (c preprocessor) by INCLUDE (fortran keyword)

in phylmd (except rrtm and ecrad) filtrez, dy3dmem and dyn3dcommon

Other directories will follow
YM

File size: 2.7 KB
Line 
1      SUBROUTINE nightingale(u, v, u_10m, v_10m, paprs, pplay,
2     .                       cdragh, cdragm, t, q, ftsol, tsol,
3     .                       pctsrf, lmt_dmsconc, lmt_dms)
4c
5      USE dimphy
6      USE indice_sol_mod
7      IMPLICIT NONE
8c
9      INCLUDE "dimensions.h"
10      INCLUDE "YOMCST.h"
11c
12      REAL u(klon,klev), v(klon,klev)
13      REAL u_10m(klon), v_10m(klon)
14      REAL ftsol(klon,nbsrf)
15      REAL tsol(klon)
16      REAL paprs(klon,klev+1), pplay(klon,klev)
17      REAL t(klon,klev)
18      REAL q(klon,klev)
19      REAL cdragh(klon), cdragm(klon)
20      REAL pctsrf(klon,nbsrf)
21      REAL lmt_dmsconc(klon)  ! concentration oceanique DMS
22      REAL lmt_dms(klon)      ! flux de DMS
23c
24      REAL ustar(klon), obklen(klon)
25      REAL u10(klon), u10n(klon)
26      REAL tvelocity, schmidt_corr
27      REAL t1, t2, t3, t4, viscosity_kin, diffusivity, schmidt
28      INTEGER i
29c
30      CALL bl_for_dms(u, v, paprs, pplay, cdragh, cdragm,
31     .                t, q, tsol, ustar, obklen)
32c
33      DO i=1,klon
34        u10(i)=SQRT(u_10m(i)**2+v_10m(i)**2)
35      ENDDO
36c
37      CALL neutral(u10, ustar, obklen, u10n)
38c
39      DO i=1,klon
40c
41c       tvelocity - transfer velocity, also known as kw (cm/s)
42c       schmidt_corr - Schmidt number correction factor (dimensionless)
43c Reference:  Nightingale, P.D., G. Malin, C. S. Law, J. J. Watson, P.S. Liss
44c  M. I. Liddicoat, J. Boutin, R.C. Upstill-Goddard. 'In situ evaluation
45c  of air-sea gas exchange parameterizations using conservative and
46c  volatile tracers.'  Glob. Biogeochem. Cycles, 14:373-387, 2000.
47c compute transfer velocity using u10neutral     
48c
49      tvelocity = 0.222*u10n(i)*u10n(i) + 0.333*u10n(i)
50c
51c above expression gives tvelocity in cm/hr. convert to cm/s. 1hr =3600 sec
52
53      tvelocity = tvelocity / 3600.     
54
55c compute the correction factor, which for Nightingale parameterization is
56c based on how different the schmidt number is from 600.   
57c correction factor based on temperature in Kelvin. good
58c only for t<=30 deg C.  for temperatures above that, set correction factor
59c equal to value at 30 deg C.
60
61      IF (ftsol(i,is_oce) .LE. 303.15) THEN
62         t1 = ftsol(i,is_oce)
63      ELSE
64         t1 = 303.15
65      ENDIF       
66
67      t2 = t1 * t1
68      t3 = t2 * t1
69      t4 = t3 * t1
70      viscosity_kin = 3.0363e-9*t4 - 3.655198e-6*t3 + 1.65333e-3*t2
71     +      - 3.332083e-1*t1 + 25.26819
72      diffusivity = 0.01922 * exp(-2177.1/t1)
73      schmidt = viscosity_kin / diffusivity
74      schmidt_corr = (schmidt/600.)**(-.5)               
75c
76      lmt_dms(i) = tvelocity  *  pctsrf(i,is_oce)
77     .        * lmt_dmsconc(i)/1.0e12 * schmidt_corr * RNAVO
78c
79      IF (lmt_dmsconc(i).LE.1.e-20) lmt_dms(i)=0.0
80c
81      ENDDO
82c
83      END
Note: See TracBrowser for help on using the repository browser.