source: branches/publications/ORCHIDEE_GLUC_r6545/src_sticslai/gel.f90 @ 6737

Last change on this file since 6737 was 3751, checked in by albert.jornet, 8 years ago

New: CROP module. Done by Xuhui.

File size: 2.8 KB
Line 
1! ****************************************************************
2!   1) entre P_tdebgel (0 degrees C) et tgel10 : GEL varie de 1.0 à 0.9
3!   2) entre tgel10 et tgel90        : GEL varie de 0.9 à 0.1
4!   3) entre tgel90 et P_tletale       : GEL varie de 0.1 à 0.0
5! ****************************************************************
6! ml_com !
7! *-----------------------------------------------------------------------------------------------------------------------------------------------------------* c!
8!! This function calculates the frost index according to the temperatures
9!> - tdebgel, corresponding to the beginning of frost damage
10!> - tgel10, corresponding to 10 % of frost damages
11!> - tgel90, corresponding to 90 % of frost damages
12!> - tletale, corresponding to the lethal temperature for the plant
13! *-----------------------------------------------------------------------------------------------------------------------------------------------------------* c!
14
15
16module Divers_gel
17
18USE Stics
19
20IMPLICIT NONE
21PRIVATE
22PUBLIC GEL
23
24contains
25
26  real function GEL(codegel,t,tgel90,tgel10)
27 
28    implicit none
29   
30  !: Arguments
31    integer, intent(IN) :: codegel 
32    real,    intent(IN) :: t 
33    !real,    intent(IN) :: P_tletale  !> // PARAMETER // lethal temperature for the plant // degree C // PARPLT // 1
34    !real,    intent(IN) :: P_tdebgel  !> // PARAMETER // temperature of frost beginning // degree C // PARPLT // 1
35    real,    intent(IN) :: tgel10 
36    real,    intent(IN) :: tgel90 
37 
38  !: Variables locales
39    real :: a  !> 
40    real :: b 
41       
42        !: Pas de stress si codegel = 1
43        if (codegel == 1) then
44          GEL = 1.
45          return
46        endif
47 
48        !: Si t > P_tdebgel : pas de GEL
49        if (t >= P_tdebgel) then
50          GEL = 1.
51          return
52        endif
53       
54        !: De P_tdebgel à tgel10
55        if (t < P_tdebgel .and. t >= tgel10 .and. tgel10 < P_tdebgel) then
56          a = (0.9 - 1.0) / (tgel10 - P_tdebgel)
57          b = 1.0 - (a * P_tdebgel)
58          GEL = (a * t) + b
59          return
60        endif
61 
62        !: De tgel10 à tgel90
63        if (t < tgel10 .and. t >= tgel90 .and. tgel90 < tgel10) then
64          a = (0.9 - 0.1) / (tgel10 - tgel90)
65          b = 0.9 - (a * tgel10)
66          GEL = (a * t) + b
67          return
68        endif
69       
70        !: De tgel90 à P_tletale
71        if (t < tgel90 .and. t >= P_tletale .and. P_tletale < tgel90) then
72          a = (0. - 0.1) / (P_tletale - tgel90)
73          b = 0. - (a * P_tletale)
74          GEL = (a * t) + b
75          return
76        endif
77       
78        !: En dessous de P_tletale
79        if (t < P_tletale) then
80          GEL = 0.
81          return
82        endif
83       
84  return
85  end function GEL 
86end module Divers_gel 
Note: See TracBrowser for help on using the repository browser.