-
Notifications
You must be signed in to change notification settings - Fork 1
/
CSP_RESPIR.FOR
159 lines (126 loc) · 6.37 KB
/
CSP_RESPIR.FOR
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
C=======================================================================
C CSP_RESPIR Subroutine, O.H. Daza
C Based on RESPIR Subroutine, K.J.Boote, J.W.Jones, G. Hoogenboom
C Calculates maintenance respiration by stalk. Net photosynthate
C available, PGAVAL(j) is computed in the CSP_CASUPRO module.
C-----------------------------------------------------------------------
C REVISION HISTORY
C 01/01/1989 KJB Written.
C 10/15/1992 NBP Made into subroutine.
C 09/15/1998 CHP Modified for modular format
C 05/11/1999 GH Incorporated in CROPGRO
C 11/12/2001 OHD Modified for the CASUPRO sugarcane model
C 08/25/2003 FSR Incorporated into DSSAT 4.0 CASUPRO
C 07/26/2004 CHP Removed variables which were not being used
C 10/20/2005 FSR Revised for stalk-based output
C-----------------------------------------------------------------------
C Called from: CSP_CASUPRO
C Calls: None
C=======================================================================
SUBROUTINE CSP_RESPIR(CONTROL,
& LeafArea, LeafDist, LFWT, LMF, R30C2, !Input
& RES30C, RLF30C, SLAREF, StalkState, !Input
& StkPG, SUWT, TGRO, TGROAV, TOTALWT, !Input
& RO, RP, !Input/Output
& LeafMaint, MAINTR) !Output
!-----------------------------------------------------------------------
USE ModuleDefs !Definitions of constructed variable types,
! which contain control information, soil
! parameters, hourly weather data.
! TS defined in ModuleDefs.for
IMPLICIT NONE
SAVE
CHARACTER*4 StalkState(NumOfStalks,10)
INTEGER DAS, H, Stalk, Zone
INTEGER, PARAMETER :: CanopyLayers=3
REAL LMF, R30C2, RES30C, RLF30C, RL, RO, RP, SLAREF, SLASTK
REAL TGROAV, TGRO(TS), TRSFAC
REAL, DIMENSION(1:NumOfStalks) :: MAINTR,TOTALWT
REAL, DIMENSION(0:NumOfDays,NumOfStalks) :: LeafArea, LFWT, SUWT
REAL, DIMENSION(1:NumOfStalks,CanopyLayers) :: LeafDist,
& LeafMaint, StkPG
!-----------------------------------------------------------------------
! Define constructed variable types based on definitions in
! ModuleDefs.for.
TYPE (ControlType) CONTROL
! Transfer values from constructed data types into local variables.
DAS = CONTROL % DAS
C-----------------------------------------------------------------------
C Initialize output variables
DO Stalk = 1, NumOfStalks
MAINTR(Stalk) = 0
DO Zone = 1,3
LeafMaint(Stalk,Zone) = 0
END DO ! Zone = 1,Gro
END DO !
C-----------------------------------------------------------------------
C Hourly temperature effect on maintenance respiration (McCree, 1974)
TRSFAC = 0.0
DO H = 1,24
TRSFAC = TRSFAC + 0.044+0.0019*TGRO(H)+0.001*TGRO(H)**2
ENDDO
C-----------------------------------------------------------------------
C Convert hourly maintenance respiration to daily, temperature-based
C value. RES30C and RLF30C are the g CH2O/g DW/hr used in maintenance
C respiration for tiller and root DW, and leaf DW respectively; 30 C.
RL = (RLF30C * TRSFAC) / 1000 ! convert units from Cultivar file
RO = (RES30C * TRSFAC) / 1000 ! convert units from Cultivar file
RP = (R30C2 * TRSFAC) / 1000 ! convert units from Cultivar file
C-----------------------------------------------------------------------
! Maintenance respiration for each stalk. Sucrose is removed from
! maintenance costs, and an explicit respiration cost for leaves
! is now included (RLF30C).
! Note: Use DAS-1 since daily values not yet calculated when
! CSP_RESPIR is called.
DO Stalk = 1, NumOfStalks
IF (StalkState(Stalk,1) .EQ. 'LIVE') THEN
MAINTR(Stalk) = RO * (TOTALWT(Stalk)
& - (LFWT(DAS-1,Stalk)) + SUWT(DAS-1,Stalk))
! The following calculates a whole-stalk SLA, which is then
! applied to all canopy zones on the stalk. This is a more
! accurate representation of instantanious leaf DM than SLAREF.
IF (LFWT(DAS-1,Stalk) .GT. 0.0) THEN
SLASTK = LeafArea(DAS-1,Stalk)/LFWT(DAS-1,Stalk)
ELSE
SLASTK = SLAREF
END IF
DO Zone = 1,3
LeafMaint(Stalk,Zone) = RP * StkPG(Stalk,Zone)
& + RL * LeafDist(Stalk,Zone) / SLASTK
END DO ! Zone = 1,Ground
ELSE
MAINTR(Stalk) = 0
DO Zone = 1,3
LeafMaint(Stalk,Zone) = 0
END DO ! Zone = 1,Ground
END IF
END DO
!-----------------------------------------------------------------------
RETURN
END ! SUBROUTINE RESPIR
!-----------------------------------------------------------------------
! RESPIR variables:
!-----------------------------------------------------------------------
! LeafMaint(j) Maintenance respiration for leaves only
! (g[CH2O] / stalk j / d)
! MAINTR(j) Maintenance respiration for entire stalk (g[CH2O] / stalk j / d)
! PG Daily gross photosynthesis (g[CH2O] / m2 / d)
! R30C2 Respiration coefficient that depends on gross photosynthesis,
! value at 30C (g[CH2O] used / g[CH2O] fixed / hr)
! RES30C Respiration coefficient that depends on total plant mass,
! value at 30C (g CH2O/g DW/hr)
! RO Respiration coefficient that depends on total plant mass
! (g[CH2O] / g[tissue])
! RP proportion of the day's photosynthesis which is respired in the
! maintenance process
! StalkState(j,k) Condition k of stalk j. Currently, conditions are:
! k = 1 (LIVE or DEAD); 2 (PRIM or TILR); 3-10 unused
! StkPG(j) Daily gross photosynthesis for stalk j (g[CH2O] / stalk j / d)
! TOTALWT(j) Total weight of sugarcane stalk j, including a proportion of
! root tissue (g[tissue] / stalk j)
! TOTWT Mass of tissue assumed to require maintenance (g[tissue] / m2)
! TRSFAC Temperature effect on maintenance respiration
! TS Number of intermediate time steps (=24)
!-----------------------------------------------------------------------
! END SUBROUTINE RESPIR
!-----------------------------------------------------------------------