1 | ! calculates the photosynthesis temperatures |
---|
2 | ! |
---|
3 | ! $Header: /home/ssipsl/CVSREP/ORCHIDEE/src_stomate/stomate_assimtemp.f90,v 1.7 2009/01/06 17:18:32 ssipsl Exp $ |
---|
4 | ! IPSL (2006) |
---|
5 | ! This software is governed by the CeCILL licence see ORCHIDEE/ORCHIDEE_CeCILL.LIC |
---|
6 | ! |
---|
7 | MODULE stomate_assimtemp |
---|
8 | |
---|
9 | ! modules used: |
---|
10 | |
---|
11 | USE stomate_constants |
---|
12 | USE constantes_veg |
---|
13 | |
---|
14 | IMPLICIT NONE |
---|
15 | |
---|
16 | ! private & public routines |
---|
17 | |
---|
18 | PRIVATE |
---|
19 | PUBLIC assim_temp |
---|
20 | |
---|
21 | CONTAINS |
---|
22 | |
---|
23 | SUBROUTINE assim_temp (npts, tlong_ref, t2m_month, t_photo_min, t_photo_opt, t_photo_max) |
---|
24 | |
---|
25 | ! |
---|
26 | ! 0 declarations |
---|
27 | ! |
---|
28 | |
---|
29 | ! 0.1 input |
---|
30 | |
---|
31 | ! Domain size |
---|
32 | INTEGER(i_std), INTENT(in) :: npts |
---|
33 | ! "long term" 2 meter reference temperatures (K) |
---|
34 | REAL(r_std), DIMENSION(npts), INTENT(in) :: tlong_ref |
---|
35 | ! "monthly" 2-meter temperatures (K) |
---|
36 | REAL(r_std), DIMENSION(npts), INTENT(in) :: t2m_month |
---|
37 | |
---|
38 | ! 0.2 output |
---|
39 | ! Minimum temperature for photosynthesis (K) |
---|
40 | REAL(r_std), DIMENSION(npts,nvm), INTENT(out) :: t_photo_min |
---|
41 | ! Optimum temperature for photosynthesis (K) |
---|
42 | REAL(r_std), DIMENSION(npts,nvm), INTENT(out) :: t_photo_opt |
---|
43 | ! Maximum temperature for photosynthesis (K) |
---|
44 | REAL(r_std), DIMENSION(npts,nvm), INTENT(out) :: t_photo_max |
---|
45 | |
---|
46 | ! 0.3 local |
---|
47 | ! "long term" 2 meter reference temperatures (deg C) |
---|
48 | REAL(r_std), DIMENSION(npts) :: tl |
---|
49 | ! Index |
---|
50 | INTEGER(i_std) :: j |
---|
51 | |
---|
52 | ! ========================================================================= |
---|
53 | |
---|
54 | tl(:) = tlong_ref(:) - ZeroCelsius |
---|
55 | |
---|
56 | DO j = 2,nvm |
---|
57 | |
---|
58 | ! |
---|
59 | ! 1 normal case |
---|
60 | ! |
---|
61 | |
---|
62 | t_photo_min(:,j) = t_photo%t_min_c(j) + t_photo%t_min_b(j)*tl(:) + t_photo%t_min_a(j)*tl(:)*tl(:) + ZeroCelsius |
---|
63 | t_photo_opt(:,j) = t_photo%t_opt_c(j) + t_photo%t_opt_b(j)*tl(:) + t_photo%t_opt_a(j)*tl(:)*tl(:) + ZeroCelsius |
---|
64 | t_photo_max(:,j) = t_photo%t_max_c(j) + t_photo%t_max_b(j)*tl(:) + t_photo%t_max_a(j)*tl(:)*tl(:) + ZeroCelsius |
---|
65 | |
---|
66 | ! |
---|
67 | ! 2 If the monthly temperature is too low, we set tmax < tmin. |
---|
68 | ! Therefore, photosynthesis will not be possible (we need tmin < t < tmax) |
---|
69 | ! |
---|
70 | |
---|
71 | WHERE ( t2m_month(:) .LT. t_photo_min(:,j) ) |
---|
72 | t_photo_max(:,j) = t_photo_min(:,j) - min_stomate |
---|
73 | ENDWHERE |
---|
74 | |
---|
75 | ENDDO |
---|
76 | |
---|
77 | END SUBROUTINE assim_temp |
---|
78 | |
---|
79 | END MODULE stomate_assimtemp |
---|