source: LMDZ6/trunk/libf/phylmd/Ocean_skin/fv_m.f90 @ 5440

Last change on this file since 5440 was 5268, checked in by abarral, 2 months ago

.f90 <-> .F90 depending on cpp key use

File size: 1.3 KB
Line 
1module fv_m
2
3  implicit none
4
5contains
6
7  elemental real function fV(z, rain)
8
9    ! H. Bellenger 2016
10
11    real, intent(in):: z ! profondeur en m (z < 0)
12    real, intent(in):: rain ! rain mass flux, in kg m-2 s-1
13
14    ! Local:
15
16    real dfV
17    ! fraction of rain volume entering the ocean and deposited within depth "z"
18
19    real rc, lbd, f0
20    real z_mm
21
22    ! Schlussel et al. 1997, Table 1:
23    real, parameter:: zeta(14) = [0.0026091, 0.0022743, 0.0015406, 0.0012281, &
24         0.0008795, 0.00077123, 0.00057451, 0.000438, 6.7228e-5, 6.4955e-5, &
25         4.4234e-5, 3.3906e-5, 2.7433e-6, 4.0283e-7]
26    real, parameter:: psi(14) = [0.60107, 0.29968, 0.5563, 1.80858, 0.2175, &
27         0.33961, 0.96368, 0.65081, 0.5967, 2.7661, 2.2812, 2.7674, 2.6095, &
28         6.5308]
29
30    !---------------------------------------------------------------------
31
32    if (rain > 0.) then
33       rc = 0.4 ! mm
34       z_mm = z * 1000. ! mm and <0
35       lbd = 4.1 * (rain * 3600.)**(- 0.21) ! mm-1
36       f0 = (1. + 2. * lbd * rc + 0.5 * (2. * lbd * rc)**2 &
37            + 1. / 6. * (2. * lbd * rc)**3) * exp(- 1. * 2. * lbd * rc)
38       dfv = sum(zeta * exp(- psi * lbd * abs(z_mm) / 100.))
39       fV = - dfV * abs(z_mm) + f0
40    else
41       fV = 0.
42    endif
43
44  end function fV
45
46end module fv_m
Note: See TracBrowser for help on using the repository browser.