source: LMDZ6/trunk/libf/phylmd/Dust/lmdz_spla_nightingale.f90 @ 5523

Last change on this file since 5523 was 5505, checked in by fhourdin, 13 days ago

Modification SPLA pour résoudre redondance INCA

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