PageRenderTime 107ms CodeModel.GetById 17ms RepoModel.GetById 1ms app.codeStats 1ms

/wrfv2_fire/phys/module_sf_ssib.F

http://github.com/jbeezley/wrf-fire
FORTRAN Legacy | 6529 lines | 4263 code | 79 blank | 2187 comment | 60 complexity | 0731473777a90263eb0524243f12f129 MD5 | raw file
Possible License(s): AGPL-1.0
  1. MODULE module_sf_ssib
  2. !This version of SSiB land-surface model includes a multi-layer snow scheme
  3. !For better results, please use the SSiB vegetation map (geog_data_res in WPS)
  4. !References for the SSiB:
  5. !Xue et al. 1991, J. Climate, 4, 345-364.
  6. !Sun and Xue, 2001, Adv. in Atmos. Sci, 18, 335-354.
  7. !Xue et al., 2003, J. Geophy. Res. 108, D22, doi: 10.1029/2002JD003174.
  8. !Coding by Fernando De Sales and Zhengxin Liu (2011)
  9. REAL, PARAMETER :: CPAIR = 1004.6 &
  10. ,STEFAN = 5.669 * 10E-9 &
  11. ,GRAV = 9.81 &
  12. ,VKC = 0.4 &
  13. ,PIE = 3.14159265 &
  14. ,TIMCON = PIE/86400. &
  15. ,CLAI = 4.2 * 1000. * 0.2 &
  16. ,CW = 4.2 * 1000. * 1000. &
  17. ,TF = 273.16 &
  18. ,GASR = 287.05 &
  19. ,HLAT = 2.52E6 &
  20. ,SNOMEL = 370518.5 * 1000.
  21. INTEGER, PARAMETER :: ITRUNK = 3
  22. !crr snow
  23. REAL, PARAMETER :: SSISNOW = 0.04 &
  24. ,FLMIN = 0.03 &
  25. ,FLMAX = 0.10 &
  26. ,DZMIN = 0.002 &
  27. ,WOMIN = 0.0004 &
  28. ,CL = 4212.7 &
  29. ,DLM = 3.335d5 &
  30. ,RHOWATER = 1000.0 &
  31. ,DICE = 920.0 &
  32. ,DKSATSNOW= 0.01 &
  33. ,SNODEP_CR= 0.07
  34. INTEGER, PARAMETER :: N = 3 &
  35. ,N1 = 4 &
  36. ,N2 = 4
  37. !crr snow
  38. !ssib vegetation parameters
  39. REAL, DIMENSION (13,2,3,2) :: tran0,ref0
  40. REAL, DIMENSION (13,12,2) :: green0,vcover0,zlt0
  41. REAL, DIMENSION (13,2,3) :: rstpar0
  42. REAL, DIMENSION (13,12) :: z000,d0,z20,z10,rdc0,rbc0
  43. REAL, DIMENSION (13,3) :: depth0,soref0
  44. REAL, DIMENSION (13,2) :: chil0,topt0,tl0,tu0,defac0,ph10,ph20,rootd0
  45. REAL, DIMENSION (13) :: bee0,phsat0,poros0,satco0,slope0
  46. !
  47. data tran0/ &
  48. 0.5000000E-01, 0.5000000E-01, 0.5000000E-01, 0.5000000E-01, &
  49. 0.5000000E-01, 0.5000000E-01, 0.7000000E-01, 0.5000000E-01, &
  50. 0.5000000E-01, 0.5000000E-01, 0.1000000E-02, 0.5000000E-01, &
  51. 0.1000000E-02, &
  52. 0.1000000E-02, 0.1000000E-02, 0.1000000E-02, 0.1000000E-02, &
  53. 0.1000000E-02, 0.7000000E-01, 0.1000000E-02, 0.7000000E-01, &
  54. 0.1000000E-02, 0.7000000E-01, 0.1000000E-02, 0.7000000E-01, &
  55. 0.1000000E-02, &
  56. 0.2500000E+00, 0.2500000E+00, 0.1500000E+00, 0.1000000E+00, &
  57. 0.1000000E+00, 0.2500000E+00, 0.2475000E+00, 0.2500000E+00, &
  58. 0.2500000E+00, 0.2500000E+00, 0.1000000E-02, 0.2500000E+00, &
  59. 0.1000000E-02, &
  60. 0.1000000E-02, 0.1000000E-02, 0.1000000E-02, 0.1000000E-02, &
  61. 0.1000000E-02, 0.2475000E+00, 0.1000000E-02, 0.2475000E+00, &
  62. 0.1000000E-02, 0.2475000E+00, 0.1000000E-02, 0.2475000E+00, &
  63. 0.1000000E-02, &
  64. 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, &
  65. 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, &
  66. 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, &
  67. 0.0000000E+00, &
  68. 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, &
  69. 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, &
  70. 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, &
  71. 0.0000000E+00, &
  72. 0.1000000E-02, 0.1000000E-02, 0.1000000E-02, 0.1000000E-02, &
  73. 0.1000000E-02, 0.1000000E-02, 0.2200000E+00, 0.1000000E-02, &
  74. 0.1000000E-02, 0.1000000E-02, 0.1000000E-02, 0.1000000E-02, &
  75. 0.1000000E-02, &
  76. 0.1000000E-02, 0.1000000E-02, 0.1000000E-02, 0.1000000E-02, &
  77. 0.1000000E-02, 0.2200000E+00, 0.1000000E-02, 0.2200000E+00, &
  78. 0.1000000E-02, 0.2200000E+00, 0.1000000E-02, 0.2200000E+00, &
  79. 0.1000000E-02, &
  80. 0.1000000E-02, 0.1000000E-02, 0.1000000E-02, 0.1000000E-02, &
  81. 0.1000000E-02, 0.1000000E-02, 0.3750000E+00, 0.1000000E-02, &
  82. 0.1000000E-02, 0.1000000E-02, 0.1000000E-02, 0.1000000E-02, &
  83. 0.1000000E-02, &
  84. 0.1000000E-02, 0.1000000E-02, 0.1000000E-02, 0.1000000E-02, &
  85. 0.1000000E-02, 0.3750000E+00, 0.1000000E-02, 0.3750000E+00, &
  86. 0.1000000E-02, 0.3750000E+00, 0.1000000E-02, 0.3750000E+00, &
  87. 0.1000000E-02, &
  88. 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, &
  89. 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, &
  90. 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, &
  91. 0.0000000E+00, &
  92. 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, &
  93. 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, &
  94. 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, &
  95. 0.0000000E+00/
  96. data ref0/ &
  97. 0.1000000E+00, 0.1000000E+00, 0.7000000E-01, 0.7000000E-01, &
  98. 0.7000000E-01, 0.1000000E+00, 0.1050000E+00, 0.1000000E+00, &
  99. 0.1000000E+00, 0.1000000E+00, 0.1000000E-02, 0.1000000E+00, &
  100. 0.1000000E-02, &
  101. 0.1000000E-02, 0.1000000E-02, 0.1000000E-02, 0.1000000E-02, &
  102. 0.1000000E-02, 0.1050000E+00, 0.1000000E-02, 0.1050000E+00, &
  103. 0.1000000E-02, 0.1050000E+00, 0.1000000E-02, 0.1050000E+00, &
  104. 0.1000000E-02, &
  105. 0.4500000E+00, 0.4500000E+00, 0.4000000E+00, 0.3500000E+00, &
  106. 0.3500000E+00, 0.4500000E+00, 0.5775000E+00, 0.4500000E+00, &
  107. 0.4500000E+00, 0.4500000E+00, 0.1000000E-02, 0.4500000E+00, &
  108. 0.1000000E-02, &
  109. 0.1000000E-02, 0.1000000E-02, 0.1000000E-02, 0.1000000E-02, &
  110. 0.1000000E-02, 0.5775000E+00, 0.1000000E-02, 0.5775000E+00, &
  111. 0.1000000E-02, 0.5775000E+00, 0.1000000E-02, 0.5775000E+00, &
  112. 0.1000000E-02, &
  113. 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, &
  114. 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, &
  115. 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, &
  116. 0.0000000E+00, &
  117. 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, &
  118. 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, &
  119. 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, &
  120. 0.0000000E+00, &
  121. 0.1600000E+00, 0.1600000E+00, 0.1600000E+00, 0.1600000E+00, &
  122. 0.1600000E+00, 0.1600000E+00, 0.3600000E+00, 0.1600000E+00, &
  123. 0.1600000E+00, 0.1600000E+00, 0.1000000E-02, 0.1600000E+00, &
  124. 0.1000000E-02, &
  125. 0.1000000E-02, 0.1000000E-02, 0.1000000E-02, 0.1000000E-02, &
  126. 0.1000000E-02, 0.3600000E+00, 0.1000000E-02, 0.3600000E+00, &
  127. 0.1000000E-02, 0.3600000E+00, 0.1000000E-02, 0.3600000E+00, &
  128. 0.1000000E-02, &
  129. 0.3900000E+00, 0.3900000E+00, 0.3900000E+00, 0.3900000E+00, &
  130. 0.3900000E+00, 0.3900000E+00, 0.5775000E+00, 0.3900000E+00, &
  131. 0.3900000E+00, 0.3900000E+00, 0.1000000E-02, 0.3900000E+00, &
  132. 0.1000000E-02, &
  133. 0.1000000E-02, 0.1000000E-02, 0.1000000E-02, 0.1000000E-02, &
  134. 0.1000000E-02, 0.5775000E+00, 0.1000000E-02, 0.5775000E+00, &
  135. 0.1000000E-02, 0.5775000E+00, 0.1000000E-02, 0.5775000E+00, &
  136. 0.1000000E-02, &
  137. 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, &
  138. 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, &
  139. 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, &
  140. 0.0000000E+00, &
  141. 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, &
  142. 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, &
  143. 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, &
  144. 0.0000000E+00/
  145. data green0/ &
  146. 0.9050000E+00, 0.2564000E-01, 0.8680600E+00, 0.9132400E+00, &
  147. 0.2475200E+00, 0.6319100E+00, 0.5681800E+00, 0.7978700E+00, &
  148. 0.8364300E+00, 0.4512600E+00, 0.1000000E-03, 0.2083300E+00, &
  149. 0.1000000E-03, &
  150. 0.9050000E+00, 0.2564000E-01, 0.8717700E+00, 0.9170300E+00, &
  151. 0.2475200E+00, 0.6566600E+00, 0.6218900E+00, 0.5319100E+00, &
  152. 0.7172100E+00, 0.4512600E+00, 0.1000000E-03, 0.2083300E+00, &
  153. 0.1000000E-03, &
  154. 0.9050000E+00, 0.4153800E+00, 0.8847300E+00, 0.9226600E+00, &
  155. 0.2475200E+00, 0.5176000E+00, 0.6637200E+00, 0.3623200E+00, &
  156. 0.2577300E+00, 0.4512600E+00, 0.1000000E-03, 0.4411800E+00, &
  157. 0.1000000E-03, &
  158. 0.9050000E+00, 0.7594900E+00, 0.9061000E+00, 0.9247000E+00, &
  159. 0.6637200E+00, 0.6527400E+00, 0.6972100E+00, 0.5681800E+00, &
  160. 0.7246400E+00, 0.4512600E+00, 0.1000000E-03, 0.7594900E+00, &
  161. 0.1000000E-03, &
  162. 0.9050000E+00, 0.8875700E+00, 0.9164200E+00, 0.9266400E+00, &
  163. 0.8104700E+00, 0.6527400E+00, 0.8104700E+00, 0.5681800E+00, &
  164. 0.1736100E+00, 0.4512600E+00, 0.1000000E-03, 0.8875700E+00, &
  165. 0.1000000E-03, &
  166. 0.9050000E+00, 0.9252000E+00, 0.9259300E+00, 0.9045800E+00, &
  167. 0.8680600E+00, 0.7246400E+00, 0.9079900E+00, 0.5681800E+00, &
  168. 0.5681800E+00, 0.6218900E+00, 0.1000000E-03, 0.9252000E+00, &
  169. 0.1000000E-03, &
  170. 0.9050000E+00, 0.8364300E+00, 0.9293700E+00, 0.9021600E+00, &
  171. 0.6040900E+00, 0.8712500E+00, 0.8132000E+00, 0.5681800E+00, &
  172. 0.5681800E+00, 0.9200800E+00, 0.1000000E-03, 0.8364300E+00, &
  173. 0.1000000E-03, &
  174. 0.9050000E+00, 0.6967200E+00, 0.8209400E+00, 0.9126500E+00, &
  175. 0.5854000E+00, 0.7966000E+00, 0.3943200E+00, 0.8680600E+00, &
  176. 0.7246400E+00, 0.6970300E+00, 0.1000000E-03, 0.6967200E+00, &
  177. 0.1000000E-03, &
  178. 0.9050000E+00, 0.3306900E+00, 0.7123000E+00, 0.8982800E+00, &
  179. 0.4990000E+00, 0.7654600E+00, 0.4434600E+00, 0.6505600E+00, &
  180. 0.8403400E+00, 0.7567000E-01, 0.1000000E-03, 0.3439200E+00, &
  181. 0.1000000E-03, &
  182. 0.9050000E+00, 0.1656400E+00, 0.6145700E+00, 0.8548200E+00, &
  183. 0.3834400E+00, 0.6146100E+00, 0.5434800E+00, 0.5154600E+00, &
  184. 0.8680600E+00, 0.4512600E+00, 0.1000000E-03, 0.1785700E+00, &
  185. 0.1000000E-03, &
  186. 0.9050000E+00, 0.1538000E-01, 0.8599500E+00, 0.8733600E+00, &
  187. 0.2487600E+00, 0.5086500E+00, 0.5531000E+00, 0.6302500E+00, &
  188. 0.8875700E+00, 0.4512600E+00, 0.1000000E-03, 0.1470600E+00, &
  189. 0.1000000E-03, &
  190. 0.9050000E+00, 0.2564000E-01, 0.8599500E+00, 0.9132400E+00, &
  191. 0.1984100E+00, 0.7898900E+00, 0.4975100E+00, 0.7978700E+00, &
  192. 0.9132400E+00, 0.4512600E+00, 0.1000000E-03, 0.2083300E+00, &
  193. 0.1000000E-03, &
  194. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  195. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  196. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  197. 0.1000000E-03, &
  198. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  199. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  200. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  201. 0.1000000E-03, &
  202. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  203. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  204. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  205. 0.1000000E-03, &
  206. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  207. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  208. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  209. 0.1000000E-03, &
  210. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  211. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  212. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  213. 0.1000000E-03, &
  214. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  215. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  216. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  217. 0.1000000E-03, &
  218. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  219. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  220. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  221. 0.1000000E-03, &
  222. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  223. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  224. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  225. 0.1000000E-03, &
  226. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  227. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  228. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  229. 0.1000000E-03, &
  230. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  231. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  232. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  233. 0.1000000E-03, &
  234. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  235. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  236. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  237. 0.1000000E-03, &
  238. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  239. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  240. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  241. 0.1000000E-03/
  242. data vcover0/ &
  243. 0.9800000E+00, 0.7500000E+00, 0.7500000E+00, 0.7500000E+00, &
  244. 0.5000000E+00, 0.3000000E+00, 0.9000000E+00, 0.1000000E+00, &
  245. 0.1000000E+00, 0.3000000E+00, 0.1000000E-04, 0.7500000E-01, &
  246. 0.1000000E-04, &
  247. 0.9800000E+00, 0.7500000E+00, 0.7500000E+00, 0.7500000E+00, &
  248. 0.5000000E+00, 0.3000000E+00, 0.9000000E+00, 0.1000000E+00, &
  249. 0.1000000E+00, 0.3000000E+00, 0.1000000E-04, 0.7500000E-01, &
  250. 0.1000000E-04, &
  251. 0.9800000E+00, 0.7500000E+00, 0.7500000E+00, 0.7500000E+00, &
  252. 0.5000000E+00, 0.3000000E+00, 0.9000000E+00, 0.1000000E+00, &
  253. 0.1000000E+00, 0.3000000E+00, 0.1000000E-04, 0.7500000E-01, &
  254. 0.1000000E-04, &
  255. 0.9800000E+00, 0.7500000E+00, 0.7500000E+00, 0.7500000E+00, &
  256. 0.5000000E+00, 0.3000000E+00, 0.9000000E+00, 0.1000000E+00, &
  257. 0.1000000E+00, 0.3000000E+00, 0.1000000E-04, 0.7500000E-01, &
  258. 0.1000000E-04, &
  259. 0.9800000E+00, 0.7500000E+00, 0.7500000E+00, 0.7500000E+00, &
  260. 0.5000000E+00, 0.3000000E+00, 0.9000000E+00, 0.1000000E+00, &
  261. 0.1000000E+00, 0.3000000E+00, 0.1000000E-04, 0.7500000E-01, &
  262. 0.1000000E-04, &
  263. 0.9800000E+00, 0.7500000E+00, 0.7500000E+00, 0.7500000E+00, &
  264. 0.5000000E+00, 0.3000000E+00, 0.9000000E+00, 0.1000000E+00, &
  265. 0.1000000E+00, 0.3000000E+00, 0.1000000E-04, 0.7500000E-01, &
  266. 0.1000000E-04, &
  267. 0.9800000E+00, 0.7500000E+00, 0.7500000E+00, 0.7500000E+00, &
  268. 0.5000000E+00, 0.3000000E+00, 0.9000000E+00, 0.1000000E+00, &
  269. 0.1000000E+00, 0.3000000E+00, 0.1000000E-04, 0.7500000E-01, &
  270. 0.1000000E-04, &
  271. 0.9800000E+00, 0.7500000E+00, 0.7500000E+00, 0.7500000E+00, &
  272. 0.5000000E+00, 0.3000000E+00, 0.9000000E+00, 0.1000000E+00, &
  273. 0.1000000E+00, 0.3000000E+00, 0.1000000E-04, 0.7500000E-01, &
  274. 0.1000000E-04, &
  275. 0.9800000E+00, 0.7500000E+00, 0.7500000E+00, 0.7500000E+00, &
  276. 0.5000000E+00, 0.3000000E+00, 0.9000000E+00, 0.1000000E+00, &
  277. 0.1000000E+00, 0.3000000E+00, 0.1000000E-04, 0.7500000E-01, &
  278. 0.1000000E-04, &
  279. 0.9800000E+00, 0.7500000E+00, 0.7500000E+00, 0.7500000E+00, &
  280. 0.5000000E+00, 0.3000000E+00, 0.9000000E+00, 0.1000000E+00, &
  281. 0.1000000E+00, 0.3000000E+00, 0.1000000E-04, 0.7500000E-01, &
  282. 0.1000000E-04, &
  283. 0.9800000E+00, 0.7500000E+00, 0.7500000E+00, 0.7500000E+00, &
  284. 0.5000000E+00, 0.3000000E+00, 0.9000000E+00, 0.1000000E+00, &
  285. 0.1000000E+00, 0.3000000E+00, 0.1000000E-04, 0.7500000E-01, &
  286. 0.1000000E-04, &
  287. 0.9800000E+00, 0.7500000E+00, 0.7500000E+00, 0.7500000E+00, &
  288. 0.5000000E+00, 0.3000000E+00, 0.9000000E+00, 0.1000000E+00, &
  289. 0.1000000E+00, 0.3000000E+00, 0.1000000E-04, 0.7500000E-01, &
  290. 0.1000000E-04, &
  291. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  292. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  293. 0.1000000E-03, 0.1000000E-03, 0.1000000E-04, 0.1000000E-03, &
  294. 0.1000000E-04, &
  295. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  296. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  297. 0.1000000E-03, 0.1000000E-03, 0.1000000E-04, 0.1000000E-03, &
  298. 0.1000000E-04, &
  299. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  300. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  301. 0.1000000E-03, 0.1000000E-03, 0.1000000E-04, 0.1000000E-03, &
  302. 0.1000000E-04, &
  303. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  304. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  305. 0.1000000E-03, 0.1000000E-03, 0.1000000E-04, 0.1000000E-03, &
  306. 0.1000000E-04, &
  307. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  308. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  309. 0.1000000E-03, 0.1000000E-03, 0.1000000E-04, 0.1000000E-03, &
  310. 0.1000000E-04, &
  311. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  312. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  313. 0.1000000E-03, 0.1000000E-03, 0.1000000E-04, 0.1000000E-03, &
  314. 0.1000000E-04, &
  315. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  316. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  317. 0.1000000E-03, 0.1000000E-03, 0.1000000E-04, 0.1000000E-03, &
  318. 0.1000000E-04, &
  319. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  320. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  321. 0.1000000E-03, 0.1000000E-03, 0.1000000E-04, 0.1000000E-03, &
  322. 0.1000000E-04, &
  323. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  324. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  325. 0.1000000E-03, 0.1000000E-03, 0.1000000E-04, 0.1000000E-03, &
  326. 0.1000000E-04, &
  327. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  328. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  329. 0.1000000E-03, 0.1000000E-03, 0.1000000E-04, 0.1000000E-03, &
  330. 0.1000000E-04, &
  331. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  332. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  333. 0.1000000E-03, 0.1000000E-03, 0.1000000E-04, 0.1000000E-03, &
  334. 0.1000000E-04, &
  335. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  336. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  337. 0.1000000E-03, 0.1000000E-03, 0.1000000E-04, 0.1000000E-03, &
  338. 0.1000000E-04/
  339. data chil0/ &
  340. 0.1000000E+00, 0.2500000E+00, 0.1300000E+00, 0.1000000E-01, &
  341. 0.1000000E-01, 0.1000000E-01, -0.3000000E+00, 0.1000000E-01, &
  342. 0.1000000E-01, 0.2000000E+00, 0.1000000E-01, -0.2000000E-01, &
  343. 0.1000000E-01, &
  344. 0.1000000E+00, 0.2500000E+00, 0.1300000E+00, 0.1000000E-01, &
  345. 0.1000000E-01, -0.3000000E+00, -0.3000000E+00, -0.3000000E+00, &
  346. 0.1000000E-01, 0.2000000E+00, 0.1000000E-01, -0.2000000E-01, &
  347. 0.1000000E-01/
  348. data rstpar0/ &
  349. 0.2335900E+04, 0.9802230E+04, 0.6335955E+04, 0.2869680E+04, &
  350. 0.2869680E+04, 0.5665121E+05, 0.2582010E+04, 0.9398942E+05, &
  351. 0.9398942E+05, 0.9802230E+04, 0.1000000E+04, 0.7459000E+04, &
  352. 0.1000000E+04, &
  353. 0.2335900E+04, 0.9802230E+04, 0.6335955E+04, 0.2869680E+04, &
  354. 0.2869680E+04, 0.2582010E+04, 0.2582010E+04, 0.2582010E+04, &
  355. 0.1000000E+01, 0.2582010E+04, 0.1000000E+04, 0.7459000E+04, &
  356. 0.1000000E+04, &
  357. 0.1450000E-01, 0.1055000E+02, 0.7120000E+01, 0.3690000E+01, &
  358. 0.3690000E+01, 0.1083000E+02, 0.1090000E+01, 0.1000000E-01, &
  359. 0.1000000E-01, 0.1055000E+02, 0.1000000E+04, 0.5700000E+01, &
  360. 0.1000000E+04, &
  361. 0.1450000E-01, 0.1055000E+02, 0.7120000E+01, 0.3690000E+01, &
  362. 0.3690000E+01, 0.1090000E+01, 0.1090000E+01, 0.1090000E+01, &
  363. 0.1000000E+01, 0.1090000E+01, 0.1000000E+04, 0.5700000E+01, &
  364. 0.1000000E+04, &
  365. 0.1534900E+03, 0.1800000E+03, 0.2065000E+03, 0.2330000E+03, &
  366. 0.2330000E+03, 0.1650000E+03, 0.1100000E+03, 0.8550000E+03, &
  367. 0.8550000E+03, 0.1800000E+03, 0.1000000E+04, 0.2520000E+02, &
  368. 0.1000000E+04, &
  369. 0.1534900E+03, 0.1800000E+03, 0.2065000E+03, 0.2330000E+03, &
  370. 0.2330000E+03, 0.1100000E+03, 0.1100000E+03, 0.1100000E+03, &
  371. 0.1000000E+01, 0.1100000E+03, 0.1000000E+04, 0.2520000E+02, &
  372. 0.1000000E+04/
  373. data topt0/ &
  374. 0.3030000E+03, 0.3000000E+03, 0.2940000E+03, 0.2880000E+03, &
  375. 0.2880000E+03, 0.2970000E+03, 0.3130000E+03, 0.3150000E+03, &
  376. 0.3150000E+03, 0.3000000E+03, 0.3100000E+03, 0.3000000E+03, &
  377. 0.3100000E+03, &
  378. 0.3030000E+03, 0.3000000E+03, 0.2940000E+03, 0.2880000E+03, &
  379. 0.2880000E+03, 0.3120000E+03, 0.3130000E+03, 0.3130000E+03, &
  380. 0.3150000E+03, 0.2890000E+03, 0.3100000E+03, 0.3000000E+03, &
  381. 0.3100000E+03/
  382. data tl0/ &
  383. 0.2730000E+03, 0.2730000E+03, 0.2700000E+03, 0.2680000E+03, &
  384. 0.2680000E+03, 0.2730000E+03, 0.2830000E+03, 0.2830000E+03, &
  385. 0.2830000E+03, 0.2730000E+03, 0.3000000E+03, 0.2730000E+03, &
  386. 0.3000000E+03, &
  387. 0.2730000E+03, 0.2730000E+03, 0.2700000E+03, 0.2680000E+03, &
  388. 0.2680000E+03, 0.2730000E+03, 0.2830000E+03, 0.2830000E+03, &
  389. 0.2830000E+03, 0.2730000E+03, 0.3000000E+03, 0.2730000E+03, &
  390. 0.3000000E+03/
  391. data tu0/ &
  392. 0.3180000E+03, 0.3180000E+03, 0.3150000E+03, 0.3130000E+03, &
  393. 0.3130000E+03, 0.3230000E+03, 0.3280000E+03, 0.3230000E+03, &
  394. 0.3230000E+03, 0.3230000E+03, 0.3200000E+03, 0.3180000E+03, &
  395. 0.3200000E+03, &
  396. 0.3180000E+03, 0.3180000E+03, 0.3150000E+03, 0.3130000E+03, &
  397. 0.3130000E+03, 0.3230000E+03, 0.3280000E+03, 0.3280000E+03, &
  398. 0.3230000E+03, 0.3090000E+03, 0.3200000E+03, 0.3150000E+03, &
  399. 0.3200000E+03/
  400. data defac0/ &
  401. 0.2730000E-01, 0.3570000E-01, 0.3400000E-01, 0.3100000E-01, &
  402. 0.3100000E-01, 0.3570000E-01, 0.2380000E-01, 0.2750000E-01, &
  403. 0.2750000E-01, 0.2750000E-01, 0.0000000E+00, 0.0000000E+00, &
  404. 0.0000000E+00, &
  405. 0.2730000E-01, 0.3570000E-01, 0.3400000E-01, 0.3100000E-01, &
  406. 0.3100000E-01, 0.2380000E-01, 0.2380000E-01, 0.2380000E-01, &
  407. 0.2380000E-01, 0.2380000E-01, 0.0000000E+00, 0.0000000E+00, &
  408. 0.0000000E+00/
  409. data ph10/ &
  410. 0.1200000E+01, 0.5350000E+01, 0.1920000E+01, 0.3700000E+01, &
  411. 0.7800000E+01, 0.1800000E+01, 0.1730000E+01, 0.1920000E+01, &
  412. 0.1390000E+01, 0.9600000E+00, 0.3000000E+01, 0.1800000E+01, &
  413. 0.5000000E+01, &
  414. 0.1200000E+01, 0.5350000E+01, 0.1920000E+01, 0.3700000E+01, &
  415. 0.7800000E+01, 0.1800000E+01, 0.1730000E+01, 0.1920000E+01, &
  416. 0.1390000E+01, 0.9600000E+00, 0.3000000E+01, 0.1800000E+01, &
  417. 0.5000000E+01/
  418. data ph20/ &
  419. 0.6250000E+01, 0.5570000E+01, 0.5730000E+01, 0.5530000E+01, &
  420. 0.5660000E+01, 0.5670000E+01, 0.5800000E+01, 0.5610000E+01, &
  421. 0.6370000E+01, 0.5370000E+01, 0.6000000E+01, 0.5670000E+01, &
  422. 0.6000000E+01, &
  423. 0.6250000E+01, 0.5570000E+01, 0.5730000E+01, 0.5530000E+01, &
  424. 0.5660000E+01, 0.5670000E+01, 0.5800000E+01, 0.5610000E+01, &
  425. 0.6370000E+01, 0.5370000E+01, 0.6000000E+01, 0.5670000E+01, &
  426. 0.6000000E+01/
  427. data zlt0/ &
  428. 0.5014160E+01, 0.3900000E+00, 0.3456000E+01, 0.6570000E+01, &
  429. 0.4040000E+00, 0.1766000E+01, 0.7040000E+00, 0.5780000E+00, &
  430. 0.1076000E+01, 0.3776000E+00, 0.1000000E-03, 0.4800000E-01, &
  431. 0.1000000E-03, &
  432. 0.5014160E+01, 0.3900000E+00, 0.3556000E+01, 0.6870000E+01, &
  433. 0.4040000E+00, 0.1546000E+01, 0.8040000E+00, 0.5780000E+00, &
  434. 0.9760000E+00, 0.3776000E+00, 0.1000000E-03, 0.4800000E-01, &
  435. 0.1000000E-03, &
  436. 0.5014160E+01, 0.6500000E+00, 0.3956000E+01, 0.7370000E+01, &
  437. 0.4040000E+00, 0.1416000E+01, 0.9040000E+00, 0.4480000E+00, &
  438. 0.7760000E+00, 0.3776000E+00, 0.1000000E-03, 0.6800000E-01, &
  439. 0.1000000E-03, &
  440. 0.5014160E+01, 0.1580000E+01, 0.4856000E+01, 0.7570000E+01, &
  441. 0.9040000E+00, 0.1216000E+01, 0.1004000E+01, 0.2880000E+00, &
  442. 0.2760000E+00, 0.3776000E+00, 0.1000000E-03, 0.1580000E+00, &
  443. 0.1000000E-03, &
  444. 0.5014160E+01, 0.3380000E+01, 0.5456000E+01, 0.7770000E+01, &
  445. 0.1604000E+01, 0.1186000E+01, 0.1604000E+01, 0.2580000E+00, &
  446. 0.5760000E+00, 0.3776000E+00, 0.1000000E-03, 0.3380000E+00, &
  447. 0.1000000E-03, &
  448. 0.5014160E+01, 0.5080000E+01, 0.6156000E+01, 0.8070000E+01, &
  449. 0.2304000E+01, 0.1416000E+01, 0.3304000E+01, 0.2580000E+00, &
  450. 0.1760000E+00, 0.5076000E+00, 0.1000000E-03, 0.5080000E+00, &
  451. 0.1000000E-03, &
  452. 0.5014160E+01, 0.5380000E+01, 0.6456000E+01, 0.7870000E+01, &
  453. 0.4304000E+01, 0.2606000E+01, 0.4304000E+01, 0.2580000E+00, &
  454. 0.1760000E+00, 0.1737600E+01, 0.1000000E-03, 0.5380000E+00, &
  455. 0.1000000E-03, &
  456. 0.5014160E+01, 0.4880000E+01, 0.6456000E+01, 0.7670000E+01, &
  457. 0.2904000E+01, 0.5206000E+01, 0.3804000E+01, 0.8080000E+00, &
  458. 0.2760000E+00, 0.1937600E+01, 0.1000000E-03, 0.4880000E+00, &
  459. 0.1000000E-03, &
  460. 0.5014160E+01, 0.3780000E+01, 0.5756000E+01, 0.7570000E+01, &
  461. 0.2004000E+01, 0.4556000E+01, 0.1804000E+01, 0.1508000E+01, &
  462. 0.4760000E+00, 0.1477600E+01, 0.1000000E-03, 0.3780000E+00, &
  463. 0.1000000E-03, &
  464. 0.5014160E+01, 0.1630000E+01, 0.4556000E+01, 0.7370000E+01, &
  465. 0.1304000E+01, 0.3816000E+01, 0.1104000E+01, 0.1148000E+01, &
  466. 0.5760000E+00, 0.3776000E+00, 0.1000000E-03, 0.1680000E+00, &
  467. 0.1000000E-03, &
  468. 0.5014160E+01, 0.6500000E+00, 0.3256000E+01, 0.6870000E+01, &
  469. 0.8040000E+00, 0.2806000E+01, 0.9040000E+00, 0.7480000E+00, &
  470. 0.6760000E+00, 0.3776000E+00, 0.1000000E-03, 0.6800000E-01, &
  471. 0.1000000E-03, &
  472. 0.5014160E+01, 0.3900000E+00, 0.3256000E+01, 0.6570000E+01, &
  473. 0.5040000E+00, 0.1866000E+01, 0.8040000E+00, 0.5780000E+00, &
  474. 0.8760000E+00, 0.3776000E+00, 0.1000000E-03, 0.4800000E-01, &
  475. 0.1000000E-03, &
  476. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  477. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  478. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  479. 0.1000000E-03, &
  480. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  481. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  482. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  483. 0.1000000E-03, &
  484. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  485. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  486. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  487. 0.1000000E-03, &
  488. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  489. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  490. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  491. 0.1000000E-03, &
  492. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  493. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  494. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  495. 0.1000000E-03, &
  496. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  497. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  498. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  499. 0.1000000E-03, &
  500. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  501. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  502. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  503. 0.1000000E-03, &
  504. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  505. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  506. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  507. 0.1000000E-03, &
  508. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  509. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  510. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  511. 0.1000000E-03, &
  512. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  513. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  514. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  515. 0.1000000E-03, &
  516. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  517. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  518. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  519. 0.1000000E-03, &
  520. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  521. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  522. 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, 0.1000000E-03, &
  523. 0.1000000E-03/
  524. data z000/ &
  525. 0.2652970E+01, 0.5201000E+00, 0.5706300E+00, 0.1112210E+01, &
  526. 0.6414000E+00, 0.8427100E+00, 0.7771000E-01, 0.2446700E+00, &
  527. 0.6559000E-01, 0.7524000E-01, 0.1118000E-01, 0.1448500E+00, &
  528. 0.1011000E-01, &
  529. 0.2652970E+01, 0.5201000E+00, 0.5696600E+00, 0.1102780E+01, &
  530. 0.6414000E+00, 0.8087800E+00, 0.7779000E-01, 0.2446700E+00, &
  531. 0.6549000E-01, 0.7524000E-01, 0.1118000E-01, 0.1448500E+00, &
  532. 0.1011000E-01, &
  533. 0.2652970E+01, 0.6664900E+00, 0.5656600E+00, 0.1087660E+01, &
  534. 0.6414000E+00, 0.7875000E+00, 0.7785000E-01, 0.2272100E+00, &
  535. 0.6521000E-01, 0.7524000E-01, 0.1118000E-01, 0.1752100E+00, &
  536. 0.1011000E-01, &
  537. 0.2652970E+01, 0.9105300E+00, 0.5654400E+00, 0.1081830E+01, &
  538. 0.8633500E+00, 0.7284100E+00, 0.7788000E-01, 0.1998800E+00, &
  539. 0.6360000E-01, 0.7524000E-01, 0.1118000E-01, 0.2871900E+00, &
  540. 0.1011000E-01, &
  541. 0.2652970E+01, 0.1031200E+01, 0.5592300E+00, 0.1076120E+01, &
  542. 0.9728300E+00, 0.7284100E+00, 0.7779000E-01, 0.1998800E+00, &
  543. 0.6480000E-01, 0.7524000E-01, 0.1118000E-01, 0.4302000E+00, &
  544. 0.1011000E-01, &
  545. 0.2652970E+01, 0.1043680E+01, 0.5524400E+00, 0.1067790E+01, &
  546. 0.1005600E+01, 0.7875000E+00, 0.7712000E-01, 0.1998800E+00, &
  547. 0.6331000E-01, 0.7575000E-01, 0.1118000E-01, 0.5087600E+00, &
  548. 0.1011000E-01, &
  549. 0.2652970E+01, 0.1041940E+01, 0.5497000E+00, 0.1073310E+01, &
  550. 0.9967700E+00, 0.9266800E+00, 0.7594000E-01, 0.1998800E+00, &
  551. 0.6331000E-01, 0.7767000E-01, 0.1118000E-01, 0.5200300E+00, &
  552. 0.1011000E-01, &
  553. 0.2652970E+01, 0.1037530E+01, 0.5497000E+00, 0.1078960E+01, &
  554. 0.1011190E+01, 0.9715300E+00, 0.7658000E-01, 0.2674000E+00, &
  555. 0.6360000E-01, 0.7782000E-01, 0.1118000E-01, 0.5009500E+00, &
  556. 0.1011000E-01, &
  557. 0.2652970E+01, 0.1036510E+01, 0.5562600E+00, 0.1081830E+01, &
  558. 0.9965000E+00, 0.9658800E+00, 0.7776000E-01, 0.2923300E+00, &
  559. 0.6446000E-01, 0.7745000E-01, 0.1118000E-01, 0.4503800E+00, &
  560. 0.1011000E-01, &
  561. 0.2652970E+01, 0.9170700E+00, 0.5686600E+00, 0.1087660E+01, &
  562. 0.9386100E+00, 0.9555100E+00, 0.7790000E-01, 0.2803400E+00, &
  563. 0.6480000E-01, 0.7524000E-01, 0.1118000E-01, 0.2973700E+00, &
  564. 0.1011000E-01, &
  565. 0.2652970E+01, 0.6664900E+00, 0.5725100E+00, 0.1102780E+01, &
  566. 0.8346400E+00, 0.9204000E+00, 0.7785000E-01, 0.2580600E+00, &
  567. 0.6510000E-01, 0.7524000E-01, 0.1118000E-01, 0.1752100E+00, &
  568. 0.1011000E-01, &
  569. 0.2652970E+01, 0.5201000E+00, 0.5725100E+00, 0.1112210E+01, &
  570. 0.7049800E+00, 0.8427100E+00, 0.7779000E-01, 0.2446700E+00, &
  571. 0.6537000E-01, 0.7524000E-01, 0.1118000E-01, 0.1448500E+00, &
  572. 0.1011000E-01/
  573. data d0/ &
  574. 0.2737261E+02, 0.1366377E+02, 0.1813464E+02, 0.1376361E+02, &
  575. 0.9193320E+01, 0.1390777E+02, 0.2185200E+00, 0.2812600E+01, &
  576. 0.1638000E+00, 0.1062900E+00, 0.6000000E-04, 0.6314240E+01, &
  577. 0.4000000E-04, &
  578. 0.2737261E+02, 0.1366377E+02, 0.1814677E+02, 0.1380041E+02, &
  579. 0.9193320E+01, 0.1376090E+02, 0.2265800E+00, 0.2812600E+01, &
  580. 0.1548100E+00, 0.1062900E+00, 0.6000000E-04, 0.6314240E+01, &
  581. 0.4000000E-04, &
  582. 0.2737261E+02, 0.1461883E+02, 0.1819051E+02, 0.1385740E+02, &
  583. 0.9193320E+01, 0.1367074E+02, 0.2332800E+00, 0.2662290E+01, &
  584. 0.1343400E+00, 0.1062900E+00, 0.6000000E-04, 0.7639520E+01, &
  585. 0.4000000E-04, &
  586. 0.2737261E+02, 0.1569677E+02, 0.1825890E+02, 0.1387880E+02, &
  587. 0.9903400E+01, 0.1344527E+02, 0.2389500E+00, 0.2390910E+01, &
  588. 0.6191000E-01, 0.1062900E+00, 0.6000000E-04, 0.1070958E+02, &
  589. 0.4000000E-04, &
  590. 0.2737261E+02, 0.1632865E+02, 0.1829956E+02, 0.1389946E+02, &
  591. 0.1030010E+02, 0.1344527E+02, 0.2605400E+00, 0.2390910E+01, &
  592. 0.1096800E+00, 0.1062900E+00, 0.6000000E-04, 0.1278272E+02, &
  593. 0.4000000E-04, &
  594. 0.2737261E+02, 0.1662263E+02, 0.1833903E+02, 0.1392915E+02, &
  595. 0.1053455E+02, 0.1367074E+02, 0.2988000E+00, 0.2390910E+01, &
  596. 0.5103000E-01, 0.1229900E+00, 0.6000000E-04, 0.1356813E+02, &
  597. 0.4000000E-04, &
  598. 0.2737261E+02, 0.1666297E+02, 0.1835387E+02, 0.1390953E+02, &
  599. 0.1091967E+02, 0.1425275E+02, 0.3251800E+00, 0.2390910E+01, &
  600. 0.5103000E-01, 0.2152100E+00, 0.6000000E-04, 0.1366182E+02, &
  601. 0.4000000E-04, &
  602. 0.2737261E+02, 0.1660123E+02, 0.1835387E+02, 0.1388922E+02, &
  603. 0.1068047E+02, 0.1459719E+02, 0.3130700E+00, 0.2974600E+01, &
  604. 0.6191000E-01, 0.2289700E+00, 0.6000000E-04, 0.1349985E+02, &
  605. 0.4000000E-04, &
  606. 0.2737261E+02, 0.1641343E+02, 0.1831739E+02, 0.1387880E+02, &
  607. 0.1044517E+02, 0.1452246E+02, 0.2649800E+00, 0.3137710E+01, &
  608. 0.9547000E-01, 0.1996100E+00, 0.6000000E-04, 0.1301951E+02, &
  609. 0.4000000E-04, &
  610. 0.2737261E+02, 0.1572679E+02, 0.1823553E+02, 0.1385740E+02, &
  611. 0.1016423E+02, 0.1443002E+02, 0.2438100E+00, 0.3062460E+01, &
  612. 0.1096800E+00, 0.1062900E+00, 0.6000000E-04, 0.1090759E+02, &
  613. 0.4000000E-04, &
  614. 0.2737261E+02, 0.1461883E+02, 0.1810866E+02, 0.1380041E+02, &
  615. 0.9814290E+01, 0.1422050E+02, 0.2332800E+00, 0.2907360E+01, &
  616. 0.1225000E+00, 0.1062900E+00, 0.6000000E-04, 0.7639520E+01, &
  617. 0.4000000E-04, &
  618. 0.2737261E+02, 0.1366377E+02, 0.1810866E+02, 0.1376361E+02, &
  619. 0.9417390E+01, 0.1390777E+02, 0.2265800E+00, 0.2812600E+01, &
  620. 0.1450200E+00, 0.1062900E+00, 0.6000000E-04, 0.6314240E+01, &
  621. 0.4000000E-04/
  622. data z10/ &
  623. 0.1000000E+01, 0.1150000E+02, 0.1600000E+02, 0.8500000E+01, &
  624. 0.7000000E+01, 0.1000000E+02, 0.1000000E+00, 0.2000000E+01, &
  625. 0.1000000E+00, 0.1000000E+00, 0.1000000E-01, 0.1150000E+02, &
  626. 0.1000000E-03, &
  627. 0.1000000E+01, 0.1150000E+02, 0.1600000E+02, 0.8500000E+01, &
  628. 0.7000000E+01, 0.1000000E+02, 0.1000000E+00, 0.2000000E+01, &
  629. 0.1000000E+00, 0.1000000E+00, 0.1000000E-01, 0.1150000E+02, &
  630. 0.1000000E-03, &
  631. 0.1000000E+01, 0.1150000E+02, 0.1600000E+02, 0.8500000E+01, &
  632. 0.7000000E+01, 0.1000000E+02, 0.1000000E+00, 0.2000000E+01, &
  633. 0.1000000E+00, 0.1000000E+00, 0.1000000E-01, 0.1150000E+02, &
  634. 0.1000000E-03, &
  635. 0.1000000E+01, 0.1150000E+02, 0.1600000E+02, 0.8500000E+01, &
  636. 0.7000000E+01, 0.1000000E+02, 0.1000000E+00, 0.2000000E+01, &
  637. 0.1000000E+00, 0.1000000E+00, 0.1000000E-01, 0.1150000E+02, &
  638. 0.1000000E-03, &
  639. 0.1000000E+01, 0.1150000E+02, 0.1600000E+02, 0.8500000E+01, &
  640. 0.7000000E+01, 0.1000000E+02, 0.1000000E+00, 0.2000000E+01, &
  641. 0.1000000E+00, 0.1000000E+00, 0.1000000E-01, 0.1150000E+02, &
  642. 0.1000000E-03, &
  643. 0.1000000E+01, 0.1150000E+02, 0.1600000E+02, 0.8500000E+01, &
  644. 0.7000000E+01, 0.1000000E+02, 0.1000000E+00, 0.2000000E+01, &
  645. 0.1000000E+00, 0.1000000E+00, 0.1000000E-01, 0.1150000E+02, &
  646. 0.1000000E-03, &
  647. 0.1000000E+01, 0.1150000E+02, 0.1600000E+02, 0.8500000E+01, &
  648. 0.7000000E+01, 0.1000000E+02, 0.1000000E+00, 0.2000000E+01, &
  649. 0.1000000E+00, 0.1000000E+00, 0.1000000E-01, 0.1150000E+02, &
  650. 0.1000000E-03, &
  651. 0.1000000E+01, 0.1150000E+02, 0.1600000E+02, 0.8500000E+01, &
  652. 0.7000000E+01, 0.1000000E+02, 0.1000000E+00, 0.2000000E+01, &
  653. 0.1000000E+00, 0.1000000E+00, 0.1000000E-01, 0.1150000E+02, &
  654. 0.1000000E-03, &
  655. 0.1000000E+01, 0.1150000E+02, 0.1600000E+02, 0.8500000E+01, &
  656. 0.7000000E+01, 0.1000000E+02, 0.1000000E+00, 0.2000000E+01, &
  657. 0.1000000E+00, 0.1000000E+00, 0.1000000E-01, 0.1150000E+02, &
  658. 0.1000000E-03, &
  659. 0.1000000E+01, 0.1150000E+02, 0.1600000E+02, 0.8500000E+01, &
  660. 0.7000000E+01, 0.1000000E+02, 0.1000000E+00, 0.2000000E+01, &
  661. 0.1000000E+00, 0.1000000E+00, 0.1000000E-01, 0.1150000E+02, &
  662. 0.1000000E-03, &
  663. 0.1000000E+01, 0.1150000E+02, 0.1600000E+02, 0.8500000E+01, &
  664. 0.7000000E+01, 0.1000000E+02, 0.1000000E+00, 0.2000000E+01, &
  665. 0.1000000E+00, 0.1000000E+00, 0.1000000E-01, 0.1150000E+02, &
  666. 0.1000000E-03, &
  667. 0.1000000E+01, 0.1150000E+02, 0.1600000E+02, 0.8500000E+01, &
  668. 0.7000000E+01, 0.1000000E+02, 0.1000000E+00, 0.2000000E+01, &
  669. 0.1000000E+00, 0.1000000E+00, 0.1000000E-01, 0.1150000E+02, &
  670. 0.1000000E-03/
  671. data z20/ &
  672. 0.3500000E+02, 0.2000000E+02, 0.2000000E+02, 0.1700000E+02, &
  673. 0.1400000E+02, 0.1800000E+02, 0.6000000E+00, 0.5000000E+01, &
  674. 0.5000000E+00, 0.6000000E+00, 0.1000000E+00, 0.2000000E+02, &
  675. 0.1000000E+00, &
  676. 0.3500000E+02, 0.2000000E+02, 0.2000000E+02, 0.1700000E+02, &
  677. 0.1400000E+02, 0.1800000E+02, 0.6000000E+00, 0.5000000E+01, &
  678. 0.5000000E+00, 0.6000000E+00, 0.1000000E+00, 0.2000000E+02, &
  679. 0.1000000E+00, &
  680. 0.3500000E+02, 0.2000000E+02, 0.2000000E+02, 0.1700000E+02, &
  681. 0.1400000E+02, 0.1800000E+02, 0.6000000E+00, 0.5000000E+01, &
  682. 0.5000000E+00, 0.6000000E+00, 0.1000000E+00, 0.2000000E+02, &
  683. 0.1000000E+00, &
  684. 0.3500000E+02, 0.2000000E+02, 0.2000000E+02, 0.1700000E+02, &
  685. 0.1400000E+02, 0.1800000E+02, 0.6000000E+00, 0.5000000E+01, &
  686. 0.5000000E+00, 0.6000000E+00, 0.1000000E+00, 0.2000000E+02, &
  687. 0.1000000E+00, &
  688. 0.3500000E+02, 0.2000000E+02, 0.2000000E+02, 0.1700000E+02, &
  689. 0.1400000E+02, 0.1800000E+02, 0.6000000E+00, 0.5000000E+01, &
  690. 0.5000000E+00, 0.6000000E+00, 0.1000000E+00, 0.2000000E+02, &
  691. 0.1000000E+00, &
  692. 0.3500000E+02, 0.2000000E+02, 0.2000000E+02, 0.1700000E+02, &
  693. 0.1400000E+02, 0.1800000E+02, 0.6000000E+00, 0.5000000E+01, &
  694. 0.5000000E+00, 0.6000000E+00, 0.1000000E+00, 0.2000000E+02, &
  695. 0.1000000E+00, &
  696. 0.3500000E+02, 0.2000000E+02, 0.2000000E+02, 0.1700000E+02, &
  697. 0.1400000E+02, 0.1800000E+02, 0.6000000E+00, 0.5000000E+01, &
  698. 0.5000000E+00, 0.6000000E+00, 0.1000000E+00, 0.2000000E+02, &
  699. 0.1000000E+00, &
  700. 0.3500000E+02, 0.2000000E+02, 0.2000000E+02, 0.1700000E+02, &
  701. 0.1400000E+02, 0.1800000E+02, 0.6000000E+00, 0.5000000E+01, &
  702. 0.5000000E+00, 0.6000000E+00, 0.1000000E+00, 0.2000000E+02, &
  703. 0.1000000E+00, &
  704. 0.3500000E+02, 0.2000000E+02, 0.2000000E+02, 0.1700000E+02, &
  705. 0.1400000E+02, 0.1800000E+02, 0.6000000E+00, 0.5000000E+01, &
  706. 0.5000000E+00, 0.6000000E+00, 0.1000000E+00, 0.2000000E+02, &
  707. 0.1000000E+00, &
  708. 0.3500000E+02, 0.2000000E+02, 0.2000000E+02, 0.1700000E+02, &
  709. 0.1400000E+02, 0.1800000E+02, 0.6000000E+00, 0.5000000E+01, &
  710. 0.5000000E+00, 0.6000000E+00, 0.1000000E+00, 0.2000000E+02, &
  711. 0.1000000E+00, &
  712. 0.3500000E+02, 0.2000000E+02, 0.2000000E+02, 0.1700000E+02, &
  713. 0.1400000E+02, 0.1800000E+02, 0.6000000E+00, 0.5000000E+01, &
  714. 0.5000000E+00, 0.6000000E+00, 0.1000000E+00, 0.2000000E+02, &
  715. 0.1000000E+00, &
  716. 0.3500000E+02, 0.2000000E+02, 0.2000000E+02, 0.1700000E+02, &
  717. 0.1400000E+02, 0.1800000E+02, 0.6000000E+00, 0.5000000E+01, &
  718. 0.5000000E+00, 0.6000000E+00, 0.1000000E+00, 0.2000000E+02, &
  719. 0.1000000E+00/
  720. data rdc0/ &
  721. 0.2858700E+03, 0.2113200E+03, 0.2985200E+03, 0.5654100E+03, &
  722. 0.1852000E+03, 0.2301300E+03, 0.2443000E+02, 0.1036000E+03, &
  723. 0.2311000E+02, 0.2286000E+02, 0.2376000E+02, 0.1949000E+03, &
  724. 0.2850000E+02, &
  725. 0.2858700E+03, 0.2113200E+03, 0.3013500E+03, 0.5870500E+03, &
  726. 0.1852000E+03, 0.2244200E+03, 0.2463000E+02, 0.1036000E+03, &
  727. 0.2294000E+02, 0.2286000E+02, 0.2376000E+02, 0.1949000E+03, &
  728. 0.2850000E+02, &
  729. 0.2858700E+03, 0.2187800E+03, 0.3124600E+03, 0.6234600E+03, &
  730. 0.1852000E+03, 0.2215700E+03, 0.2480000E+02, 0.1023500E+03, &
  731. 0.2262000E+02, 0.2286000E+02, 0.2376000E+02, 0.1964400E+03, &
  732. 0.2850000E+02, &
  733. 0.2858700E+03, 0.2434000E+03, 0.3312300E+03, 0.6381300E+03, &
  734. 0.2048700E+03, 0.2164100E+03, 0.2496000E+02, 0.1007200E+03, &
  735. 0.2189000E+02, 0.2286000E+02, 0.2376000E+02, 0.2014400E+03, &
  736. 0.2850000E+02, &
  737. 0.2858700E+03, 0.2948700E+03, 0.3458300E+03, 0.6528600E+03, &
  738. 0.2330100E+03, 0.2164100E+03, 0.2572000E+02, 0.1007200E+03, &
  739. 0.2230000E+02, 0.2286000E+02, 0.2376000E+02, 0.2071300E+03, &
  740. 0.2850000E+02, &
  741. 0.2858700E+03, 0.3459000E+03, 0.3619400E+03, 0.6750500E+03, &
  742. 0.2620800E+03, 0.2215700E+03, 0.2774000E+02, 0.1007200E+03, &
  743. 0.2182000E+02, 0.2301000E+02, 0.2376000E+02, 0.2107900E+03, &
  744. 0.2850000E+02, &
  745. 0.2858700E+03, 0.3551800E+03, 0.3685400E+03, 0.6602400E+03, &
  746. 0.3443100E+03, 0.2500700E+03, 0.3006000E+02, 0.1007200E+03, &
  747. 0.2182000E+02, 0.2436000E+02, 0.2376000E+02, 0.2113100E+03, &
  748. 0.2850000E+02, &
  749. 0.2858700E+03, 0.3418400E+03, 0.3685400E+03, 0.6454900E+03, &
  750. 0.2870900E+03, 0.2885700E+03, 0.2886000E+02, 0.1053000E+03, &
  751. 0.2189000E+02, 0.2469000E+02, 0.2376000E+02, 0.2104200E+03, &
  752. 0.2850000E+02, &
  753. 0.2858700E+03, 0.3072200E+03, 0.3528500E+03, 0.6381300E+03, &
  754. 0.2495800E+03, 0.2780300E+03, 0.2590000E+02, 0.1079400E+03, &
  755. 0.2216000E+02, 0.2404000E+02, 0.2376000E+02, 0.2081500E+03, &
  756. 0.2850000E+02, &
  757. 0.2858700E+03, 0.2448400E+03, 0.3236500E+03, 0.6231300E+03, &
  758. 0.2211200E+03, 0.2668400E+03, 0.2511000E+02, 0.1065900E+03, &
  759. 0.2230000E+02, 0.2286000E+02, 0.2376000E+02, 0.2018800E+03, &
  760. 0.2850000E+02, &
  761. 0.2858700E+03, 0.2187800E+03, 0.2927900E+03, 0.5870500E+03, &
  762. 0.2008900E+03, 0.2475700E+03, 0.2480000E+02, 0.1044900E+03, &
  763. 0.2244000E+02, 0.2286000E+02, 0.2376000E+02, 0.1964400E+03, &
  764. 0.2850000E+02, &
  765. 0.2858700E+03, 0.2113200E+03, 0.2927900E+03, 0.5654100E+03, &
  766. 0.1892600E+03, 0.2301300E+03, 0.2464000E+02, 0.1036000E+03, &
  767. 0.2277000E+02, 0.2286000E+02, 0.2376000E+02, 0.1949000E+03, &
  768. 0.2850000E+02/
  769. data rbc0/ &
  770. 0.5430000E+01, 0.6936000E+02, 0.8590000E+01, 0.8800000E+00, &
  771. 0.7850000E+01, 0.2661000E+02, 0.2207000E+02, 0.2188000E+02, &
  772. 0.1761000E+02, 0.4351000E+02, 0.3592951E+05, 0.5600000E+03, &
  773. 0.3546177E+05, &
  774. 0.5430000E+01, 0.6936000E+02, 0.8450000E+01, 0.8600000E+00, &
  775. 0.7850000E+01, 0.3044000E+02, 0.2053000E+02, 0.2188000E+02, &
  776. 0.1942000E+02, 0.4351000E+02, 0.3592951E+05, 0.5600000E+03, &
  777. 0.3546177E+05, &
  778. 0.5430000E+01, 0.4257000E+02, 0.7980000E+01, 0.8400000E+00, &
  779. 0.7850000E+01, 0.3295000E+02, 0.1934000E+02, 0.2673000E+02, &
  780. 0.2446000E+02, 0.4351000E+02, 0.3592951E+05, 0.4019700E+03, &
  781. 0.3546177E+05, &
  782. 0.5430000E+01, 0.1897000E+02, 0.7180000E+01, 0.8300000E+00, &
  783. 0.3810000E+01, 0.4003000E+02, 0.1838000E+02, 0.3712000E+02, &
  784. 0.6928000E+02, 0.4351000E+02, 0.3592951E+05, 0.1855200E+03, &
  785. 0.3546177E+05, &
  786. 0.5430000E+01, 0.1035000E+02, 0.6810000E+01, 0.8200000E+00, &
  787. 0.2400000E+01, 0.4003000E+02, 0.1516000E+02, 0.3712000E+02, &
  788. 0.3303000E+02, 0.4351000E+02, 0.3592951E+05, 0.9801000E+02, &
  789. 0.3546177E+05, &
  790. 0.5430000E+01, 0.7880000E+01, 0.6480000E+01, 0.8100000E+00, &
  791. 0.1860000E+01, 0.3295000E+02, 0.1068000E+02, 0.3712000E+02, &
  792. 0.8702000E+02, 0.3568000E+02, 0.3592951E+05, 0.7224000E+02, &
  793. 0.3546177E+05, &
  794. 0.5430000E+01, 0.7610000E+01, 0.6360000E+01, 0.8200000E+00, &
  795. 0.1290000E+01, 0.1870000E+02, 0.8300000E+01, 0.3712000E+02, &
  796. 0.8702000E+02, 0.1449000E+02, 0.3592951E+05, 0.6938000E+02, &
  797. 0.3546177E+05, &
  798. 0.5430000E+01, 0.8090000E+01, 0.6360000E+01, 0.8300000E+00, &
  799. 0.1600000E+01, 0.1318000E+02, 0.9330000E+01, 0.1722000E+02, &
  800. 0.6928000E+02, 0.1281000E+02, 0.3592951E+05, 0.7434000E+02, &
  801. 0.3546177E+05, &
  802. 0.5430000E+01, 0.9570000E+01, 0.6660000E+01, 0.8300000E+00, &
  803. 0.2040000E+01, 0.1420000E+02, 0.1457000E+02, 0.1317000E+02, &
  804. 0.4003000E+02, 0.1669000E+02, 0.3592951E+05, 0.8988000E+02, &
  805. 0.3546177E+05, &
  806. 0.5430000E+01, 0.1847000E+02, 0.7400000E+01, 0.8400000E+00, &
  807. 0.2820000E+01, 0.1559000E+02, 0.1760000E+02, 0.1497000E+02, &
  808. 0.3303000E+02, 0.4351000E+02, 0.3592951E+05, 0.1757600E+03, &
  809. 0.3546177E+05, &
  810. 0.5430000E+01, 0.4257000E+02, 0.8880000E+01, 0.8600000E+00, &
  811. 0.4210000E+01, 0.1933000E+02, 0.1934000E+02, 0.1906000E+02, &
  812. 0.2810000E+02, 0.4351000E+02, 0.3592951E+05, 0.4019700E+03, &
  813. 0.3546177E+05, &
  814. 0.5430000E+01, 0.6936000E+02, 0.8880000E+01, 0.8800000E+00, &
  815. 0.6400000E+01, 0.2661000E+02, 0.2053000E+02, 0.2188000E+02, &
  816. 0.2165000E+02, 0.4351000E+02, 0.3592951E+05, 0.5600000E+03, &
  817. 0.3546177E+05/
  818. data rootd0/ &
  819. 0.1000000E+01, 0.1000000E+01, 0.1000000E+01, 0.5000000E+00, &
  820. 0.5000000E+00, 0.5000000E+00, 0.5000000E+00, 0.5000000E+00, &
  821. 0.5000000E+00, 0.2000000E+00, 0.1000000E+00, 0.1000000E+01, &
  822. 0.1000000E+01, &
  823. 0.1000000E+01, 0.1000000E+01, 0.1000000E+01, 0.5000000E+00, &
  824. 0.5000000E+00, 0.5000000E+00, 0.5000000E+00, 0.5000000E+00, &
  825. 0.5000000E+00, 0.2000000E+00, 0.1000000E+00, 0.1000000E+01, &
  826. 0.1000000E+01/
  827. data soref0/ &
  828. 0.1100000E+00, 0.1100000E+00, 0.1100000E+00, 0.1100000E+00, &
  829. 0.1100000E+00, 0.1100000E+00, 0.1000000E+00, 0.1000000E+00, &
  830. 0.3000000E+00, 0.1000000E+00, 0.3000000E+00, 0.1000000E+00, &
  831. 0.1000000E+00, &
  832. 0.2250000E+00, 0.2250000E+00, 0.2250000E+00, 0.2250000E+00, &
  833. 0.2250000E+00, 0.2250000E+00, 0.2000000E+00, 0.2000000E+00, &
  834. 0.3500000E+00, 0.2000000E+00, 0.3500000E+00, 0.1500000E+00, &
  835. 0.1500000E+00, &
  836. 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, &
  837. 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, &
  838. 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, 0.0000000E+00, &
  839. 0.0000000E+00/
  840. data bee0/ &
  841. 0.7120000E+01, 0.7120000E+01, 0.7120000E+01, 0.7120000E+01, &
  842. 0.7120000E+01, 0.7120000E+01, 0.7120000E+01, 0.4050000E+01, &
  843. 0.4050000E+01, 0.7120000E+01, 0.4050000E+01, 0.7797000E+01, &
  844. 0.4804000E+01/
  845. data phsat0/ &
  846. -0.8600000E-01, -0.8600000E-01, -0.8600000E-01, -0.8600000E-01, &
  847. -0.8600000E-01, -0.8600000E-01, -0.8600000E-01, -0.3500000E-01, &
  848. -0.3500000E-01, -0.8600000E-01, -0.3500000E-01, -0.1980000E+00, &
  849. -0.1670000E+00/
  850. data poros0/ &
  851. 0.4200000E+00, 0.4200000E+00, 0.4200000E+00, 0.4200000E+00, &
  852. 0.4200000E+00, 0.4200000E+00, 0.4200000E+00, 0.4352000E+00, &
  853. 0.4352000E+00, 0.4200000E+00, 0.4352000E+00, 0.4577000E+00, &
  854. 0.4352000E+00/
  855. data satco0/ &
  856. 0.2000000E-04, 0.2000000E-04, 0.2000000E-04, 0.2000000E-04, &
  857. 0.2000000E-04, 0.2000000E-04, 0.2000000E-04, 0.1760000E-03, &
  858. 0.1760000E-03, 0.2000000E-04, 0.1760000E-03, 0.3500000E-05, &
  859. 0.7620000E-04/
  860. data slope0/ &
  861. 0.1736000E+00, 0.1736000E+00, 0.1736000E+00, 0.1736000E+00, &
  862. 0.1736000E+00, 0.1736000E+00, 0.1736000E+00, 0.8720000E-01, &
  863. 0.8720000E-01, 0.1736000E+00, 0.8720000E-01, 0.3420000E+00, &
  864. 0.8720000E-01/
  865. data depth0/ &
  866. 0.2000000E-01, 0.2000000E-01, 0.2000000E-01, 0.2000000E-01, &
  867. 0.2000000E-01, 0.2000000E-01, 0.2000000E-01, 0.2000000E-01, &
  868. 0.2000000E-01, 0.2000000E-01, 0.2000000E-01, 0.2000000E-01, &
  869. 0.1000000E+01, &
  870. 0.1480000E+01, 0.1480000E+01, 0.1480000E+01, 0.1480000E+01, &
  871. 0.1480000E+01, 0.1480000E+01, 0.4700000E+00, 0.4700000E+00, &
  872. 0.4700000E+00, 0.1700000E+00, 0.1700000E+00, 0.1480000E+01, &
  873. 0.1000000E+01, &
  874. 0.2000000E+01, 0.2000000E+01, 0.2000000E+01, 0.2000000E+01, &
  875. 0.2000000E+01, 0.2000000E+01, 0.1000000E+01, 0.1000000E+01, &
  876. 0.1000000E+01, 0.1000000E+01, 0.3000000E+00, 0.2000000E+01, &
  877. 0.1000000E+01/
  878. !------------------------------------------------------------------------
  879. CONTAINS
  880. !
  881. !-----------------------------------------------------------------------
  882. !**********************************************
  883. SUBROUTINE SSIB( II, JJ, DDTT, ITIME, ZLAT, SUNANGLE, &
  884. PPL, PPC, RLWDOWN, ZWIND2, &
  885. WWW1, WWW2, WWW3, &
  886. TC, TGS, TD, &
  887. SNOA, ROFF, &
  888. UMM, VMM, QM, TM, &
  889. PM, PSUR, ivgtyp, &
  890. SWDOWN1, SNOB, &
  891. SALB11, SALB12, SALB21, SALB22, &
  892. RADFRAC11, RADFRAC12, RADFRAC21, RADFRAC22, &
  893. XHSFLX, ELATEN, GHTFLX, XHLFLX, TGEFF, &
  894. USTAR, RIB, FM, FH, CM, &
  895. XLHF, XSHF, XGHF, XEGS, XECI, XECT, & ! output
  896. XEGI, XEGT, XSDN, XSUP, XLDN, XLUP, & ! output
  897. XWAT, XHCX, XHGX, XZLT, XVCF, XXZ0, & ! output
  898. XVEG, XDD, & ! output
  899. ISNOW,SWE,SNOWDEN,SNOWDEPTH,TKAIR, & ! snow
  900. DZO1,WO1,TSSN1,TSSNO1,BWO1,BTO1,CTO1,FIO1,FLO1,BIO1,BLO1,HO1, & ! snow
  901. DZO2,WO2,TSSN2,TSSNO2,BWO2,BTO2,CTO2,FIO2,FLO2,BIO2,BLO2,HO2, & ! snow
  902. DZO3,WO3,TSSN3,TSSNO3,BWO3,BTO3,CTO3,FIO3,FLO3,BIO3,BLO3,HO3, & ! snow
  903. DZO4,WO4,TSSN4,TSSNO4,BWO4,BTO4,CTO4,FIO4,FLO4,BIO4,BLO4,HO4, & ! snow
  904. DAY, CLOUD, Q2M, TA, BEDO, &
  905. sw_physics, MMINLU &
  906. )
  907. !**********************************************
  908. !-----------------------------------------------------------------------
  909. ! THERE ARE A MAIN SSIB PROGRAM AND 12 SUBROUTINE FILES, WHICH ARE:
  910. ! VEGOUT
  911. ! CROPS
  912. ! RADAB
  913. ! ROOT1
  914. ! STOMA1
  915. ! INTERC
  916. ! TEMRS1
  917. ! UPDAT1
  918. ! RASIT5
  919. ! STRES1
  920. ! NEWTON
  921. ! YONGKANG XUE
  922. !-----------------------------------------------------------------------
  923. ! INPUT
  924. ! DDTT: TIME INTERVAL
  925. ! SUNANGLE: SOLAR ZENITH ANGLE
  926. ! SWDOWN: SHORT WAVE DOWN(W/M*M);
  927. ! RADFRAC: SHORT WAVE COMPONENTS (visible and near IR; direct and diffuse)
  928. ! RLWDOWN: LONG WAVE DOWN(W/M*M);
  929. ! PPL, PPC: LARGE SCALE AND CONVECTIVE PRECIPITATIONS AT THE TIME STEP (mm)
  930. ! TM: TEMPERETURE AT LOWEST MODEL LAYER (K)
  931. ! UMM,VMM: ZONAL AND MERIDIONAL WINDS AT LOWEST MODEL LAYER (m/S)
  932. ! QM: WATER VAPOR AT LOWEST MODEL LAYER;
  933. ! PSURF: SURFACE PRESSURE (mb)
  934. ! ZWIND: HEIGHT (m) OF LOWEST MODEL LAYER
  935. ! ITYPE: VEGETATION TYPE
  936. ! ZLAT: LATITUDE, SOUTH POLE IS -90 DEGREE AND NORTH POLE IS 90 DEGREE
  937. ! MONTH: MONTH
  938. ! DAY: CALENDER DATE
  939. ! IYEAR: YEAR
  940. ! OUTPUT
  941. ! ETMASS: EVAPORATION (mm/step)
  942. ! ELATEN: LATENT HEAT FLUX (w/m*m)
  943. ! EVAPSOIL,EVAPWC,EVAPDC,EVAPSN: LATENT HEAT FROM (SOIL, INTERCEPTION,
  944. ! TRANSPIRATION, AND SNOW SURFACE)
  945. ! HFLUX: SENSIBLE HEAT FLUX(w/m*m)
  946. ! GHTFLX: GROUND HEAT FLUX(w/m*m) = CHF+SHF
  947. ! USTAR: FRICTION VELOCITY (m/s)
  948. ! DRAG: MOMENTUM FLUX (kg/m/s**2)
  949. ! DRAGU: U COMPONENT OF MOMENTUM FLUX (kg/m/s**2)
  950. ! DRAGV: V COMPONENT OF MOMENTUM FLUX (kg/m/s**2)
  951. ! TGEFF: RADIATIVE TEMPERATURE (K)
  952. ! BEDO: TOTAL ALBEDO
  953. ! SALB: ALBEDO FOR 4 COMPONENTS
  954. ! RADT: NET RADIATION AT CANOPY AND GROUND LEVELS
  955. ! TGS: SOIL SURFACE TEMPERATURE (K)
  956. ! TC: CANOPY TEMPERATURE (K)
  957. ! TD: DEEP SOIL TEMPERATURE (K)
  958. ! TA: TEMPERATURE AT CANOPY AIR SPACE (K)
  959. ! CAPAC: INTERCEPTION AT CANOPY (1) and SNOW DEPTH (2)
  960. ! WWW: SOIL MOISTURE
  961. ! SOILM: TOTAL SOIL WATER CONTENT
  962. ! ROFF: RUN OFF
  963. !
  964. !----------------------------------------------------------------------
  965. INTEGER, DIMENSION (12) :: IDAYS
  966. REAL, DIMENSION (2) :: CAPAC, SATCAP, GREEN, VCOVER, ZLT, CHIL, TOPT, TL, &
  967. TU, DEFAC, PH1, PH2, RST, ROOTD, RADT, PAR, PD
  968. REAL, DIMENSION (3) :: WWW, SOREF, ZDEPTH, ROOTP, PHSOIL, YMATT, YMATQ
  969. REAL, DIMENSION (2,2) :: RADFRAC, SALB
  970. REAL, DIMENSION (2,3) :: RSTPAR
  971. REAL, DIMENSION (2,4) :: RSTFAC
  972. REAL, DIMENSION (3,2) :: RADN
  973. REAL, DIMENSION (2,3,2) :: TRAN, REF, ALBEDO, EXTK
  974. REAL, DIMENSION (2,2,2) :: RADFAC
  975. INTEGER, DIMENSION (24) :: IVUSGS
  976. REAL, DIMENSION (13) :: TD_DEPTH
  977. INTEGER :: sw_physics !choice of SW radiation scheme
  978. CHARACTER(LEN=*), INTENT(IN ) :: MMINLU !type of landuse/vegetation map
  979. !snow
  980. REAL, DIMENSION (N2) :: SS,SSO,POROSITY,H,HO,BI,BIO,DZ,DZO,BW,BWO,BL
  981. REAL, DIMENSION (N2) :: BLO,TSSN,TSSNO,W,WO,WF,FI,FIO, FL,FLO,DMLT
  982. REAL, DIMENSION (N2) :: DMLTO,BT,BTO,S,SO,CT,CTO,DLIQVOL,DICEVOL
  983. REAL, DIMENSION (N2) :: QK,PDZDTC,DMASS,DSOL,DHP,THK
  984. !snow
  985. ! Julian day
  986. DATA IDAYS/31,59,90,120,151,181,212,243,273,304,334,366/
  987. !
  988. ! Deep soil temperature depth by vegetation type --------------------
  989. DATA TD_DEPTH/1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.0, 1.0, 1.0 &
  990. & , 0.5, 0.5, 1.5, 1.5/
  991. !
  992. ! Check vegetation/landuse map choice
  993. ! If using USGS, translate to SSIB types (IVUSGS)
  994. DATA IVUSGS / 7, 12, 12, 12, 12, 12, 7, 9, &
  995. 8, 6, 2, 5, 1, 4, 3, 0, &
  996. 10, 3, 11, 10, 10, 10, 10, 13/
  997. IF(MMINLU.EQ.'SSIB') THEN
  998. ITYPE=IVGTYP
  999. ELSEIF(MMINLU.EQ.'USGS') THEN
  1000. ITYPE=IVUSGS(IVGTYP)
  1001. ELSE
  1002. CALL wrf_error_fatal ( 'SSIB LSM only works with SSIB or USGS vegetation (landuse) map' )
  1003. ENDIF
  1004. ! Check for error in vegetation map
  1005. if(itype.le.0.or.itype.gt.13) then
  1006. !Make sure the correct vegetation map is being used!
  1007. print *,"veg type: ",itype
  1008. CALL wrf_error_fatal ( 'module_sf_ssib: ERROR in vegetation/landuse map' )
  1009. endif
  1010. !
  1011. INTG=1
  1012. XADJ=0.
  1013. CTLPA=1.
  1014. NROOT=1
  1015. WFSOIL=0.
  1016. !------------------------------------------------
  1017. ZWIND=ZWIND2*0.5 ! TM & UM are on the middle lowest model layer
  1018. !------------------------------------------------
  1019. ! set DAY in year and current month MON_COR
  1020. !------------------------------------------------
  1021. IMONTH=1
  1022. IDAY=INT(DAY)
  1023. DO I=1,12
  1024. IF(IDAY.LE.IDAYS(I)) THEN
  1025. IMONTH=I
  1026. EXIT
  1027. ENDIF
  1028. ENDDO
  1029. !crr correction for southern hemisphere (reverse months) Ratko, Oct 28, 2005
  1030. IF(ZLAT.LT.0.0) THEN
  1031. MON_COR=IMONTH+6
  1032. IF(MON_COR.GT.12) MON_COR=MON_COR-12
  1033. ELSE
  1034. MON_COR=IMONTH
  1035. ENDIF
  1036. !------------------------------------------------
  1037. IF (ITIME.EQ.1) TA=TC
  1038. !
  1039. PSURF=PSUR*0.01
  1040. DTT =DDTT*FLOAT(INTG)
  1041. !------------------------------------------------
  1042. ! ** Read in vegetation parameters
  1043. CALL VEGOUT(TRAN,REF,GREEN,VCOVER,CHIL, &
  1044. RSTPAR,TOPT,TL,TU,DEFAC,PH1,PH2, &
  1045. ZLT,Z0,XDD,Z2,Z1,RDC,RBC,ROOTD,SOREF, &
  1046. BEE, PHSAT, POROS, SATCO,SLOPE, &
  1047. ZDEPTH,MON_COR,ITYPE)
  1048. !
  1049. IF (ITYPE.EQ.12) CALL CROPS(ZLAT,DAY,CHIL, &
  1050. ZLT,GREEN,VCOVER,RSTPAR,TOPT,TL,TU,DEFAC,PH2,PH1)
  1051. !
  1052. !crr ------------ STC initialization ------------------------------------
  1053. IF (ITIME.EQ.1) THEN
  1054. STLEV1=0.05 ! half of 10cm layer
  1055. STLEV2=1.05 ! half of second + first layer
  1056. DEPTH = TD_DEPTH(ITYPE)
  1057. IF (DEPTH.GT.STLEV1.AND.DEPTH.LE.STLEV2)THEN ! interp.
  1058. TD = ( (STLEV2-DEPTH)*TGS + (DEPTH-STLEV1)*TD ) &
  1059. & /(STLEV2-STLEV1)
  1060. ELSE IF(DEPTH.GT.STLEV2)THEN ! extrap.
  1061. TD = ( (DEPTH-STLEV1)*TD - (DEPTH-STLEV2)*TGS) &
  1062. & /(STLEV2-STLEV1)
  1063. ENDIF
  1064. ENDIF
  1065. !------------------------------------------------------------------------
  1066. WWW(1) = WWW1 / POROS
  1067. WWW(2) = WWW2 / POROS
  1068. WWW(3) = WWW3 / POROS
  1069. !------------------------------------------------
  1070. !cfds Convert WEASD (kg/m2) to meter
  1071. SNOA = SNOA/1000.
  1072. SNOB = SNOB/1000.
  1073. !------------------------------------------------
  1074. !
  1075. CALL CONVDIM(0, &
  1076. DZO1,WO1,TSSN1,TSSNO1,BWO1,BTO1,CTO1,FIO1,FLO1,BIO1,BLO1,HO1, &
  1077. DZO2,WO2,TSSN2,TSSNO2,BWO2,BTO2,CTO2,FIO2,FLO2,BIO2,BLO2,HO2, &
  1078. DZO3,WO3,TSSN3,TSSNO3,BWO3,BTO3,CTO3,FIO3,FLO3,BIO3,BLO3,HO3, &
  1079. DZO4,WO4,TSSN4,TSSNO4,BWO4,BTO4,CTO4,FIO4,FLO4,BIO4,BLO4,HO4, &
  1080. DZO, WO, TSSN, TSSNO, BWO, BTO, CTO, FIO, FLO, BIO, BLO, HO )
  1081. !
  1082. IF (ITIME.EQ.1) THEN
  1083. ISNOW = 1
  1084. SNOWDEN = 3.75
  1085. SWE = SNOA
  1086. SNOWDEPTH = SWE * SNOWDEN
  1087. TGG=AMIN1(273.15,TGS)
  1088. !fds temp IF (SNOWDEPTH.gt.SNODEP_CR) THEN
  1089. !fds temp ISNOW = 0
  1090. !fds temp CALL LAYERN (TGG,SWE,SNOWDEPTH, DZO,BWO,WO,BTO,CTO &
  1091. !fds temp ,FLO,FIO,HO,BLO,BIO,DLIQVOL,DICEVOL,TSSNO,DMLTO)
  1092. !fds temp ENDIF
  1093. ENDIF
  1094. !
  1095. CAPAC(1)=SNOB
  1096. CAPAC(2)=SNOA
  1097. IF (ITIME.EQ.1) THEN
  1098. IF (SNOA.GT.0.) THEN
  1099. !cxx IF (SNOA.GT.5.) THEN
  1100. CAPAC(1) = ZLT(1) * 0.0001
  1101. TC = AMIN1(TC ,TF-0.01)
  1102. TGS = AMIN1(TGS,TF-0.01)
  1103. ENDIF
  1104. ENDIF
  1105. !
  1106. UM=SQRT(UMM**2+VMM**2)
  1107. RHOAIR=100./GASR*(PSURF+0.01*PM)/(TM+TA)
  1108. AKAPPA = GASR/CPAIR
  1109. BPS =1.0 / EXP ( AKAPPA * ALOG (0.01*PM/PSURF) )
  1110. ! BPS0 =1.0 / EXP ( AKAPPA * ALOG (PSURF/1000.) )
  1111. ! BPS1 =1.0 / EXP ( AKAPPA * ALOG (0.01*PM/1000.) )
  1112. !Cl 2001,2,2 added the following line
  1113. IF (ISNOW.EQ.0) THEN
  1114. TSOIL=TGS
  1115. TGS=TSSNO(N)
  1116. CAPAC(2)=SWE
  1117. IPTYPE=2
  1118. IF(TM.ge.TF) IPTYPE=1
  1119. END IF
  1120. !C
  1121. !
  1122. ! CONVERT TO VAPOR PRES. TO MB
  1123. EM=(PSURF*QM)/0.6220
  1124. IF (ITIME.EQ.1) EA=EM
  1125. !
  1126. SUNANG=AMAX1(SUNANGLE,0.01746)
  1127. ! By Zhenxin 2011-06-20
  1128. ! IF (sw_physics.eq.3) THEN
  1129. IF (sw_physics.eq.3 .or. sw_physics.eq.4) THEN
  1130. ! End By Zhenxin 2011-06-20
  1131. !**********************************************
  1132. !fds - RADFRAC from radiation scheme 3 (06/2010)
  1133. !fds - Otherwise use cloud cover to calculate radfrac
  1134. radfrac11 = amax1(radfrac11,0.025)
  1135. radfrac12 = amax1(radfrac12,0.025)
  1136. radfrac21 = amax1(radfrac21,0.025)
  1137. radfrac22 = amax1(radfrac22,0.025)
  1138. swdown = radfrac11 + radfrac12 + radfrac21 + radfrac22
  1139. RADFRAC(1,1) = radfrac11/swdown
  1140. RADFRAC(1,2) = radfrac12/swdown
  1141. RADFRAC(2,1) = radfrac21/swdown
  1142. RADFRAC(2,2) = radfrac22/swdown
  1143. ELSE
  1144. !**********************************************
  1145. ! ** CALCULATE THE CLOUD COVER USING AN EMPIRICAL EQUATION
  1146. ! ONLY USE THIS PART WHEN IT IS NEEDED
  1147. !
  1148. swdown = amax1(swdown1,0.1)
  1149. CLOUD = AMAX1(CLOUD,0.0)
  1150. CLOUD = AMIN1(CLOUD,1.0)
  1151. CLOUD = AMAX1(0.58,CLOUD)
  1152. !
  1153. DIFRAT = 0.0604 / ( SUNANG-0.0223 ) + 0.0683
  1154. IF ( DIFRAT .LT. 0.0 ) DIFRAT = 0.0
  1155. IF ( DIFRAT .GT. 1.0 ) DIFRAT = 1.0
  1156. !
  1157. DIFRAT = DIFRAT + ( 1.0 - DIFRAT ) * CLOUD
  1158. VNRAT = ( 580.0 - CLOUD*464.0 ) / ( ( 580.0-CLOUD*499.0) &
  1159. & + ( 580.0 - CLOUD*464.0 ) )
  1160. !
  1161. RADFRAC(1,1) = (1.0-DIFRAT)*VNRAT
  1162. RADFRAC(1,2) = DIFRAT*VNRAT
  1163. RADFRAC(2,1) = (1.0-DIFRAT)*(1.0-VNRAT)
  1164. RADFRAC(2,2) = DIFRAT*(1.0-VNRAT)
  1165. !**********************************************
  1166. ENDIF
  1167. !
  1168. RADN(1,1) = RADFRAC(1,1) * SWDOWN
  1169. RADN(1,2) = RADFRAC(1,2) * SWDOWN
  1170. RADN(2,1) = RADFRAC(2,1) * SWDOWN
  1171. RADN(2,2) = RADFRAC(2,2) * SWDOWN
  1172. RADN(3,1) = 0.
  1173. RADN(3,2) = RLWDOWN
  1174. !
  1175. ! END OF EMPIRICAL EQUATIONS
  1176. ! *********************************************************
  1177. !
  1178. CALL RADAB (TRAN,REF,GREEN,VCOVER,CHIL,ZLT,Z2,Z1,SOREF,TC, &
  1179. TGS,SATCAP,EXTK,RADFAC,THERMK,RADT,PAR,PD,ALBEDO,SALB, &
  1180. TGEFF,SUNANG,XADJ,CAPAC,RADN,ZLWUP,RADFRAC, &
  1181. ISNOW,SNOWDEN,SNOWDEPTH,SWDOWN,BEDO,SNOCV,0, &
  1182. fsdown,fldown,fsup,flup)
  1183. !
  1184. CALL ROOT1(PHSAT,BEE,WWW,PHSOIL)
  1185. !
  1186. CALL STOMA1(GREEN,VCOVER,CHIL,ZLT,PAR,PD,EXTK,SUNANG,RST, &
  1187. RSTPAR, CTLPA)
  1188. !
  1189. RSTUN = RST(1)
  1190. CALL INTERCS (DTT,VCOVER,ZLT,TM,TC,TGS,CAPAC,WWW,PPC,PPL, &
  1191. ROFF,ZDEPTH,POROS,CCX,CG,SATCO,SATCAP,SPWET, &
  1192. EXTK,ISNOW,P0,CSOIL,dzsoil,CHISL,SMELT)
  1193. CALL SET0(TSSNO,BWO,BLO,BIO,HO,FLO,FIO,WO,DZO, &
  1194. SSO,CTO,BTO,DMLTO,WF,DHP)
  1195. !
  1196. !***************************************************************************************
  1197. IF (ISNOW.EQ.0) THEN ! MULTI-LAYER SNOW
  1198. !***************************************************************************************
  1199. PRCP=P0
  1200. TKAIR=TM
  1201. CALL GETMET(IPTYPE,PRCP,TKAIR, &
  1202. PRCPS,PRCPW,FIFALL,FLFALL,BIFALL,BLFALL)
  1203. !c ** aerodynamic resistance and flux calculations
  1204. SOLAR=0.
  1205. DO 1100 IVEG = 2, 2
  1206. DO 1100 IWAVE = 1, 2
  1207. DO 1100 IRAD = 1, 2
  1208. SOLAR=SOLAR+RADFAC(IVEG,IWAVE,IRAD)*RADN(IWAVE,IRAD)
  1209. 1100 CONTINUE
  1210. CALL SNOW_1ST (DTT,TM,SOLAR,PRCPW,PRCPS,BIO,BLO,DICEVOL, &
  1211. DLIQVOL,TSSNO,PDZDTC,POROSITY,SO,SSO,WF,DHP,DZO,WO, &
  1212. BWO,BTO,CTO,DMASS,DSOL,SNROFF,HROFF,SNOWDEPTH,SOLSOIL, &
  1213. FLO,FIO,DMLTO,HO,BIFALL,BLFALL,FLFALL)
  1214. !
  1215. CALL TEMRS2(DTT,TC,TGS,TD,TA,TM,QM,EM,PSUR,WWW,CAPAC,SATCAP, &
  1216. DTC,DTG,RA,RST,ZDEPTH,BEE,PHSAT,POROS,XDD,Z0,RDC,RBC,VCOVER, &
  1217. Z2,ZLT,DEFAC,TU,TL,TOPT,RSTFAC,NROOT,ROOTD,PHSOIL,ROOTP, &
  1218. PH1,PH2,ECT,ECI,EGT,EGI,EGS,HC,HG,EC,EG,EA,RADT,CHF,SHF, &
  1219. ALBEDO,ZLWUP,THERMK,RHOAIR,ZWIND,UM,USTAR,DRAG,CCX,CG, &
  1220. ISNOW,CHISL,TSOIL,SOLSOIL,CSOIL,WFSOIL,POROSITY, &
  1221. DZ,DZO,W,WO,WF,TSSN,TSSNO,BW,BWO,CT,CTO,FI,FIO,FL,FLO, &
  1222. BL,BLO,BI,BIO,BT,BTO,DMLT,DMLTO,H,HO,S,SO,SS,SSO,DSOL,DHP, &
  1223. DICEVOL,DLIQVOL,THK,QK,SWE,SNOWDEN,SNOWDEPTH,TKAIR,SNROFF, &
  1224. DZSOIL,BPS,rib,CU,XCT,flup,ii,jj)
  1225. !
  1226. CALL OLD(TSSN,BW,BL,BI,H,FL,FI,W,DZ,SS,CT,BT,DMLT, &
  1227. TSSNO,BWO,BLO,BIO,HO,FLO,FIO,WO,DZO,SSO,CTO,BTO,DMLTO)
  1228. !
  1229. !***************************************************************************************
  1230. ELSE ! SINGLE-LAYER SNOW
  1231. !***************************************************************************************
  1232. !
  1233. CALL TEMRS1(DTT,TC,TGS,TD,TA,TM,QM,EM,PSUR,WWW,CAPAC,SATCAP, &
  1234. DTC,DTG,RA,RST,ZDEPTH,BEE,PHSAT,POROS,XDD,Z0,RDC,RBC,VCOVER,Z2, &
  1235. ZLT,DEFAC,TU,TL,TOPT,RSTFAC,NROOT,ROOTD,PHSOIL,ROOTP,PH1,PH2, &
  1236. ECT,ECI,EGT,EGI,EGS,HC,HG,EC,EG,EA,RADT,CHF,SHF,ALBEDO,ZLWUP, &
  1237. THERMK,RHOAIR,ZWIND,UM,USTAR,DRAG,CCX,CG, ISNOW,SNOWDEN, &
  1238. BPS,rib,CU,XCT,flup,ii,jj)
  1239. !
  1240. SWE=CAPAC(2)
  1241. SNOWDEPTH=SWE*SNOWDEN
  1242. SNROFF=0.
  1243. !
  1244. END IF
  1245. !***************************************************************************************
  1246. !
  1247. CALL UPDAT1(DTT,TC,TGS,TD,CAPAC,DTC,DTG,ECT,ECI,EGT,EGI, &
  1248. EGS,EG,HC,HG,HFLUX,ETMASS,ROFF, &
  1249. 1,ROOTD,ROOTP,POROS,BEE,SATCO,SLOPE, &
  1250. PHSAT,ZDEPTH,WWW,CCX,CG,CHF,SHF, ISNOW,WFSOIL,SWE,SNROFF,SMELT)
  1251. !
  1252. IF (ISNOW.EQ.0) THEN
  1253. CAPAC(2)=SWE
  1254. IF (SNOWDEPTH.LT.SNODEP_CR) THEN
  1255. ISNOW=1
  1256. CALL LAYER1 (CSOIL,TGS,DZSOIL,H,W,SNOWDEPTH,SWE,STEMP,N2)
  1257. ELSE
  1258. ISNOW=0
  1259. CALL MODNODE(SNOWDEPTH,DZO,WO,HO,TSSNO,BWO,BIO, &
  1260. BLO,BTO,FIO,FLO,CTO,DLIQVOL,DICEVOL)
  1261. END IF
  1262. ELSE IF(ISNOW.GT.0) THEN
  1263. IF (CAPAC(2)*SNOWDEN.GT.SNODEP_CR) THEN
  1264. SWE=CAPAC(2)
  1265. SNOWDEPTH=CAPAC(2)*SNOWDEN
  1266. ISNOW=0
  1267. CALL LAYERN (TGS,SWE,SNOWDEPTH, DZO,BWO,WO,BTO,CTO,FLO,FIO, &
  1268. HO,BLO,BIO,DLIQVOL,DICEVOL,TSSNO,DMLTO)
  1269. ELSE
  1270. ISNOW=1
  1271. END IF
  1272. END IF
  1273. ROFF=ROFF+SNROFF
  1274. !
  1275. !------------------------------------------------------------------------
  1276. SOILM=(WWW(1)*ZDEPTH(1)+WWW(2)*ZDEPTH(2)+WWW(3)*ZDEPTH(3))*POROS
  1277. !------------------------------------------------------------------------
  1278. UMOM=RHOAIR*CU*USTAR*UMM
  1279. VMOM=RHOAIR*CU*USTAR*VMM
  1280. HLFLX= ETMASS/RHOAIR/DTT
  1281. HSFLX= HFLUX/CPAIR/RHOAIR/DTT
  1282. ULWSF1=TGEFF*TGEFF*TGEFF*TGEFF*STEFAN
  1283. Q2M=0.622*EA/(PSURF-EA)
  1284. EVAP=ETMASS*HLAT
  1285. PLANTR=RCC
  1286. CM=(USTAR*USTAR)/(UM*UM)
  1287. CH=1/(UM*RA)
  1288. !
  1289. FM=VKC/CU
  1290. FH=VKC/XCT
  1291. !
  1292. !
  1293. EVAPSOIL=EGS /DTT
  1294. EVAPWC=ECI /DTT
  1295. EVAPDC=ECT /DTT
  1296. EVAPSN=EGI /DTT
  1297. EVAPGX=EGT /DTT
  1298. ELATEN=EVAPSOIL+EVAPWC+EVAPDC+EVAPSN+EVAPGX
  1299. XHLFLX=ELATEN/HLAT
  1300. GHTFLX=CHF+SHF
  1301. !=====================================================================
  1302. xhsflx=(hc+hg)/dtt
  1303. !=====================================================================
  1304. !
  1305. CALL CONVDIM(1, &
  1306. DZO1,WO1,TSSN1,TSSNO1,BWO1,BTO1,CTO1,FIO1,FLO1,BIO1,BLO1,HO1, &
  1307. DZO2,WO2,TSSN2,TSSNO2,BWO2,BTO2,CTO2,FIO2,FLO2,BIO2,BLO2,HO2, &
  1308. DZO3,WO3,TSSN3,TSSNO3,BWO3,BTO3,CTO3,FIO3,FLO3,BIO3,BLO3,HO3, &
  1309. DZO4,WO4,TSSN4,TSSNO4,BWO4,BTO4,CTO4,FIO4,FLO4,BIO4,BLO4,HO4, &
  1310. DZO, WO, TSSN, TSSNO, BWO, BTO, CTO, FIO, FLO, BIO, BLO, HO )
  1311. WWW1=WWW(1)*POROS
  1312. WWW2=WWW(2)*POROS
  1313. WWW3=WWW(3)*POROS
  1314. SNOA = CAPAC(2)
  1315. SNOB = CAPAC(1)
  1316. !------------------------------------------------
  1317. !cfds Convert WEASD back to kg/m2
  1318. SNOA = SNOA*1000.
  1319. SNOB = SNOB*1000.
  1320. !------------------------------------------------
  1321. SALB11=SALB(1,1)
  1322. SALB12=SALB(1,2)
  1323. SALB21=SALB(2,1)
  1324. SALB22=SALB(2,2)
  1325. !
  1326. ! output
  1327. !
  1328. xlhf = elaten
  1329. xshf = xhsflx
  1330. xghf = ghtflx
  1331. xegs = evapsoil
  1332. xeci = evapwc
  1333. xect = evapdc
  1334. xegi = evapsn
  1335. xegt = evapgx
  1336. xsdn = fsdown
  1337. xsup = fsup
  1338. xldn = fldown
  1339. xlup = flup
  1340. xwat = soilm
  1341. xhcx = hc/dtt
  1342. xhgx = hg/dtt
  1343. xzlt = zlt(1)
  1344. xvcf = vcover(1)
  1345. xxz0 = z0
  1346. xveg = float(itype)
  1347. !------------------------------------------------------
  1348. END SUBROUTINE SSIB
  1349. !------------------------------------------------------
  1350. !
  1351. !-----------------------------------------------------------------------
  1352. !**********************************************
  1353. SUBROUTINE SSIB_SEAICE &
  1354. ( II, JJ, DDTT, ITIME, ZLAT, SUNANGLE, &
  1355. PPL, PPC, RLWDOWN, ZWIND2, &
  1356. WWW1, WWW2, WWW3, &
  1357. TC, TGS, TD, &
  1358. SNOA, ROFF, YICE, &
  1359. UMM, VMM, QM, TM, &
  1360. PM, PSUR, &
  1361. SWDOWN1, SNOB, &
  1362. SALB11, SALB12, SALB21, SALB22, &
  1363. RADFRAC11, RADFRAC12, RADFRAC21, RADFRAC22, &
  1364. XHSFLX, ELATEN, GHTFLX, XHLFLX, TGEFF, &
  1365. USTAR, RIB, FM, FH, CM, &
  1366. XLHF, XSHF, XGHF, & ! output
  1367. XSDN, XSUP, XLDN, XLUP, & ! output
  1368. XWAT, XXZ0, & ! output
  1369. XVEG, & ! output
  1370. DAY, CLOUD, Q2M, TA, BEDO, &
  1371. sw_physics,ice_threshold &
  1372. )
  1373. !**********************************************
  1374. !-----------------------------------------------------------------------
  1375. ! THERE ARE A MAIN SSIB PROGRAM AND 12 SUBROUTINE FILES, WHICH ARE:
  1376. ! VEGOUT
  1377. ! CROPS
  1378. ! RADAB
  1379. ! ROOT1
  1380. ! STOMA1
  1381. ! INTERC
  1382. ! TEMRS1
  1383. ! UPDAT1
  1384. ! RASIT5
  1385. ! STRES1
  1386. ! NEWTON
  1387. ! YONGKANG XUE
  1388. !-----------------------------------------------------------------------
  1389. ! INPUT
  1390. ! DDTT: TIME INTERVAL
  1391. ! SUNANGLE: SOLAR ZENITH ANGLE
  1392. ! SWDOWN: SHORT WAVE DOWN(W/M*M);
  1393. ! RADFRAC: SHORT WAVE COMPONENTS (visible and near IR; direct and diffuse)
  1394. ! RLWDOWN: LONG WAVE DOWN(W/M*M);
  1395. ! PPL, PPC: LARGE SCALE AND CONVECTIVE PRECIPITATIONS AT THE TIME STEP (mm)
  1396. ! TM: TEMPERETURE AT LOWEST MODEL LAYER (K)
  1397. ! UMM,VMM: ZONAL AND MERIDIONAL WINDS AT LOWEST MODEL LAYER (m/S)
  1398. ! QM: WATER VAPOR AT LOWEST MODEL LAYER;
  1399. ! PSURF: SURFACE PRESSURE (mb)
  1400. ! ZWIND: HEIGHT (m) OF LOWEST MODEL LAYER
  1401. ! ITYPE: VEGETATION TYPE
  1402. ! ZLAT: LATITUDE, SOUTH POLE IS -90 DEGREE AND NORTH POLE IS 90 DEGREE
  1403. ! MONTH: MONTH
  1404. ! DAY: CALENDER DATE
  1405. ! IYEAR: YEAR
  1406. ! OUTPUT
  1407. ! ETMASS: EVAPORATION (mm/step)
  1408. ! ELATEN: LATENT HEAT FLUX (w/m*m)
  1409. ! EVAPSOIL,EVAPWC,EVAPDC,EVAPSN: LATENT HEAT FROM (SOIL, INTERCEPTION,
  1410. ! TRANSPIRATION, AND SNOW SURFACE)
  1411. ! HFLUX: SENSIBLE HEAT FLUX(w/m*m)
  1412. ! GHTFLX: GROUND HEAT FLUX(w/m*m) = CHF+SHF
  1413. ! USTAR: FRICTION VELOCITY (m/s)
  1414. ! DRAG: MOMENTUM FLUX (kg/m/s**2)
  1415. ! DRAGU: U COMPONENT OF MOMENTUM FLUX (kg/m/s**2)
  1416. ! DRAGV: V COMPONENT OF MOMENTUM FLUX (kg/m/s**2)
  1417. ! TGEFF: RADIATIVE TEMPERATURE (K)
  1418. ! BEDO: TOTAL ALBEDO
  1419. ! SALB: ALBEDO FOR 4 COMPONENTS
  1420. ! RADT: NET RADIATION AT CANOPY AND GROUND LEVELS
  1421. ! TGS: SOIL SURFACE TEMPERATURE (K)
  1422. ! TC: CANOPY TEMPERATURE (K)
  1423. ! TD: DEEP SOIL TEMPERATURE (K)
  1424. ! TA: TEMPERATURE AT CANOPY AIR SPACE (K)
  1425. ! CAPAC: INTERCEPTION AT CANOPY (1) and SNOW DEPTH (2)
  1426. ! WWW: SOIL MOISTURE
  1427. ! SOILM: TOTAL SOIL WATER CONTENT
  1428. ! ROFF: RUN OFF
  1429. !
  1430. !----------------------------------------------------------------------
  1431. INTEGER, DIMENSION (12) :: IDAYS
  1432. REAL, DIMENSION (2) :: CAPAC, SATCAP, GREEN, VCOVER, ZLT, CHIL, TOPT, TL, &
  1433. TU, DEFAC, PH1, PH2, RST, ROOTD, RADT, PAR, PD
  1434. REAL, DIMENSION (3) :: WWW, SOREF, ZDEPTH, ROOTP, PHSOIL, YMATT, YMATQ
  1435. REAL, DIMENSION (2,2) :: RADFRAC, SALB
  1436. REAL, DIMENSION (2,3) :: RSTPAR
  1437. REAL, DIMENSION (2,4) :: RSTFAC
  1438. REAL, DIMENSION (3,2) :: RADN
  1439. REAL, DIMENSION (2,3,2) :: TRAN, REF, ALBEDO, EXTK
  1440. REAL, DIMENSION (13) :: TD_DEPTH
  1441. REAL :: ice_threshold
  1442. INTEGER :: sw_physics !choice of SW radiation scheme
  1443. !
  1444. DATA IDAYS/31,59,90,120,151,181,212,243,273,304,334,366/
  1445. !
  1446. DATA TD_DEPTH/1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.0, 1.0, 1.0 &
  1447. & , 0.5, 0.5, 1.5, 1.5/
  1448. !**********************************************
  1449. ! The final albedo=original albedo+XADJ
  1450. XADJ=0.
  1451. ! CTLPA controls stomatal resistance;
  1452. ! Final stomatal resistance=ctlpa * stomatal resistance
  1453. CTLPA=1.
  1454. ! NROOT controls root distribution. nroot=1: root uniformly distributes
  1455. ! in the soil layer;
  1456. ! If NROOT not =1, root distribution is controled by rootp.
  1457. NROOT=1
  1458. ! INTG=? TIME INTEGRATION OF SURFACE PHYSICAL VARIABLE IS DONE
  1459. ! INTG=2: LEAP-FROG IMPLICIT SCHEME. INTG=1 BACKWORD IMPLICIT SCHEME
  1460. INTG=1 !!!!!! in MM5 version hardwired for INTG=1 !!!!!!!!!!!!!
  1461. !------------------------------------------------
  1462. ITYPE=13
  1463. ZWIND=ZWIND2*0.5
  1464. !------------------------------------------------
  1465. ! set DAY in year and current month MON_COR
  1466. !------------------------------------------------
  1467. IMONTH=1
  1468. IDAY=INT(DAY)
  1469. DO I=1,12
  1470. IF(IDAY.LE.IDAYS(I)) THEN
  1471. IMONTH=I
  1472. EXIT
  1473. ENDIF
  1474. ENDDO
  1475. !crr correction for southern hemisphere (reverse months) Ratko, Oct 28, 2005
  1476. IF(ZLAT.LT.0.0) THEN
  1477. MON_COR=IMONTH+6
  1478. IF(MON_COR.GT.12) MON_COR=MON_COR-12
  1479. ELSE
  1480. MON_COR=IMONTH
  1481. ENDIF
  1482. !------------------------------------------------
  1483. IF (ITIME.EQ.1) TA=TC
  1484. !
  1485. PSURF=PSUR*0.01
  1486. DTT =DDTT*FLOAT(INTG)
  1487. !------------------------------------------------
  1488. ! ** Read in vegetation parameters
  1489. CALL VEGOUT(TRAN,REF,GREEN,VCOVER,CHIL, &
  1490. RSTPAR,TOPT,TL,TU,DEFAC,PH1,PH2, &
  1491. ZLT,Z0,XDD,Z2,Z1,RDC,RBC,ROOTD,SOREF, &
  1492. BEE, PHSAT, POROS, SATCO,SLOPE, &
  1493. ZDEPTH,MON_COR,ITYPE)
  1494. !
  1495. !crr ------------ STC initialization ------------------------------------
  1496. IF (ITIME.EQ.1) THEN
  1497. STLEV1=0.05 ! half of 10cm layer
  1498. STLEV2=1.05 ! half of second + first layer
  1499. DEPTH = TD_DEPTH(ITYPE)
  1500. IF (DEPTH.GT.STLEV1.AND.DEPTH.LE.STLEV2)THEN ! interp.
  1501. TD = ( (STLEV2-DEPTH)*TGS + (DEPTH-STLEV1)*TD ) &
  1502. & /(STLEV2-STLEV1)
  1503. ELSE IF(DEPTH.GT.STLEV2)THEN ! extrap.
  1504. TD = ( (DEPTH-STLEV1)*TD - (DEPTH-STLEV2)*TGS) &
  1505. & /(STLEV2-STLEV1)
  1506. ENDIF
  1507. ENDIF
  1508. !------------------------------------------------------------------------
  1509. WWW(1) = 1.
  1510. WWW(2) = 1.
  1511. WWW(3) = 1.
  1512. !
  1513. CAPAC(1)=SNOB
  1514. CAPAC(2)=SNOA
  1515. SNOWDEN = 3.75 ! mchen add for initialization
  1516. IF (ITIME.EQ.1) THEN
  1517. TA=TGS
  1518. CAPAC(1)=0.
  1519. CAPAC(2)=0.
  1520. IF (SNOA.GT.0.) CAPAC(1) = ZLT(1) * 0.0001
  1521. TC = AMIN1(TC ,273.15)
  1522. TGS= AMIN1(TGS,273.15)
  1523. TD = AMIN1(TD ,272.50)
  1524. ELSE
  1525. ! IF( YICE .LT. 0.5 ) THEN ! previous sea, now sea-ice
  1526. IF( YICE .LT. ice_threshold ) THEN ! previously water, now sea-ice
  1527. CAPAC(1)= 0.
  1528. CAPAC(2)= 0.
  1529. XADIA = EXP(GASR/CPAIR*LOG(PSUR/PM))
  1530. XX = MIN(TM*XADIA,273.15)
  1531. TC = MIN(TM*XADIA,273.15)
  1532. TGS= MIN(TM*XADIA,273.15)
  1533. IF(TD.EQ.0.) TD=272.5
  1534. TD = MIN(TD,272.5)
  1535. ENDIF
  1536. ENDIF
  1537. !
  1538. UM=SQRT(UMM**2+VMM**2)
  1539. RHOAIR=100./GASR*(PSURF+0.01*PM)/(TM+TA)
  1540. AKAPPA = GASR/CPAIR
  1541. BPS =1.0 / EXP ( AKAPPA * ALOG (0.01*PM/PSURF) )
  1542. !
  1543. ! CONVERT TO VAPOR PRES. TO MB
  1544. EM=(PSURF*QM)/0.6220
  1545. IF (ITIME.EQ.1) EA=EM
  1546. !
  1547. SUNANG=AMAX1(SUNANGLE,0.01746)
  1548. !
  1549. ! By Zhenxin 2011-06-20
  1550. ! IF (sw_physics.eq.3) THEN
  1551. IF (sw_physics.eq.3 .or. sw_physics.eq.4) THEN
  1552. ! End by Zhenxin 2011-06-20
  1553. !**********************************************
  1554. !fds - RADFRAC from radiation scheme 3 (06/2010)
  1555. !fds - Otherwise use cloud cover to calculate radfrac
  1556. radfrac11 = amax1(radfrac11,0.025)
  1557. radfrac12 = amax1(radfrac12,0.025)
  1558. radfrac21 = amax1(radfrac21,0.025)
  1559. radfrac22 = amax1(radfrac22,0.025)
  1560. swdown = radfrac11 + radfrac12 + radfrac21 + radfrac22
  1561. RADFRAC(1,1) = radfrac11/swdown
  1562. RADFRAC(1,2) = radfrac12/swdown
  1563. RADFRAC(2,1) = radfrac21/swdown
  1564. RADFRAC(2,2) = radfrac22/swdown
  1565. ELSE
  1566. ! ** CALCULATE THE CLOUD COVER USING AN EMPIRICAL EQUATION
  1567. ! ONLY USE THIS PART WHEN IT IS NEEDED
  1568. ! ** ONLY USE THIS PART WHEN SW_PHYSICS = 1 IS USED ** By Zhenxin 2011-06
  1569. swdown = amax1(swdown1,0.1)
  1570. CLOUD = AMAX1(CLOUD,0.0)
  1571. CLOUD = AMIN1(CLOUD,1.0)
  1572. CLOUD = AMAX1(0.58,CLOUD)
  1573. !
  1574. DIFRAT = 0.0604 / ( SUNANG-0.0223 ) + 0.0683
  1575. IF ( DIFRAT .LT. 0.0 ) DIFRAT = 0.0
  1576. IF ( DIFRAT .GT. 1.0 ) DIFRAT = 1.0
  1577. !
  1578. DIFRAT = DIFRAT + ( 1.0 - DIFRAT ) * CLOUD
  1579. VNRAT = ( 580.0 - CLOUD*464.0 ) / ( ( 580.0-CLOUD*499.0) &
  1580. & + ( 580.0 - CLOUD*464.0 ) )
  1581. !
  1582. RADFRAC(1,1) = (1.0-DIFRAT)*VNRAT
  1583. RADFRAC(1,2) = DIFRAT*VNRAT
  1584. RADFRAC(2,1) = (1.0-DIFRAT)*(1.0-VNRAT)
  1585. RADFRAC(2,2) = DIFRAT*(1.0-VNRAT)
  1586. !**********************************************
  1587. ENDIF
  1588. !
  1589. RADN(1,1) = RADFRAC(1,1) * SWDOWN
  1590. RADN(1,2) = RADFRAC(1,2) * SWDOWN
  1591. RADN(2,1) = RADFRAC(2,1) * SWDOWN
  1592. RADN(2,2) = RADFRAC(2,2) * SWDOWN
  1593. RADN(3,1) = 0.
  1594. RADN(3,2) = RLWDOWN
  1595. !
  1596. ! END OF EMPIRICAL EQUATIONS
  1597. ! *********************************************************
  1598. !
  1599. CALL RADAB_ICE(TRAN,REF,GREEN,VCOVER,CHIL,ZLT,Z2,Z1,SOREF, &
  1600. TC,TGS,SATCAP,EXTK,CLOSS,GLOSS,THERMK,P1F,P2F, &
  1601. RADT,PAR,PD,SALB,ALBEDO,TGEFF,SUNANG,XADJ,CAPAC, &
  1602. RADN,BEDO,ZLWUP,RADFRAC,SWDOWN,SNOCV,1, &
  1603. fsdown,fldown,fsup,flup)
  1604. CALL ROOT1(PHSAT,BEE,WWW,PHSOIL)
  1605. CALL STOMA1(GREEN,VCOVER,CHIL,ZLT,PAR,PD,EXTK,SUNANG,RST, &
  1606. RSTPAR, CTLPA)
  1607. !***
  1608. POROSAVE=POROS
  1609. POROS=0.95
  1610. !***
  1611. !
  1612. CALL INTERC(DTT ,VCOVER,ZLT,TM,TC,TGS,CAPAC,WWW,PPC,PPL,ROFF, &
  1613. ZDEPTH,POROS,CCX,CG,SATCO,SATCAP,SPWET,EXTK,RNOFFS,FILTR, &
  1614. SMELT)
  1615. !
  1616. CALL TEMRS1(DTT,TC,TGS,TD,TA,TM,QM,EM,PSUR,WWW,CAPAC,SATCAP, &
  1617. DTC,DTG,RA,RST,ZDEPTH,BEE,PHSAT,POROS,XDD,Z0,RDC,RBC,VCOVER,Z2, &
  1618. ZLT,DEFAC,TU,TL,TOPT,RSTFAC,NROOT,ROOTD,PHSOIL,ROOTP,PH1,PH2, &
  1619. ECT,ECI,EGT,EGI,EGS,HC,HG,EC,EG,EA,RADT,CHF,SHF,ALBEDO,ZLWUP, &
  1620. THERMK,RHOAIR,ZWIND,UM,USTAR,DRAG,CCX,CG, ISNOW,SNOWDEN, &
  1621. BPS,rib,CU,XCT,flup,ii,jj)
  1622. !
  1623. CALL UPDAT1_ICE(DTT ,TC,TGS,TD,CAPAC,DTC,DTG,ECT,ECI,EGT,EGI, &
  1624. EGS,EG,HC,HG,HFLUX,ETMASS,FILTR,SOILDIF,SOILDRA,ROFF, &
  1625. RNOFFB,RNOFFS,NROOT,ROOTD,ROOTP,POROS,BEE,SATCO,SLOPE, &
  1626. PHSAT,ZDEPTH,WWW,CCX,CG,CHF,SHF,SMELT)
  1627. !***
  1628. POROS=POROSAVE
  1629. TD = AMIN1(TD ,273.15)
  1630. TC = AMIN1(TC ,273.15)
  1631. TGS = AMIN1(TGS,273.15)
  1632. !***
  1633. !
  1634. !------------------------------------------------------------------------
  1635. SOILM=(WWW(1)*ZDEPTH(1)+WWW(2)*ZDEPTH(2)+WWW(3)*ZDEPTH(3))*POROS
  1636. !------------------------------------------------------------------------
  1637. UMOM=RHOAIR*CU*USTAR*UMM
  1638. VMOM=RHOAIR*CU*USTAR*VMM
  1639. HLFLX= ETMASS/RHOAIR/DTT
  1640. HSFLX= HFLUX/CPAIR/RHOAIR/DTT
  1641. ULWSF1=TGEFF*TGEFF*TGEFF*TGEFF*STEFAN
  1642. Q2M=0.622*EA/(PSURF-EA)
  1643. EVAP=ETMASS*HLAT
  1644. PLANTR=RCC
  1645. CM=(USTAR*USTAR)/(UM*UM)
  1646. CH=1/(UM*RA)
  1647. !
  1648. FM=VKC/CU
  1649. ! FH=VKC/CT !fds corrected (02/2012)
  1650. FH=VKC/XCT
  1651. !
  1652. !
  1653. ELATEN=EVAP/DTT
  1654. XHLFLX=ELATEN/HLAT
  1655. GHTFLX=CHF+SHF
  1656. !=====================================================================
  1657. xhsflx=(hc+hg)/dtt
  1658. !=====================================================================
  1659. !
  1660. WWW1=WWW(1)*POROS
  1661. WWW2=WWW(2)*POROS
  1662. WWW3=WWW(3)*POROS
  1663. SNOA = CAPAC(2)
  1664. SNOB = CAPAC(1)
  1665. SALB11=SALB(1,1)
  1666. SALB12=SALB(1,2)
  1667. SALB21=SALB(2,1)
  1668. SALB22=SALB(2,2)
  1669. !
  1670. ! later for output
  1671. !
  1672. xlhf = elaten
  1673. xshf = xhsflx
  1674. xghf = ghtflx
  1675. xsdn = fsdown
  1676. xsup = fsup
  1677. xldn = fldown
  1678. xlup = flup
  1679. xwat = soilm
  1680. xxz0 = z0
  1681. xveg = float(itype)
  1682. !
  1683. !------------------------------------------------------
  1684. END SUBROUTINE SSIB_SEAICE
  1685. !------------------------------------------------------
  1686. !=======================================================================
  1687. !
  1688. SUBROUTINE CROPS(XLAT,DAY,CHIL,ZLT,GREEN,XCOVER &
  1689. ,RSTPAR,TOPT,TL,TU,DEFAC,PH2,PH1)
  1690. !
  1691. !=======================================================================
  1692. !
  1693. ! A NEW CROP VERSION BY XUE. AUG., 1998
  1694. !
  1695. ! XLAT IS FROM -90 TO 90 DEGREES FROM S. TO N.
  1696. !
  1697. !----------------------------------------------------------------------
  1698. REAL, DIMENSION (2) :: GREEN, XCOVER, CHIL, ZLT, TOPT, TL, TU, DEFAC, PH1, PH2
  1699. REAL, DIMENSION (2,3) :: RSTPAR
  1700. REAL, DIMENSION (9) :: PHENST, WLAI, WGRN
  1701. !
  1702. !-----------------------------------------------------------------
  1703. !** E J H SD R HRV CUT PRE-E E
  1704. ! SAVE WLAI,WGRN,IHEAD,IEND,DEND,IWHEAT,SYR
  1705. DATA WLAI/1.0, 2.0, 6.0, 4.0, 3.0, 1.0, 0.01, 0.01, 1.0/
  1706. DATA WGRN/0.6, 0.9, 0.8, 0.5, 0.2, 0.1, 0.01, 0.01, 0.6/
  1707. DATA IHEAD,IEND,DEND,IWHEAT/3,9,244.,12/,SYR/365.25E0/
  1708. IF (XLAT.LT.0.) THEN
  1709. RDAY= DAY+184
  1710. IF (RDAY.GT.365) RDAY=RDAY-365
  1711. ELSE
  1712. RDAY= DAY
  1713. END IF
  1714. JULDAY=INT(RDAY+0.2)
  1715. PHI=XLAT
  1716. APHI = ABS(PHI)
  1717. IF (APHI.GT.55.) PHI=SIGN(55.,PHI)
  1718. IF (APHI.LT.20.) PHI=SIGN(20.,PHI)
  1719. !
  1720. FLIP = 0.0
  1721. !
  1722. ! ** DETERMINE WHEAT PHENOLOGY FOR LATITUDE AND JULIAN DAY
  1723. PHENST(2) = 4.50 *ABS(PHI) - 64.0 + FLIP
  1724. PHENST(3) = 4.74 *ABS(PHI) - 46.2 + FLIP
  1725. PHENST(4) = 4.86 *ABS(PHI) - 30.8 + FLIP
  1726. PHENST(5) = 4.55 *ABS(PHI) - 3.0 + FLIP
  1727. PHENST(6) = 4.35 *ABS(PHI) + 11.5 + FLIP
  1728. PHENST(7) = PHENST(6) + 3.0
  1729. DEMG = ABS( 5.21 *ABS(PHI) - 0.3 )
  1730. PHENST(1) = PHENST(2) - DEMG
  1731. PHENST(9) = PHENST(1)
  1732. PHENST(8) = PHENST(9) - 5.0
  1733. !
  1734. DO 10 NS = 1,9
  1735. IF(PHENST(NS) .LT. 0.0E0)PHENST(NS) = PHENST(NS) + 365.
  1736. IF(PHENST(NS) .GT. 365. )PHENST(NS) = PHENST(NS) - 365.
  1737. 10 CONTINUE
  1738. !
  1739. ROOTGC = 1.0
  1740. CHILW =-0.02
  1741. TLAI = 0.5
  1742. GRLF = 0.6
  1743. !
  1744. ! ** FIND GROWTH STAGE GIVEN LATITUDE AND DAY
  1745. DO 50 NS = 1,8
  1746. TOP = PHENST(NS+1)
  1747. BOT = PHENST(NS)
  1748. DIFF1 = TOP-BOT
  1749. DIFF2 = RDAY-BOT
  1750. IF(RDAY.GE. BOT .AND. RDAY .LE. TOP ) GO TO 40
  1751. IF(BOT .LT. TOP ) GO TO 50
  1752. !
  1753. ! ** PHENOLOGY STAGES OVERLAP THE END OF YEAR?
  1754. ICOND = 0
  1755. IF(RDAY .GE. BOT .AND. RDAY .LE. 365.) ICOND = 1
  1756. IF(RDAY .GE. 0.0 .AND. RDAY .LE. TOP ) ICOND = 2
  1757. !
  1758. IF(ICOND .EQ. 0)GO TO 50
  1759. IF(ICOND .EQ. 2)GO TO 35
  1760. DIFF1 = 365. - BOT + TOP
  1761. DIFF2 = RDAY - BOT
  1762. GO TO 40
  1763. !
  1764. 35 CONTINUE
  1765. DIFF1 = 365. - BOT + TOP
  1766. DIFF2 = 365. - BOT + RDAY
  1767. !
  1768. ! ** DATE FOUND IN PHENOLOGY STAGE
  1769. 40 CONTINUE
  1770. IF ((RDAY.GT.PHENST(IHEAD)).AND.(RDAY.LE.DEND)) THEN
  1771. TLAI=WLAI(IHEAD)
  1772. GRLF=WGRN(IHEAD)
  1773. GO TO 77
  1774. END IF
  1775. IF ((RDAY.GT.DEND).AND.(RDAY.LE.PHENST(IEND))) THEN
  1776. DIFF1=PHENST(IEND)-DEND
  1777. DIFF2=RDAY-DEND
  1778. PERC = DIFF2/DIFF1
  1779. TLAI = PERC*(WLAI(IEND)-WLAI(IHEAD)) + WLAI(IHEAD)
  1780. GRLF = PERC*(WGRN(IEND)-WGRN(IHEAD)) + WGRN(IHEAD)
  1781. GO TO 77
  1782. END IF
  1783. PERC = DIFF2/DIFF1
  1784. TLAI = PERC*(WLAI(NS+1)-WLAI(NS)) + WLAI(NS)
  1785. GRLF = PERC*(WGRN(NS+1)-WGRN(NS)) + WGRN(NS)
  1786. 77 CONTINUE
  1787. GO TO 95
  1788. 50 CONTINUE
  1789. 95 CONTINUE
  1790. XCOVER(1)=0.90*(1.0 - EXP(-TLAI))
  1791. ZLTGMX = WLAI(IHEAD)
  1792. ROOTGC = 2910.0 * (0.5 +0.5 *TLAI/ZLTGMX * GRLF)
  1793. IF (NS.NE.1.AND.NS.NE.2) CHILW=-0.2
  1794. !
  1795. ZLT (1) = TLAI
  1796. GREEN (1) = GRLF
  1797. CHIL (1) = CHILW
  1798. !
  1799. !------------------------------------------------------
  1800. END SUBROUTINE CROPS
  1801. !------------------------------------------------------
  1802. !=======================================================================
  1803. !
  1804. SUBROUTINE ROOT1(PHSAT,BEE,WWW,PHSOIL)
  1805. ! 12 AUG 2000
  1806. !=======================================================================
  1807. !
  1808. ! CALCULATION OF SOIL MOISTURE POTENTIALS IN ROOT ZONE OF EACH
  1809. ! VEGETATION LAYER AND SUMMED SOIL+ROOT RESISTANCE
  1810. !
  1811. !-----------------------------------------------------------------------
  1812. !----------------------------------------------------------------------
  1813. REAL, DIMENSION (3) :: WWW, PHSOIL
  1814. !
  1815. DO 1000 IL = 1, 3
  1816. PHSOIL(IL) = PHSAT * AMAX1( 0.05, WWW(IL) ) ** ( - BEE )
  1817. 1000 CONTINUE
  1818. !
  1819. !-----------------------------------------------------------------------
  1820. ! AVERAGE SOIL MOISTURE POTENTIAL IN ROOT ZONE USED FOR SOURCE
  1821. !-----------------------------------------------------------------------
  1822. !
  1823. !
  1824. ! PHROOT(1) = PHSOIL(1)-0.01
  1825. !
  1826. ! DO 1200 I = 2 ,3
  1827. !1200 PHROOT(1) = AMAX1( PHROOT(1), PHSOIL(I) )
  1828. ! PHROOT(2) = PHROOT(1)
  1829. !
  1830. !
  1831. !------------------------------------------------------
  1832. END SUBROUTINE ROOT1
  1833. !------------------------------------------------------
  1834. !=======================================================================
  1835. !
  1836. SUBROUTINE STOMA1(GREEN,VCOVER,CHIL,ZLT,PAR,PD,EXTK,SUNANG,RST, &
  1837. RSTPAR,CTLPA)
  1838. ! 12 AUG 2000
  1839. !=======================================================================
  1840. !
  1841. ! CALCULATION OF PAR-LIMITED STOMATAL RESISTANCE
  1842. !
  1843. !-----------------------------------------------------------------------
  1844. !----------------------------------------------------------------------
  1845. REAL, DIMENSION (2) :: GREEN, VCOVER, ZLT, CHIL, PAR, PD, RST
  1846. REAL, DIMENSION (2,3) :: RSTPAR
  1847. REAL, DIMENSION (2,3,2) :: EXTK
  1848. !
  1849. DO 1000 IVEG = 1, 2
  1850. !
  1851. AT = ZLT(IVEG) / VCOVER(IVEG)
  1852. !
  1853. IF (SUNANG .LE. 0.02) THEN
  1854. XABC = RSTPAR(IVEG,1) / RSTPAR(IVEG,2) + RSTPAR(IVEG,3)
  1855. RST(IVEG) = 0.5 / XABC * AT
  1856. IF (RST(IVEG) .LT. 0.) RST(IVEG) = 0.00001
  1857. GO TO 1010
  1858. END IF
  1859. !
  1860. GAMMA = ( RSTPAR(IVEG,1) + RSTPAR(IVEG,2) * RSTPAR(IVEG,3) ) / &
  1861. RSTPAR(IVEG,3)
  1862. !
  1863. POWER1 = AMIN1( 50., AT * EXTK(IVEG,1,1) )
  1864. POWER2 = AMIN1( 50., AT * EXTK(IVEG,1,2) )
  1865. !
  1866. !-----------------------------------------------------------------------
  1867. ! ROSS INCLINATION FUNCTION
  1868. !-----------------------------------------------------------------------
  1869. !
  1870. AA = 0.5 - 0.633 * CHIL(IVEG)- 0.33 * CHIL(IVEG)* CHIL(IVEG)
  1871. BB = 0.877 * ( 1. - 2. * AA )
  1872. !
  1873. !-----------------------------------------------------------------------
  1874. ! COMBINED ESTIMATE OF K-PAR USING WEIGHTS FOR DIFFERENT COMPONENTS
  1875. !-----------------------------------------------------------------------
  1876. !
  1877. ZAT = ALOG( ( EXP(-POWER1) + 1. )/2. ) * PD(IVEG) &
  1878. / ( POWER1/AT )
  1879. ZAT = ZAT + ALOG( ( EXP(-POWER2) + 1. )/2. ) &
  1880. * ( 1. - PD(IVEG) ) / ( POWER2/AT )
  1881. !
  1882. POW1 = AMIN1( 50., (POWER1*ZAT/AT) )
  1883. POW2 = AMIN1( 50., (POWER2*ZAT/AT) )
  1884. !
  1885. ZK = 1. / ZAT * ALOG( PD(IVEG) * EXP ( POW1 ) &
  1886. + ( 1. - PD(IVEG) ) * EXP ( POW2 ) )
  1887. !
  1888. !
  1889. POW = AMIN1( 50., ZK*AT )
  1890. EKAT = EXP ( POW )
  1891. !
  1892. AVFLUX = PAR(IVEG) * ( PD(IVEG) / SUNANG * ( AA + BB * SUNANG ) &
  1893. + ( 1. - PD(IVEG) )*( BB / 3. + AA * 1.5 &
  1894. + BB / 4. * PIE ))
  1895. !
  1896. RHO4 = GAMMA / AVFLUX
  1897. !
  1898. RST(IVEG) = RSTPAR(IVEG,2)/GAMMA * ALOG(( RHO4 * EKAT + 1. ) / &
  1899. ( RHO4 + 1. ) )
  1900. RST(IVEG) = RST(IVEG) - ALOG (( RHO4 + 1. / EKAT ) / &
  1901. ( RHO4 + 1. ) )
  1902. RST(IVEG) = RST(IVEG) / ( ZK * RSTPAR(IVEG,3) )
  1903. !
  1904. !----------------------------------------------------------------------
  1905. ! MODIFICATIONS FOR GREEN FRACTION : RST UPRIGHT
  1906. !----------------------------------------------------------------------
  1907. !
  1908. 1010 RST(IVEG) = 1. / ( RST(IVEG) * GREEN(IVEG) + 0.0000001)
  1909. 1000 CONTINUE
  1910. !
  1911. RST(1) = RST(1) * CTLPA
  1912. !
  1913. !------------------------------------------------------
  1914. END SUBROUTINE STOMA1
  1915. !------------------------------------------------------
  1916. !=======================================================================
  1917. !
  1918. SUBROUTINE VEGOUT(XTRAN,XREF,XGREEN,XVCOVER,XCHIL, &
  1919. XRSTPAR,XTOPT,XTL,XTU,XDEFAC,XPH1,XPH2, &
  1920. XZLT,XZ0,XDD,XZ2,XZ1,XRDC,XRBC,XROOTD,XSOREF, &
  1921. XBEE, XPHSAT, XPOROS, XSATCO,XSLOPE, &
  1922. XDEPTH,MONTH,ITYPE)
  1923. ! 12 AUGUSTY 2000
  1924. !=======================================================================
  1925. !
  1926. ! ASSIGN VEGETATION PHYSIOLOGY
  1927. !
  1928. ! SURFACE PARAMETERS ARE READ IN SAME ORDER AS IN GCM
  1929. ! SUBROUTINE SIBINP. ONLY EXCEPTION IS THAT 1-D VERSION READS IN
  1930. ! SITE SPECIFIC PARAMETERS CORB1 ... ZMET .
  1931. !
  1932. ! VARIABLES THAT ENTER THROUGH COMSIB:
  1933. ! SUBSCRIPTS (IV, IW, IL) :
  1934. ! IV = VEGETATION STORY; 1 = TOP AND 2 = BOTTOM
  1935. ! IW = RADIATION WAVELENGTH; 1 = VISIBLE, 2 = NEAR
  1936. ! INFRARED AND 3 = THERMAL INFRARED
  1937. ! IL = VEGETATION STATE; 1 = LIVE (GREEN) AND
  1938. ! 2 = DEAD (STEMS AND TRUNK)
  1939. !
  1940. ! TRAN(IV,IW,IL): LEAF TRANSMITTANCE
  1941. ! REF (IV,IW,IL): LEAF REFLECTANCE
  1942. ! RSTPAR(IV,IW) : PAR-DEPENDENT LEAF STOMATAL RESISTANCE COEFFICIENTS
  1943. ! A =(J/M**3) B = 2(W/M**2) C = 3(S/M)
  1944. ! SOREF(IW) : SOIL REFLECTANCE
  1945. ! CHIL(IV) : LEAF ANGLE DISTRIBUTION FACTOR
  1946. ! TOPT(IV) : OPTIMUM TEMPERATURE FOR STOMATAL FUNCTIONING
  1947. ! TL(IV) : LOWER TEMPERATURE LIMIT FOR STOMATAL FUNCTIONING
  1948. ! TU(IV) : UPPER TEMPERATURE LIMIT FOR STOMATAL FUNCTIONING
  1949. ! DEFAC(IV) : VAPOR PRESSURE DEFICIT PARAMETER
  1950. ! PH1(IV) :
  1951. ! PH2(IV) :
  1952. ! ROOTD(IV) : ROOTING DEPTH
  1953. ! BEE : SOIL WETNESS EXPONENT
  1954. ! PHSAT : SOIL TENSION AT SATURATION
  1955. ! SATCO : HYDRAULIC CONDUCTIVITY AT SATURATION
  1956. ! POROS : SOIL POROSITY
  1957. ! ZDEPTH : DEPTH OF 3 SOIL MOISTURE LAYERS
  1958. ! Z0 : ROUGHNESS LENGTH
  1959. ! XDD : ZERO PLANE DISPLACEMENT
  1960. ! ZLT(IV) : LEAF AREA INDEX
  1961. ! GREEN(IV) : GREEN LEAF FRACTION
  1962. ! VCOVER(IV) : VEGETATION COVER FRACTION
  1963. !
  1964. ! VARIABLES ( SPECIFIC TO SIB 1-D VERSION ONLY ) FROM COMSIB
  1965. !
  1966. ! ZWIND : REFERENCE HEIGHT FOR WIND MEASUREMENT
  1967. ! ZMET : REFERENCE HEIGHT FOR TEMPERATURE, HUMIDITY MEASUREMENT
  1968. ! THE ABOVE ARE GENERATED FROM SIBX + MOMOPT OUTPUT
  1969. !
  1970. !----------------------------------------------------------------------
  1971. !----------------------------------------------------------------------
  1972. ! USE module_ssib_veg
  1973. !----------------------------------------------------------------------
  1974. !
  1975. REAL, DIMENSION (2) :: XGREEN, XVCOVER, XZLT, XCHIL, XTOPT, XTL, &
  1976. XTU, XDEFAC, XPH1, XPH2, XROOTD
  1977. REAL, DIMENSION (3) :: XSOREF, XDEPTH
  1978. REAL, DIMENSION (2,3) :: XRSTPAR
  1979. REAL, DIMENSION (2,3,2) :: XTRAN, XREF
  1980. !-----------------------------------------------------------------------
  1981. !
  1982. DO IW=1,3
  1983. XTRAN(1,IW,1)=TRAN0(ITYPE,1,IW,1)
  1984. XTRAN(1,IW,2)=TRAN0(ITYPE,1,IW,2)
  1985. XTRAN(2,IW,1)=TRAN0(ITYPE,2,IW,1)
  1986. XTRAN(2,IW,2)=TRAN0(ITYPE,2,IW,2)
  1987. XREF (1,IW,1)= REF0(ITYPE,1,IW,1)
  1988. XREF (1,IW,2)= REF0(ITYPE,1,IW,2)
  1989. XREF (2,IW,1)= REF0(ITYPE,2,IW,1)
  1990. XREF (2,IW,2)= REF0(ITYPE,2,IW,2)
  1991. XRSTPAR(1,IW)=RSTPAR0(ITYPE,1,IW)
  1992. XRSTPAR(2,IW)=RSTPAR0(ITYPE,2,IW)
  1993. XSOREF (IW) =SOREF0(ITYPE,IW)
  1994. END DO
  1995. DO IV=1,2
  1996. XCHIL(IV)=CHIL0(ITYPE,IV)
  1997. XTOPT(IV)=TOPT0(ITYPE,IV)
  1998. XTL(IV)=TL0(ITYPE,IV)
  1999. XTU(IV)=TU0(ITYPE,IV)
  2000. XDEFAC(IV)=DEFAC0(ITYPE,IV)
  2001. XPH1(IV)=PH10(ITYPE,IV)
  2002. XPH2(IV)=PH20(ITYPE,IV)
  2003. XROOTD(IV)=ROOTD0(ITYPE,IV)
  2004. XZLT(IV)=ZLT0(ITYPE,MONTH,IV)
  2005. XGREEN(IV)=GREEN0(ITYPE,MONTH,IV)
  2006. XVCOVER(IV)=VCOVER0(ITYPE,MONTH,IV)
  2007. END DO
  2008. DO IDEP=1,3
  2009. XDEPTH(IDEP)=DEPTH0(ITYPE,IDEP)
  2010. END DO
  2011. !
  2012. XBEE=BEE0(ITYPE)
  2013. XPHSAT=PHSAT0(ITYPE)
  2014. XSATCO=SATCO0(ITYPE)
  2015. XPOROS=POROS0(ITYPE)
  2016. XSLOPE=SLOPE0(ITYPE)
  2017. XZ2=Z20(ITYPE,MONTH)
  2018. XZ1=Z10(ITYPE,MONTH)
  2019. XZ0= Z000(ITYPE,MONTH)
  2020. XDD= D0(ITYPE,MONTH)
  2021. XRBC=RBC0 (ITYPE,MONTH)
  2022. XRDC=RDC0 (ITYPE,MONTH)
  2023. !
  2024. !------------------------------------------------------
  2025. END SUBROUTINE VEGOUT
  2026. !------------------------------------------------------
  2027. !=======================================================================
  2028. !
  2029. SUBROUTINE COMBO (DDZ2,DZP,DZM,WP,WM,HP,HM,TP,TM,BWP,BWM,BIP, &
  2030. BIM,BLP,BLM,BTP,BTM,FIP,FIM,FLP,FLM,CTP,CTM, &
  2031. DLIQVOLP,DLIQVOLM,DICEVOLP,DICEVOLM)
  2032. !
  2033. !=======================================================================
  2034. !
  2035. RATIO= DDZ2/dzm
  2036. dzp=dzp + RATIO*dzm
  2037. wp = wp + RATIO*wm
  2038. hp = hp + RATIO*hm
  2039. bwp= wp*rhowater/dzp
  2040. btp= bwp
  2041. ctp= (1.9e6)*(bwp/920.0)
  2042. dmlt=wp*rhowater*dlm
  2043. if(hp.ge.(-1.0)*dmlt)then
  2044. tp=273.16
  2045. fip=(-1.0)*hp/dmlt
  2046. flp=1.0-fip
  2047. blp=bwp*flp
  2048. bip=bwp*fip
  2049. dliqvolp = blp/rhowater
  2050. dicevolp = bip/dice
  2051. else
  2052. flp=0.0
  2053. fip=1.0
  2054. tp=(hp+dmlt)/(ctp*dzp)+273.16
  2055. bip=bwp
  2056. blp=0.0
  2057. dliqvolp = 0.0
  2058. dicevolp = bip/dice
  2059. endif
  2060. !
  2061. dzm=dzm - RATIO*dzm
  2062. wm = wm - RATIO*wm
  2063. hm = hm - RATIO*hm
  2064. !
  2065. !------------------------------------------------------
  2066. END SUBROUTINE COMBO
  2067. !------------------------------------------------------
  2068. !=======================================================================
  2069. !
  2070. SUBROUTINE COMPACT(BI,T,BL,OVERBURDEN,PDZDT,SS,DICE)
  2071. !
  2072. !=======================================================================
  2073. !clwp 12/11/2000, change the subroutine back to NO DATE form.
  2074. data c2,c3,c4,c5/23d-3,2.777d-6,0.04,2.0/
  2075. data dm/150/
  2076. data eta0/0.9d6/
  2077. if(bi .ge. dice .or. ss .ge. 1.) return
  2078. ddz1=-c3*exp(-c4*(273.15-t))
  2079. if(bi .gt. dm) ddz1=ddz1*exp(-46.0d-3*(bi-dm))
  2080. if(bl .gt. 0.01) ddz1=ddz1*c5
  2081. !cl compaction due to overburden
  2082. ddz2=-overburden*exp(-0.08*(273.15-t)-c2*bi)/eta0
  2083. !cl compaction occurring during melt has been taken into account in thermal.f
  2084. ddz3=0d0
  2085. pdzdt=ddz1+ddz2+ddz3
  2086. !
  2087. !------------------------------------------------------
  2088. END SUBROUTINE COMPACT
  2089. !------------------------------------------------------
  2090. !=======================================================================
  2091. !
  2092. SUBROUTINE GETMET(IPTYPE,PRCP_TOTAL,TAIR, &
  2093. PRCP_S,PRCP_W,FI_FALL,FL_FALL,BI_FALL,BL_FALL)
  2094. !
  2095. !=======================================================================
  2096. IF (PRCP_TOTAL.gt.0.) THEN
  2097. IF(IPTYPE.EQ.2)THEN
  2098. PRCP_S=PRCP_TOTAL
  2099. PRCP_W=0.0
  2100. ELSE IF(IPTYPE.EQ.1)THEN
  2101. PRCP_W=PRCP_TOTAL
  2102. PRCP_S=0.0
  2103. FL_FALL=1.0
  2104. FI_FALL=0.
  2105. BL_FALL=1000.0
  2106. BI_FALL=0.0
  2107. ENDIF
  2108. ELSE
  2109. PRCP_W=0.0
  2110. PRCP_S=0.0
  2111. IPTYPE = 0
  2112. RETURN
  2113. END IF
  2114. IF (IPTYPE.NE.1) THEN
  2115. IF (TAIR .GT. 275.15) THEN
  2116. BI_FALL =189
  2117. ELSE IF (TAIR.GT.258.16)THEN
  2118. BI_FALL=50+1.7*(TAIR-258.16)**1.5d0
  2119. ELSE
  2120. BI_FALL=50
  2121. ENDIF
  2122. FL_FALL = 0
  2123. FI_FALL=1.0
  2124. BL_FALL=0.0
  2125. ENDIF
  2126. !
  2127. !------------------------------------------------------
  2128. END SUBROUTINE GETMET
  2129. !------------------------------------------------------
  2130. !=======================================================================
  2131. !
  2132. SUBROUTINE INTERCS (DTT,VCOVER,ZLAI,TM,TC,TGS,CAPAC,WWW,PPC,PPL, &
  2133. ROFF,ZDEPTH,POROS,CCX,CG,SATCO,SATCAP,SPWET, &
  2134. EXTK,ISNOW,P0,CSOIL,DZSOIL, &
  2135. CHISL,SMELT)
  2136. ! 1 AUGUST 1988
  2137. !=======================================================================
  2138. !
  2139. ! CALCULATION OF (1) INTERCEPTION AND DRAINAGE OF RAINFALL AND SNOW
  2140. ! (2) SPECIFIC HEAT TERMS FIXED FOR TIME STEP
  2141. !
  2142. ! MODIFICATION 30 DEC 1985 : NON-UNIFORM PRECIPITATION
  2143. ! ------------ CONVECTIVE PPN. IS DESCRIBED BY AREA-INTENSITY
  2144. ! RELATIONSHIP :-
  2145. !
  2146. ! F(X) = A*EXP(-B*X)+C
  2147. !
  2148. ! THROUGHFALL, INTERCEPTION AND INFILTRATION
  2149. ! EXCESS ARE FUNCTIONAL ON THIS RELATIONSHIP
  2150. ! AND PROPORTION OF LARGE-SCALE PPN.
  2151. !----------------------------------------------------------------------
  2152. !
  2153. DIMENSION CAPACP(2), SNOWP(2), PCOEFS(2,2)
  2154. DATA PCOEFS(1,1)/ 20. /, PCOEFS(1,2)/ .206E-8 /, &
  2155. PCOEFS(2,1)/ 0.0001 /, PCOEFS(2,2)/ 0.9999 /, BP /20. /
  2156. DIMENSION VCOVER(2),ZLAI(2),WWW(3),CAPAC(2),SATCAP(2),EXTK(2,3,2)
  2157. DIMENSION ZDEPTH(3),SNOWW(2)
  2158. !
  2159. AP = PCOEFS(2,1)
  2160. CP = PCOEFS(2,2)
  2161. TOTALP = PPC + PPL
  2162. IF(TOTALP.LT.1.E-8)GO TO 6000
  2163. AP = PPC/TOTALP * PCOEFS(1,1) + PPL/TOTALP * PCOEFS(2,1)
  2164. CP = PPC/TOTALP * PCOEFS(1,2) + PPL/TOTALP * PCOEFS(2,2)
  2165. 6000 CONTINUE
  2166. ROFF = 0.
  2167. THRU = 0.
  2168. FPI = 0.
  2169. !
  2170. !----------------------------------------------------------------------
  2171. ! THERMAL CONDUCTIVITY OF THE SOIL, TAKING INTO ACCOUNT POROSITY
  2172. !----------------------------------------------------------------------
  2173. !
  2174. THETA=WWW(1)*POROS
  2175. CHISL=( 9.8E-4+1.2E-3*THETA )/( 1.1-0.4*THETA )
  2176. CHISL=CHISL*4.186E2
  2177. !
  2178. !----------------------------------------------------------------------
  2179. ! THERMAL DIFFUSIVITY AND HEAT CAPACITY OF THE SOIL
  2180. !----------------------------------------------------------------------
  2181. !
  2182. DIFSL=5.E-7
  2183. !
  2184. ROCS =CHISL/DIFSL
  2185. D1 =SQRT(DIFSL*86400.0)
  2186. CSOIL=ROCS*D1/SQRT(PIE)/2.0
  2187. ! YX2002 (test2)
  2188. dzsoil=D1/SQRT(PIE)/2.0
  2189. THALAS=0.
  2190. OCEANS=0.
  2191. POLAR=0.
  2192. CSOIL=CSOIL*(1.0-THALAS)+10.E10*OCEANS+POLAR*3.6*4.2E4
  2193. !
  2194. P0 = TOTALP * 0.001
  2195. !
  2196. !----------------------------------------------------------------------
  2197. ! INPUT PRECIPITATION IS GIVEN IN MM, CONVERTED TO M TO GIVE P0.
  2198. !----------------------------------------------------------------------
  2199. !
  2200. DO 1000 IVEG = 1, 2
  2201. !
  2202. SPWET1 = AMIN1 ( 0.05, CAPAC(IVEG))*CW
  2203. !
  2204. TS = TC
  2205. SPECHT = ZLAI(1) * CLAI
  2206. IF ( IVEG .EQ. 1 ) GO TO 1100
  2207. TS = TGS
  2208. SPECHT = CSOIL
  2209. 1100 CONTINUE
  2210. !
  2211. XSC = AMAX1(0., CAPAC(IVEG) - SATCAP(IVEG) )
  2212. IF(IVEG.EQ.2 .AND. TS.LE.TF )GO TO 1170
  2213. CAPAC(IVEG) = CAPAC(IVEG) - XSC
  2214. ROFF = ROFF + XSC
  2215. 1170 CONTINUE
  2216. CAPACP(IVEG) = 0.
  2217. SNOWP(IVEG) = 0.
  2218. !
  2219. IF( TS .GT. TF ) CAPACP(IVEG) = CAPAC(IVEG)
  2220. IF( TS .LE. TF ) SNOWP(IVEG) = CAPAC(IVEG)
  2221. CAPAC(IVEG) = CAPACP(IVEG)
  2222. SNOWW(IVEG) = SNOWP(IVEG)
  2223. ZLOAD = CAPAC(IVEG) + SNOWW(IVEG)
  2224. !
  2225. FPI = ( 1.-EXP( - EXTK(IVEG,3,1) * ZLAI(IVEG)/VCOVER(IVEG) ) ) &
  2226. * VCOVER(IVEG)
  2227. TTI = P0 * ( 1.-FPI )
  2228. !
  2229. !----------------------------------------------------------------------
  2230. ! PROPORTIONAL SATURATED AREA (XS) AND LEAF DRAINAGE(TEX)
  2231. !----------------------------------------------------------------------
  2232. !
  2233. XS = 1.
  2234. IF ( P0 .LT. 1.E-9 ) GO TO 1150
  2235. ARG = ( SATCAP(IVEG)-ZLOAD )/( P0*FPI*AP ) -CP/AP
  2236. IF ( ARG .LT. 1.E-9 ) GO TO 1150
  2237. XS = -1./BP * ALOG( ARG )
  2238. XS = AMIN1( XS, 1. )
  2239. XS = AMAX1( XS, 0. )
  2240. 1150 TEX = P0*FPI * ( AP/BP*( 1.- EXP( -BP*XS )) + CP*XS ) - &
  2241. ( SATCAP(IVEG) - ZLOAD ) * XS
  2242. TEX = AMAX1( TEX, 0. )
  2243. !
  2244. !----------------------------------------------------------------------
  2245. ! TOTAL THROUGHFALL (THRU) AND STORE AUGMENTATION
  2246. !----------------------------------------------------------------------
  2247. !
  2248. THRU = TTI + TEX
  2249. IF(IVEG.EQ.2.AND.TGS.LE.TF)THRU = 0.
  2250. !
  2251. PINF = P0 - THRU
  2252. IF( TM .GT. TF ) CAPAC(IVEG) = CAPAC(IVEG) + PINF
  2253. IF( TM .LE. TF ) SNOWW(IVEG) = SNOWW(IVEG) + PINF
  2254. !
  2255. IF( IVEG .EQ. 1 ) GO TO 1300
  2256. IF( TM .GT. TF ) GO TO 1200
  2257. SNOWW(IVEG) = SNOWP(IVEG) + P0
  2258. THRU = 0.
  2259. GO TO 1300
  2260. !
  2261. !----------------------------------------------------------------------
  2262. ! INSTANTANEOUS OVERLAND FLOW CONTRIBUTION ( ROFF )
  2263. !----------------------------------------------------------------------
  2264. !
  2265. 1200 EQUDEP = SATCO * DTT
  2266. !
  2267. XS = 1.
  2268. IF ( THRU .LT. 1.E-9 ) GO TO 1250
  2269. ARG = EQUDEP / ( THRU * AP ) -CP/AP
  2270. IF ( ARG .LT. 1.E-9 ) GO TO 1250
  2271. XS = -1./BP * ALOG( ARG )
  2272. XS = AMIN1( XS, 1. )
  2273. XS = AMAX1( XS, 0. )
  2274. 1250 ROFFO = THRU * ( AP/BP * ( 1.-EXP( -BP*XS )) + CP*XS ) &
  2275. -EQUDEP*XS
  2276. ROFFO = AMAX1 ( ROFFO, 0. )
  2277. ROFF = ROFF + ROFFO
  2278. WWW(1) = WWW(1) + (THRU - ROFFO) / ( POROS*ZDEPTH(1) )
  2279. 1300 CONTINUE
  2280. !
  2281. !----------------------------------------------------------------------
  2282. ! TEMPERATURE CHANGE DUE TO ADDITION OF PRECIPITATION
  2283. !----------------------------------------------------------------------
  2284. !
  2285. DIFF = ( CAPAC(IVEG)+SNOWW(IVEG) - CAPACP(IVEG)-SNOWP(IVEG) )*CW
  2286. CCP = SPECHT + SPWET1
  2287. CCT = SPECHT + SPWET1 + DIFF
  2288. !
  2289. TSD = ( TS * CCP + TM * DIFF ) / CCT
  2290. !
  2291. FREEZE = 0.
  2292. IF ( TS .GT. TF .AND. TM .GT. TF ) GO TO 2000
  2293. IF ( TS .LE. TF .AND. TM .LE. TF ) GO TO 2000
  2294. !
  2295. TTA = TS
  2296. TTB = TM
  2297. CCA = CCP
  2298. CCB = DIFF
  2299. IF ( TSD .GT. TF ) GO TO 2100
  2300. !
  2301. !----------------------------------------------------------------------
  2302. ! FREEZING OF WATER ON CANOPY OR GROUND
  2303. !----------------------------------------------------------------------
  2304. !
  2305. CCC = CAPACP(IVEG) * SNOMEL
  2306. IF ( TS .LT. TM ) CCC = DIFF * SNOMEL / CW
  2307. TSD = ( TTA * CCA + TTB * CCB + CCC ) / CCT
  2308. !
  2309. FREEZE = ( TF * CCT - ( TTA * CCA + TTB * CCB ) )
  2310. FREEZE = (AMIN1 ( CCC, FREEZE )) / SNOMEL
  2311. IF(TSD .GT. TF)TSD = TF - 0.1
  2312. !
  2313. GO TO 2000
  2314. !
  2315. 2100 CONTINUE
  2316. !
  2317. !----------------------------------------------------------------------
  2318. ! MELTING OF SNOW ON CANOPY OR GROUND
  2319. !----------------------------------------------------------------------
  2320. !
  2321. CCC = - SNOWW(IVEG) * SNOMEL
  2322. IF ( TS .GT. TM ) CCC = - DIFF * SNOMEL / CW
  2323. !
  2324. TSD = ( TTA * CCA + TTB * CCB + CCC ) / CCT
  2325. !
  2326. FREEZE = ( TF * CCT - ( TTA * CCA + TTB * CCB ) )
  2327. FREEZE = (AMAX1( CCC, FREEZE )) / SNOMEL
  2328. IF(TSD .LE. TF)TSD = TF - 0.1
  2329. !
  2330. 2000 CONTINUE
  2331. !crr
  2332. SMELT = FREEZE
  2333. !crr
  2334. SNOWW(IVEG) = SNOWW(IVEG) + FREEZE
  2335. CAPAC(IVEG) = CAPAC(IVEG) - FREEZE
  2336. !
  2337. IF( IVEG .EQ. 1 ) TC = TSD
  2338. IF( IVEG .EQ. 2 ) TGS = TSD
  2339. IF( SNOWW(IVEG) .LT. 0.0000001 ) GO TO 3000
  2340. ! modeified to force water into soil Xue Feb. 1994
  2341. ! ZMELT = 0.
  2342. ! IF ( TD .GT. TF ) ZMELT = CAPAC(IVEG)
  2343. ! IF ( TD .LE. TF ) ROFF = ROFF + CAPAC(IVEG)
  2344. ZMELT = CAPAC(IVEG)
  2345. CAPAC(IVEG) = 0.
  2346. WWW(1) = WWW(1) + ZMELT / ( POROS * ZDEPTH(1) )
  2347. !
  2348. 3000 CONTINUE
  2349. !
  2350. CAPAC(IVEG) = CAPAC(IVEG) + SNOWW(IVEG)
  2351. SNOWW(IVEG) = 0.
  2352. !
  2353. P0 = THRU
  2354. IF (ISNOW.eq.0) go to 1001
  2355. 1000 CONTINUE
  2356. !
  2357. !----------------------------------------------------------------------
  2358. ! CALCULATION OF CANOPY AND GROUND HEAT CAPACITIES.
  2359. ! N.B. THIS SPECIFICATION DOES NOT NECESSARILY CONSERVE ENERGY WHEN
  2360. ! DEALING WITH VERY LATGE SNOWPACKS.
  2361. !----------------------------------------------------------------------
  2362. !
  2363. 1001 CCX = ZLAI(1) * CLAI + CAPAC(1) * CW
  2364. SPWET = AMIN1 ( 0.05, CAPAC(2)) * CW
  2365. CG = (CSOIL + SPWET)
  2366. !
  2367. !------------------------------------------------------
  2368. END SUBROUTINE INTERCS
  2369. !------------------------------------------------------
  2370. !=======================================================================
  2371. !
  2372. SUBROUTINE INTERC(DTT,VCOVER,ZLT,TM,TC,TGS,CAPAC,WWW,PPC,PPL,ROFF, &
  2373. ZDEPTH,POROS,CCX,CG,SATCO,SATCAP,SPWET,EXTK,RNOFFS,FILTR,SMELT)
  2374. ! 12 AUGUST 2000
  2375. !=======================================================================
  2376. !
  2377. ! CALCULATION OF (1) INTERCEPTION AND DRAINAGE OF RAINFALL AND SNOW
  2378. ! (2) SPECIFIC HEAT TERMS FIXED FOR TIME STEP
  2379. !
  2380. ! MODIFICATION 30 DEC 1985 : NON-UNIFORM PRECIPITATION
  2381. ! ------------ CONVECTIVE PPN. IS DESCRIBED BY AREA-INTENSITY
  2382. ! RELATIONSHIP :-
  2383. !
  2384. ! F(X) = A*EXP(-B*X)+C
  2385. !
  2386. ! THROUGHFALL, INTERCEPTION AND INFILTRATION
  2387. ! EXCESS ARE FUNCTIONAL ON THIS RELATIONSHIP
  2388. ! AND PROPORTION OF LARGE-SCALE PPN.
  2389. !----------------------------------------------------------------------
  2390. !----------------------------------------------------------------------
  2391. !
  2392. REAL, DIMENSION (2) :: VCOVER, ZLT, CAPAC, SATCAP, SNOWW, CAPACP, SNOWP
  2393. REAL, DIMENSION (3) :: WWW, ZDEPTH
  2394. REAL, DIMENSION (2,2) :: PCOEFS
  2395. REAL, DIMENSION (2,3,2) :: EXTK
  2396. DATA PCOEFS(1,1)/ 20. /, PCOEFS(1,2)/ .206E-8 /, &
  2397. PCOEFS(2,1)/ 0.0001 /, PCOEFS(2,2)/ 0.9999 /, BP /20. /
  2398. !
  2399. AP = PCOEFS(2,1)
  2400. CP = PCOEFS(2,2)
  2401. TOTALP = PPC + PPL
  2402. IF(TOTALP.LT.1.E-8)GO TO 6000
  2403. AP = PPC/TOTALP * PCOEFS(1,1) + PPL/TOTALP * PCOEFS(2,1)
  2404. CP = PPC/TOTALP * PCOEFS(1,2) + PPL/TOTALP * PCOEFS(2,2)
  2405. 6000 CONTINUE
  2406. !
  2407. ROFF = 0.
  2408. THRU = 0.
  2409. FPI = 0.
  2410. !
  2411. !----------------------------------------------------------------------
  2412. ! THERMAL CONDUCTIVITY OF THE SOIL, TAKING INTO ACCOUNT POROSITY
  2413. !----------------------------------------------------------------------
  2414. !
  2415. THETA=WWW(1)*POROS
  2416. CHISL=( 9.8E-4+1.2E-3*THETA )/( 1.1-0.4*THETA )
  2417. CHISL=CHISL*4.186E2
  2418. !
  2419. !
  2420. !----------------------------------------------------------------------
  2421. ! THERMAL DIFFUSIVITY AND HEAT CAPACITYOF THE SOIL
  2422. !----------------------------------------------------------------------
  2423. !
  2424. DIFSL=5.E-7
  2425. !
  2426. ROCS =CHISL/DIFSL
  2427. D1 =SQRT(DIFSL*86400.0)
  2428. CSOIL=ROCS*D1/SQRT(PIE)/2.0
  2429. THALAS=0.
  2430. OCEANS=0.
  2431. POLAR=0.
  2432. CSOIL=CSOIL*(1.0-THALAS)+10.E10*OCEANS+POLAR*3.6*4.2E4
  2433. !
  2434. P0 = TOTALP * 0.001
  2435. !
  2436. !----------------------------------------------------------------------
  2437. ! INPUT PRECIPITATION IS GIVEN IN MM, CONVERTED TO M TO GIVE P0.
  2438. !----------------------------------------------------------------------
  2439. !
  2440. DO 1000 IVEG = 1, 2
  2441. !
  2442. SPWET1 = AMIN1 ( 0.05, CAPAC(IVEG))*CW
  2443. !
  2444. TS = TC
  2445. SPECHT = ZLT(1) * CLAI
  2446. IF ( IVEG .EQ. 1 ) GO TO 1100
  2447. TS = TGS
  2448. SPECHT = CSOIL
  2449. 1100 CONTINUE
  2450. !
  2451. XSC = AMAX1(0., CAPAC(IVEG) - SATCAP(IVEG) )
  2452. IF(IVEG.EQ.2 .AND. TS.LE.TF )GO TO 1170
  2453. CAPAC(IVEG) = CAPAC(IVEG) - XSC
  2454. ROFF = ROFF + XSC
  2455. RNOFFS = XSC*1000. + RNOFFS
  2456. 1170 CONTINUE
  2457. CAPACP(IVEG) = 0.
  2458. SNOWP(IVEG) = 0.
  2459. !
  2460. IF( TS .GT. TF ) CAPACP(IVEG) = CAPAC(IVEG)
  2461. IF( TS .LE. TF ) SNOWP(IVEG) = CAPAC(IVEG)
  2462. CAPAC(IVEG) = CAPACP(IVEG)
  2463. SNOWW(IVEG) = SNOWP(IVEG)
  2464. ZLOAD = CAPAC(IVEG) + SNOWW(IVEG)
  2465. !
  2466. FPI = ( 1.-EXP( - EXTK(IVEG,3,1) * ZLT(IVEG)/VCOVER(IVEG) ) ) &
  2467. * VCOVER(IVEG)
  2468. TTI = P0 * ( 1.-FPI )
  2469. !
  2470. !----------------------------------------------------------------------
  2471. ! PROPORTIONAL SATURATED AREA (XS) AND LEAF DRAINAGE(TEX)
  2472. !----------------------------------------------------------------------
  2473. !
  2474. XS = 1.
  2475. IF ( P0 .LT. 1.E-9 ) GO TO 1150
  2476. ARG = ( SATCAP(IVEG)-ZLOAD )/( P0*FPI*AP ) -CP/AP
  2477. IF ( ARG .LT. 1.E-9 ) GO TO 1150
  2478. XS = -1./BP * ALOG( ARG )
  2479. XS = AMIN1( XS, 1. )
  2480. XS = AMAX1( XS, 0. )
  2481. 1150 TEX = P0*FPI * ( AP/BP*( 1.- EXP( -BP*XS )) + CP*XS ) - &
  2482. ( SATCAP(IVEG) - ZLOAD ) * XS
  2483. TEX = AMAX1( TEX, 0. )
  2484. !
  2485. !----------------------------------------------------------------------
  2486. ! TOTAL THROUGHFALL (THRU) AND STORE AUGMENTATION
  2487. !----------------------------------------------------------------------
  2488. !
  2489. THRU = TTI + TEX
  2490. IF(IVEG.EQ.2.AND.TGS.LE.TF)THRU = 0.
  2491. !
  2492. PINF = P0 - THRU
  2493. IF( TM .GT. TF ) CAPAC(IVEG) = CAPAC(IVEG) + PINF
  2494. IF( TM .LE. TF ) SNOWW(IVEG) = SNOWW(IVEG) + PINF
  2495. !
  2496. IF( IVEG .EQ. 1 ) GO TO 1300
  2497. IF( TM .GT. TF ) GO TO 1200
  2498. SNOWW(IVEG) = SNOWP(IVEG) + P0
  2499. THRU = 0.
  2500. GO TO 1300
  2501. !
  2502. !----------------------------------------------------------------------
  2503. ! INSTANTANEOUS OVERLAND FLOW CONTRIBUTION ( ROFF )
  2504. !----------------------------------------------------------------------
  2505. !
  2506. 1200 EQUDEP = SATCO * DTT
  2507. !
  2508. XS = 1.
  2509. IF ( THRU .LT. 1.E-9 ) GO TO 1250
  2510. ARG = EQUDEP / ( THRU * AP ) -CP/AP
  2511. IF ( ARG .LT. 1.E-9 ) GO TO 1250
  2512. XS = -1./BP * ALOG( ARG )
  2513. XS = AMIN1( XS, 1. )
  2514. XS = AMAX1( XS, 0. )
  2515. 1250 ROFFO = THRU * ( AP/BP * ( 1.-EXP( -BP*XS )) + CP*XS ) &
  2516. -EQUDEP*XS
  2517. ROFFO = AMAX1 ( ROFFO, 0. )
  2518. ROFF = ROFF + ROFFO
  2519. RNOFFS = RNOFFS + ROFFO*1000.
  2520. FILTR = FILTR + (THRU - ROFFO)
  2521. WWW(1) = WWW(1) + (THRU - ROFFO) / ( POROS*ZDEPTH(1) )
  2522. 1300 CONTINUE
  2523. !
  2524. !----------------------------------------------------------------------
  2525. ! TEMPERATURE CHANGE DUE TO ADDITION OF PRECIPITATION
  2526. !----------------------------------------------------------------------
  2527. !
  2528. DIFF = ( CAPAC(IVEG)+SNOWW(IVEG) - CAPACP(IVEG)-SNOWP(IVEG) )*CW
  2529. CCP = SPECHT + SPWET1
  2530. CCT = SPECHT + SPWET1 + DIFF
  2531. !
  2532. TSD = ( TS * CCP + TM * DIFF ) / CCT
  2533. !
  2534. FREEZE = 0.
  2535. IF ( TS .GT. TF .AND. TM .GT. TF ) GO TO 2000
  2536. IF ( TS .LE. TF .AND. TM .LE. TF ) GO TO 2000
  2537. !
  2538. TTA = TS
  2539. TTB = TM
  2540. CCA = CCP
  2541. CCB = DIFF
  2542. IF ( TSD .GT. TF ) GO TO 2100
  2543. !
  2544. !----------------------------------------------------------------------
  2545. ! FREEZING OF WATER ON CANOPY OR GROUND
  2546. !----------------------------------------------------------------------
  2547. !
  2548. CCC = CAPACP(IVEG) * SNOMEL
  2549. IF ( TS .LT. TM ) CCC = DIFF * SNOMEL / CW
  2550. TSD = ( TTA * CCA + TTB * CCB + CCC ) / CCT
  2551. !
  2552. FREEZE = ( TF * CCT - ( TTA * CCA + TTB * CCB ) )
  2553. FREEZE = (AMIN1 ( CCC, FREEZE )) / SNOMEL
  2554. IF(TSD .GT. TF)TSD = TF - 0.1
  2555. !
  2556. GO TO 2000
  2557. !
  2558. 2100 CONTINUE
  2559. !
  2560. !----------------------------------------------------------------------
  2561. ! MELTING OF SNOW ON CANOPY OR GROUND
  2562. !----------------------------------------------------------------------
  2563. !
  2564. CCC = - SNOWW(IVEG) * SNOMEL
  2565. IF ( TS .GT. TM ) CCC = - DIFF * SNOMEL / CW
  2566. !
  2567. TSD = ( TTA * CCA + TTB * CCB + CCC ) / CCT
  2568. !
  2569. FREEZE = ( TF * CCT - ( TTA * CCA + TTB * CCB ) )
  2570. FREEZE = (AMAX1( CCC, FREEZE )) / SNOMEL
  2571. IF(TSD .LE. TF)TSD = TF - 0.1
  2572. !
  2573. 2000 CONTINUE
  2574. SMELT = FREEZE
  2575. SNOWW(IVEG) = SNOWW(IVEG) + FREEZE
  2576. CAPAC(IVEG) = CAPAC(IVEG) - FREEZE
  2577. !
  2578. IF( IVEG .EQ. 1 ) TC = TSD
  2579. IF( IVEG .EQ. 2 ) TGS = TSD
  2580. IF( SNOWW(IVEG) .LT. 0.0000001 ) GO TO 3000
  2581. ZMELT = 0.
  2582. ! modified to force water into soil. Xue Feb. 1994
  2583. ZMELT = CAPAC(IVEG)
  2584. ! IF ( TD .GT. TF ) ZMELT = CAPAC(IVEG)
  2585. ! IF ( TD .LE. TF ) ROFF = ROFF + CAPAC(IVEG)
  2586. CAPAC(IVEG) = 0.
  2587. WWW(1) = WWW(1) + ZMELT / ( POROS * ZDEPTH(1) )
  2588. FILTR = FILTR + ZMELT
  2589. !
  2590. 3000 CONTINUE
  2591. !
  2592. CAPAC(IVEG) = CAPAC(IVEG) + SNOWW(IVEG)
  2593. SNOWW(IVEG) = 0.
  2594. !
  2595. ! **** LOAD PILPS PARAMETER
  2596. !
  2597. ! if (freeze.lt.0) snm(istat)=snm(istat)-freeze
  2598. freeze=0.0
  2599. !
  2600. P0 = THRU
  2601. !
  2602. 1000 CONTINUE
  2603. !
  2604. !----------------------------------------------------------------------
  2605. ! CALCULATION OF CANOPY AND GROUND HEAT CAPACITIES.
  2606. ! N.B. THIS SPECIFICATION DOES NOT NECESSARILY CONSERVE ENERGY WHEN
  2607. ! DEALING WITH VERY LATGE SNOWPACKS.
  2608. !----------------------------------------------------------------------
  2609. !
  2610. CCX = ZLT(1) * CLAI + CAPAC(1) * CW
  2611. SPWET = AMIN1 ( 0.05, CAPAC(2))*CW
  2612. CG = (CSOIL + SPWET)
  2613. !
  2614. !------------------------------------------------------
  2615. END SUBROUTINE INTERC
  2616. !------------------------------------------------------
  2617. !=======================================================================
  2618. !
  2619. SUBROUTINE LAYER1 (CSOIL,TGS,DZSOIL,H,W,SNOWDEPTH,SWE,STEMP,ND)
  2620. !
  2621. !=======================================================================
  2622. parameter (dice=920.0, rhowater=1000.0,dlm=3.335d5)
  2623. dimension h(nd),w(nd)
  2624. swe=w(1)+w(2)+w(3)
  2625. ! YX2002 (test2)
  2626. snh=h(1)+h(2)+h(3)+csoil*(tgs-273.16)
  2627. ! snh=h(1)+h(2)+h(3)+csoil*(tgs-273.16)*dzsoil
  2628. dmlto=swe*dlm*rhowater
  2629. scv=1.9e+6*(swe/snowdepth)/dice
  2630. if (snh.gt.0.0) then
  2631. ! YX2002 (test2)
  2632. stemp=snh/(swe*4.18*10**6.+csoil)+273.16
  2633. ! stemp=snh/(swe*4.18*10**6.+csoil*dzsoil)+273.16
  2634. else if (snh.gt.-dmlto) then
  2635. stemp=273.16
  2636. else
  2637. ! YX2002 (test2)
  2638. stemp=(snh+dmlto)/(scv*snowdepth+csoil)+273.16
  2639. ! stemp=(snh+dmlto)/(scv*snowdepth+csoil*dzsoil)+273.16
  2640. end if
  2641. !
  2642. !------------------------------------------------------
  2643. END SUBROUTINE LAYER1
  2644. !------------------------------------------------------
  2645. !=======================================================================
  2646. !
  2647. SUBROUTINE LAYERN (TG,SNOW_WE,SNOW_DEPTH, DZ0,BW0,W0,BT0,CT0, &
  2648. FL0,FI0,H0,BL0,BI0,DLIQV0,DICEV0,TSSN0,DMLT0)
  2649. !
  2650. !=======================================================================
  2651. DIMENSION DZ0(4),W0(4),BW0(4),BT0(4),CT0(4),FL0(4),FI0(4),H0(4), &
  2652. BL0(4),BI0(4),DLIQV0(4),DICEV0(4),TSSN0(4),DMLT0(4)
  2653. ! ------------------------------------------------------------------7272
  2654. IF(SNOW_DEPTH.GT.0.05.AND.SNOW_DEPTH.LE.0.06) THEN
  2655. DZ0(1)=0.02
  2656. DZ0(2)=0.02
  2657. DZ0(3)=SNOW_DEPTH- DZ0(1)- DZ0(2)
  2658. ELSE IF ( SNOW_DEPTH.GT.0.06.AND.SNOW_DEPTH.LE.0.08) THEN
  2659. DZ0(3)=0.02
  2660. DZ0(2)=0.02
  2661. DZ0(1)=SNOW_DEPTH- DZ0(3)- DZ0(2)
  2662. ELSE IF ( SNOW_DEPTH.GT.0.08.AND.SNOW_DEPTH.LE.0.62) THEN
  2663. DZ0(3)=0.02
  2664. DZ0(2)=(SNOW_DEPTH- DZ0(3))*0.33333333
  2665. DZ0(1)=(SNOW_DEPTH- DZ0(3))*0.66666667
  2666. ELSE IF ( SNOW_DEPTH.GT.0.62) THEN
  2667. DZ0(3)=0.02
  2668. DZ0(2)=0.20
  2669. DZ0(1)=SNOW_DEPTH- DZ0(3)- DZ0(2)
  2670. End IF
  2671. do 777 i=1,N
  2672. TSSN0(I)=TG
  2673. BW0(I)=SNOW_WE*RHOWATER/SNOW_DEPTH
  2674. 777 continue
  2675. !---------------------------------------------------------------------
  2676. ! Next we will calculate the initial variables for time step going on
  2677. !---------------------------------------------------------------------
  2678. do 666 i=1,N
  2679. W0(I)=(BW0(I)*DZ0(I))/RHOWATER
  2680. BT0(I)=BW0(I)
  2681. CT0(I)=(BW0(I)/920.0)*1.9e+6
  2682. IF (TSSN0(I).EQ.273.16)THEN
  2683. FL0(I)= FLMIN
  2684. FI0(I)=1.0- FLMIN
  2685. H0(I)=(-1.0)*W0(I)*FI0(I)*DLM*RHOWATER
  2686. BL0(I)=BW0(I)*FL0(I)
  2687. BI0(I)=BW0(I)*FI0(I)
  2688. DLIQV0(I) = BL0(I)/RHOWATER
  2689. DICEV0(I) = BI0(I)/DICE
  2690. ELSE IF(TSSN0(I).LT.273.16) THEN
  2691. FL0(I)=0.0
  2692. FI0(I)=1.0
  2693. DMLT0(I)=W0(I)*DLM*RHOWATER
  2694. H0(I)=(TSSN0(I)-273.16)*CT0(I)*DZ0(I)-DMLT0(I)
  2695. BL0(I)=0.0
  2696. BI0(I)=BW0(I)
  2697. DLIQV0(I)=0.0
  2698. DICEV0(I) = BI0(I)/DICE
  2699. ENDIF
  2700. 666 continue
  2701. !
  2702. !------------------------------------------------------
  2703. END SUBROUTINE LAYERN
  2704. !------------------------------------------------------
  2705. !=======================================================================
  2706. !
  2707. SUBROUTINE MODNODE(SNOWDEPTH,DZO,WO,HO,TSSNO,BWO,BIO, &
  2708. BLO,BTO,FIO,FLO,CTO,DLIQVOL,DICEVOL)
  2709. !
  2710. !=======================================================================
  2711. DIMENSION DZO(N1),WO(N1),HO(N1),TSSNO(N1),BWO(N1),BIO(N1),BLO(N1), &
  2712. BTO(N1),FIO(N1),FLO(N1),CTO(N1),DLIQVOL(N1),DICEVOL(N1)
  2713. !clwp 10/30/2000, for the adjustment of layers 2,3
  2714. IF (SNOWDEPTH.le.0.06) then
  2715. DZ1=0.02
  2716. DZ2=0.02
  2717. DZ3=SNOWDEPTH-( DZ2+DZ1)
  2718. ELSE IF (SNOWDEPTH.gt.0.06) then
  2719. DZ3=0.02
  2720. ENDIF
  2721. ! to get the expected change of top layer of snow
  2722. DDZ3=DZ3-dzo(3)
  2723. ! to get the expected change of top layer of snow
  2724. IF (DDZ3.GT.0.0) THEN
  2725. DDZ3=MIN(DDZ3,dzo(2))
  2726. CALL COMBO (DDZ3,dzo(3),dzo(2),wo(3),wo(2),ho(3),ho(2), &
  2727. tssno(3),tssno(2),bwo(3),bwo(2),bio(3),bio(2),blo(3),blo(2), &
  2728. bto(3),bto(2),fio(3),fio(2),flo(3),flo(2),cto(3),cto(2), &
  2729. dliqvol(3),dliqvol(2),dicevol(3),dicevol(2))
  2730. ELSE
  2731. DDZ3=-DDZ3
  2732. CALL COMBO (DDZ3,dzo(2),dzo(3),wo(2),wo(3),ho(2),ho(3), &
  2733. tssno(2),tssno(3),bwo(2),bwo(3),bio(2),bio(3),blo(2),blo(3), &
  2734. bto(2),bto(3),fio(2),fio(3),flo(2),flo(3),cto(2),cto(3), &
  2735. dliqvol(2),dliqvol(3),dicevol(2),dicevol(3))
  2736. END IF
  2737. !clwp 10/30/2000, for the adjustment of layers 1,2
  2738. SUM12=dzo(1)+dzo(2)
  2739. IF (SNOWDEPTH.le.0.06) THEN
  2740. DZ2=0.5*SUM12
  2741. ELSE IF (SNOWDEPTH.gt.0.06.and.SNOWDEPTH.le.0.08) THEN
  2742. DZ2=0.02
  2743. ELSE IF (SNOWDEPTH.gt.0.08.and.SNOWDEPTH.le.0.62) THEN
  2744. DZ2=0.33333333*SUM12
  2745. ELSE IF (SNOWDEPTH.gt.0.62) THEN
  2746. DZ2=0.20
  2747. ENDIF
  2748. ! to get the expected change of middle layer of snow
  2749. DDZ2=DZ2-dzo(2)
  2750. ! to get the expected change of middle layer of snow
  2751. IF (DDZ2.GT.0.0) THEN
  2752. CALL COMBO (DDZ2,dzo(2),dzo(1),wo(2),wo(1),ho(2),ho(1), &
  2753. tssno(2),tssno(1),bwo(2),bwo(1),bio(2),bio(1),blo(2),blo(1), &
  2754. bto(2),bto(1),fio(2),fio(1),flo(2),flo(1),cto(2),cto(1), &
  2755. dliqvol(2),dliqvol(1),dicevol(2),dicevol(1))
  2756. ELSE
  2757. DDZ2=-DDZ2
  2758. CALL COMBO (DDZ2,dzo(1),dzo(2),wo(1),wo(2),ho(1),ho(2), &
  2759. tssno(1),tssno(2),bwo(1),bwo(2),bio(1),bio(2),blo(1),blo(2), &
  2760. bto(1),bto(2),fio(1),fio(2),flo(1),flo(2),cto(1),cto(2), &
  2761. dliqvol(1),dliqvol(2),dicevol(1),dicevol(2))
  2762. END IF
  2763. SNOWDEPTH=dzo(1)+dzo(2)+dzo(3)
  2764. !
  2765. !------------------------------------------------------
  2766. END SUBROUTINE MODNODE
  2767. !------------------------------------------------------
  2768. !=======================================================================
  2769. !
  2770. SUBROUTINE NEWSNOW(PRCP,BIFALL,BLFALL,FLFALL,TKAIR, &
  2771. DZO,WO,BWO,CTO,HO,DMLTO,FIO,FLO,BIO,BLO,DLIQVOL,DICEVOL,TSSNO,WF)
  2772. !
  2773. !=======================================================================
  2774. ! ------------------------------------------------------------------7272
  2775. !! calculate rate of change in element thickness due to snow falling
  2776. !! Precip has just started or previous top node is full. Initiate a
  2777. !! new node.
  2778. !clwp 12/08/2000, since this subroutine only deals with the top layer,
  2779. !clwp change the original AA(n) to AA, in other words replace arrays.
  2780. ! ------------------------------------------------------------------7272
  2781. dzfall=prcp*rhowater/bifall
  2782. dzo=dzo+dzfall
  2783. wo=wo+prcp
  2784. bwo=(wo*rhowater)/dzo
  2785. cto=1.9e+6*(bwo/920.0)
  2786. dum=(tkair-273.16)*cto*dzfall &
  2787. -(1.0-flfall)*(blfall+bifall)*dlm*dzfall
  2788. ho=ho+dum
  2789. dmlto=wo*rhowater*dlm
  2790. if (ho.ge.-dmlto) then
  2791. tssno=273.16
  2792. fio=-ho/dmlto
  2793. flo=1.0-fio
  2794. blo=bwo*flo
  2795. bio=bwo*fio
  2796. dliqvol=blo/rhowater
  2797. dicevol=bio/dice
  2798. else
  2799. !!!!! when snow temperature is below 273.16
  2800. fio=1.0
  2801. flo=0.0
  2802. bio=bwo
  2803. blo=0.0
  2804. dliqvol=0.0
  2805. dicevol=bio/dice
  2806. wf=0.0
  2807. tssno=(ho+dmlto)/(cto*dzo)+273.16
  2808. end if
  2809. !
  2810. !------------------------------------------------------
  2811. END SUBROUTINE NEWSNOW
  2812. !------------------------------------------------------
  2813. !=======================================================================
  2814. !
  2815. SUBROUTINE NEWTON(A1,Y,FINC,NOX,NONPOS,IWOLK,L,ZINC,A2,Y1,ITER)
  2816. !
  2817. !=======================================================================
  2818. !
  2819. !-----------------------------------------------------------------------
  2820. ! ** VERSION ACQUIRED FROM EROS 2/19/86.
  2821. !
  2822. ! ** THE NEWTON RAPHSON ITERATIVE ROUTINE WILL BE USED TO GENERATE NEW
  2823. ! ** VALUES OF A1 IF DABSOLUTE VALUE OF Y IS GREATER THAN ERTOL;
  2824. ! ** A1 IS ESTIMATE, Y IS RESULTANT ERROR
  2825. ! ** NEX IS EXIT CONDITION (0=NO EXIT) OR (1 WHEN DABS(Y) LT ERTOL)
  2826. ! ** ERTOL IS THE DABSOLUTE VALUE OF Y NECESSARY TO OBTAIN AN EXIT
  2827. ! ** FINC IS INITIAL INCREMENT SIZE FOR SECOND ESTIMATE OF A1
  2828. ! ** NONPOS=0 IF QUANTITY TO BE MINIMIZED CAN BE LESS THAN ZERO;
  2829. ! ** NONPOS=1 IF QUANTITY CAN ONLY BE POSITIVE
  2830. ! ** L IDENTIFIES WHICH QUANTITY IS BEING CALCULATED.
  2831. !
  2832. ! ** CONTROL VALUES: FINC,ERTOL,NOX,NONPOS,L:MUST BE SET BY USER
  2833. !-----------------------------------------------------------------------
  2834. !
  2835. !cfds Changes according to Jack (Feb/2008)
  2836. REAL, DIMENSION (3) :: IWALK, NEX, ITER
  2837. REAL, DIMENSION (3) :: ZINC, A2, Y1
  2838. !cfds DIMENSION IWALK(3), NEX(3)
  2839. !cfds DIMENSION ZINC(3), A2(3), Y1(3),ITER3(3)
  2840. DATA CONS/1.0/
  2841. !
  2842. ERTOL = 0.05 * FINC
  2843. IWALK(L) = IWOLK
  2844. NEX(L)=NOX
  2845. !
  2846. IF ( ITER(L) .GE. 490 ) GO TO 160
  2847. IF (ERTOL .LT. 0.00000001) ERTOL=0.000001
  2848. IF (ABS(Y) .LE. ERTOL) GO TO 150
  2849. IF((ABS(Y-Y1(L))).LE.0.01*ERTOL .AND. IWALK(L).EQ.0 ) GO TO 8
  2850. !
  2851. IF(ABS(Y1(L)).GT.ERTOL) GO TO 1
  2852. A2(L)=A1
  2853. A1=A1-Y
  2854. NEX(L)=0
  2855. Y1(L)=Y
  2856. ITER(L)=1
  2857. IF (IWALK(L) .EQ. 3) GO TO 101
  2858. IWALK(L)=0
  2859. GO TO 101
  2860. 1 ITER(L)=ITER(L)+1
  2861. IF(ITER(L) .EQ. 10) IWALK(L)=1
  2862. IF(IWALK(L) .NE. 0) GO TO 2
  2863. IF(ABS(Y) .GT. ERTOL) GO TO 3
  2864. NEX(L)=1
  2865. GO TO 150
  2866. 3 A=A1-Y*(A1-A2(L))/(Y-Y1(L))
  2867. IF(ABS(A-A1).GT.(10.0*FINC)) &
  2868. A=A1+10.0*FINC*SIGN(CONS,(A-A1))
  2869. A2(L)=A1
  2870. A1=A
  2871. Y1(L)=Y
  2872. GO TO 101
  2873. 2 IF(IWALK(L).EQ.2)GO TO 4
  2874. IF(IWALK(L).EQ.3) GO TO 6
  2875. IF(SIGN(CONS,Y).EQ.SIGN(CONS,Y1(L))) GO TO 3
  2876. ZINC(L)=(A1-A2(L))/4.0
  2877. A1=A2(L)+ZINC(L)
  2878. IWALK(L)=2
  2879. NEX(L)=0
  2880. GO TO 101
  2881. 4 IF(SIGN(CONS,Y) .EQ.SIGN(CONS,Y1(L))) GO TO 5
  2882. ZINC(L)=-ZINC(L)/4.0
  2883. A2(L)=A1
  2884. A1=A1+ZINC(L)
  2885. NEX(L)=0
  2886. Y1(L)=Y
  2887. GO TO 101
  2888. 5 A2(L)=A1
  2889. A1=A1+ZINC(L)
  2890. Y1(L)=Y
  2891. NEX(L)=0
  2892. GO TO 101
  2893. 6 IF(SIGN(CONS,Y).EQ.SIGN(CONS,Y1(L))) GO TO 7
  2894. IWALK(L)=1
  2895. GO TO 2
  2896. 7 A2(L) = A1
  2897. A1 = A1+FINC
  2898. Y1(L)=Y
  2899. NEX(L) = 0
  2900. GO TO 101
  2901. 8 A1 = A1 + FINC*2.0
  2902. NEX(L)=0
  2903. GO TO 101
  2904. 160 CONTINUE
  2905. 900 FORMAT ( 3X,' FAILURE TO CONVERGE AFTER 490 ITERATIONS', &
  2906. /, 3X,' Y = ',2G12.5,2X,I14)
  2907. 150 NEX(L) = 1
  2908. ZINC(L)=0.0
  2909. ITER(L) = 0
  2910. IWALK(L)=0
  2911. Y1(L)=0.0
  2912. Y=0.0
  2913. A2(L)=0.0
  2914. 101 CONTINUE
  2915. IF(NONPOS.EQ.1.AND.A1.LT.0.0) A1=A2(L)/2.0
  2916. NOX = NEX(L)
  2917. IWOLK = IWALK(L)
  2918. !
  2919. !------------------------------------------------------
  2920. END SUBROUTINE NEWTON
  2921. !------------------------------------------------------
  2922. !=======================================================================
  2923. !
  2924. SUBROUTINE OLD(TSSN,BW,BL,BI,H,FL,FI,W,DZ,SS,CT,BT,DMLT, &
  2925. TSSNO,BWO,BLO,BIO,HO,FLO,FIO,WO,DZO,SSO,CTO,BTO,DMLTO)
  2926. !
  2927. !=======================================================================
  2928. DIMENSION TSSN(N1),BW(N1),BL(N1),BI(N1),H(N1),FL(N1),FI(N1), &
  2929. W(N1),DZ(N1),SS(N1),CT(N1),BT(N1),DMLT(N1), TSSNO(N1), &
  2930. BWO(N1),BLO(N1),BIO(N1),HO(N1),FLO(N1),FIO(N1), &
  2931. WO(N1),DZO(N1),SSO(N1),CTO(N1),BTO(N1),DMLTO(N1)
  2932. DO 20 I=1,N
  2933. TSSNO(I)=TSSN(I)
  2934. BWO(I)=BW(I)
  2935. BLO(I)=BL(I)
  2936. BIO(I)=BI(I)
  2937. HO(I)=H(I)
  2938. FLO(I)=FL(I)
  2939. FIO(I)=FI(I)
  2940. WO(I)=W(I)
  2941. DZO(I)=DZ(I)
  2942. SSO(I)=SS(I)
  2943. CTO(I)=CT(I)
  2944. BTO(I)=BT(I)
  2945. DMLTO(I)=DMLT(I)
  2946. 20 CONTINUE
  2947. !
  2948. !------------------------------------------------------
  2949. END SUBROUTINE OLD
  2950. !------------------------------------------------------
  2951. !=======================================================================
  2952. !
  2953. SUBROUTINE RADAB (TRAN,REF,GREEN,VCOVER,CHIL,ZLAI,Z2,Z1,SOREF,TC, &
  2954. TGS,SATCAP,EXTK,RADFAC,THERMK,RADT,PAR,PD,ALBEDO,SALB, &
  2955. TGEFF,SUNANG,XADJ,CAPAC,RADN,ZLWUP,FRAC, &
  2956. ISNOW,SNOWDEN,SNOWDEPTH,SWDOWN,XALBEDO,SCOV2,ISICE, &
  2957. fsdown,fldown,fsup,flup)
  2958. ! 1 AUGUST 1988
  2959. !=======================================================================
  2960. !
  2961. ! CALCULATION OF ALBEDOS VIA TWO STREAM APPROXIMATION( DIRECT
  2962. ! AND DIFFUSE ) AND PARTITION OF RADIANT ENERGY
  2963. !
  2964. !cl CLOSS=2.*VCOVER(1)*(1.-THERMK)*STEFAN*TC**4
  2965. !cl -VCOVER(1)*(1.-THERMK)*STEFAN*TGS**4
  2966. !cl GLOSS=STEFAN*TGS**4 - VCOVER(1)*(1.-THERMK)*STEFAN*TC**4
  2967. !-----------------------------------------------------------------------
  2968. DIMENSION TRANC1(2), TRANC2(2), TRANC3(2)
  2969. DIMENSION CAPAC(2), SATCAP(2), TRAN(2,3,2), REF(2,3,2), SOREF(3)
  2970. DIMENSION GREEN(2), VCOVER(2), ZLAI(2), CHIL(2), RADN(3,2),RADT(2)
  2971. DIMENSION RADFAC(2,2,2), RADSAV(12), PAR(2), PD(2), ALBEDO(2,3,2)
  2972. DIMENSION SALB(2,2), EXTK(2,3,2), FRAC(2,2)
  2973. DIMENSION sr(2)
  2974. data sr/0.85,0.65/
  2975. ! dimension sibalbedo(12,31,24),sibswup(12,31,24)
  2976. !
  2977. !crr F = SUNANG
  2978. f=max(sunang,0.01746)
  2979. !crr ratko, 08/03/2004
  2980. !crr xref1=1.20
  2981. !crr xref2=0.40
  2982. xref1=1.05
  2983. xref2=0.20
  2984. !
  2985. !----------------------------------------------------------------------
  2986. ! CALCULATION OF MAXIMUM WATER STORAGE VALUES.
  2987. !----------------------------------------------------------------------
  2988. !
  2989. FMELT = 1.
  2990. IF ( ABS(TF-TGS) .LT. 0.5 ) FMELT = 0.6
  2991. SATCAP(1) = ZLAI(1) * 0.0001
  2992. SATCAP(2) = ZLAI(2) * 0.0001
  2993. !CS------------------------- Sun change following DEPCOV 10/13/98
  2994. IF (ISNOW.eq.0) THEN
  2995. DEPCOV = AMAX1( 0., (SNOWDEPTH-Z1))
  2996. ELSE
  2997. DEPCOV = AMAX1( 0., (CAPAC(2)*SNOWDEN-Z1))
  2998. END IF
  2999. !CS-----------------------------------------------------------10/13/98
  3000. DEPCOV = AMIN1( DEPCOV, (Z2-Z1)*0.95 )
  3001. SATCAP(1) = SATCAP(1) * ( 1. - DEPCOV / ( Z2 - Z1 ) )
  3002. !crr - thermal part is in use in temrs1 & temrs2
  3003. do 202 iveg = 1, 2
  3004. do 202 iwave = 1, 3
  3005. do 202 irad = 1, 2
  3006. albedo(iveg,iwave,irad)=0.
  3007. 202 continue
  3008. !crr
  3009. !----------------------------------------------------------------------
  3010. !
  3011. DO 1000 IWAVE = 1, 2
  3012. !
  3013. DO 2000 IVEG = 2, 1,-1
  3014. !----------------------------------------------------------------------
  3015. ! MODIFICATION FOR EFFECT OF SNOW ON UPPER STOREY ALBEDO
  3016. ! SNOW REFLECTANCE = 0.80, 0.40 . MULTIPLY BY 0.6 IF MELTING
  3017. ! SNOW TRANSMITTANCE = 0.20, 0.54
  3018. !crr snow reflectance now 0.85, 0.65 (see xref1, xref2)
  3019. !
  3020. !----------------------------------------------------------------------
  3021. SCOV = 0.
  3022. IF( IVEG .EQ. 2 ) GO TO 100
  3023. IF( TC .LE. TF ) SCOV = AMIN1( 0.5, CAPAC(1) / SATCAP(1) )
  3024. 100 CONTINUE
  3025. REFF1 = ( 1. - SCOV ) * REF(IVEG,IWAVE,1) + SCOV * ( xref1 - &
  3026. IWAVE * xref2 ) * FMELT
  3027. REFF2 = ( 1. - SCOV ) * REF(IVEG,IWAVE,2) + SCOV * ( xref1 - &
  3028. IWAVE * xref2 ) * FMELT
  3029. TRAN1 = TRAN(IVEG,IWAVE,1) * ( 1. - SCOV ) &
  3030. + SCOV * ( 1.- ( xref1 - IWAVE * xref2 ) * FMELT ) &
  3031. * TRAN(IVEG,IWAVE,1)
  3032. TRAN2 = TRAN(IVEG,IWAVE,2) * ( 1. - SCOV ) &
  3033. + SCOV * ( 1.- ( xref1 - IWAVE * xref2 ) * FMELT ) * 0.9 &
  3034. * TRAN(IVEG,IWAVE,2)
  3035. !
  3036. !----------------------------------------------------------------------
  3037. !
  3038. SCAT = GREEN(IVEG)*( TRAN1 + REFF1 ) +( 1. - GREEN(IVEG) ) * &
  3039. ( TRAN2 + REFF2)
  3040. CHIV = CHIL(IVEG)
  3041. !
  3042. IF ( ABS(CHIV) .LE. 0.01 ) CHIV = 0.01
  3043. AA = 0.5 - 0.633 * CHIV - 0.33 * CHIV * CHIV
  3044. BB = 0.877 * ( 1. - 2. * AA )
  3045. !
  3046. PROJ = AA + BB * F
  3047. EXTKB = ( AA + BB * F ) / F
  3048. ZMEW = 1. / BB * ( 1. - AA / BB * ALOG ( ( AA + BB ) / AA ) )
  3049. ACSS = SCAT / 2. * PROJ / ( PROJ + F * BB )
  3050. ACSS = ACSS * ( 1. - F * AA / ( PROJ + F * BB ) * ALOG ( ( PROJ &
  3051. + F * BB + F * AA ) / ( F * AA ) ) )
  3052. !
  3053. EXTK( IVEG, IWAVE, 1 ) = PROJ / F * SQRT( 1.-SCAT )
  3054. EXTK( IVEG, IWAVE, 2 ) = 1. / ZMEW * SQRT( 1.-SCAT )
  3055. EXTK( IVEG, 3, 1 ) = AA + BB
  3056. EXTK( IVEG, 3, 2 ) = 1./ZMEW
  3057. !
  3058. UPSCAT = GREEN(IVEG) * TRAN1 + ( 1. - GREEN(IVEG) ) * TRAN2
  3059. UPSCAT = 0.5 * ( SCAT + ( SCAT - 2. * UPSCAT ) * &
  3060. (( 1. - CHIV ) / 2. ) ** 2 )
  3061. !
  3062. BETAO = ( 1. + ZMEW * EXTKB ) / ( SCAT * ZMEW * EXTKB ) * ACSS
  3063. !
  3064. !----------------------------------------------------------------------
  3065. !
  3066. ! DICKINSON'S VALUES
  3067. !
  3068. BE = 1. - SCAT + UPSCAT
  3069. CE = UPSCAT
  3070. BOT = ( ZMEW * EXTKB ) ** 2 + ( CE**2 - BE**2 )
  3071. IF ( ABS(BOT) .GT. 1.E-10) GO TO 200
  3072. SCAT = SCAT* 0.98
  3073. BE = 1. - SCAT + UPSCAT
  3074. BOT = ( ZMEW * EXTKB ) ** 2 + ( CE**2 - BE**2 )
  3075. 200 CONTINUE
  3076. DE = SCAT * ZMEW * EXTKB * BETAO
  3077. FE = SCAT * ZMEW * EXTKB * ( 1. - BETAO )
  3078. !----------------------------------------------------------------------
  3079. !
  3080. CCE = DE * BE - ZMEW * DE * EXTKB + CE * FE
  3081. FFE = BE * FE + ZMEW * FE * EXTKB + CE * DE
  3082. !
  3083. TORE = -CCE / BOT
  3084. SIGE = -FFE / BOT
  3085. !
  3086. PSI = SQRT(BE**2 - CE**2)/ZMEW
  3087. !
  3088. !----------------------------------------------------------------------
  3089. ! REDUCTION IN EXPOSED HEIGHT OF UPPER STOREY AS SNOW ACCUMULATES
  3090. !
  3091. !CS Sun Change following SDEP to SDEP=snowdepth on 10/13/98
  3092. !cl IF (MDLSNO.eq.0.and.ISNOW.eq.0) THEN
  3093. IF (ISNOW.eq.0) THEN
  3094. SDEP=SNOWDEPTH
  3095. ELSE
  3096. SDEP = CAPAC(2) *SNOWDEN
  3097. END IF
  3098. !CS
  3099. FAC = ( SDEP - Z1 ) / ( Z2 - Z1 )
  3100. FAC = AMAX1( 0., FAC )
  3101. FAC = AMIN1( 0.99, FAC )
  3102. !
  3103. ZAT = ZLAI(IVEG) / VCOVER(IVEG)
  3104. IF ( IVEG .EQ. 1 ) ZAT = ZAT * (1.-FAC)
  3105. !
  3106. POWER1 = AMIN1( PSI*ZAT, 50. )
  3107. POWER2 = AMIN1( EXTKB*ZAT, 50. )
  3108. EPSI = EXP( - POWER1 )
  3109. EK = EXP ( - POWER2 )
  3110. !
  3111. ROSB = SOREF(IWAVE)
  3112. ROSD = SOREF(IWAVE)
  3113. IF ( IVEG .EQ. 2 ) GO TO 300
  3114. ROSB = ALBEDO(2,IWAVE,1)
  3115. ROSD = ALBEDO(2,IWAVE,2)
  3116. 300 CONTINUE
  3117. !
  3118. GE = ROSB / ROSD
  3119. !
  3120. !-----------------------------------------------------------------------
  3121. ! CALCULATION OF DIFFUSE ALBEDOS
  3122. !-----------------------------------------------------------------------
  3123. !
  3124. F1 = BE - CE / ROSD
  3125. ZP = ZMEW * PSI
  3126. !
  3127. DEN = ( BE + ZP ) * ( F1 - ZP ) / EPSI - &
  3128. ( BE - ZP ) * ( F1 + ZP ) * EPSI
  3129. ALPHA = CE * ( F1 - ZP ) / EPSI / DEN
  3130. BETA = -CE * ( F1 + ZP ) * EPSI / DEN
  3131. F1 = BE - CE * ROSD
  3132. DEN = ( F1 + ZP ) / EPSI - ( F1 - ZP ) * EPSI
  3133. !
  3134. GAMMA = ( F1 + ZP ) / EPSI / DEN
  3135. DELTA = - ( F1 - ZP ) * EPSI / DEN
  3136. !
  3137. ALBEDO(IVEG,IWAVE,2) = ALPHA + BETA
  3138. ! XQQ(IVEG,IWAVE,2) = ALBEDO(IVEG, IWAVE, 2)
  3139. !
  3140. IF ( IVEG .EQ. 1 ) GO TO 400
  3141. SCOV2 = 0.
  3142. IF ( TGS .LE. TF ) SCOV2 = AMIN1( 1., CAPAC(2) / 0.004 )
  3143. !crr CORRECTION FOR KEEPING ALBEDO HIGH OVER SNOW
  3144. IF (ISICE.EQ.1) SCOV2=1.
  3145. !crr
  3146. ALBEDO(2,IWAVE,2) = &
  3147. ROSD * ( 1. - VCOVER(2) ) + ALBEDO(2,IWAVE,2) * VCOVER(2)
  3148. ALBEDO(2,IWAVE,2) = &
  3149. ( 1. - SCOV2 ) * ALBEDO(2,IWAVE,2) + SCOV2 * &
  3150. ( xref1-IWAVE*xref2 ) * &
  3151. FMELT
  3152. 400 CONTINUE
  3153. !
  3154. TRANC2(IWAVE) = GAMMA * EPSI + DELTA / EPSI
  3155. !
  3156. !-----------------------------------------------------------------------
  3157. ! CALCULATION OF DIRECT ALBEDOS
  3158. !-----------------------------------------------------------------------
  3159. !
  3160. F1 = BE - CE / ROSD
  3161. ZMK = ZMEW * EXTKB
  3162. !
  3163. DEN = ( BE + ZP ) * ( F1 - ZP ) / EPSI - &
  3164. ( BE - ZP ) * ( F1 + ZP ) * EPSI
  3165. ALPHA = ( DE - TORE * ( BE + ZMK ) ) * ( F1 - ZP ) / EPSI - &
  3166. ( BE - ZP ) * ( DE - CE*GE - TORE * ( F1 + ZMK ) ) * EK
  3167. ALPHA = ALPHA / DEN
  3168. BETA = ( BE + ZP ) * (DE - CE*GE - TORE * ( F1 + ZMK ))* EK - &
  3169. ( DE - TORE * ( BE + ZMK ) ) * ( F1 + ZP ) * EPSI
  3170. BETA = BETA / DEN
  3171. F1 = BE - CE * ROSD
  3172. DEN = ( F1 + ZP ) / EPSI - ( F1 - ZP ) * EPSI
  3173. GAMMA = - SIGE * ( F1 + ZP ) / EPSI - &
  3174. ( FE + CE * GE * ROSD + SIGE * ( ZMK - F1 ) ) * EK
  3175. GAMMA = GAMMA / DEN
  3176. DELTA = ( CE * GE * ROSD + FE + SIGE * ( ZMK - F1 ) ) * EK &
  3177. + SIGE * ( F1 - ZP ) * EPSI
  3178. DELTA = DELTA / DEN
  3179. !
  3180. ALBEDO(IVEG,IWAVE,1) = TORE + ALPHA + BETA
  3181. ! XQQ(IVEG,IWAVE,1) = ALBEDO(IVEG, IWAVE, 1)
  3182. !----------------------------------------------------------------------
  3183. !
  3184. IF( IVEG .EQ. 1 ) GO TO 500
  3185. ALBEDO(2,IWAVE,1) = ROSB * ( 1. - VCOVER(2) ) &
  3186. + ALBEDO(2,IWAVE,1) * VCOVER(2)
  3187. ALBEDO(2,IWAVE,1) = ( 1. - SCOV2 ) * ALBEDO(2,IWAVE,1) + &
  3188. SCOV2 * ( xref1-IWAVE*xref2 ) * FMELT
  3189. !
  3190. 500 CONTINUE
  3191. !
  3192. TRANC1(IWAVE) = EK
  3193. TRANC3(IWAVE) = SIGE * EK + GAMMA * EPSI + DELTA / EPSI
  3194. !
  3195. 2000 CONTINUE
  3196. !----------------------------------------------------------------------
  3197. ! CALCULATION OF TERMS WHICH MULTIPLY INCOMING SHORT WAVE FLUXES
  3198. ! TO GIVE ABSORPTION OF RADIATION BY CANOPY AND GROUND
  3199. !----------------------------------------------------------------------
  3200. !
  3201. RADFAC(2,IWAVE,1) = ( 1.-VCOVER(1) ) * ( 1.-ALBEDO(2,IWAVE,1) ) &
  3202. + VCOVER(1) * ( TRANC1(IWAVE) * ( 1.-ALBEDO(2,IWAVE,1) ) &
  3203. + TRANC3(IWAVE) * ( 1.-ALBEDO(2,IWAVE,2) ) )
  3204. !
  3205. RADFAC(2,IWAVE,2) = ( 1.-VCOVER(1) ) * ( 1.-ALBEDO(2,IWAVE,2) ) &
  3206. + VCOVER(1) * TRANC2(IWAVE) * ( 1.-ALBEDO(2,IWAVE,2) )
  3207. !
  3208. RADFAC(1,IWAVE,1) = VCOVER(1) * ( ( 1.-ALBEDO(1,IWAVE,1) ) &
  3209. - TRANC1(IWAVE) * ( 1.-ALBEDO(2,IWAVE,1) ) &
  3210. - TRANC3(IWAVE) * ( 1.-ALBEDO(2,IWAVE,2) ) )
  3211. !
  3212. RADFAC(1,IWAVE,2) = VCOVER(1) * ( ( 1.-ALBEDO(1,IWAVE,2) ) &
  3213. - TRANC2(IWAVE) * ( 1.-ALBEDO(2,IWAVE,2) ) )
  3214. !
  3215. ! XQQ(1,IWAVE,1) = RADFAC(1,IWAVE,1)
  3216. ! XQQ(1,IWAVE,2) = RADFAC(1,IWAVE,2)
  3217. ! XQQ(2,IWAVE,1) = RADFAC(2,IWAVE,1)
  3218. ! XQQ(2,IWAVE,2) = RADFAC(2,IWAVE,2)
  3219. !----------------------------------------------------------------------
  3220. ! CALCULATION OF TOTAL SURFACE ALBEDOS ( SALB )
  3221. !----------------------------------------------------------------------
  3222. !
  3223. DO 3000 IRAD = 1, 2
  3224. SALB(IWAVE,IRAD) = ( 1.-VCOVER(1) ) * ALBEDO(2,IWAVE,IRAD) + &
  3225. VCOVER(1) * ALBEDO(1,IWAVE,IRAD)
  3226. 3000 CONTINUE
  3227. !----------------------------------------------------------------------
  3228. ! SAVING OF EXTINCTION COEFFICIENTS ( PAR ) FOR STOMAT CALCULATION
  3229. !----------------------------------------------------------------------
  3230. IF ( IWAVE .EQ. 2 ) GO TO 600
  3231. RADSAV(1) = 1. - VCOVER(1) &
  3232. + VCOVER(1) * ( TRANC1(IWAVE) + TRANC3(IWAVE) )
  3233. RADSAV(2) = 1. - VCOVER(1) + VCOVER(1) * TRANC2(IWAVE)
  3234. ! XQQ(1,1,1) = RADSAV(1)
  3235. ! XQQ(1,2,1) = RADSAV(2)
  3236. 600 CONTINUE
  3237. !
  3238. 1000 CONTINUE
  3239. !
  3240. ! albedo adjustment ==============================================
  3241. if (xadj.eq.0.) go to 730
  3242. xx = radfac(1,1,2) + radsav(2)
  3243. xy = radfac(1,1,1) + radsav(1)
  3244. ssum = salb(1,1)*frac(1,1) + salb(1,2)*frac(1,2)+ &
  3245. salb(2,1)*frac(2,1) + salb(2,2)*frac(2,2)
  3246. ! for diffuse albedo
  3247. do 650 iwave = 1, 2
  3248. salb(iwave,2) = salb(iwave,2) + xadj * salb(iwave,2) / ssum
  3249. x0 = 1. - salb(iwave,2)
  3250. x1 = radfac(1,iwave,2) + radfac(2,iwave,2)
  3251. x2 = radfac(1,iwave,2) / x1
  3252. x3 = radfac(2,iwave,2) / x1
  3253. radfac(1,iwave,2) = x0 * x2
  3254. radfac(2,iwave,2) = x0 * x3
  3255. 650 continue
  3256. 640 format(1x,'unrealistic value, dif',2i12,4e11.4)
  3257. ! for direct albedo
  3258. do 750 iwave = 1, 2
  3259. salb(iwave,1) = salb(iwave,1) + xadj * salb(iwave,1) / ssum
  3260. x0 = 1. - salb(iwave,1)
  3261. x1 = radfac(1,iwave,1) + radfac(2,iwave,1)
  3262. x2 = radfac(1,iwave,1) / x1
  3263. x3 = radfac(2,iwave,1) / x1
  3264. radfac(1,iwave,1) = x0 * x2
  3265. radfac(2,iwave,1) = x0 * x3
  3266. radsav(1) = xy - radfac(1,1,1)
  3267. radsav(2) = xx - radfac(1,1,2)
  3268. 750 continue
  3269. 740 format(1x,'unrealistic value',2i12,4e11.4)
  3270. 730 continue
  3271. !--------------- end adjustment ------------------------------
  3272. !cl 2001,1,26 remove the following lines
  3273. ! sibswup(nmm,ndd,nhh) = radn(1,1)*salb(1,1) + radn(1,2)*salb(1,2)
  3274. ! & + radn(2,1)*salb(2,1) + radn(2,2)*salb(2,2)
  3275. ! if ((swdown.gt.0.1).and.(sibswup(nmm,ndd,nhh).gt.0.1)) then
  3276. ! sibalbedo(nmm,ndd,nhh) = sibswup(nmm,ndd,nhh) / swdown
  3277. ! if (sibalbedo(nmm,ndd,nhh).gt.1.) then
  3278. ! sibswup(nmm,ndd,nhh) = 0.
  3279. ! sibalbedo(nmm,ndd,nhh) = 999.
  3280. ! write (6, *) 'albebo incorrect',nymdh,sibalbedo(nmm,ndd,nhh)
  3281. ! endif
  3282. ! else
  3283. ! sibswup(nmm,ndd,nhh) = 0.0
  3284. ! sibalbedo(nmm,ndd,nhh) = 999.
  3285. ! endif
  3286. swup = radn(1,1)*salb(1,1) + radn(1,2)*salb(1,2) &
  3287. + radn(2,1)*salb(2,1) + radn(2,2)*salb(2,2)
  3288. if ((swdown.gt.0.01).and.(swup.gt.0.01)) then
  3289. xalbedo = swup / swdown
  3290. if (xalbedo.gt.1.) then
  3291. swup = 0.
  3292. xalbedo = 999.
  3293. write (6, *) 'albebo incorrect',xalbedo
  3294. endif
  3295. else
  3296. swup = 0.0
  3297. xalbedo = .1
  3298. endif
  3299. !----------------------------------------------------------------------
  3300. ! CALCULATION OF LONG-WAVE FLUX TERMS FROM CANOPY AND GROUND
  3301. !----------------------------------------------------------------------
  3302. !
  3303. TC4 = TC * TC * TC * TC
  3304. TG4 = TGS * TGS * TGS * TGS
  3305. !
  3306. ZKAT = EXTK(1,3,2) * ZLAI(1) / VCOVER(1)
  3307. ZKAT = AMIN1( 50. , ZKAT )
  3308. ZKAT = AMAX1( 1.E-5, ZKAT )
  3309. THERMK = EXP(-ZKAT)
  3310. !
  3311. FAC1 = VCOVER(1) * ( 1.-THERMK )
  3312. FAC2 = 1.
  3313. CLOSS = 2. * FAC1 * STEFAN * TC4
  3314. CLOSS = CLOSS - FAC2 * FAC1 * STEFAN * TG4
  3315. GLOSS = FAC2 * STEFAN * TG4
  3316. GLOSS = GLOSS - FAC1 * FAC2 * STEFAN * TC4
  3317. !
  3318. ZLWUP = FAC1 * STEFAN * TC4 + (1. - FAC1 ) * FAC2 * STEFAN * TG4
  3319. TGEFF = SQRT( SQRT ( ( ZLWUP / STEFAN ) ) )
  3320. !
  3321. RADSAV(3) = EXTK(1,1,1)
  3322. RADSAV(4) = EXTK(1,1,2)
  3323. RADSAV(5) = EXTK(2,1,1)
  3324. RADSAV(6) = EXTK(2,1,2)
  3325. RADSAV(7) = THERMK
  3326. RADSAV(8) = EXTK(1,3,1)
  3327. RADSAV(9) = EXTK(2,3,1)
  3328. RADSAV(10)= CLOSS
  3329. RADSAV(11)= GLOSS
  3330. RADSAV(12)= TGEFF
  3331. !-----------------------------------------------------------------------
  3332. !
  3333. !cl CALL LONGRN( TRANC1, TRANC2, TRANC3)
  3334. !-----------------------------------------------------------------------
  3335. !
  3336. !cl CALL RADUSE
  3337. !---------------------------- subroutine RADUSE -----------------------
  3338. !
  3339. ! CALCULATION OF ABSORPTION OF RADIATION BY SURFACE
  3340. !-----------------------------------------------------------------------
  3341. P1F = RADSAV(1)
  3342. P2F = RADSAV(2)
  3343. !cl 2001,1,26, redundant to the above lines
  3344. !cl EXTK(1,1,1) = RADSAV(3)
  3345. ! EXTK(1,1,2) = RADSAV(4)
  3346. ! EXTK(2,1,1) = RADSAV(5)
  3347. ! EXTK(2,1,2) = RADSAV(6)
  3348. ! THERMK = RADSAV(7)
  3349. ! EXTK(1,3,1) = RADSAV(8)
  3350. ! EXTK(2,3,1) = RADSAV(9)
  3351. ! CLOSS = RADSAV(10)
  3352. ! GLOSS = RADSAV(11)
  3353. !cl TGEFF = RADSAV(12)
  3354. !----------------------------------------------------------------------
  3355. !
  3356. ! SUMMATION OF SHORT-WAVE RADIATION ABSORBED BY CANOPY AND GROUND
  3357. !----------------------------------------------------------------------
  3358. RADT(1) = 0.
  3359. RADT(2) = 0.
  3360. !
  3361. DO 7000 IVEG = 1, 2
  3362. DO 7000 IWAVE = 1, 2
  3363. DO 7000 IRAD = 1, 2
  3364. !
  3365. RADT(IVEG) = RADT(IVEG)+RADFAC(IVEG,IWAVE,IRAD)*RADN(IWAVE,IRAD)
  3366. !
  3367. 7000 CONTINUE
  3368. !=========================================================================
  3369. fsdown = radn(1,1)+radn(1,2)+radn(2,1)+radn(2,2)
  3370. fsup = fsdown-radt(1)-radt(2)
  3371. !=========================================================================
  3372. !
  3373. SWCAN=RADT(1)
  3374. SWGND=RADT(2)
  3375. RADT(1) = RADT(1) + RADN(3,2)*VCOVER(1)*(1.- THERMK) &
  3376. - CLOSS
  3377. RADT(2) = RADT(2) + RADN(3,2)*( 1.-VCOVER(1)*(1-THERMK) ) &
  3378. - GLOSS
  3379. !=========================================================================
  3380. fldown = radn(3,2)
  3381. flup = closs+gloss
  3382. !=========================================================================
  3383. !
  3384. PAR(1) = RADN(1,1) + RADN(1,2) + 0.001
  3385. PD(1) = ( RADN(1,1) + 0.001 ) / PAR(1)
  3386. P1 = P1F * RADN(1,1) + 0.001
  3387. P2 = P2F * RADN(1,2)
  3388. PAR(2) = P1 + P2
  3389. PD(2) = P1 / PAR(2)
  3390. !
  3391. !------------------------------------------------------
  3392. END SUBROUTINE RADAB
  3393. !------------------------------------------------------
  3394. !=======================================================================
  3395. !
  3396. SUBROUTINE RADAB_ICE(TRAN,REF,GREEN,VCOVER,CHIL,ZLT,Z2,Z1,SOREF, &
  3397. TC,TGS,SATCAP,EXTK,CLOSS,GLOSS,THERMK,P1F,P2F, &
  3398. RADT,PAR,PD,SALB,ALBEDO,TGEFF,SUNANG,XADJ,CAPAC, &
  3399. RADN,bedo,ZLWUP,RADFRAC,SWDOWN,SCOV2,ISICE, &
  3400. fsdown,fldown,fsup,flup)
  3401. ! 11 AUGUST 2000
  3402. !=======================================================================
  3403. !
  3404. ! CALCULATION OF ALBEDOS VIA TWO STREAM APPROXIMATION( DIRECT
  3405. ! AND DIFFUSE ) AND PARTITION OF RADIANT ENERGY
  3406. !
  3407. !-----------------------------------------------------------------------
  3408. !----------------------------------------------------------------------
  3409. REAL, DIMENSION (2) :: TRANC1, TRANC2, TRANC3, CAPAC, SATCAP, &
  3410. GREEN, VCOVER, ZLT, CHIL, RADT, PAR, PD
  3411. REAL, DIMENSION (3) :: SOREF
  3412. REAL, DIMENSION (2,2) :: RADFRAC, SALB
  3413. REAL, DIMENSION (3,2) :: RADN
  3414. REAL, DIMENSION (2,2,2) :: RADFAC
  3415. REAL, DIMENSION (2,3,2) :: TRAN, REF, ALBEDO, EXTK
  3416. REAL, DIMENSION (12) :: RADSAV
  3417. !
  3418. f=max(sunang,0.01746)
  3419. !
  3420. !----------------------------------------------------------------------
  3421. ! CALCULATION OF MAXIMUM WATER STORAGE VALUES.
  3422. !----------------------------------------------------------------------
  3423. !
  3424. FMELT = 1.
  3425. IF ( ABS(TF-TGS) .LT. 0.5 ) FMELT = 0.6
  3426. SATCAP(1) = ZLT(1) * 0.0001
  3427. SATCAP(2) = ZLT(2) * 0.0001
  3428. DEPCOV = AMAX1( 0., (CAPAC(2)*5.-Z1) )
  3429. DEPCOV = AMIN1( DEPCOV, (Z2-Z1)*0.95 )
  3430. SATCAP(1) = SATCAP(1) * ( 1. - DEPCOV / ( Z2 - Z1 ) )
  3431. !----------------------------------------------------------------------
  3432. do 202 iveg = 1, 2
  3433. do 202 iwave = 1, 3
  3434. do 202 irad = 1, 2
  3435. albedo(iveg,iwave,irad)=0.
  3436. 202 continue
  3437. !----------------------------------------------------------------------
  3438. DO 1000 IWAVE = 1,2
  3439. !
  3440. DO 2000 IVDUM = 1,2
  3441. IF ( IVDUM .EQ. 1 ) IVEG = 2
  3442. IF ( IVDUM .EQ. 2 ) IVEG = 1
  3443. !----------------------------------------------------------------------
  3444. !----------------------------------------------------------------------
  3445. ! MODIFICATION FOR EFFECT OF SNOW ON UPPER STOREY ALBEDO
  3446. ! SNOW REFLECTANCE = 0.80, 0.40 . MULTIPLY BY 0.6 IF MELTING
  3447. ! SNOW TRANSMITTANCE = 0.20, 0.54
  3448. ! SNOW REFLECTANCE = 0.85, 0.65 . MULTIPLY BY 0.6 IF MELTING
  3449. !
  3450. !----------------------------------------------------------------------
  3451. SCOV = 0.
  3452. IF( IVEG .EQ. 2 ) GO TO 100
  3453. IF( TC .LE. TF ) SCOV = AMIN1( 0.5, CAPAC(1) / SATCAP(1) )
  3454. 100 CONTINUE
  3455. REFF1 = ( 1. - SCOV ) * REF(IVEG,IWAVE,1) + SCOV * ( 1.2 - &
  3456. IWAVE * 0.4 ) * FMELT
  3457. REFF2 = ( 1. - SCOV ) * REF(IVEG,IWAVE,2) + SCOV * ( 1.2 - &
  3458. IWAVE * 0.4 ) * FMELT
  3459. TRAN1 = TRAN(IVEG,IWAVE,1) * ( 1. - SCOV ) &
  3460. + SCOV * ( 1.- ( 1.2 - IWAVE * 0.4 ) * FMELT ) &
  3461. * TRAN(IVEG,IWAVE,1)
  3462. TRAN2 = TRAN(IVEG,IWAVE,2) * ( 1. - SCOV ) &
  3463. + SCOV * ( 1.- ( 1.2 - IWAVE * 0.4 ) * FMELT ) * 0.9 &
  3464. * TRAN(IVEG,IWAVE,2)
  3465. !----------------------------------------------------------------------
  3466. !
  3467. SCAT = GREEN(IVEG)*( TRAN1 + REFF1 ) +( 1. - GREEN(IVEG) ) * &
  3468. ( TRAN2 + REFF2)
  3469. CHIV = CHIL(IVEG)
  3470. !
  3471. IF ( ABS(CHIV) .LE. 0.01 ) CHIV = 0.01
  3472. AA = 0.5 - 0.633 * CHIV - 0.33 * CHIV * CHIV
  3473. BB = 0.877 * ( 1. - 2. * AA )
  3474. !
  3475. PROJ = AA + BB * F
  3476. EXTKB = ( AA + BB * F ) / F
  3477. ZMEW = 1. / BB * ( 1. - AA / BB * ALOG ( ( AA + BB ) / AA ) )
  3478. ACSS = SCAT / 2. * PROJ / ( PROJ + F * BB )
  3479. ACSS = ACSS * ( 1. - F * AA / ( PROJ + F * BB ) * ALOG ( ( PROJ &
  3480. + F * BB + F * AA ) / ( F * AA ) ) )
  3481. !
  3482. EXTK( IVEG, IWAVE, 1 ) = PROJ / F * SQRT( 1.-SCAT )
  3483. EXTK( IVEG, IWAVE, 2 ) = 1. / ZMEW * SQRT( 1.-SCAT )
  3484. EXTK( IVEG, 3, 1 ) = AA + BB
  3485. EXTK( IVEG, 3, 2 ) = 1./ZMEW
  3486. !
  3487. UPSCAT = GREEN(IVEG) * TRAN1 + ( 1. - GREEN(IVEG) ) * TRAN2
  3488. UPSCAT = 0.5 * ( SCAT + ( SCAT - 2. * UPSCAT ) * &
  3489. (( 1. - CHIV ) / 2. ) ** 2 )
  3490. !
  3491. BETAO = ( 1. + ZMEW * EXTKB ) / ( SCAT * ZMEW * EXTKB ) * ACSS
  3492. !
  3493. !----------------------------------------------------------------------
  3494. !
  3495. ! DICKINSON'S VALUES
  3496. !
  3497. BE = 1. - SCAT + UPSCAT
  3498. CE = UPSCAT
  3499. BOT = ( ZMEW * EXTKB ) ** 2 + ( CE**2 - BE**2 )
  3500. IF ( ABS(BOT) .GT. 1.E-10) GO TO 200
  3501. SCAT = SCAT* 0.98
  3502. BE = 1. - SCAT + UPSCAT
  3503. BOT = ( ZMEW * EXTKB ) ** 2 + ( CE**2 - BE**2 )
  3504. 200 CONTINUE
  3505. DE = SCAT * ZMEW * EXTKB * BETAO
  3506. FE = SCAT * ZMEW * EXTKB * ( 1. - BETAO )
  3507. !----------------------------------------------------------------------
  3508. !
  3509. CCE = DE * BE - ZMEW * DE * EXTKB + CE * FE
  3510. FFE = BE * FE + ZMEW * FE * EXTKB + CE * DE
  3511. !
  3512. TORE = -CCE / BOT
  3513. SIGE = -FFE / BOT
  3514. !
  3515. PSI = SQRT(BE**2 - CE**2)/ZMEW
  3516. !
  3517. !----------------------------------------------------------------------
  3518. ! REDUCTION IN EXPOSED HEIGHT OF UPPER STOREY AS SNOW ACCUMULATES
  3519. !
  3520. SDEP = CAPAC(2) * 5.
  3521. FAC = ( SDEP - Z1 ) / ( Z2 - Z1 )
  3522. FAC = AMAX1( 0., FAC )
  3523. FAC = AMIN1( 0.99, FAC )
  3524. !
  3525. ZAT = ZLT(IVEG) / VCOVER(IVEG)
  3526. IF ( IVEG .EQ. 1 ) ZAT = ZAT * (1.-FAC)
  3527. !
  3528. POWER1 = AMIN1( PSI*ZAT, 50. )
  3529. POWER2 = AMIN1( EXTKB*ZAT, 50. )
  3530. EPSI = EXP( - POWER1 )
  3531. EK = EXP ( - POWER2 )
  3532. !
  3533. ROSB = SOREF(IWAVE)
  3534. ROSD = SOREF(IWAVE)
  3535. IF ( IVEG .EQ. 2 ) GO TO 300
  3536. ROSB = ALBEDO(2,IWAVE,1)
  3537. ROSD = ALBEDO(2,IWAVE,2)
  3538. 300 CONTINUE
  3539. !
  3540. GE = ROSB / ROSD
  3541. !
  3542. !-----------------------------------------------------------------------
  3543. ! CALCULATION OF DIFFUSE ALBEDOS
  3544. !-----------------------------------------------------------------------
  3545. !
  3546. F1 = BE - CE / ROSD
  3547. ZP = ZMEW * PSI
  3548. !
  3549. DEN = ( BE + ZP ) * ( F1 - ZP ) / EPSI - &
  3550. ( BE - ZP ) * ( F1 + ZP ) * EPSI
  3551. ALPHA = CE * ( F1 - ZP ) / EPSI / DEN
  3552. BETA = -CE * ( F1 + ZP ) * EPSI / DEN
  3553. F1 = BE - CE * ROSD
  3554. DEN = ( F1 + ZP ) / EPSI - ( F1 - ZP ) * EPSI
  3555. !
  3556. GAMMA = ( F1 + ZP ) / EPSI / DEN
  3557. DELTA = - ( F1 - ZP ) * EPSI / DEN
  3558. !
  3559. ALBEDO(IVEG,IWAVE,2) = ALPHA + BETA
  3560. !
  3561. IF ( IVEG .EQ. 1 ) GO TO 400
  3562. SCOV2 = 0.
  3563. !crr CORRECTION FOR KEEPING ALBEDO HIGH OVER SNOW
  3564. IF (ISICE.EQ.1) SCOV2=1.
  3565. !
  3566. IF ( TGS .LE. TF ) SCOV2 = AMIN1( 1., CAPAC(2) / 0.004 )
  3567. ALBEDO(2,IWAVE,2)= ROSD * ( 1. - VCOVER(2) ) + ALBEDO(2,IWAVE,2) * VCOVER(2)
  3568. ALBEDO(2,IWAVE,2) = &
  3569. ( 1. - SCOV2 ) * ALBEDO(2,IWAVE,2) + SCOV2 * &
  3570. ( 1.2-IWAVE*0.4 ) * FMELT
  3571. 400 CONTINUE
  3572. !
  3573. TRANC2(IWAVE) = GAMMA * EPSI + DELTA / EPSI
  3574. !
  3575. !-----------------------------------------------------------------------
  3576. ! CALCULATION OF DIRECT ALBEDOS
  3577. !-----------------------------------------------------------------------
  3578. !
  3579. F1 = BE - CE / ROSD
  3580. ZMK = ZMEW * EXTKB
  3581. !
  3582. DEN = ( BE + ZP ) * ( F1 - ZP ) / EPSI - &
  3583. ( BE - ZP ) * ( F1 + ZP ) * EPSI
  3584. ALPHA = ( DE - TORE * ( BE + ZMK ) ) * ( F1 - ZP ) / EPSI - &
  3585. ( BE - ZP ) * ( DE - CE*GE - TORE * ( F1 + ZMK ) ) * EK
  3586. ALPHA = ALPHA / DEN
  3587. BETA = ( BE + ZP ) * (DE - CE*GE - TORE * ( F1 + ZMK ))* EK - &
  3588. ( DE - TORE * ( BE + ZMK ) ) * ( F1 + ZP ) * EPSI
  3589. BETA = BETA / DEN
  3590. F1 = BE - CE * ROSD
  3591. DEN = ( F1 + ZP ) / EPSI - ( F1 - ZP ) * EPSI
  3592. GAMMA = - SIGE * ( F1 + ZP ) / EPSI - &
  3593. ( FE + CE * GE * ROSD + SIGE * ( ZMK - F1 ) ) * EK
  3594. GAMMA = GAMMA / DEN
  3595. DELTA = ( CE * GE * ROSD + FE + SIGE * ( ZMK - F1 ) ) * EK &
  3596. + SIGE * ( F1 - ZP ) * EPSI
  3597. DELTA = DELTA / DEN
  3598. !
  3599. ALBEDO(IVEG,IWAVE,1) = TORE + ALPHA + BETA
  3600. !
  3601. !----------------------------------------------------------------------
  3602. !
  3603. IF( IVEG .EQ. 1 ) GO TO 500
  3604. ALBEDO(2,IWAVE,1) = ROSB * ( 1. - VCOVER(2) ) &
  3605. + ALBEDO(2,IWAVE,1) * VCOVER(2)
  3606. ALBEDO(2,IWAVE,1) = ( 1. - SCOV2 ) * ALBEDO(2,IWAVE,1) + &
  3607. SCOV2 * ( 1.2-IWAVE*0.4 ) * FMELT
  3608. !
  3609. 500 CONTINUE
  3610. !
  3611. TRANC1(IWAVE) = EK
  3612. TRANC3(IWAVE) = SIGE * EK + GAMMA * EPSI + DELTA / EPSI
  3613. !
  3614. 2000 CONTINUE
  3615. !
  3616. !----------------------------------------------------------------------
  3617. ! CALCULATION OF TERMS WHICH MULTIPLY INCOMING SHORT WAVE FLUXES
  3618. ! TO GIVE ABSORPTION OF RADIATION BY CANOPY AND GROUND
  3619. !----------------------------------------------------------------------
  3620. !
  3621. RADFAC(2,IWAVE,1) = ( 1.-VCOVER(1) ) * ( 1.-ALBEDO(2,IWAVE,1) ) &
  3622. + VCOVER(1) * ( TRANC1(IWAVE) * ( 1.-ALBEDO(2,IWAVE,1) ) &
  3623. + TRANC3(IWAVE) * ( 1.-ALBEDO(2,IWAVE,2) ) )
  3624. !
  3625. RADFAC(2,IWAVE,2) = ( 1.-VCOVER(1) ) * ( 1.-ALBEDO(2,IWAVE,2) ) &
  3626. + VCOVER(1) * TRANC2(IWAVE) * ( 1.-ALBEDO(2,IWAVE,2) )
  3627. !
  3628. RADFAC(1,IWAVE,1) = VCOVER(1) * ( ( 1.-ALBEDO(1,IWAVE,1) ) &
  3629. - TRANC1(IWAVE) * ( 1.-ALBEDO(2,IWAVE,1) ) &
  3630. - TRANC3(IWAVE) * ( 1.-ALBEDO(2,IWAVE,2) ) )
  3631. !
  3632. RADFAC(1,IWAVE,2) = VCOVER(1) * ( ( 1.-ALBEDO(1,IWAVE,2) ) &
  3633. - TRANC2(IWAVE) * ( 1.-ALBEDO(2,IWAVE,2) ) )
  3634. !
  3635. ! XQQ(1,IWAVE,1) = RADFAC(1,IWAVE,1)
  3636. ! XQQ(1,IWAVE,2) = RADFAC(1,IWAVE,2)
  3637. ! XQQ(2,IWAVE,1) = RADFAC(2,IWAVE,1)
  3638. ! XQQ(2,IWAVE,2) = RADFAC(2,IWAVE,2)
  3639. !
  3640. !----------------------------------------------------------------------
  3641. ! CALCULATION OF TOTAL SURFACE ALBEDOS ( SALB )
  3642. !
  3643. DO 3000 IRAD = 1, 2
  3644. SALB(IWAVE,IRAD) = ( 1.-VCOVER(1) ) * ALBEDO(2,IWAVE,IRAD) + &
  3645. VCOVER(1) * ALBEDO(1,IWAVE,IRAD)
  3646. 3000 CONTINUE
  3647. !
  3648. !----------------------------------------------------------------------
  3649. ! SAVING OF EXTINCTION COEFFICIENTS ( PAR ) FOR STOMAT CALCULATION
  3650. !----------------------------------------------------------------------
  3651. IF ( IWAVE .EQ. 2 ) GO TO 600
  3652. RADSAV(1) = 1. - VCOVER(1) &
  3653. + VCOVER(1) * ( TRANC1(IWAVE) + TRANC3(IWAVE) )
  3654. RADSAV(2) = 1. - VCOVER(1) + VCOVER(1) * TRANC2(IWAVE)
  3655. 600 CONTINUE
  3656. !
  3657. 1000 CONTINUE
  3658. !
  3659. ! albedo adjustment ==============================================
  3660. !
  3661. if (xadj.eq.0.) go to 730
  3662. xx = radfac(1,1,2) + radsav(2)
  3663. xy = radfac(1,1,1) + radsav(1)
  3664. ssum = salb(1,1)*radfrac(1,1) + salb(1,2)*radfrac(1,2)+ &
  3665. salb(2,1)*radfrac(2,1) + salb(2,2)*radfrac(2,2)
  3666. ! for diffuse albedo
  3667. do 650 iwave = 1, 2
  3668. salb(iwave,2) = salb(iwave,2) + xadj * salb(iwave,2) / ssum
  3669. x0 = 1. - salb(iwave,2)
  3670. x1 = radfac(1,iwave,2) + radfac(2,iwave,2)
  3671. x2 = radfac(1,iwave,2) / x1
  3672. x3 = radfac(2,iwave,2) / x1
  3673. radfac(1,iwave,2) = x0 * x2
  3674. radfac(2,iwave,2) = x0 * x3
  3675. if (salb(iwave,2).gt.1..or.radfac(1,iwave,2).gt.1..or. &
  3676. radfac(2,iwave,2).gt.1..or.salb(iwave,2).lt.0..or. &
  3677. radfac(1,iwave,2).lt.0..or.radfac(2,iwave,2).lt.0.) then
  3678. stop 999
  3679. end if
  3680. 650 continue
  3681. 640 format(1x,'unrealistic value, dif',2i12,4e11.4)
  3682. ! for direct albedo
  3683. do 750 iwave = 1, 2
  3684. salb(iwave,1) = salb(iwave,1) + xadj * salb(iwave,1) / ssum
  3685. x0 = 1. - salb(iwave,1)
  3686. x1 = radfac(1,iwave,1) + radfac(2,iwave,1)
  3687. x2 = radfac(1,iwave,1) / x1
  3688. x3 = radfac(2,iwave,1) / x1
  3689. radfac(1,iwave,1) = x0 * x2
  3690. radfac(2,iwave,1) = x0 * x3
  3691. radsav(1) = xy - radfac(1,1,1)
  3692. radsav(2) = xx - radfac(1,1,2)
  3693. if (salb(iwave,1).gt.1..or.radfac(1,iwave,1).gt.1..or. &
  3694. radfac(2,iwave,1).gt.1..or.salb(iwave,1).lt.0..or. &
  3695. radfac(1,iwave,1).lt.0..or.radfac(2,iwave,1).lt.0.) then
  3696. write(7,740) nymdh,iwave,salb(iwave,1),radfac(1,iwave,1), &
  3697. radfac(2,iwave,1)
  3698. stop 999
  3699. end if
  3700. 750 continue
  3701. 740 format(1x,'unrealistic value',2i12,4e11.4)
  3702. 730 continue
  3703. !***************** end adjustment *******************************
  3704. sibsu = radn(1,1)*salb(1,1) + radn(1,2)*salb(1,2) &
  3705. + radn(2,1)*salb(2,1) + radn(2,2)*salb(2,2)
  3706. if ((swdown.gt.0.01).and.(sibsu.gt.0.01)) then
  3707. bedo = sibsu / swdown
  3708. if (bedo.gt.1.) then
  3709. sibsu = 0.
  3710. bedo = .1
  3711. print*,'albebo incorrect',ii,jj,bedo,sibsu,swdown, &
  3712. radn(1,1),radn(1,2),radn(2,1),radn(2,2)
  3713. endif
  3714. else
  3715. sibsu = 0.0
  3716. bedo = .1
  3717. endif
  3718. !--------------------------------------------------------------------
  3719. ! bedo = sibsu/swdown
  3720. ! bedo = min(max(bedo,0.001),1.0)
  3721. !--------------------------------------------------------------------
  3722. !
  3723. ! CALCULATION OF LONG-WAVE FLUX TERMS FROM CANOPY AND GROUND
  3724. !
  3725. !----------------------------------------------------------------------
  3726. !
  3727. TC4 = TC * TC * TC * TC
  3728. TG4 = TGS * TGS * TGS * TGS
  3729. !
  3730. ZKAT = EXTK(1,3,2) * ZLT(1) / VCOVER(1)
  3731. ZKAT = AMIN1( 50. , ZKAT )
  3732. ZKAT = AMAX1( 1.E-5, ZKAT )
  3733. THERMK = EXP(-ZKAT)
  3734. !
  3735. FAC1 = VCOVER(1) * ( 1.-THERMK )
  3736. FAC2 = 1.
  3737. CLOSS = 2. * FAC1 * STEFAN * TC4
  3738. CLOSS = CLOSS - FAC2 * FAC1 * STEFAN * TG4
  3739. GLOSS = FAC2 * STEFAN * TG4
  3740. GLOSS = GLOSS - FAC1 * FAC2 * STEFAN * TC4
  3741. !
  3742. ZLWUP = FAC1 * STEFAN * TC4 + (1. - FAC1 ) * FAC2 * STEFAN * TG4
  3743. TGEFF = SQRT( SQRT ( ( ZLWUP / STEFAN ) ) )
  3744. !
  3745. RADSAV(3) = EXTK(1,1,1)
  3746. RADSAV(4) = EXTK(1,1,2)
  3747. RADSAV(5) = EXTK(2,1,1)
  3748. RADSAV(6) = EXTK(2,1,2)
  3749. RADSAV(7) = THERMK
  3750. RADSAV(8) = EXTK(1,3,1)
  3751. RADSAV(9) = EXTK(2,3,1)
  3752. RADSAV(10)= CLOSS
  3753. RADSAV(11)= GLOSS
  3754. RADSAV(12)= TGEFF
  3755. !
  3756. !-----------------------------------------------------------------------
  3757. !
  3758. ! CALCULATION OF ABSORPTION OF RADIATION BY SURFACE
  3759. !
  3760. !-----------------------------------------------------------------------
  3761. !
  3762. P1F = RADSAV(1)
  3763. P2F = RADSAV(2)
  3764. EXTK(1,1,1) = RADSAV(3)
  3765. EXTK(1,1,2) = RADSAV(4)
  3766. EXTK(2,1,1) = RADSAV(5)
  3767. EXTK(2,1,2) = RADSAV(6)
  3768. THERMK = RADSAV(7)
  3769. EXTK(1,3,1) = RADSAV(8)
  3770. EXTK(2,3,1) = RADSAV(9)
  3771. CLOSS = RADSAV(10)
  3772. GLOSS = RADSAV(11)
  3773. TGEFF = RADSAV(12)
  3774. !
  3775. !----------------------------------------------------------------------
  3776. ! SUMMATION OF SHORT-WAVE RADIATION ABSORBED BY CANOPY AND GROUND
  3777. !----------------------------------------------------------------------
  3778. !
  3779. RADT(1) = 0.
  3780. RADT(2) = 0.
  3781. !
  3782. DO 7000 IVEG = 1, 2
  3783. DO 7000 IWAVE = 1, 2
  3784. DO 7000 IRAD = 1, 2
  3785. !
  3786. RADT(IVEG) = RADT(IVEG)+RADFAC(IVEG,IWAVE,IRAD)*RADN(IWAVE,IRAD)
  3787. !
  3788. 7000 CONTINUE
  3789. !=========================================================================
  3790. fsdown = radn(1,1)+radn(1,2)+radn(2,1)+radn(2,2)
  3791. fsup = fsdown-radt(1)-radt(2)
  3792. !=========================================================================
  3793. !
  3794. SWCAN=RADT(1)
  3795. SWGND=RADT(2)
  3796. !
  3797. RADT(1) = RADT(1) + RADN(3,2)*VCOVER(1)*(1.- THERMK) &
  3798. - CLOSS
  3799. RADT(2) = RADT(2) + RADN(3,2)*( 1.-VCOVER(1)*(1-THERMK) ) &
  3800. - GLOSS
  3801. !=========================================================================
  3802. fldown = radn(3,2)
  3803. flup = closs+gloss
  3804. !=========================================================================
  3805. !
  3806. PAR(1) = RADN(1,1) + RADN(1,2) + 0.001
  3807. PD(1) = ( RADN(1,1) + 0.001 ) / PAR(1)
  3808. P1 = P1F * RADN(1,1) + 0.001
  3809. P2 = P2F * RADN(1,2)
  3810. PAR(2) = P1 + P2
  3811. PD(2) = P1 / PAR(2)
  3812. !
  3813. !------------------------------------------------------
  3814. END SUBROUTINE RADAB_ICE
  3815. !------------------------------------------------------
  3816. !=======================================================================
  3817. !
  3818. SUBROUTINE RASIT5(TRIB,CTNI,CUNI,RA,Z2,Z0,D,ZZWIND,UMM1, &
  3819. RHOA,TMM,U2,USTAR,DRAG,TA,bps,rib,CU,CT,iii,jjj)
  3820. !cxx RHOA,TMM,U2,USTAR,DRAG,TA,bps0,bps1,rib,CU,CT)
  3821. ! 2001,1,11
  3822. !=======================================================================
  3823. !
  3824. ! CUU AND CTT ARE LINEAR (A SIMPLIFIED VERSION, XUE ET AL. 1991)
  3825. !
  3826. FS(X) = 66.85 * X
  3827. FT(X) = 0.904 * X
  3828. FV(X) = 0.315 * X
  3829. !
  3830. ! CU AND CT ARE THE FRICTION AND HEAT TRANSFER COEFFICIENTS.
  3831. ! CUN AND CTN ARE THE NEUTRAL FRICTION AND HEAT TRANSFER
  3832. ! COEFFICIENTS.
  3833. !
  3834. G2= 0.75
  3835. G3= 0.75
  3836. Z22 = Z2
  3837. ZL = Z2 + 11.785 * Z0
  3838. !crr
  3839. ZWIND = ZZWIND
  3840. TM = TMM
  3841. UMM = UMM1
  3842. !cxx IF(ZWIND.LE.Z2) THEN
  3843. !cxx ZWIND=Z2+20.0 ! if trees are higher than model level
  3844. !cxx ! increase model level by 10m
  3845. !cxx TM = TMM - (ZWIND - ZZWIND)*0.0065 ! adjust temp (lin.)
  3846. !cxx UMM = UMM1 + USTAR/VKC * ALOG(ZWIND/ZZWIND) ! adjust wind (log.)
  3847. !cxx ENDIF
  3848. !------------------------------------------------------------------------
  3849. if(zwind.le.d.or.zl.le.d) d=min(zwind,zl)-0.1
  3850. !crr
  3851. Z2 = D + Z0
  3852. CUNI = ALOG((ZWIND-D)/Z0)/VKC
  3853. IF (ZL.LT.ZWIND) THEN
  3854. XCT1 = ALOG((ZWIND-D)/(ZL-D))
  3855. XCT2 = ALOG((ZL-D)/(Z2-D))
  3856. XCTU2 = ALOG((ZL-D)/(Z22-D))
  3857. CTNI = (XCT1 + G3 * XCT2) / VKC
  3858. ELSE
  3859. XCT2 = ALOG((ZWIND-D)/(Z2-D))
  3860. XCTU2 = ALOG((ZWIND-D)/(Z22-D))
  3861. CTNI = G3 * XCT2 /VKC
  3862. END IF
  3863. ! --------------- NEUTRAL VALUES OF USTAR AND VENTMF ------------
  3864. !
  3865. UM=AMAX1(UMM,2.)
  3866. USTARN=UM/CUNI
  3867. VENTN =RHOA /CTNI*USTARN
  3868. IF (ZL.LT.ZWIND) THEN
  3869. U2 = UM - 1. / VKC * USTARN * (XCT1 + G2 * XCTU2)
  3870. ELSE
  3871. U2 = UM - 1. / VKC * USTARN * G2 * XCTU2
  3872. END IF
  3873. !crr
  3874. if(u2.lt.0.01) u2=0.01
  3875. !crr
  3876. !
  3877. ! STABILITY BRANCH BASED ON BULK RICHARDSON NUMBER.
  3878. !
  3879. ! THM=TM*bps1
  3880. ! THVGM= TRIB*bps0-THM
  3881. THM=TM*bps !fds (06/2010)
  3882. THVGM=TRIB-THM
  3883. IF (TA.EQ.0.) THVGM = 0.
  3884. RIB = -THVGM*GRAV*(ZWIND-D) / (THM*(UM-U2)**2)
  3885. RIB = MAX(-10.E0,RIB)
  3886. RIB = MIN(0.1643E0,RIB)
  3887. !
  3888. ! NON-NEUTRON CORRECTION (SEE XUE ET AL(1991))
  3889. IF(RIB.LT.0.0)THEN
  3890. GRIB = +RIB
  3891. GRZL = +RIB*(ZL-D)/(ZWIND-D)
  3892. GRZ2 = +RIB*(Z2-D)/(ZWIND-D)
  3893. FVV = FV(GRIB)
  3894. IF (ZL.LT.ZWIND) THEN
  3895. FTT = FT(GRIB) + (G3-1.) * FT(GRZL) - G3 * FT(GRZ2)
  3896. ELSE
  3897. FTT = G3*(FT(GRIB) - FT(GRZ2))
  3898. END IF
  3899. CUI = CUNI + FVV
  3900. CTI = CTNI + FTT
  3901. ELSE
  3902. RZL = RIB/(ZWIND-D)*(ZL-D)
  3903. RZ2 = RIB/(ZWIND-D)*(Z2-D)
  3904. FVV = FS(RIB)
  3905. IF (ZL.LT.ZWIND) THEN
  3906. FTT = FS(RIB) + (G3-1) * FS(RZL) - G3 * FS(RZ2)
  3907. ELSE
  3908. FTT = G3 * (FS(RIB) - FS(RZ2))
  3909. END IF
  3910. 312 CUI = CUNI + FVV
  3911. CTI = CTNI + FTT
  3912. ENDIF
  3913. 310 CONTINUE
  3914. !
  3915. CU=1./CUI
  3916. CT=1./CTI
  3917. USTAR =UM*CU
  3918. RAF = CTI / USTAR
  3919. IF (RAF.LT.0.80) RAF = 0.80
  3920. !
  3921. RA = RAF
  3922. !
  3923. UEST = USTAR
  3924. DRAG = RHOA * UEST*UEST
  3925. Z2 = Z22
  3926. !
  3927. !------------------------------------------------------
  3928. END SUBROUTINE RASIT5
  3929. !------------------------------------------------------
  3930. !=======================================================================
  3931. !
  3932. SUBROUTINE SDSOL(DSOL,DMASS,N,SOLAR,SOLSOIL)
  3933. !
  3934. !=======================================================================
  3935. parameter(nd = 4)
  3936. !clwp 12/08/2000, to change nd=20 to nd=4 to keep consistent
  3937. !cl parameter(nd = 20)
  3938. integer n
  3939. real dsol(nd),dmass(nd),fext(nd)
  3940. !
  3941. gsize = 5.d-4
  3942. bext = 400.0
  3943. cv = 3.795d-3
  3944. depth = 30
  3945. do i=1,n
  3946. fext(i) = 0.0
  3947. enddo
  3948. !
  3949. tmass = 0.0
  3950. do 10 i=1,n
  3951. j=n+1-i
  3952. tmass=tmass+dmass(j)
  3953. if(tmass.gt.depth) goto 30
  3954. fext(j)=exp(-cv*dmass(j)/sqrt(gsize))
  3955. if(j .eq. n) fext(n)=exp(-bext*2d-3)*fext(n)
  3956. 10 continue
  3957. 30 tsolt = solar
  3958. do 20 i=1,n
  3959. j=n+1-i
  3960. if(tsolt .le. 0d0)then
  3961. dsol(j)=0d0
  3962. tsolb=0.0
  3963. else
  3964. tsolb=tsolt*fext(j)
  3965. dsol(j)=tsolt-tsolb
  3966. tsolt=tsolb
  3967. end if
  3968. 20 continue
  3969. solsoil = tsolb
  3970. !
  3971. !------------------------------------------------------
  3972. END SUBROUTINE SDSOL
  3973. !------------------------------------------------------
  3974. !=======================================================================
  3975. !
  3976. SUBROUTINE SET0(TSSNO,BWO,BLO,BIO,HO,FLO,FIO,WO,DZO, &
  3977. SSO,CTO,BTO,DMLTO,WF,DHP)
  3978. !
  3979. !=======================================================================
  3980. !cl
  3981. DIMENSION WF(N1),DHP(N1),TSSNO(N1),BWO(N1),BLO(N1),BIO(N1),HO(N1), &
  3982. FLO(N1),FIO(N1),WO(N1),DZO(N1),SSO(N1),CTO(N1),BTO(N1),DMLTO(N1)
  3983. !clwp do 100 i=n+1,nd
  3984. DO 100 I=N+1,N1
  3985. TSSNO(I)=0.0
  3986. BWO(I)=0.0
  3987. BLO(I)=0.0
  3988. BIO(I)=0.0
  3989. HO(I)=0.0
  3990. FLO(I)=0.0
  3991. FIO(I)=0.0
  3992. WO(I)=0.0
  3993. DZO(I)=0.0
  3994. SSO(I)=0.0
  3995. CTO(I)=0.0
  3996. BTO(I)=0.0
  3997. DMLTO(I)=0.0
  3998. 100 CONTINUE
  3999. !clwp DO 200 I=1,Nd
  4000. DO 200 I=1,N1
  4001. WF(I)=0.0
  4002. DHP(I)=0.0
  4003. 200 CONTINUE
  4004. !------------------------------------------------------
  4005. END SUBROUTINE SET0
  4006. !------------------------------------------------------
  4007. !=======================================================================
  4008. !
  4009. SUBROUTINE SNOW_1ST (DTT,TM,SOLAR,PRCPW,PRCPS,BIO,BLO,DICEVOL, &
  4010. DLIQVOL,TSSNO,PDZDTC,POROSITY,SO,SSO,WF,DHP,DZO,WO, &
  4011. BWO,BTO,CTO,DMASS,DSOL,SNROFF,HROFF,SNOWDEPTH,SOLSOIL, &
  4012. FLO,FIO,DMLTO,HO,BIFALL,BLFALL,FLFALL)
  4013. !
  4014. !=======================================================================
  4015. !cl
  4016. DIMENSION BIO(N1),BLO(N1),DICEVOL(N1),DLIQVOL(N1),TSSNO(N1), &
  4017. PDZDTC(N1),POROSITY(N1),SO(N1),SSO(N1),WF(N1),DHP(N1), &
  4018. DZO(N1),WO(N1),BWO(N1),BTO(N1),CTO(N1),DMASS(N1), &
  4019. DSOL(N1),FLO(N1),FIO(N1),DMLTO(N1),HO(N1)
  4020. ! ------------------------------------------------------------------7272
  4021. tkair = TM
  4022. prcp = prcpw+prcps
  4023. snroff = 0.0
  4024. hroff = 0.0
  4025. ! dksatsnow=0.01
  4026. !....................... rain
  4027. if(prcpw.gt.0.0)then
  4028. wf(n+1)=amin1(prcpw, dksatsnow*dtt)
  4029. dhp(n+1)=(wf(n+1)/dtt)*cl*rhowater*(tkair-273.16)
  4030. snroff =snroff+(prcpw-wf(n+1))
  4031. hroff=hroff+(prcpw-wf(n+1))*cl*rhowater*(tkair-273.16)
  4032. else if(prcps.gt.0.0)then
  4033. !...................... snow, add new nodes
  4034. wf(n+1)=0.0
  4035. dhp(n+1)=0.0
  4036. !cl 12/08/2000, the following subroutine just deals with top snow layer.
  4037. CALL NEWSNOW(PRCP,BIFALL,BLFALL,FLFALL,TKAIR, &
  4038. DZO(N),WO(N),BWO(N),CTO(N),HO(N),DMLTO(N),FIO(N),FLO(N), &
  4039. BIO(N),BLO(N),DLIQVOL(N),DICEVOL(N),TSSNO(N),WF(N))
  4040. endif
  4041. !---------------------------------
  4042. ! Compaction rate for snow
  4043. !---------------------------------
  4044. do 277 i=n,1,-1
  4045. dicevol(i) = bio(i)/dice
  4046. dliqvol(i) = blo(i)/rhowater
  4047. porosity(i)=1.0-dicevol(i)
  4048. porosity(i)=amin1(porosity(i),1.0)
  4049. porosity(i)=amax1(porosity(i),0.0)
  4050. so(i)=ssisnow
  4051. if(porosity(i).ne.0.0) so(i)=dliqvol(i)/porosity(i)
  4052. sso(i)=(so(i)-ssisnow)/(1.0-ssisnow)
  4053. 277 continue
  4054. overburden=0.0
  4055. do 377 i=n,1,-1
  4056. overburden=overburden+ wo(i)*rhowater
  4057. call COMPACT(BIO(I),TSSNO(I),BLO(I),OVERBURDEN,PDZDTC(I), &
  4058. SSO(I),DICE)
  4059. 377 continue
  4060. !
  4061. !---------------------------------------------**
  4062. ! Calculate some variables after new snowfall
  4063. !---------------------------------------------**
  4064. do 390 i = 1,n
  4065. if((sso(i).lt.1.0.and.porosity(i).gt.0.0))then
  4066. dzot=dzo(i)*(1d0+pdzdtc(i)*dtt)
  4067. dzo(i)=amax1(dzot,dzmin)
  4068. !
  4069. if(wo(i).gt.womin)then
  4070. bwo(i)=(wo(i)*rhowater)/dzo(i)
  4071. if (bwo(i).gt.920.0) then
  4072. bwo(i)=920.0
  4073. dzo(i)=(wo(i)*rhowater)/bwo(i)
  4074. end if
  4075. endif
  4076. !
  4077. blo(i)=bwo(i)*flo(i)
  4078. bio(i)=bwo(i)*fio(i)
  4079. bto(i)=bwo(i)
  4080. end if
  4081. !
  4082. dicevol(i) = bio(i)/dice
  4083. dliqvol(i) = blo(i)/rhowater
  4084. dummy = dliqvol(i) + dicevol(i)
  4085. if(dummy.gt.1.0)then
  4086. dliqvol(i) = 1.0 - dicevol(i)
  4087. blo(i) = dliqvol(i)*rhowater
  4088. bwo(i) = blo(i) + bio(i)
  4089. dzo(i)=(wo(i)*rhowater)/bwo(i)
  4090. endif
  4091. cto(i)=(bwo(i)/920.0)*1.9e+6
  4092. !
  4093. porosity(i)=1.0-dicevol(i)
  4094. if(porosity(i) .gt. 1.0)porosity(i)=1.0
  4095. if(porosity(i) .lt. 0.0)porosity(i)=0.0
  4096. !
  4097. if(porosity(i).gt.0.0)then
  4098. so(i)=dliqvol(i)/porosity(i)
  4099. else
  4100. so(i)=ssisnow
  4101. endif
  4102. !
  4103. if(so(i).gt.ssisnow)then
  4104. sso(i)=(so(i)-ssisnow)/(1.0-ssisnow)
  4105. else
  4106. sso(i)=0.0
  4107. endif
  4108. !!!!!! dmass is for using to calculate dsol in sdsol.f
  4109. dmass(i)=bto(i)*dzo(i)
  4110. 390 continue
  4111. SNOWDEPTH=dzo(1)+dzo(2)+dzo(3)
  4112. !---------------------------------------------
  4113. ! Optical parameters and solar extinction
  4114. !---------------------------------------------
  4115. IF (solar .gt. 0d0 ) THEN
  4116. call sdsol(dsol,dmass,n,solar,solsoil)
  4117. ELSE
  4118. do 112 i=1,n
  4119. dsol(i)=0d0
  4120. 112 continue
  4121. solsoil=0.0
  4122. END IF
  4123. !
  4124. !------------------------------------------------------
  4125. END SUBROUTINE SNOW_1ST
  4126. !------------------------------------------------------
  4127. !=======================================================================
  4128. !
  4129. SUBROUTINE SNRESULT(DTT,I,ICASE,WFSOIL,TSOIL,B1,B2,FFF,DELTH,WWW, &
  4130. ZDEPTH,POROS,BI,BIO,DZ,DZO,W,BW,BWO,H,HO,QK,BL,BT,CT, &
  4131. FI,FL,WF,TSSN,DLIQVOL,DICEVOL,SNROFF,HROFF,QSOIL)
  4132. !
  4133. !=======================================================================
  4134. !cl
  4135. DIMENSION BIO(N1),DZO(N1),W(N1),BWO(N1),HO(N1), &
  4136. DZ(N1),BI(N1),BW(N1),BL(N1),BT(N1),CT(N1),FI(N1),FL(N1), &
  4137. WF(N1),H(N1),TSSN(N1),DLIQVOL(N1),DICEVOL(N1),QK(N1), &
  4138. WWW(3),ZDEPTH(3)
  4139. DIMENSION DELTH(20)
  4140. DATA BWE/200.0/
  4141. hx=0.0
  4142. IF (ICASE.EQ.1) THEN
  4143. fi(i)=1.0
  4144. fl(i)=0.0
  4145. dz(i)=dzo(i)
  4146. bw(i)=(w(i)*rhowater)/dz(i)
  4147. if((w(i)/dz(i)).lt.0.05.or.(w(i)/dz(i)) &
  4148. .gt.(dice/1000.0))then
  4149. bw(i) = bwo(i)
  4150. dz(i) = (w(i)*rhowater)/bw(i)
  4151. endif
  4152. bi(i)=bw(i)
  4153. bl(i)=0.0
  4154. bt(i)=bw(i)
  4155. wf(i)=0.0
  4156. if (i.eq.1) wfsoil=0.0
  4157. dliqvol(i)=0.0
  4158. dicevol(i)=bi(i)/dice
  4159. ct(i)=(bw(i)/920.0)*1.9e+6
  4160. if (i.eq.n) then
  4161. h(i)=ct(i)*dz(i)*(tssn(i)-273.16)-rhowater*dlm*w(n)*fi(n)
  4162. else
  4163. tssn(i) = ( ho(i) + ct(i)*dz(i)*273.16 + b1*dtt &
  4164. + rhowater*dlm*w(i) ) &
  4165. / ( ct(i)*dz(i) - b2*dtt )
  4166. h(i) = ho(i) + (b1+b2*tssn(i))*dtt
  4167. end if
  4168. if(tssn(i).gt.273.16) then
  4169. print*, ' Snow Temp. Wrong in thermal.f',i,tssn(i)
  4170. tssn(i)=273.16
  4171. STOP
  4172. endif
  4173. ! ------------------------------------------------------------------7272
  4174. ELSE IF (ICASE.EQ.2) THEN
  4175. ! when snow temperature equals 273.16
  4176. fl(i)=1.0-fi(i)
  4177. tssn(i)=273.16
  4178. wf(i)=0.0
  4179. If(bwo(i).ge.bwe) Then
  4180. if(fl(i).gt.flmin)then
  4181. wf(i) = w(i)-(fi(i)/(1.0-flmin))*w(i)
  4182. w(i) = (fi(i)/(1.0-flmin))*w(i)
  4183. dum = wf(i)
  4184. fl(i)=flmin
  4185. fi(i)=1.0-fl(i)
  4186. endif
  4187. Else
  4188. !.................................................
  4189. flm = flmin+(flmax-flmin)*((bwe-bwo(i))/bwe)
  4190. if(fl(i).gt.flm)then
  4191. wf(i) = w(i)-(fi(i)/(1.0-flm))*w(i)
  4192. w(i) = (fi(i)/(1.0-flm))*w(i)
  4193. dum = wf(i)
  4194. fl(i)=flm
  4195. fi(i)=1.0-fl(i)
  4196. endif
  4197. Endif
  4198. !.................................................
  4199. If( wf(i).gt.0.0) Then
  4200. if(i.ne.1)then
  4201. wf(i)=amin1(dum, dksatsnow*dtt)
  4202. snroff = snroff + (dum - wf(i))
  4203. hroff=hroff+(dum-wf(i))*cl*rhowater*(tssn(i)-273.16)
  4204. else
  4205. !ctest2
  4206. if(www(1).ge.1.0) then
  4207. snroff = snroff + wf(i)
  4208. wfsoil=0.0
  4209. else
  4210. slwet=www(1)*poros*zdepth(1)
  4211. www(1)=(slwet+wf(i))/(poros*zdepth(1))
  4212. if(www(1).gt.1.0) then
  4213. snroff = snroff + (www(1)-1.0)*poros*zdepth(1)
  4214. www(1)=1.0
  4215. endif
  4216. wfsoil=0.0
  4217. endif
  4218. hroff=hroff + wf(i)*cl*rhowater*(tssn(i)-273.16)
  4219. endif
  4220. Endif
  4221. !cccccc next concerning compaction occurring during melt
  4222. xnodalmelt=bio(i)*dzo(i)-w(i)*rhowater*fi(i)
  4223. If(xnodalmelt.gt.0.0.and.bio(i)*dzo(i).gt.0.0 &
  4224. .and.(bio(i).lt.250.0.or.(i.eq.n.and. &
  4225. bio(i).lt.400.0))) Then
  4226. ddz3=-xnodalmelt/(bio(i)*dzo(i))
  4227. dz(i)=dzo(i)*(1.0+ddz3)
  4228. Else
  4229. dz(i)=dzo(i)
  4230. Endif
  4231. bw(i)=(w(i)*rhowater)/dz(i)
  4232. !.............................................
  4233. If((w(i)/dz(i)).lt.0.05.or.(w(i)/dz(i)) &
  4234. .gt.(dice/1000.0)) Then
  4235. bw(i) = bwo(i)
  4236. dz(i) = (w(i)*rhowater)/bw(i)
  4237. Endif
  4238. bi(i)=bw(i)*fi(i)
  4239. bl(i)=bw(i)-bi(i)
  4240. bt(i)=bw(i)
  4241. ct(i)=(bw(i)/920.0)*1.9e+6
  4242. dliqvol(i)=bl(i)/rhowater
  4243. dicevol(i)=bi(i)/dice
  4244. h(i)=(-1.0)*w(i)*fi(i)*dlm*rhowater
  4245. !cc---------------------------------------------**
  4246. ELSE IF (ICASE.EQ.3) THEN
  4247. ! i=n
  4248. ! else if(fff.le.0.0) then
  4249. !cccccc next calculate ponding condition.
  4250. fl(i) = 1.0
  4251. fi(i) = 0.0
  4252. ! dz(i) = w(i)
  4253. wf(i) = w(i)
  4254. dum= wf(i)
  4255. dz(i) = 10e-15
  4256. w(i) = 10e-15
  4257. bw(i) =rhowater
  4258. bl(i)=bw(i)
  4259. bi(i)=0.0
  4260. dliqvol(i) = 1.0
  4261. dicevol(i) = 0.0
  4262. ct(i)=(bw(i)/920.0)*1.9e+6
  4263. tssn(i) = 273.16
  4264. h(i) = 0.0
  4265. !
  4266. If (i.eq.n) Then
  4267. if (i.eq.1) then
  4268. hx=(-1.0)*w(i)*fff*dlm*rhowater/dtt
  4269. snroff=wf(1)+snroff
  4270. wfsoil=0.0
  4271. else
  4272. wf(i)=amin1(dum, dksatsnow*dtt)
  4273. snroff = snroff + (dum - wf(i))
  4274. hroff=hroff+(dum-wf(i))*cl*rhowater*(tssn(i)-273.16)
  4275. delth(n-1) = (-1.0)*w(i)*fff*dlm*rhowater/dtt
  4276. end if
  4277. Else
  4278. if(i.eq.1)then
  4279. hx = ho(i)/dtt + b1+b2*tssn(i)
  4280. !ctest2
  4281. if(www(1).ge.1.0) then
  4282. snroff = snroff + wf(i)
  4283. wfsoil=0.0
  4284. else
  4285. slwet=www(1)*poros*zdepth(1)
  4286. www(1)=(slwet+wf(i))/(poros*zdepth(1))
  4287. if(www(1).gt.1.0) then
  4288. snroff = snroff + (www(1)-1.0)*poros*zdepth(1)
  4289. www(1)=1.0
  4290. endif
  4291. wfsoil=0.0
  4292. endif
  4293. else
  4294. wf(i)=amin1(dum, dksatsnow*dtt)
  4295. snroff = snroff + (dum - wf(i))
  4296. hroff=hroff+(dum-wf(i))*cl*rhowater*(tssn(i)-273.16)
  4297. delth(i-1) = ho(i)/dtt + b1+b2*tssn(i)
  4298. endif
  4299. End if
  4300. END IF
  4301. !cS Calculate the heat flux into the soil: qsoil on 10/13/98.
  4302. !cS qsoil : downward is positive [ W/m**2]
  4303. if (i.eq.1) qsoil = qk(1)*(tssn(1) - tsoil) + hx
  4304. !cs 10/13/98
  4305. !
  4306. !------------------------------------------------------
  4307. END SUBROUTINE SNRESULT
  4308. !------------------------------------------------------
  4309. !=======================================================================
  4310. !
  4311. SUBROUTINE STRES1 (IFIRST,RSTM,ROOTP, &
  4312. RSTFAC,RST,TC,ETC,RB,TGS,ETGS,RD,TU,TL,TOPT,EA, &
  4313. DEFAC,PH1,PH2,NROOT,ZDEPTH,PHSOIL,ROOTD,VCOVER,DROP)
  4314. !
  4315. !=======================================================================
  4316. !
  4317. !======================================================================
  4318. !
  4319. ! CALCULATION OF ADJUSTMENT TO LIGHT DEPENDENT STOMATAL RESISTANCE
  4320. ! BY TEMPERATURE, HUMIDITY AND STRESS FACTORS
  4321. ! SIMPLIFIED SEE XUE ET AL(1991)
  4322. !
  4323. ! RSTFAC(IVEG,1) = FD
  4324. ! RSTFAC(IVEG,2) = FP
  4325. ! RSTFAC(IVEG,3) = FT
  4326. ! RSTFAC(IVEG,4) = FTPD
  4327. !
  4328. !----------------------------------------------------------------------
  4329. DIMENSION TOPT(2), TL(2), TU(2), DEFAC(2), VCOVER(2)
  4330. DIMENSION PH1(2), PH2(2), RST(2), RSTFAC(2,4),XDRR(3)
  4331. DIMENSION ROOTD(2),ROOTP(3),ZDEPTH(3),PHSOIL(3), RSTM(2), DEP(3)
  4332. !----------------------------------------------------------------------
  4333. ! HUMIDITY, TEMPERATURE AND TRANSPIRATION FACTORS
  4334. !----------------------------------------------------------------------
  4335. !
  4336. DO 1000 IVEG = 1, 2
  4337. !
  4338. TV = TC
  4339. ETV = ETC
  4340. RAIR = RB * 2.
  4341. IF ( IVEG .EQ. 1 ) GO TO 100
  4342. TV = TGS
  4343. ETV = ETGS
  4344. RAIR = RD
  4345. 100 CONTINUE
  4346. !
  4347. TV = AMIN1 ( ( TU(IVEG) - 0.1 ), TV )
  4348. TV = AMAX1 ( ( TL(IVEG) + 0.1 ), TV )
  4349. !
  4350. IF( IFIRST .EQ. 0 ) GO TO 200
  4351. RSTM(IVEG) = RST(IVEG)
  4352. D2 = ( TU(IVEG) - TOPT(IVEG) ) / ( TOPT(IVEG) - TL(IVEG) )
  4353. D1 = 1. /(( TOPT(IVEG) - TL(IVEG) )* &
  4354. EXP( ALOG( TU(IVEG) - TOPT(IVEG))*D2))
  4355. RSTFAC(IVEG,3) = D1*( TV-TL(IVEG)) * EXP(ALOG(TU(IVEG)-TV)*D2)
  4356. !
  4357. IF (RSTFAC(IVEG,3).LT.0.) RSTFAC(IVEG,3) = 0.
  4358. IF (RSTFAC(IVEG,3).GT.1.) RSTFAC(IVEG,3) = 1.
  4359. !
  4360. !----------------------------------------------------------------------
  4361. ! SIMPLIFIED CALCULATION OF LEAF WATER POTENTIAL FACTOR , FP
  4362. !----------------------------------------------------------------------
  4363. !
  4364. !---------new add------------
  4365. XDRR(1)=-PHSOIL(1)
  4366. XDRR(2)=-PHSOIL(2)
  4367. XDRR(3)=-PHSOIL(3)
  4368. IF(XDRR(1).le.0.001) XDRR(1)=0.001
  4369. IF(XDRR(2).le.0.001) XDRR(2)=0.001
  4370. IF(XDRR(3).le.0.001) XDRR(3)=0.001
  4371. XDRR(1)=ALOG(XDRR(1))
  4372. XDRR(2)=ALOG(XDRR(2))
  4373. XDRR(3)=ALOG(XDRR(3))
  4374. !------------------------------
  4375. IF (NROOT.EQ.1) THEN
  4376. XROT = ROOTD(1)
  4377. DO 7400 I = 1, 3
  4378. 7400 DEP(I) = 0.
  4379. DO 7500 I = 1, 3
  4380. DEP(I) = AMIN1(ZDEPTH(I), XROT)
  4381. XROT = XROT - ZDEPTH(I)
  4382. IF (XROT.LE.0.) GO TO 7410
  4383. 7500 CONTINUE
  4384. 7410 CONTINUE
  4385. ! XDR = (PHSOIL(1) * DEP(1) + PHSOIL(2) * DEP(2) &
  4386. ! +PHSOIL(3) * DEP(3)) /ROOTD(1)
  4387. XDR=(XDRR(1)*DEP(1)+XDRR(2)*DEP(2)+XDRR(3)*DEP(3))/ROOTD(1)
  4388. ELSE
  4389. ! XDR = PHSOIL(1) * ROOTP(1) + PHSOIL(2) * ROOTP(2) &
  4390. ! +PHSOIL(3) * ROOTP(3)
  4391. XDR=XDRR(1)*ROOTP(1)+XDRR(2)*ROOTP(2)+XDRR(3)*ROOTP(3)
  4392. END IF
  4393. ! XDR = - XDR
  4394. ! IF (XDR .LE. 0.001) XDR = 0.001
  4395. ! XDR = ALOG (XDR)
  4396. !cl 2001,1,09 changed the following two lines back to the original ones.
  4397. !cl EXPONENT = AMAX1(-86.0, (- PH1(IVEG) * (PH2(IVEG) - XDR)) )
  4398. !cl RSTFAC(IVEG,2) = 1. - EXP(EXPONENT)
  4399. RSTFAC(IVEG,2) = 1. - EXP(- PH1(IVEG) * (PH2(IVEG) - XDR))
  4400. IF (RSTFAC(IVEG,2).GT.1.) RSTFAC(IVEG,2) = 1.
  4401. IF (RSTFAC(IVEG,2).LT.0.) RSTFAC(IVEG,2) = 0.
  4402. !
  4403. 200 RST(IVEG) = RSTM(IVEG)
  4404. !
  4405. EPOT = ETV - EA
  4406. EPOT = AMAX1(0.0001,(ETV-EA))
  4407. !
  4408. ! ---** PJS mod 10/9/92 ---**
  4409. ! ---** based on Verma FIFE-87 function for C4 grasses ---**
  4410. !
  4411. RSTFAC(IVEG,1) = 1./ ( 1 + DEFAC(IVEG)*DROP )
  4412. !
  4413. IF (RSTFAC(IVEG,1).LT.0.) RSTFAC(IVEG,1) = 0.
  4414. IF (RSTFAC(IVEG,1).GT.1.) RSTFAC(IVEG,1) = 1.
  4415. !----------------------------------------------------------------------
  4416. ! VALUE OF FP FOUND
  4417. !----------------------------------------------------------------------
  4418. !
  4419. 300 FTPD = RSTFAC(IVEG,1) * RSTFAC(IVEG,2) * RSTFAC(IVEG,3)
  4420. RSTFAC(IVEG,4) = AMAX1( FTPD, 0.00001 )
  4421. !----------------------------------------------------------------------
  4422. !
  4423. RST(IVEG) = RST(IVEG) / RSTFAC(IVEG,4) / VCOVER(IVEG)
  4424. !
  4425. RST(IVEG) = AMIN1( RST(IVEG), 100000. )
  4426. 1000 CONTINUE
  4427. !
  4428. !------------------------------------------------------
  4429. END SUBROUTINE STRES1
  4430. !------------------------------------------------------
  4431. !=======================================================================
  4432. !
  4433. SUBROUTINE TEMRS1 &
  4434. (DTT,TC,TGS,TD,TA,TM,QM,EM,PSURF,WWW,CAPAC,SATCAP, &
  4435. DTC,DTG,RA,RST,ZDEPTH,BEE,PHSAT,POROS,D,Z0,RDC,RBC,VCOVER,Z2, &
  4436. ZLAI,DEFAC,TU,TL,TOPT,RSTFAC,NROOT,ROOTD,PHSOIL,ROOTP,PH1,PH2, &
  4437. ECT,ECI,EGT,EGI,EGS,HC,HG,EC,EG,EA,RADT,CHF,SHF,ALBEDO,ZLWUP, &
  4438. THERMK,RHOAIR,ZWIND,UM,USTAR,DRAG,CCX,CG, ISNOW,SNOWDEN, &
  4439. BPS,rib,CU,XCT,flup,iii,jjj)
  4440. !cxx BPS,BPS0,BPS1,rib,CU,XCT,flup)
  4441. !
  4442. !=======================================================================
  4443. ! ------------------------------------------------------------------7272
  4444. ! A SIMPLIFIED VERSION (XUE ET AL. 1991)
  4445. ! CORE ROUTINE: CALCULATION OF CANOPY AND GROUND TEMPERATURE
  4446. ! INCREMENTS OVER TIME STEP, FLUXES DERIVED.
  4447. !-----------------------------------------------------------------------
  4448. ! SUBROUTINES IN THIS BLOCK : TEMRS1,DELRN,DELHF,DELEF,STRES1
  4449. !-----------------------------------------------------------------------
  4450. REAL ZINC(3), A2(3), Y1(3), ITEX(3),RSTM(2)
  4451. !cl add the following arrays after common block "comsib3" was removed
  4452. DIMENSION WWW(3), CAPAC(2), SATCAP(2), ZDEPTH(3)
  4453. DIMENSION VCOVER(2), ZLAI(2), RADT(2),ALBEDO(2,3,2)
  4454. DIMENSION TOPT(2), TL(2), TU(2), DEFAC(2)
  4455. DIMENSION PH1(2), PH2(2), RST(2), RSTFAC(2,4)
  4456. DIMENSION ROOTD(2), ROOTP(3), PHSOIL(3)
  4457. !
  4458. !----------------------------------------------------------------------
  4459. ! E(X) IS VAPOUR PRESSURE IN MBARS AS A FUNCTION OF TEMPERATURE
  4460. ! GE(X) IS D E(X) / D ( TEMP )
  4461. !----------------------------------------------------------------------
  4462. !
  4463. E(X) = EXP( 21.18123 - 5418. / X ) / .622
  4464. GE(X) = EXP( 21.18123 - 5418. / X ) * 5418. &
  4465. / (X*X) / .622
  4466. !
  4467. ETC = E(TC)
  4468. ETGS = E(TGS)
  4469. GETC = GE(TC)
  4470. GETGS = GE(TGS)
  4471. !crr HLAT = ( 3150.19 - 2.378 * TM ) * 1000.
  4472. !crr PSY = CPAIR / HLAT * PSUR / .622
  4473. PSY = CPAIR / HLAT * PSURF/100. / .622
  4474. RCP = RHOAIR * CPAIR
  4475. ! RADD = 44.
  4476. WC = AMIN1( 1., CAPAC(1)/SATCAP(1) )
  4477. WG = AMIN1( 1., CAPAC(2)/SATCAP(2) )
  4478. !----------------------------------------------------------------------
  4479. ! RSOIL FUNCTION FROM FIT TO CAMILLO AND GURNEY (1984) DATA.
  4480. ! WETNESS OF UPPER 0.5 CM OF SOIL CALCULATED FROM APPROXIMATION
  4481. ! TO MILLY FLOW EQUATION WITH REDUCED (1/50 ) CONDUCTIVITY IN
  4482. ! TOP LAYER.
  4483. !----------------------------------------------------------------------
  4484. !
  4485. ! WT = WWW(1) + 0.75 * ZDEPTH(1) / ( ZDEPTH(1) + ZDEPTH(2) )
  4486. ! & * (WWW(1) - (WWW(2)**2)/WWW(1) ) / 2. * 50.
  4487. ! FAC = AMIN1( WT, 0.99 )
  4488. ! FAC = AMAX1( FAC, WWW(1) * 0.1 )
  4489. !
  4490. !------------------------------------------------------------
  4491. ! --- soil resistance calculation alteration Y.K. Xue Feb. 1994**
  4492. !------------------------------------------------------------
  4493. FAC = AMIN1( www(1), 0.99 )
  4494. FAC = AMAX1( FAC, 0.02 )
  4495. RSOIL = 101840. * (1. - FAC ** 0.0027)
  4496. !
  4497. PSIT = PHSAT * FAC ** (- BEE )
  4498. ARGG = AMAX1(-10.,(PSIT*GRAV/461.5/TGS))
  4499. HR = EXP(ARGG)
  4500. !cl 2001,1,10 added the following line according to Xue, 2000 August
  4501. PILPHR = HR
  4502. !----------------------------------------------------------------------
  4503. ! ALTERATION OF AERODYNAMIC TRANSFER PROPERTIES IN CASE OF SNOW
  4504. ! ACCUMULATION.
  4505. !----------------------------------------------------------------------
  4506. !
  4507. RESD = D
  4508. RESZ0 = Z0
  4509. RESRDC = RDC
  4510. RESRBC = RBC
  4511. RESV2 = VCOVER(2)
  4512. !
  4513. IF ( TGS .GT. TF ) GO TO 100
  4514. !
  4515. SDEP = CAPAC(2) *SNOWDEN
  4516. SDEP = AMIN1( SDEP, (Z2*0.95) )
  4517. D = Z2 - ( Z2-D ) / Z2 * ( Z2 - SDEP )
  4518. Z0 = Z0 / ( Z2-RESD ) * ( Z2-D )
  4519. RDC = RDC * ( Z2-SDEP ) / Z2
  4520. RBC = RBC * Z2 / ( Z2-SDEP )
  4521. VCOVER(2) = 1.
  4522. WG = AMIN1( 1., CAPAC(2) / 0.004 )
  4523. RST(2) = RSOIL
  4524. 100 CONTINUE
  4525. !----------------------------------------------------------------------
  4526. !
  4527. ! CALCULATION OF EA, TA, RA, RB, RD AND SOIL MOISTURE STRESS
  4528. ! FOR THE BEGINNING OF THE TIME STEP
  4529. !
  4530. !----------------------------------------------------------------------
  4531. IFIRST = 1
  4532. ICOUNT = 0
  4533. TGEN = TGS
  4534. TCEN = TC
  4535. FC = 1.
  4536. FG = 1.
  4537. !-- 2001,1,11 changed the following line according to Xue,August,2000(TA=TM)
  4538. !cl TA = TM
  4539. TRIB = TA
  4540. EA = EM
  4541. HT = 0.
  4542. IONCE = 0
  4543. 1000 CONTINUE
  4544. ICOUNT = ICOUNT + 1
  4545. CALL RASIT5(TRIB,CTNI,CUNI,RA,Z2,Z0,D,ZWIND,UM, &
  4546. RHOAIR,TM,U2,USTAR,DRAG,TA,bps,rib,CU,XCT,iii,jjj)
  4547. !cl ------------IF ( IFIRST .EQ. 1 ) CALL RBRD1 ------------
  4548. IF ( IFIRST .EQ. 1 ) THEN
  4549. !cl TCTA = TC - TA
  4550. RB = 1.0/(SQRT(U2)/RBC+ZLAI(1)*.004)
  4551. !cl X1 = TEMDIF
  4552. TGTA = TGS- TA
  4553. TEMDIF = ( TGTA + SQRT(TGTA*TGTA) ) / 2. + 0.1
  4554. FIH = SQRT( 1. + 9. * GRAV *TEMDIF * Z2 / TGS / ( U2*U2) )
  4555. RD = RDC / U2 / FIH
  4556. ENDIF
  4557. !cl ------------ END OF RBRD1 ---------------
  4558. D1 = 1./RA + 1./RB + 1./RD
  4559. TA = ( TGS/RD + TC/RB + TM/RA *bps) / D1
  4560. HT = ( TA - TM ) * RCP / RA
  4561. RCC = RST(1)*FC + 2. * RB
  4562. COC = (1.-WC)/RCC + WC/(2.*RB)
  4563. RG = RST(2)*FG
  4564. RSURF = RSOIL*FG
  4565. COG1 = VCOVER(2)*(1.-WG)/(RG+RD)+(1.-VCOVER(2))/(RSURF+RD)*HR &
  4566. + VCOVER(2)/(RSURF+RD+44.)*HR
  4567. COG2 = VCOVER(2)*(1.-WG)/(RG+RD)+(1.-VCOVER(2))/(RSURF+RD) &
  4568. + VCOVER(2)/(RSURF+RD+44.)
  4569. COG1 = COG1 + WG/RD * VCOVER(2)
  4570. COG2 = COG2 + WG/RD * VCOVER(2)
  4571. D2 = 1./RA + COC + COG2
  4572. TOP = COC * ETC + COG1 * ETGS + EM / RA
  4573. EA = TOP / D2
  4574. DROP = AMAX1( 0., (E(TA)-EA) )
  4575. !----------------------------------------------------------------------
  4576. !cl CALL STRES1 ( IFIRST , RSTM)
  4577. CALL STRES1 (IFIRST, RSTM,ROOTP, &
  4578. RSTFAC,RST,TC,ETC,RB,TGS,ETGS,RD,TU,TL,TOPT,EA, &
  4579. DEFAC,PH1,PH2,NROOT,ZDEPTH,PHSOIL,ROOTD,VCOVER,DROP)
  4580. !----------------------------------------------------------------------
  4581. IFIRST = 0
  4582. ERIB = EA
  4583. TRIB = TA
  4584. !!!
  4585. IF ( ICOUNT .LE. 4 ) GO TO 1000
  4586. !======================================================================
  4587. !cl CALL DELRN ( RNCDTC, RNCDTG, RNGDTG, RNGDTC )
  4588. ! PARTIAL DERIVATIVES OF RADIATIVE AND SENSIBLE HEAT FLUXES
  4589. TC3 = TC * TC * TC
  4590. TG3 = TGS * TGS * TGS
  4591. FAC1 = ( 1. - ALBEDO(1,3,2) ) * ( 1.-THERMK ) * VCOVER(1)
  4592. FAC2 = 1. - ALBEDO(2,3,2)
  4593. RNCDTC = - 2. * 4. * FAC1 * STEFAN * TC3
  4594. RNCDTG = 4. * FAC1 * FAC2 * STEFAN * TG3
  4595. RNGDTG = - 4. * FAC2 * STEFAN * TG3
  4596. RNGDTC = 4. * FAC1 * FAC2 * STEFAN * TC3
  4597. !----------------------------------------------------------------------
  4598. !
  4599. ! DEW CALCULATION : DEW CONDITION IS SET AT BEGINNING OF TIME STEP.
  4600. ! IF SURFACE CHANGES STATE DURING TIME STEP, LATENT HEAT FLUX IS
  4601. ! SET TO ZERO.
  4602. !
  4603. !----------------------------------------------------------------------
  4604. IF ( EA .GT. ETC ) FC = 0.
  4605. IF ( EA .GT. ETGS) FG = 0.
  4606. !
  4607. !----------------------------------------------------------------------
  4608. !
  4609. ! WET FRACTION EXHAUSTION TEST : IF CAPAC(X) IS EXHAUSTED IN
  4610. ! A TIME STEP, INTERCEPTION LOSS IS LIMITED TO CAPAC(X).
  4611. !
  4612. !----------------------------------------------------------------------
  4613. ! START OF NON-NEUTRAL RESISTANCE CALCULATION LOOP
  4614. !----------------------------------------------------------------------
  4615. I = 0
  4616. ! ----- INITIALIZE NEWTON-RAPHSON ITERATIVE ROUTINE FOR RASIT 3,5,8
  4617. NOX = 0
  4618. NONPOS = 1
  4619. IWALK = 0
  4620. LX = 2
  4621. FINC = 1.
  4622. ITEX(LX) = 0.
  4623. ZINC(LX) = 0.
  4624. A2(LX) = 0.
  4625. Y1(LX) = 0.
  4626. 2000 CONTINUE
  4627. CALL RASIT5(TRIB,CTNI,CUNI,RA,Z2,Z0,D,ZWIND,UM, &
  4628. RHOAIR,TM,U2,USTAR,DRAG,TA,bps,rib,CU,XCT,iii,jjj)
  4629. !======================================================================
  4630. !cl CALL DELHF ( HCDTC, HCDTG, HGDTG, HGDTC )
  4631. ! PARTIAL DERIVATIVES OF SENSIBLE HEAT FLUXES
  4632. !
  4633. RCP = RHOAIR * CPAIR
  4634. D1 = 1./RA + 1./RB + 1./RD
  4635. TA = ( TGS/RD + TC/RB + TM/RA *bps) / D1
  4636. !
  4637. HC = RCP * ( TC - TA ) / RB * DTT
  4638. HG = RCP * ( TGS - TA ) / RD * DTT
  4639. !----------------------------------------------------------------------
  4640. ! N.B. FLUXES EXPRESSED IN JOULES M-2
  4641. !----------------------------------------------------------------------
  4642. !
  4643. HCDTC = RCP / RB * ( 1./RA + 1./RD ) / D1
  4644. HCDTG = - RCP / ( RB * RD ) / D1
  4645. ! FOR TM
  4646. HCDTM = - RCP / ( RB * RA ) / D1 * BPS
  4647. !
  4648. HGDTG = RCP / RD * ( 1./RA + 1./RB ) / D1
  4649. HGDTC = - RCP / ( RD * RB ) / D1
  4650. ! FOR TM
  4651. HGDTM = - RCP / ( RD * RA ) / D1 *BPS
  4652. !======================================================================
  4653. ! CALL DELEF ( ECDTC, ECDTG, EGDTG, EGDTC, DEADTC, DEADTG, EC, EG ,
  4654. ! & WC, WG, FC, FG, HR,MDLSNO,ISNOW )
  4655. !======================================================================
  4656. ! PARTIAL DERIVATIVES OF LATENT HEAT FLUXES
  4657. ! MODIFICATION FOR SOIL DRYNESS : HR = REL. HUMIDITY IN TOP LAYER
  4658. !----------------------------------------------------------------------
  4659. !
  4660. HRR = HR
  4661. IF ( FG .LT. .5 ) HRR = 1.
  4662. !
  4663. RCC = RST(1)*FC + 2. * RB
  4664. COC = (1.-WC)/RCC + WC/(2.*RB)
  4665. RG = RST(2)*FG
  4666. !cl IF (MDLSNO.eq.0.and.ISNOW.eq.0) THEN
  4667. IF (ISNOW.eq.0) THEN
  4668. RSURF=RSOIL
  4669. ELSE
  4670. RSURF = RSOIL*FG
  4671. END IF
  4672. COG1 = VCOVER(2)*(1.-WG)/(RG+RD)+(1.-VCOVER(2))/(RSURF+RD)*HRR &
  4673. + VCOVER(2)/(RSURF+RD+44.)*HRR
  4674. COG2 = VCOVER(2)*(1.-WG)/(RG+RD)+(1.-VCOVER(2))/(RSURF+RD) &
  4675. + VCOVER(2)/(RSURF+RD+44.)
  4676. COG1 = COG1 + WG/RD * VCOVER(2)
  4677. COG2 = COG2 + WG/RD * VCOVER(2)
  4678. !
  4679. D2 = 1./RA + COC + COG2
  4680. TOP = COC * ETC + COG1 * ETGS + EM/RA
  4681. EA = TOP / D2
  4682. EC = ( ETC - EA ) * COC * RCP/PSY * DTT
  4683. EG = ( ETGS*COG1 - EA*COG2 ) * RCP/PSY * DTT
  4684. DEADTC = GETC * COC / D2
  4685. DEADTG = GETGS * COG1 / D2
  4686. !
  4687. ECDTC = ( GETC - DEADTC ) * COC * RCP / PSY
  4688. ECDTG = - DEADTG * COC * RCP / PSY
  4689. !
  4690. EGDTG = ( GETGS*COG1 - DEADTG*COG2 ) * RCP / PSY
  4691. EGDTC = - DEADTC * COG2 * RCP / PSY
  4692. !crr
  4693. ! FOR QM
  4694. DEADQM = 0.622 * PSURF /( (0.622+QM)**2 * RA * D2 )
  4695. ECDQM = -DEADQM * COC * RCP / PSY
  4696. EGDQM = -DEADQM * COG2 * RCP / PSY
  4697. ! FOR YPDATING TM AND QM
  4698. AK = 1/ RCP / BPS
  4699. AH = 1/ (HLAT*RHOAIR)
  4700. !crr
  4701. !----------------------------------------------------------------------
  4702. ! CALCULATION OF COEFFICIENTS OF TEMPERATURE TENDENCY EQUATIONS
  4703. ! C - CANOPY
  4704. ! G - GROUND
  4705. !----------------------------------------------------------------------
  4706. !
  4707. CCODTC = CCX / DTT - RNCDTC + HCDTC + ECDTC
  4708. CCODTG = - RNCDTG + HCDTG + ECDTG
  4709. CCORHS = RADT(1) - ( HC + EC ) / DTT
  4710. !----------------------------------------------------------------------
  4711. !
  4712. GCODTG = CG / DTT + TIMCON*CG*2. - RNGDTG + HGDTG + EGDTG
  4713. GCODTC = - RNGDTC + HGDTC + EGDTC
  4714. GCORHS = RADT(2) - TIMCON*CG*2. * ( TGS -TD ) - ( HG + EG ) / DTT
  4715. !
  4716. DENOM = CCODTC * GCODTG - CCODTG * GCODTC
  4717. DTC = ( CCORHS * GCODTG - CCODTG * GCORHS ) / DENOM
  4718. DTG = ( CCODTC * GCORHS - CCORHS * GCODTC ) / DENOM
  4719. !----------------------------------------------------------------------
  4720. ! CHECK IF INTERCEPTION LOSS TERM HAS EXCEEDED CANOPY STORAGE
  4721. !----------------------------------------------------------------------
  4722. !
  4723. ECPOT = ( (ETC - EA) + (GETC - DEADTC)*DTC - DEADTG*DTG )
  4724. ECI = ECPOT * WC /(2.*RB) * RCP/PSY * DTT
  4725. ECIDIF=AMAX1(0.0,(ECI-CAPAC(1)*1.E3*HLAT))
  4726. ECI =AMIN1(ECI,( CAPAC(1)*1.E3*HLAT))
  4727. !
  4728. EGPOT = ( (ETGS - EA) + (GETGS - DEADTG)*DTG - DEADTC*DTC )
  4729. EGI = EGPOT * VCOVER(2) * WG/RD * RCP/PSY * DTT
  4730. EGIDIF=AMAX1(0.0,(EGI-CAPAC(2)*1.E3*HLAT))
  4731. EGI =AMIN1(EGI,( CAPAC(2)*1.E3*HLAT))
  4732. !----------------------------------------------------------------------
  4733. TGEN = TGS + DTG
  4734. TCEN = TC + DTC
  4735. D1 = 1./RA + 1./RB + 1./RD
  4736. TAEN = ( TGEN / RD + TCEN / RB + TM / RA *bps) / D1
  4737. !
  4738. HEND = ( TAEN - TM ) * RCP / RA + (ECIDIF + EGIDIF)/DTT
  4739. Y= TRIB - TAEN
  4740. I = I + 1
  4741. HT = HEND
  4742. IF ( I .GT. 20 ) GO TO 200
  4743. !cl IF ( I .GT. ITRUNK ) GO TO 200
  4744. !
  4745. CALL NEWTON(TRIB,Y,FINC,NOX,NONPOS,IWALK,LX,ZINC,A2,Y1,ITEX)
  4746. IF(NOX.NE.1)GO TO 2000
  4747. 200 CONTINUE
  4748. ! IQIN = IQIN + I
  4749. ! IF (I.GT.10) IQIN1 = IQIN1 + 1
  4750. !
  4751. !----------------------------------------------------------------------
  4752. ! EXIT FROM NON-NEUTRAL CALCULATION
  4753. ! EVAPOTRANSPIRATION FLUXES CALCULATED FIRST ( J M-2 )
  4754. !----------------------------------------------------------------------
  4755. HRR = HR
  4756. IF ( FG .LT. .5 ) HRR = 1.
  4757. RSURF = RSOIL*FG
  4758. !
  4759. COCT = (1.-WC)/RCC
  4760. COGT = VCOVER(2) * (1.-WG)/( RG + RD )
  4761. COGS1 = (1.-VCOVER(2)) / ( RD + RSURF ) * HRR &
  4762. + VCOVER(2) / ( RD + RSURF + 44.) * HRR
  4763. COGS2 = COGS1 / HRR
  4764. !
  4765. ECT = ECPOT * COCT * RCP/PSY * DTT
  4766. !
  4767. EGT = EGPOT * COGT * RCP/PSY * DTT
  4768. EGS = (ETGS + GETGS*DTG ) * COGS1 &
  4769. - ( EA + DEADTG*DTG + DEADTC*DTC ) * COGS2
  4770. EGS = EGS * RCP/PSY * DTT
  4771. EGSMAX = WWW(1) / 2. * ZDEPTH(1) * POROS * HLAT * 1000.
  4772. EGIADD = AMAX1( 0., EGS - EGSMAX )
  4773. EGS = AMIN1 ( EGS, EGSMAX )
  4774. EGIDIF = EGIDIF + EGIADD
  4775. !
  4776. !----------------------------------------------------------------------
  4777. ! SENSIBLE HEAT FLUX CALCULATED WITH LATENT HEAT FLUX CORRECTION
  4778. !----------------------------------------------------------------------
  4779. HC = HC + (HCDTC*DTC + HCDTG*DTG)*DTT + ECIDIF
  4780. HG = HG + (HGDTC*DTC + HGDTG*DTG)*DTT + EGIDIF
  4781. !----------------------------------------------------------------------
  4782. ! TEST OF DEW CONDITION. LATENT HEAT FLUXES SET TO ZERO IF SIGN
  4783. ! OF FLUX CHANGES OVER TIME STEP.EXCESS ENERGY DONATED TO SENSIBLE
  4784. ! HEAT FLUX.
  4785. !----------------------------------------------------------------------
  4786. ECF = SIGN( 1., ECPOT )
  4787. EGF = SIGN( 1., EGPOT )
  4788. DEWC = FC * 2. - 1.
  4789. DEWG = FG * 2. - 1.
  4790. !
  4791. IF(DEWC*ECF.GT.0.0) GO TO 300
  4792. HC = HC + ECI + ECT
  4793. ECI = 0.
  4794. ECT = 0.
  4795. 300 IF(DEWG*EGF.GT.0.0) GO TO 400
  4796. HG = HG + EGS + EGI + EGT
  4797. EGS = 0.
  4798. EGI = 0.
  4799. EGT = 0.
  4800. 400 CONTINUE
  4801. !
  4802. EC = ECI + ECT
  4803. EG = EGT + EGS + EGI
  4804. !
  4805. !----------------------------------------------------------------------
  4806. ! ADJUSTMENT OF TEMPERATURES AND VAPOR PRESSURE , CALCULATION OF
  4807. ! SENSIBLE HEAT FLUXES.
  4808. !----------------------------------------------------------------------
  4809. !
  4810. TC = TCEN
  4811. TGS = TGEN
  4812. TA = TAEN
  4813. EA = EA + DEADTC*DTC + DEADTG*DTG
  4814. !
  4815. RADT(1) = RADT(1) + RNCDTC*DTC + RNCDTG*DTG
  4816. RADT(2) = RADT(2) + RNGDTC*DTC + RNGDTG*DTG
  4817. !========================================================================
  4818. FLUP = FLUP - (RNCDTC+RNGDTC)*DTC - (RNCDTG+RNGDTG)*DTG
  4819. !========================================================================
  4820. !
  4821. ! ** simulated net all-wave radiation **
  4822. ! sibnet(nmm,ndd,nhh) = RADT(1) + RADT(2)
  4823. !
  4824. CHF = CCX / DTT * DTC
  4825. SHF = CG / DTT * DTG + TIMCON*CG*2. * ( TGS - TD )
  4826. !
  4827. ZLWUP = ZLWUP - RNCDTC * DTC / 2. &
  4828. - RNGDTG * DTG * (1.-VCOVER(1)*(1.-THERMK) )
  4829. !
  4830. IF ( TGS .GT. TF ) GO TO 500
  4831. EGS = EG - EGI
  4832. EGT = 0.
  4833. 500 CONTINUE
  4834. VCOVER(2) = RESV2
  4835. D = RESD
  4836. Z0 = RESZ0
  4837. RDC = RESRDC
  4838. RBC = RESRBC
  4839. !------------------------------------------------------
  4840. END SUBROUTINE TEMRS1
  4841. !------------------------------------------------------
  4842. !=======================================================================
  4843. !
  4844. SUBROUTINE TEMRS2 &
  4845. (DTT,TC,TGS,TD,TA,TM,QM,EM,PSURF,WWW,CAPAC,SATCAP, &
  4846. DTC,DTG,RA,RST,ZDEPTH,BEE,PHSAT,POROS,D,Z0,RDC,RBC,VCOVER, &
  4847. Z2,ZLAI,DEFAC,TU,TL,TOPT,RSTFAC,NROOT,ROOTD,PHSOIL,ROOTP, &
  4848. PH1,PH2,ECT,ECI,EGT,EGI,EGS,HC,HG,EC,EG,EA,RADT,CHF,SHF, &
  4849. ALBEDO,ZLWUP,THERMK,RHOAIR,ZWIND,UM,USTAR,DRAG,CCX,CG, &
  4850. ISNOW,CHISL,TSOIL,SOLSOIL,CSOIL,WFSOIL,POROSITY, &
  4851. DZ,DZO,W,WO,WF,TSSN,TSSNO,BW,BWO,CT,CTO,FI,FIO,FL,FLO, &
  4852. BL,BLO,BI,BIO,BT,BTO,DMLT,DMLTO,H,HO,S,SO,SS,SSO,DSOL,DHP, &
  4853. DICEVOL,DLIQVOL,THK,QK,SWE,SNOWDEN,SNOWDEPTH,TKAIR,SNROFF, &
  4854. DZSOIL,BPS,rib,CU,XCT,flup,iii,jjj)
  4855. !
  4856. !=======================================================================
  4857. ! ------------------------------------------------------------------7272
  4858. ! SUBROUTINES IN THIS BLOCK : RASIT5(RBRD1), STRES1,DELRN,TPROPTY,
  4859. ! ------------------------- DELHF,DELEF,NEWTON,SNRESULT
  4860. !CS------------------ sun Adds Local variables 10/13/98 ----------------
  4861. !clwp 12/13/2000, change the dimensions of delth to a certain number > N
  4862. REAL WORK(N1),WORK1(N1),DELTH(20)
  4863. data DELTH/20*0.0/
  4864. REAL ZINC(3), A2(3), Y1(3), ITEX(3),RSTM(2)
  4865. DIMENSION SSO(N1),POROSITY(N1),H(N1),HO(N1),DZ(N1),DZO(N1),CT(N1), &
  4866. BI(N1),BIO(N1),BW(N1),BWO(N1),BL(N1),BLO(N1),CTO(N1), &
  4867. TSSN(N1),TSSNO(N1),DLIQVOL(N1),DICEVOL(N1),DSOL(N1), &
  4868. W(N1),WO(N1),WF(N1),FI(N1),FIO(N1),FL(N1),FLO(N1), &
  4869. DMLT(N1),DMLTO(N1),BT(N1),BTO(N1),S(N1),SO(N1),SS(N1), &
  4870. PDZDTC(N1),DMASS(N1),THK(N1),DHP(N1),QK(N1)
  4871. DIMENSION WWW(3),CAPAC(2),SATCAP(2),ZDEPTH(3),VCOVER(2),ZLAI(2), &
  4872. RADT(2),ALBEDO(2,3,2),TOPT(2),TL(2),TU(2),DEFAC(2), &
  4873. PH1(2),PH2(2),RST(2),RSTFAC(2,4), &
  4874. ROOTD(2),ROOTP(3),PHSOIL(3)
  4875. ! ------------------------------------------------------------------7272
  4876. ! E(X) IS VAPOUR PRESSURE IN MBARS AS A FUNCTION OF TEMPERATURE
  4877. ! GE(X) IS D E(X) / D ( TEMP )
  4878. ! ------------------------------------------------------------------7272
  4879. !
  4880. E(X) = EXP( 21.18123 - 5418. / X ) / .622
  4881. GE(X) = EXP( 21.18123 - 5418. / X ) * 5418. &
  4882. / (X*X) / .622
  4883. !
  4884. ETC = E(TC)
  4885. ETGS = E(TGS)
  4886. GETC = GE(TC)
  4887. GETGS = GE(TGS)
  4888. !crr HLAT = ( 3150.19 - 2.378 * TM ) * 1000.
  4889. PSY = CPAIR / HLAT * PSURF/ 100. / .622
  4890. RCP = RHOAIR * CPAIR
  4891. ! RADD = 44.
  4892. WC = AMIN1( 1., CAPAC(1)/SATCAP(1) )
  4893. !CS SUN CHANGE foolowing statement to one new 10/13/98
  4894. !cl IF (MDLSNO.eq.0.and.ISNOW.eq.0) THEN
  4895. IF (ISNOW.eq.0) THEN
  4896. WG=1.0
  4897. ELSE
  4898. WG = AMIN1( 1., CAPAC(2)/SATCAP(2) )
  4899. END IF
  4900. !CS on 10/13/98
  4901. !----------------------------------------------------------------------
  4902. ! RSOIL FUNCTION FROM FIT TO CAMILLO AND GURNEY (1984) DATA.
  4903. ! WETNESS OF UPPER 0.5 CM OF SOIL CALCULATED FROM APPROXIMATION
  4904. ! TO MILLY FLOW EQUATION WITH REDUCED (1/50 ) CONDUCTIVITY IN
  4905. ! TOP LAYER.
  4906. !----------------------------------------------------------------------
  4907. !
  4908. ! WT = WWW(1) + 0.75 * ZDEPTH(1) / ( ZDEPTH(1) + ZDEPTH(2) )
  4909. ! & * (WWW(1) - (WWW(2)**2)/WWW(1) ) / 2. * 50.
  4910. ! FAC = AMIN1( WT, 0.99 )
  4911. ! FAC = AMAX1( FAC, WWW(1) * 0.1 )
  4912. !
  4913. !------------------------------------------------------------
  4914. ! --- soil resistance calculation alteration Y.K. Xue Feb. 1994**
  4915. !------------------------------------------------------------
  4916. FAC = AMIN1( www(1), 0.99 )
  4917. FAC = AMAX1( FAC, 0.02 )
  4918. !CS Sun fixed following RSOIL equation as equal to 10/13/98
  4919. !cl IF (MDLSNO.eq.0.and.ISNOW.eq.0) THEN
  4920. IF (ISNOW.eq.0) THEN
  4921. RSOIL=10000000000.
  4922. ELSE
  4923. RSOIL = 101840. * (1. - FAC ** 0.0027)
  4924. END IF
  4925. !CS 10/13/98
  4926. !------------------------------------------------------------
  4927. !
  4928. PSIT = PHSAT * FAC ** (- BEE )
  4929. ARGG = AMAX1(-10.,(PSIT*GRAV/461.5/TGS))
  4930. HR = EXP(ARGG)
  4931. !CL 2001,1,10 added the following line according to Xue, August 2000
  4932. PILPHR = HR
  4933. !----------------------------------------------------------------------
  4934. ! ALTERATION OF AERODYNAMIC TRANSFER PROPERTIES IN CASE OF SNOW
  4935. ! ACCUMULATION.
  4936. !----------------------------------------------------------------------
  4937. RESD = D
  4938. RESZ0 = Z0
  4939. RESRDC = RDC
  4940. RESRBC = RBC
  4941. RESV2 = VCOVER(2)
  4942. !
  4943. IF ( TGS .GT. TF ) GO TO 100
  4944. !CS Sun Change following statement into another one: SDEP=snowdepth 10/13/98
  4945. !cl IF (MDLSNO.eq.0.and.ISNOW.eq.0) THEN
  4946. IF (ISNOW.eq.0) THEN
  4947. SDEP = SNOWDEPTH
  4948. ELSE
  4949. SDEP = CAPAC(2) * SNOWDEN
  4950. END IF
  4951. !CS 10/13/98
  4952. SDEP = AMIN1( SDEP, (Z2*0.95) )
  4953. D = Z2 - ( Z2-D ) / Z2 * ( Z2 - SDEP )
  4954. Z0 = Z0 / ( Z2-RESD ) * ( Z2-D )
  4955. RDC = RDC * ( Z2-SDEP ) / Z2
  4956. RBC = RBC * Z2 / ( Z2-SDEP )
  4957. VCOVER(2) = 1.
  4958. !CS Sun added the following IF,change the WG to WG=1.0 10/13/98
  4959. !cl IF (MDLSNO.eq.0.and.ISNOW.eq.0) THEN
  4960. IF (ISNOW.eq.0) THEN
  4961. WG=1.0
  4962. ELSE
  4963. WG = AMIN1( 1., CAPAC(2) / 0.004 )
  4964. END IF
  4965. RST(2) = RSOIL
  4966. 100 CONTINUE
  4967. !----------------------------------------------------------------------
  4968. !
  4969. ! CALCULATION OF EA, TA, RA, RB, RD AND SOIL MOISTURE STRESS
  4970. ! FOR THE BEGINNING OF THE TIME STEP
  4971. !
  4972. !----------------------------------------------------------------------
  4973. IFIRST = 1
  4974. ICOUNT = 0
  4975. TGEN = TGS
  4976. TCEN = TC
  4977. FC = 1.
  4978. FG = 1.
  4979. TRIB = TA
  4980. EA = EM
  4981. !cl TA = TM
  4982. HT = 0.
  4983. IONCE = 0
  4984. 1000 CONTINUE
  4985. ICOUNT = ICOUNT + 1
  4986. CALL RASIT5(TRIB,CTNI,CUNI,RA,Z2,Z0,D,ZWIND,UM, &
  4987. RHOAIR,TM,U2,USTAR,DRAG,TA,bps,rib,CU,XCT,iii,jjj)
  4988. !cl ------------IF ( IFIRST .EQ. 1 ) CALL RBRD1 ------------
  4989. IF ( IFIRST .EQ. 1 ) THEN
  4990. !cl TCTA = TC - TA
  4991. RB = 1.0/(SQRT(U2)/RBC+ZLAI(1)*.004)
  4992. !cl X1 = TEMDIF
  4993. TGTA = TGS- TA
  4994. TEMDIF = ( TGTA + SQRT(TGTA*TGTA) ) / 2. + 0.1
  4995. FIH = SQRT( 1. + 9. * GRAV *TEMDIF * Z2 / TGS / ( U2*U2) )
  4996. RD = RDC / U2 / FIH
  4997. ENDIF
  4998. !cl ------------ END OF RBRD1 ---------------
  4999. D1 = 1./RA + 1./RB + 1./RD
  5000. TA = ( TGS/RD + TC/RB + TM/RA *bps) / D1
  5001. HT = ( TA - TM ) * RCP / RA
  5002. RCC = RST(1)*FC + 2. * RB
  5003. COC = (1.-WC)/RCC + WC/(2.*RB)
  5004. RG = RST(2)*FG
  5005. !cl IF (MDLSNO.eq.0.and.ISNOW.eq.0) THEN
  5006. IF (ISNOW.eq.0) THEN
  5007. RSURF = RSOIL
  5008. ELSE
  5009. RSURF = RSOIL*FG
  5010. END IF
  5011. COG1 = VCOVER(2)*(1.-WG)/(RG+RD)+(1.-VCOVER(2))/(RSURF+RD)*HR &
  5012. + VCOVER(2)/(RSURF+RD+44.)*HR
  5013. COG2 = VCOVER(2)*(1.-WG)/(RG+RD)+(1.-VCOVER(2))/(RSURF+RD) &
  5014. + VCOVER(2)/(RSURF+RD+44.)
  5015. COG1 = COG1 + WG/RD * VCOVER(2)
  5016. COG2 = COG2 + WG/RD * VCOVER(2)
  5017. D2 = 1./RA + COC + COG2
  5018. TOP = COC * ETC + COG1 * ETGS + EM / RA
  5019. EA = TOP / D2
  5020. DROP = AMAX1( 0., (E(TA)-EA) )
  5021. !
  5022. !----------------------------------------------------------------------
  5023. CALL STRES1 (IFIRST, RSTM,ROOTP, &
  5024. RSTFAC,RST,TC,ETC,RB,TGS,ETGS,RD,TU,TL,TOPT,EA, &
  5025. DEFAC,PH1,PH2,NROOT,ZDEPTH,PHSOIL,ROOTD,VCOVER,DROP)
  5026. !----------------------------------------------------------------------
  5027. !
  5028. IFIRST = 0
  5029. ERIB = EA
  5030. TRIB = TA
  5031. !!!
  5032. IF ( ICOUNT .LE. 4 ) GO TO 1000
  5033. !======================================================================
  5034. !cl CALL DELRN ( RNCDTC, RNCDTG, RNGDTG, RNGDTC )
  5035. ! PARTIAL DERIVATIVES OF RADIATIVE AND SENSIBLE HEAT FLUXES
  5036. TC3 = TC * TC * TC
  5037. TG3 = TGS * TGS * TGS
  5038. FAC1 = ( 1. - ALBEDO(1,3,2) ) * ( 1.-THERMK ) * VCOVER(1)
  5039. FAC2 = 1. - ALBEDO(2,3,2)
  5040. RNCDTC = - 2. * 4. * FAC1 * STEFAN * TC3
  5041. RNCDTG = 4. * FAC1 * FAC2 * STEFAN * TG3
  5042. RNGDTG = - 4. * FAC2 * STEFAN * TG3
  5043. RNGDTC = 4. * FAC1 * FAC2 * STEFAN * TC3
  5044. !----------------------------------------------------------------------
  5045. !
  5046. ! DEW CALCULATION : DEW CONDITION IS SET AT BEGINNING OF TIME STEP.
  5047. ! IF SURFACE CHANGES STATE DURING TIME STEP, LATENT HEAT FLUX IS
  5048. ! SET TO ZERO.
  5049. !
  5050. !----------------------------------------------------------------------
  5051. !
  5052. IF ( EA .GT. ETC ) FC = 0.
  5053. IF ( EA .GT. ETGS) FG = 0.
  5054. !
  5055. !----------------------------------------------------------------------
  5056. !
  5057. ! WET FRACTION EXHAUSTION TEST : IF CAPAC(X) IS EXHAUSTED IN
  5058. ! A TIME STEP, INTERCEPTION LOSS IS LIMITED TO CAPAC(X).
  5059. !
  5060. !----------------------------------------------------------------------
  5061. ! START OF NON-NEUTRAL RESISTANCE CALCULATION LOOP
  5062. !----------------------------------------------------------------------
  5063. !
  5064. II = 0
  5065. !
  5066. ! ----- INITIALIZE NEWTON-RAPHSON ITERATIVE ROUTINE FOR RASIT 3,5,8
  5067. NOX = 0
  5068. NONPOS = 1
  5069. IWALK = 0
  5070. LX = 2
  5071. FINC = 1.
  5072. ITEX(LX) = 0.
  5073. ZINC(LX) = 0.
  5074. A2(LX) = 0.
  5075. Y1(LX) = 0.
  5076. !cl IF (MDLSNO.eq.0.and.ISNOW.eq.0) THEN
  5077. IF (ISNOW.eq.0) THEN
  5078. !---------------------------------------------------------
  5079. ! Next loop, we calculate the thermal conductivities
  5080. ! and specific heat
  5081. !---------------------------------------------------------
  5082. CALL TPROPTY(CHISL,BWO,DZO,TKAIR,DZSOIL, THK,QK)
  5083. !------------------------------------------------------------
  5084. ! Next we calculate the balances of energy and water
  5085. !------------------------------------------------------------
  5086. tssn(n+1) = tkair
  5087. !------------------------------------------------------------
  5088. icount = 0
  5089. do i=1,n
  5090. work(i) = tssno(i)
  5091. work1(i) = dliqvol(i)
  5092. end do
  5093. hx = 0.0
  5094. NK=n
  5095. ELSE
  5096. NK=1
  5097. END IF
  5098. RADDWN=solsoil
  5099. RADDWN=RADDWN+dsol(1)+dsol(2)
  5100. RNG = RADT(2) - RADDWN
  5101. RADT(2)=RNG
  5102. do 57 ik = NK , 1 , -1
  5103. !cccc Next calculate snow layers temperatures and densities
  5104. IF (ISNOW.ne.0) go to 2000
  5105. If((sso(ik).lt.1d0.and.porosity(ik).gt.0d0))then
  5106. udum0 = dzo(ik)*(porosity(ik) -work1(ik))
  5107. if(udum0.lt.0.0) then
  5108. print*,' udum0 is WRONG in thermal.f'
  5109. STOP
  5110. endif
  5111. if(wf(ik+1).gt.udum0)then
  5112. uuu=udum0
  5113. snroff = snroff + (wf(ik+1)-udum0)
  5114. hroff=hroff+(wf(ik+1)-udum0)*cl*rhowater*(tssn(ik+1)-273.16)
  5115. else
  5116. uuu=wf(ik+1)
  5117. endif
  5118. dhp(ik+1)=(uuu*cl*rhowater*(tssn(ik+1)-273.16))/dtt
  5119. w(ik)=wo(ik)+ uuu
  5120. bwo(ik)=rhowater*w(ik)/dzo(ik)
  5121. cto(ik)=(bwo(ik)/920.0)*1.9e+6
  5122. dmlto(ik)=w(ik)*dlm*rhowater
  5123. if (ho(ik).lt.-dmlto(ik)) then
  5124. fio(ik)=1.0
  5125. flo(ik)=0.0
  5126. tssno(ik)=( ho(ik)+dmlto(ik))/(cto(ik)*dzo(ik))+273.16
  5127. ! ------------------------------------------------------------------7272
  5128. else
  5129. tssno(ik)=273.16
  5130. fio(ik)=-ho(ik)/dmlto(ik)
  5131. flo(ik)=1.0-fio(ik)
  5132. end if
  5133. blo(ik)=bwo(ik)*flo(ik)
  5134. bio(ik)=bwo(ik)*fio(ik)
  5135. dliqvol(ik)=blo(ik)/rhowater
  5136. dicevol(ik)=bio(ik)/dice
  5137. Else
  5138. w(ik)=wo(ik)
  5139. snroff = snroff +wf(ik+1)
  5140. hroff=hroff+wf(ik+1)*cl*rhowater*(tssn(ik+1)-273.16)
  5141. dhp(ik+1) = 0.0
  5142. End if
  5143. !cs Sun add. It is important because tssno(n) is changed here on 1/25/99 .
  5144. TGS=tssno(NK)
  5145. !cs 0n 1/25/99
  5146. !------------------------------------------------------------*
  5147. If (ik.lt.Nk) Then
  5148. ! Next: ik < n
  5149. if(ik.ne.1) then
  5150. b1 = dsol(ik) + delth(ik) &
  5151. + qk(ik+1)*(tssn(ik+1)-tssno(ik)) + qk(ik)*work(ik-1)
  5152. else
  5153. b1 = dsol(ik) + delth(ik) &
  5154. + qk(ik+1)*(tssn(ik+1)-tssno(ik)) + qk(ik)*tsoil
  5155. endif
  5156. !
  5157. b2 = - qk(ik)
  5158. ! Important: delth(ik) must be initialized after using.
  5159. delth(ik) = 0.0
  5160. End if
  5161. dmlt(ik)=w(ik)*dlm*rhowater
  5162. If (ik.lt.NK.and.ik.ge.1) Then
  5163. fff = -( ho(ik) + (b1+b2*273.16)*dtt ) &
  5164. / ( rhowater*dlm*w(ik) )
  5165. ! when snow temperature equals 273.16
  5166. !!
  5167. if(fff.gt.0.0.and.fff.le.1.0) then
  5168. ICASE=2
  5169. fi(ik)=fff
  5170. else if (fff.gt.1.0) then
  5171. ICASE=1
  5172. else if (fff.le.0.0) then
  5173. ICASE=3
  5174. end if
  5175. End if
  5176. If (ik.lt.NK) go to 3000
  5177. !
  5178. !CS Sun add above paragraph on 10/13/98
  5179. 2000 CONTINUE
  5180. !
  5181. CALL RASIT5(TRIB,CTNI,CUNI,RA,Z2,Z0,D,ZWIND,UM, &
  5182. RHOAIR,TM,U2,USTAR,DRAG,TA,bps,rib,CU,XCT,iii,jjj)
  5183. !----------------------------------------------------------------------
  5184. !cl CALL DELHF ( HCDTC, HCDTG, HGDTG, HGDTC )
  5185. ! PARTIAL DERIVATIVES OF SENSIBLE HEAT FLUXES
  5186. !
  5187. RCP = RHOAIR * CPAIR
  5188. D1 = 1./RA + 1./RB + 1./RD
  5189. TA = ( TGS/RD + TC/RB + TM/RA *bps) / D1
  5190. !
  5191. HC = RCP * ( TC - TA ) / RB * DTT
  5192. HG = RCP * ( TGS - TA ) / RD * DTT
  5193. !----------------------------------------------------------------------
  5194. ! N.B. FLUXES EXPRESSED IN JOULES M-2
  5195. !----------------------------------------------------------------------
  5196. !
  5197. HCDTC = RCP / RB * ( 1./RA + 1./RD ) / D1
  5198. HCDTG = - RCP / ( RB * RD ) / D1
  5199. ! FOR TM
  5200. HCDTM = - RCP / ( RB * RA ) / D1 * BPS
  5201. !
  5202. HGDTG = RCP / RD * ( 1./RA + 1./RB ) / D1
  5203. HGDTC = - RCP / ( RD * RB ) / D1
  5204. ! FOR TM
  5205. HGDTM = - RCP / ( RD * RA ) / D1 *BPS
  5206. !======================================================================
  5207. ! CALL DELEF ( ECDTC, ECDTG, EGDTG, EGDTC, DEADTC, DEADTG, EC, EG ,
  5208. ! & WC, WG, FC, FG, HR,MDLSNO,ISNOW )
  5209. !
  5210. ! PARTIAL DERIVATIVES OF LATENT HEAT FLUXES
  5211. ! MODIFICATION FOR SOIL DRYNESS : HR = REL. HUMIDITY IN TOP LAYER
  5212. !----------------------------------------------------------------------
  5213. !
  5214. HRR = HR
  5215. IF ( FG .LT. .5 ) HRR = 1.
  5216. !
  5217. RCC = RST(1)*FC + 2. * RB
  5218. COC = (1.-WC)/RCC + WC/(2.*RB)
  5219. RG = RST(2)*FG
  5220. !cl IF (MDLSNO.eq.0.and.ISNOW.eq.0) THEN
  5221. IF (ISNOW.eq.0) THEN
  5222. RSURF=RSOIL
  5223. ELSE
  5224. RSURF = RSOIL*FG
  5225. END IF
  5226. COG1 = VCOVER(2)*(1.-WG)/(RG+RD)+(1.-VCOVER(2))/(RSURF+RD)*HRR &
  5227. + VCOVER(2)/(RSURF+RD+44.)*HRR
  5228. COG2 = VCOVER(2)*(1.-WG)/(RG+RD)+(1.-VCOVER(2))/(RSURF+RD) &
  5229. + VCOVER(2)/(RSURF+RD+44.)
  5230. COG1 = COG1 + WG/RD * VCOVER(2)
  5231. COG2 = COG2 + WG/RD * VCOVER(2)
  5232. !
  5233. D2 = 1./RA + COC + COG2
  5234. TOP = COC * ETC + COG1 * ETGS + EM/RA
  5235. EA = TOP / D2
  5236. EC = ( ETC - EA ) * COC * RCP/PSY * DTT
  5237. EG = ( ETGS*COG1 - EA*COG2 ) * RCP/PSY * DTT
  5238. DEADTC = GETC * COC / D2
  5239. DEADTG = GETGS * COG1 / D2
  5240. !
  5241. ECDTC = ( GETC - DEADTC ) * COC * RCP / PSY
  5242. ECDTG = - DEADTG * COC * RCP / PSY
  5243. !
  5244. EGDTG = ( GETGS*COG1 - DEADTG*COG2 ) * RCP / PSY
  5245. EGDTC = - DEADTC * COG2 * RCP / PSY
  5246. !crr
  5247. ! FOR QM
  5248. DEADQM = 0.622 * PSURF /( (0.622+QM)**2 * RA * D2 )
  5249. ECDQM = -DEADQM * COC * RCP / PSY
  5250. EGDQM = -DEADQM * COG2 * RCP / PSY
  5251. ! FOR YPDATING TM AND QM
  5252. AK = 1/ RCP / BPS
  5253. AH = 1/ (HLAT*RHOAIR)
  5254. !crr
  5255. !----------------------------------------------------------------------
  5256. !
  5257. ! CALCULATION OF COEFFICIENTS OF TEMPERATURE TENDENCY EQUATIONS
  5258. ! C - CANOPY, G - GROUND
  5259. !
  5260. !----------------------------------------------------------------------
  5261. !
  5262. CCODTC = CCX / DTT - RNCDTC + HCDTC + ECDTC
  5263. CCODTG = - RNCDTG + HCDTG + ECDTG
  5264. CCORHS = RADT(1) - ( HC + EC ) / DTT
  5265. !
  5266. !----------------------------------------------------------------------
  5267. !CS Sun Change following original GCODCG into new one 10/13/98
  5268. IF (ISNOW.eq.0) THEN
  5269. GCODTG= cto(n)*dzo(n)/DTT - RNGDTG + HGDTG + EGDTG + qk(n)
  5270. ELSE
  5271. GCODTG = CG / DTT + TIMCON*CG*2. - RNGDTG + HGDTG + EGDTG
  5272. END IF
  5273. GCODTC = - RNGDTC + HGDTC + EGDTC
  5274. !CS From NOW ON WE REALLY GET INTO SNOW PART !!!!. ON 10/13/98
  5275. !cl IF (MDLSNO.ne.0.or.ISNOW.ne.0) THEN
  5276. IF (ISNOW.ne.0) THEN
  5277. GCORHS = RADT(2)-TIMCON*CG*2.*( TGS -TD )-( HG + EG )/ DTT
  5278. ELSE
  5279. fi(n)=1.0
  5280. GCORHS1 = ho(n)/DTT+RNG - ( HG + EG ) / DTT +dhp(n+1) &
  5281. - qk(n)*(TGS -tssno(n-1))-cto(n)*dzo(n)*(tssno(n)-273.16)/DTT
  5282. GCORHS = GCORHS1+ rhowater*dlm*w(n)*fi(n)/DTT
  5283. END IF
  5284. !
  5285. DENOM = CCODTC * GCODTG - CCODTG * GCODTC
  5286. !
  5287. DTC = ( CCORHS * GCODTG - CCODTG * GCORHS ) / DENOM
  5288. DTG = ( CCODTC * GCORHS - CCORHS * GCODTC ) / DENOM
  5289. !CS Sun add following part here for inserting snow routing on 10/13/98
  5290. !cl IF (MDLSNO.eq.0.and.ISNOW.eq.0) THEN
  5291. IF (ISNOW.eq.0) THEN
  5292. If ((TGS+DTG).le.273.16) Then
  5293. TGSNEW=(TGS+DTG)
  5294. ICASE=1
  5295. !cs Sun debug on 1998/12/14 end
  5296. ! ------------------------------------------------------------------7272
  5297. h(NK)=( TGSNEW-273.16)*cto(n)*dzo(n)-fi(NK)*w(NK)*dlm*rhowater
  5298. Dh_DTT_DTG=(h(NK)-ho(NK))/DTT
  5299. tonm1=tssno(NK-1)
  5300. qkn=qk(n)
  5301. Else
  5302. DTG=273.16-TGS
  5303. DTC= (CCORHS - CCODTG*DTG)/CCODTC
  5304. fi(NK)=(GCODTC*DTC+GCODTG*DTG-GCORHS1)/(rhowater*dlm*w(n))*DTT
  5305. if (fi(NK).ge.0.0.and.fi(NK).le.1.0) then
  5306. h(NK)=-fi(n)*w(n)*dlm*rhowater
  5307. Dh_DTT_DTG=(h(NK)-ho(NK))/DTT
  5308. ICASE=2
  5309. tonm1=tssno(NK-1)
  5310. qkn=qk(n)
  5311. else if (fi(NK).lt.0.)then
  5312. h(NK)= -fi(NK)*w(NK)*dlm*rhowater
  5313. Dh_DTT_DTG=(h(NK)-ho(NK))/DTT
  5314. ICASE=3
  5315. tonm1=tssno(NK-1)
  5316. qkn=qk(n)
  5317. fff=fi(NK)
  5318. fi(NK)=0.0
  5319. end if
  5320. End if
  5321. END IF
  5322. !----------------------------------------------------------------------
  5323. ! CHECK IF INTERCEPTION LOSS TERM HAS EXCEEDED CANOPY STORAGE
  5324. !----------------------------------------------------------------------
  5325. !
  5326. ECPOT = ( (ETC - EA) + (GETC - DEADTC)*DTC - DEADTG*DTG )
  5327. ECI = ECPOT * WC /(2.*RB) * RCP/PSY * DTT
  5328. ECIDIF=AMAX1(0.0,(ECI-CAPAC(1)*1.E3*HLAT))
  5329. ECI =AMIN1(ECI,( CAPAC(1)*1.E3*HLAT))
  5330. !
  5331. EGPOT = ( (ETGS - EA) + (GETGS - DEADTG)*DTG - DEADTC*DTC )
  5332. EGI = EGPOT * VCOVER(2) * WG/RD * RCP/PSY * DTT
  5333. EGIDIF=AMAX1(0.0,(EGI-CAPAC(2)*1.E3*HLAT))
  5334. EGI =AMIN1(EGI,( CAPAC(2)*1.E3*HLAT))
  5335. !
  5336. !----------------------------------------------------------------------
  5337. TGEN = TGS + DTG
  5338. TCEN = TC + DTC
  5339. D1 = 1./RA + 1./RB + 1./RD
  5340. TAEN = ( TGEN / RD + TCEN / RB + TM / RA *bps) / D1
  5341. !
  5342. HEND = ( TAEN - TM ) * RCP / RA + (ECIDIF + EGIDIF)/DTT
  5343. Y= TRIB - TAEN
  5344. II = II + 1
  5345. HT = HEND
  5346. IF ( II .GT. 20 ) GO TO 200
  5347. !CL IF ( II .GT. ITRUNK ) GO TO 200
  5348. !
  5349. !CL CALL NEWTON(TRIB,Y,FINC,NOX,NONPOS,IWALK,LX)
  5350. CALL NEWTON(TRIB,Y,FINC,NOX,NONPOS,IWALK,LX,ZINC,A2,Y1,ITEX)
  5351. !
  5352. IF(NOX.NE.1)GO TO 2000
  5353. 200 CONTINUE
  5354. !CS Sun add following part here for inserting snow routing on 10/13/98
  5355. !cl 3000 IF (MDLSNO.eq.0.and.ISNOW.eq.0) THEN
  5356. 3000 IF (ISNOW.eq.0) THEN
  5357. IF (ICASE.eq.1.and.ik.eq.NK) THEN
  5358. tssn(NK)=TGS+DTG
  5359. END IF
  5360. If (ik.eq.NK) then
  5361. SNOFAC = HLAT / (HLAT + SNOMEL /1000.)
  5362. egidw = EGI*SNOFAC /HLAT/1000.
  5363. ! egidw= EGI/HLAT/1000.
  5364. w(n)=w(n)-egidw
  5365. swe=swe-egidw
  5366. dzold=dzo(n)
  5367. dzo(n)=dzo(n)-egidw*rhowater/bwo(n)
  5368. !cs sun: following way to correct h(n) may lead to unballance of energy.
  5369. ho(n)=ho(n)*dzo(n)/dzold
  5370. capac(2)=swe
  5371. End if
  5372. CALL SNRESULT(DTT,IK,ICASE,WFSOIL,TSOIL,B1,B2,FFF,DELTH,WWW, &
  5373. ZDEPTH,POROS,BI,BIO,DZ,DZO,W,BW,BWO,H,HO,QK,BL,BT,CT, &
  5374. FI,FL,WF,TSSN,DLIQVOL,DICEVOL,SNROFF,HROFF,QSOIL)
  5375. END IF
  5376. 57 CONTINUE
  5377. ! ------------------------------------------------------------------7272
  5378. !clwp 11/17/2000, Li add following sentence to recalculate the snowdepth
  5379. SNOWDEPTH=DZO(1)+DZO(2)+DZO(3)
  5380. !clwp 11/17/2000, Li add above sentence to recalculate the snowdepth
  5381. !CS sun add following parts on 12/5/98 start
  5382. !cl IF (MDLSNO.eq.0.and.ISNOW.eq.0) THEN
  5383. IF (ISNOW.eq.0) THEN
  5384. SWE=W(1)+W(2)+W(3)
  5385. CAPAC(2)=SWE
  5386. IF((DZ(1)+DZ(2)+DZ(3)).NE.0.0) THEN
  5387. SNOWDEN=(BW(1)*DZ(1)+BW(2)*DZ(2)+BW(3)*DZ(3)) &
  5388. /(DZ(1)+DZ(2)+DZ(3))
  5389. SNOWDEN=1000./SNOWDEN
  5390. ENDIF
  5391. ENDIF
  5392. !CS sun add above parts on 12/5/98 end
  5393. !----------------------------------------------------------------------
  5394. ! EXIT FROM NON-NEUTRAL CALCULATION
  5395. !
  5396. ! EVAPOTRANSPIRATION FLUXES CALCULATED FIRST ( J M-2 )
  5397. !----------------------------------------------------------------------
  5398. HRR = HR
  5399. IF ( FG .LT. .5 ) HRR = 1.
  5400. !cs SUn change RSURF = RSOIL*FG into followings: 02/03/99 start
  5401. !cl IF (MDLSNO.eq.0.and.ISNOW.eq.0) THEN
  5402. IF (ISNOW.eq.0) THEN
  5403. RSURF = RSOIL
  5404. ELSE
  5405. RSURF = RSOIL*FG
  5406. END IF
  5407. !cs sun 03/02/99 end
  5408. !
  5409. COCT = (1.-WC)/RCC
  5410. COGT = VCOVER(2) * (1.-WG)/( RG + RD )
  5411. COGS1 = (1.-VCOVER(2)) / ( RD + RSURF ) * HRR &
  5412. + VCOVER(2) / ( RD + RSURF + 44.) * HRR
  5413. COGS2 = COGS1 / HRR
  5414. !
  5415. ECT = ECPOT * COCT * RCP/PSY * DTT
  5416. !
  5417. EGT = EGPOT * COGT * RCP/PSY * DTT
  5418. EGS = (ETGS + GETGS*DTG ) * COGS1 &
  5419. - ( EA + DEADTG*DTG + DEADTC*DTC ) * COGS2
  5420. EGS = EGS * RCP/PSY * DTT
  5421. !CS Sun add following IF statement on 10/13/98
  5422. !cl IF (MDLSNO.eq.0.and.ISNOW.eq.0) EGS=0.0
  5423. IF (ISNOW.eq.0) EGS=0.0
  5424. EGSMAX = WWW(1) / 2. * ZDEPTH(1) * POROS * HLAT * 1000.
  5425. EGIADD = AMAX1( 0., EGS - EGSMAX )
  5426. EGS = AMIN1 ( EGS, EGSMAX )
  5427. EGIDIF = EGIDIF + EGIADD
  5428. !
  5429. !----------------------------------------------------------------------
  5430. ! SENSIBLE HEAT FLUX CALCULATED WITH LATENT HEAT FLUX CORRECTION
  5431. !----------------------------------------------------------------------
  5432. HC = HC + (HCDTC*DTC + HCDTG*DTG)*DTT + ECIDIF
  5433. HG = HG + (HGDTC*DTC + HGDTG*DTG)*DTT + EGIDIF
  5434. !----------------------------------------------------------------------
  5435. !
  5436. ! TEST OF DEW CONDITION. LATENT HEAT FLUXES SET TO ZERO IF SIGN
  5437. ! OF FLUX CHANGES OVER TIME STEP.EXCESS ENERGY DONATED TO SENSIBLE
  5438. ! HEAT FLUX.
  5439. !----------------------------------------------------------------------
  5440. !
  5441. !cs Sun add following one statement IF (ISNOW.eq.0.and.MDLSNO.eq.0) go to
  5442. !cs 401 CONTINUE to skip folloing statements from
  5443. !CS ECF = SIGN( 1., ECPOT ) to 400 CONTINUE
  5444. !cl IF (ISNOW.eq.0.and.MDLSNO.eq.0) go to 401
  5445. IF (ISNOW.eq.0) go to 401
  5446. ECF = SIGN( 1., ECPOT )
  5447. EGF = SIGN( 1., EGPOT )
  5448. DEWC = FC * 2. - 1.
  5449. DEWG = FG * 2. - 1.
  5450. !
  5451. IF(DEWC*ECF.GT.0.0) GO TO 300
  5452. HC = HC + ECI + ECT
  5453. ECI = 0.
  5454. ECT = 0.
  5455. 300 IF(DEWG*EGF.GT.0.0) GO TO 400
  5456. HG = HG + EGS + EGI + EGT
  5457. EGS = 0.
  5458. EGI = 0.
  5459. EGT = 0.
  5460. 400 CONTINUE
  5461. 401 CONTINUE
  5462. !
  5463. EC = ECI + ECT
  5464. EG = EGT + EGS + EGI
  5465. !
  5466. !----------------------------------------------------------------------
  5467. ! ADJUSTMENT OF TEMPERATURES AND VAPOR PRESSURE , CALCULATION OF
  5468. ! SENSIBLE HEAT FLUXES.
  5469. !----------------------------------------------------------------------
  5470. !
  5471. !cs sun add following new statement 02/04/99
  5472. TGSOLD=TGS
  5473. !cs sun end
  5474. TC = TCEN
  5475. TGS = TGEN
  5476. !CS Sun add following statement: 10/13/98
  5477. IF (ISNOW.eq.0) tssn(n)=TGS
  5478. !CS 10/13/98
  5479. TA = TAEN
  5480. EA = EA + DEADTC*DTC + DEADTG*DTG
  5481. !
  5482. RADT(1) = RADT(1) + RNCDTC*DTC + RNCDTG*DTG
  5483. RADT(2) = RADT(2) + RNGDTC*DTC + RNGDTG*DTG
  5484. !========================================================================
  5485. FLUP = FLUP - (RNCDTC+RNGDTC)*DTC - (RNCDTG+RNGDTG)*DTG
  5486. !========================================================================
  5487. !
  5488. ! ** simulated net all-wave radiation **
  5489. ! sibnet(nmm,ndd,nhh) = RADT(1) + RADT(2)
  5490. !
  5491. CHF = CCX / DTT * DTC
  5492. !cs sun change the original statement: on 12/14/98
  5493. !cs SHF = CG / DTT * DTG + TIMCON*CG*2. * ( TGS - TD)
  5494. !cs into following part where CG / DTT * DTG is rplaced by Dh_DTT_DTG
  5495. IF (ISNOW.eq.0) THEN
  5496. SHF= Dh_DTT_DTG - dhp(n+1)+ qkn*(TGSOLD-tonm1) &
  5497. +qkn*DTG
  5498. ELSE
  5499. SHF = CG / DTT * DTG + TIMCON*CG*2. * ( TGS - TD )
  5500. END IF
  5501. !
  5502. ZLWUP = ZLWUP - RNCDTC * DTC / 2. &
  5503. - RNGDTG * DTG * (1.-VCOVER(1)*(1.-THERMK) )
  5504. !
  5505. IF ( TGS .GT. TF ) GO TO 500
  5506. EGS = EG - EGI
  5507. EGT = 0.
  5508. 500 CONTINUE
  5509. !
  5510. VCOVER(2) = RESV2
  5511. D = RESD
  5512. Z0 = RESZ0
  5513. RDC = RESRDC
  5514. RBC = RESRBC
  5515. !CS Sun add next paragrapg to get soil surface temperature TGS 10/13/98
  5516. !cl IF (MDLSNO.eq.0.and.ISNOW.eq.0) THEN
  5517. IF (ISNOW.eq.0) THEN
  5518. TGS=TSOIL
  5519. ATMP= (QSOIL+SOLSOIL)/CSOIL
  5520. BTMP=2.*3.1416/86400.
  5521. CTMP=CSOIL*BTMP/CSOIL/(365.*3.1416)**0.5
  5522. TGS=(TSOIL+ATMP*DTT+BTMP*DTT*TD/(1.+CTMP*DTT))/ &
  5523. (1.+BTMP*DTT*(1.-CTMP*DTT/(1.+CTMP*DTT)))
  5524. TD=(CTMP*DTT*TGS+TD)/(1.+CTMP*DTT)
  5525. END IF
  5526. !------------------------------------------------------
  5527. END SUBROUTINE TEMRS2
  5528. !------------------------------------------------------
  5529. !=======================================================================
  5530. !
  5531. SUBROUTINE TPROPTY(THKSOIL,BWO,DZO,TKAIR,DZSOIL, THK,QK)
  5532. !
  5533. !=======================================================================
  5534. DIMENSION BWO(N1),DZO(N1),THK(N1),QK(N1)
  5535. !!!!! this is thermal conductivity for snow from R.Jordan(1991)(2.4)
  5536. do 37 i=1,n
  5537. thkice=2.290d0
  5538. thkair=2.30d-2
  5539. thk(i) = thkair+(7.75d-5 *bwo(i)+ 1.105d-6* &
  5540. bwo(i)*bwo(i))*(thkice -thkair)+0.1
  5541. 37 continue
  5542. !!!!! calculate the ratio of thermal conductivity
  5543. !!!!! at the ineterface between two layers(2.7)
  5544. do 47 i=2,n
  5545. qk(i)=2.0*thk(i)*thk(i-1)/(thk(i)*dzo(i-1)+thk(i-1)*dzo(i))
  5546. 47 continue
  5547. ! YX2002 (test2) but do nothing at this stage
  5548. qk(1)= 2.0*thk(1)*thksoil/(thk(1)*dzsoil+thksoil*dzo(1))
  5549. !
  5550. !------------------------------------------------------
  5551. END SUBROUTINE TPROPTY
  5552. !------------------------------------------------------
  5553. !=======================================================================
  5554. !
  5555. SUBROUTINE UPDAT1(DTT,TC,TGS,TD,CAPAC,DTC,DTG,ECT,ECI,EGT,EGI, &
  5556. EGS,EG,HC,HG,HFLUX,ETMASS,ROFF, &
  5557. NROOT,ROOTD,ROOTP,POROS,BEE,SATCO,SLOPE, &
  5558. PHSAT,ZDEPTH,WWW,CCX,CG,CHF,SHF,ISNOW,WFSOIL,SWE,SNROFF,smelt)
  5559. !
  5560. !=======================================================================
  5561. !CS ------------------------------------------------------------------**
  5562. !
  5563. ! UPDATING OF SOIL MOISTURE STORES AND INTERCEPTION CAPACITY
  5564. !-----------------------------------------------------------------------
  5565. DIMENSION EF(3)
  5566. !cl 2001,1,09 the following array were added after common blocks removed
  5567. DIMENSION WWW(3), CAPAC(2),SNOWW(2),ROOTD(2), ZDEPTH(3), ROOTP(3)
  5568. DIMENSION TEMW(3),TEMWP(3),TEMWPP(3),AAA(2),BBB(2),CCC(2),QQQ(2)
  5569. !
  5570. !----------------------------------------------------------------------
  5571. ! EVAPORATION LOSSES ARE EXPRESSED IN J M-2 : WHEN DIVIDED BY
  5572. ! ( HLAT*1000.) LOSS IS IN M M-2
  5573. ! MASS TERMS ARE IN KG M-2 DT-1
  5574. !----------------------------------------------------------------------
  5575. !
  5576. SNOFAC = HLAT / ( HLAT + SNOMEL /1000. )
  5577. FACKS = 1.
  5578. IF ( (TC-DTC) .LE. TF ) FACKS = SNOFAC
  5579. IF ( (ECT+ECI) .GT. 0.) GO TO 100
  5580. ECI = ECT + ECI
  5581. ECT = 0.
  5582. FACKS = 1. / FACKS
  5583. 100 CAPAC(1)=CAPAC(1) - ECI*FACKS/HLAT/1000.
  5584. !
  5585. ECMASS = ( ECT + ECI * FACKS ) / HLAT
  5586. !
  5587. !cs Sun add following statement IF (ISNOW.EQ.0) go to 201 on 12/5/98
  5588. IF (ISNOW.eq.0) FACKS = SNOFAC
  5589. IF (ISNOW.EQ.0) go to 201
  5590. FACKS = 1.
  5591. IF ( (TGS-DTG) .LE. TF ) FACKS = SNOFAC
  5592. IF ( (EGT+EGI) .GT. 0. ) GO TO 200
  5593. EGI = EGT + EGI
  5594. EGT = 0.
  5595. FACKS = 1. / FACKS
  5596. 200 CAPAC(2)=CAPAC(2) - EGI*FACKS/HLAT/1000.
  5597. !
  5598. 201 EGMASS = ( EGT + EGS + EGI * FACKS ) / HLAT
  5599. !
  5600. ETMASS = ECMASS + EGMASS
  5601. !
  5602. HFLUX = ( HC + HG ) / DTT
  5603. !----------------------------------------------------------------------
  5604. ! DUMPING OF SMALL CAPAC VALUES ONTO SOIL SURFACE STORE
  5605. !----------------------------------------------------------------------
  5606. !
  5607. DO 1000 IVEG = 1, 2
  5608. IF ( CAPAC(IVEG) .GT. 0.000001 ) GO TO 1000
  5609. !cl Xue added the following line in August,2000
  5610. !cl FILTR = FILTR + CAPAC(IVEG)
  5611. WWW(1) = WWW(1) + CAPAC(IVEG) / ( POROS*ZDEPTH(1) )
  5612. CAPAC(IVEG) = 0.
  5613. 1000 CONTINUE
  5614. !----------------------------------------------------------------------
  5615. ! SNOWMELT / REFREEZE CALCULATION
  5616. !----------------------------------------------------------------------
  5617. !CS Sun Change following CALL SNOWM to SNOWM (ISNOW,wfsoil,swe)
  5618. !CS 10/13/98
  5619. !cl CALL SNOWM (MDLSNO,ISNOW,WFSOIL,SWE)
  5620. !CS 10/13/98
  5621. !=======================================================================
  5622. !
  5623. ! CALCULATION OF SNOWMELT AND MODIFICATION OF TEMPERATURES
  5624. ! N.B. THIS VERSION DEALS WITH REFREEZING OF WATER
  5625. !
  5626. !-----------------------------------------------------------------------
  5627. !
  5628. DO 6000 IVEG = 1, 2
  5629. !
  5630. !CS Sun Add following part for snow melting and water flux to soil(wfsoil)
  5631. !CS is greater zero 10/13/98
  5632. IF (ISNOW.EQ.0.and.IVEG.EQ.2) THEN
  5633. ZMELT= WFSOIL
  5634. WWW(1) = WWW(1) + ZMELT / ( POROS * ZDEPTH(1) )
  5635. CAPAC(2)= SWE
  5636. GO TO 6000
  5637. END IF
  5638. !CS 10/13/98
  5639. CCT = CCX
  5640. TS = TC
  5641. DTS = DTC
  5642. FLUX = CHF
  5643. IF ( IVEG .EQ. 1 ) GO TO 110
  5644. CCT = CG
  5645. TS = TGS
  5646. DTS = DTG
  5647. FLUX = CCT * DTG / DTT
  5648. 110 CONTINUE
  5649. !
  5650. TTA = TS - DTS
  5651. TTB = TS
  5652. SNOWW(IVEG) = 0.
  5653. IF ( TTA .LE. TF ) SNOWW(IVEG) = CAPAC(IVEG)
  5654. CAPAC(IVEG) = CAPAC(IVEG) - SNOWW(IVEG)
  5655. IF ( TTA .GT. TF .AND. TTB .GT. TF ) GO TO 120
  5656. IF ( TTA .LE. TF .AND. TTB .LE. TF ) GO TO 120
  5657. !
  5658. DTF = TF - TTA
  5659. DTIME1 = CCT * DTF / FLUX
  5660. HF = FLUX*(DTT-DTIME1)
  5661. FCAP = - CAPAC(IVEG) * SNOMEL
  5662. SPWET = AMIN1( 5. , SNOWW(IVEG) )
  5663. IF ( DTS .GT. 0. ) FCAP = SPWET * SNOMEL
  5664. DTIME2 = FCAP / FLUX
  5665. DTF2 = FLUX * (DTT-DTIME1-DTIME2)/CCT
  5666. TN = TF + DTF2
  5667. TS = TF - 0.1
  5668. IF (ABS(HF) .GE.ABS(FCAP) ) TS = TN
  5669. CHANGE = HF
  5670. IF (ABS(CHANGE) .GE.ABS(FCAP) ) CHANGE = FCAP
  5671. !
  5672. CHANGE = CHANGE / SNOMEL
  5673. !crr
  5674. IF (CHANGE.GT.0.0) SMELT=CHANGE+SMELT
  5675. !crr
  5676. SNOWW(IVEG) = SNOWW(IVEG) - CHANGE
  5677. CAPAC(IVEG) = CAPAC(IVEG) + CHANGE
  5678. !
  5679. IF ( IVEG .EQ. 1 ) TC = TS
  5680. IF ( IVEG .EQ. 2 ) TGS = TS
  5681. IF ( SNOWW(IVEG) .LT. 0.00001 ) GO TO 120
  5682. !cl ZMELT = 0.
  5683. ! modified to force water into soil. Xue Feb. 1994
  5684. ZMELT = CAPAC(IVEG)
  5685. ! IF ( TD .GT. TF ) ZMELT = CAPAC(IVEG)
  5686. !crr FILTR = FILTR+ ZMELT
  5687. WWW(1) = WWW(1) + ZMELT / ( POROS * ZDEPTH(1) )
  5688. ! IF ( TD .LE. TF ) ROFF = ROFF + CAPAC(IVEG)
  5689. CAPAC(IVEG) = 0.
  5690. 120 CONTINUE
  5691. !
  5692. CAPAC(IVEG) = CAPAC(IVEG) + SNOWW(IVEG)
  5693. 6000 CONTINUE
  5694. ! ------------------------------------------------------------
  5695. !CS Sun changes following statatement which is alwayes functioned
  5696. !CS in Xue's code 10/13/98
  5697. IF (ISNOW.NE.0) THEN
  5698. FLUXEF = SHF - CCT*DTG/DTT
  5699. TD = TD + FLUXEF / ( CG * 2. * SQRT ( PIE*365. ) ) * DTT
  5700. END IF
  5701. !CS ------------------------------------------------------------
  5702. !
  5703. ! --- LOAD PILPS DATA
  5704. !
  5705. ! if (change .gt. 0) snm(istat)=snm(istat)+(change*1000.)
  5706. change=0.0
  5707. !----------------------------------------------------------------------
  5708. ! BARE SOIL EVAPORATION LOSS
  5709. !----------------------------------------------------------------------
  5710. !cl 2001,1,11 added the following line according to Xue, August 2000
  5711. !cl FILTR = FILTR - EGS / HLAT / 1000.
  5712. WWW(1) = WWW(1) - EGS / HLAT / 1000. / ( POROS * ZDEPTH(1) )
  5713. !
  5714. !----------------------------------------------------------------------
  5715. ! EXTRACTION OF TRANSPIRATION LOSS FROM ROOT ZONE
  5716. !----------------------------------------------------------------------
  5717. !
  5718. DO 2000 IVEG = 1, 2
  5719. !
  5720. IF ( IVEG .EQ. 1 ) ABSOIL = ECT / HLAT / 1000.
  5721. IF ( IVEG .EQ. 2 ) ABSOIL = EGT / HLAT / 1000.
  5722. !cl 2001,1,09 added the following IF according to Xue, Aug 2000
  5723. IF (NROOT.EQ.1) THEN
  5724. EF(2) = 0.
  5725. EF(3) = 0.
  5726. TOTDEP = ZDEPTH(1)
  5727. !
  5728. DO 3000 IL = 2, 3
  5729. TOTDEP = TOTDEP + ZDEPTH(IL)
  5730. !
  5731. ! DIV = AMAX1 ( 1., ( PHSOIL(IL) - PHL(IVEG) ) )
  5732. !
  5733. IF ( ROOTD(IVEG) .LT. TOTDEP ) GO TO 400
  5734. !
  5735. EF(IL) = ZDEPTH(IL) / ROOTD(IVEG)
  5736. GO TO 500
  5737. !
  5738. 400 CONTINUE
  5739. EF(IL) = ROOTD(IVEG) - TOTDEP + ZDEPTH(IL)
  5740. EF(IL) = EF(IL) / ROOTD(IVEG)
  5741. GO TO 600
  5742. 500 CONTINUE
  5743. 3000 CONTINUE
  5744. !
  5745. 600 EFT = EF(2) + EF(3)
  5746. EFT = MAX(EFT,0.1E-5)
  5747. EF(2) = EF(2) / EFT
  5748. EF(3) = EF(3) / EFT
  5749. DO 4000 IL = 2, 3
  5750. WWW(IL) = WWW(IL) - ABSOIL * EF(IL) / ( POROS * ZDEPTH(IL) )
  5751. 4000 CONTINUE
  5752. ELSE
  5753. EF(1) = ROOTP(1)
  5754. EF(2) = ROOTP(2)
  5755. EF(3) = ROOTP(3)
  5756. DO 4004 IL = 1, 3
  5757. WWW(IL) = WWW(IL) - ABSOIL * EF(IL) / ( POROS * ZDEPTH(IL) )
  5758. 4004 CONTINUE
  5759. END IF
  5760. 2000 CONTINUE
  5761. !
  5762. !----------------------------------------------------------------------
  5763. !
  5764. ! CALCULATION OF INTERFLOW, INFILTRATION EXCESS AND LOSS TO
  5765. ! GROUNDWATER . ALL LOSSES ARE ASSIGNED TO VARIABLE 'ROFF' .
  5766. !
  5767. !----------------------------------------------------------------------
  5768. !
  5769. DO 5000 IL = 1, 2
  5770. IF ( WWW(IL) .GT. 0. ) GO TO 5000
  5771. WWW(IL+1) = WWW(IL+1) + WWW(IL) * ZDEPTH(IL)/ZDEPTH(IL+1)
  5772. WWW(IL) = 0.
  5773. 5000 CONTINUE
  5774. ! IF ( TD .LT. TF ) GO TO 800
  5775. !=======================================================================
  5776. !cl CALL RUN2
  5777. !cl 2001,1,09 substitute subroutine RUN2 by its full code
  5778. ! calculation of interflow, infiltration excess and loss to
  5779. ! groundwater . all losses are assigned to variable 'roff' .
  5780. !=======================================================================
  5781. do 8000 i = 1, 3
  5782. TEMW(I) = AMAX1( 0.03, WWW(I) )
  5783. TEMWP(I) = TEMW(I) ** ( -BEE )
  5784. TEMWPP(I) = AMIN1( 1., TEMW(I)) ** ( 2.*BEE+ 3. )
  5785. 8000 CONTINUE
  5786. !-----------------------------------------------------------------------
  5787. !
  5788. ! calculation of gravitationally driven drainage from w(3) : taken
  5789. ! as an integral of time varying conductivity.addition of liston
  5790. ! baseflow term to original q3g to insure flow in
  5791. ! dry season. modified liston baseflow constant scaled
  5792. ! by available water.
  5793. !
  5794. ! q3g (q3) : equation (62) , SE-86
  5795. !
  5796. !-----------------------------------------------------------------------
  5797. POWS = 2.*BEE+2.
  5798. Q3G = TEMW(3)**(-POWS) + SATCO/ZDEPTH(3)/POROS*SLOPE*POWS*DTT
  5799. Q3G = Q3G ** ( 1. / POWS )
  5800. Q3G = - ( 1. / Q3G - WWW(3) ) * POROS * ZDEPTH(3) / DTT
  5801. Q3G = AMAX1( 0., Q3G )
  5802. Q3G = AMIN1( Q3G, WWW(3)*POROS*ZDEPTH(3)/DTT )
  5803. !
  5804. Q3G = Q3G + 0.002*POROS*ZDEPTH(3)*0.5 / 86400. * WWW(3)
  5805. !
  5806. !----------------------------------------------------------------------
  5807. !
  5808. ! calculation of inter-layer exchanges of water due to gravitation
  5809. ! and hydraulic gradient. the values of w(x) + dw(x) are used to
  5810. ! calculate the potential gradients between layers.
  5811. ! modified calculation of mean conductivities follows ME-82 ),
  5812. ! reduces recharge flux to top layer.
  5813. !
  5814. ! dpdw : estimated derivative of soil moisture potential
  5815. ! with respect to soil wetness. assumption of
  5816. ! gravitational drainage used to estimate likely
  5817. ! minimum wetness over the time step.
  5818. !
  5819. ! qqq (q ) : equation (61) , SE-86
  5820. ! i,i+1
  5821. ! -
  5822. ! avk (k ) : equation (4.14) , ME-82
  5823. ! i,i+1
  5824. !
  5825. !----------------------------------------------------------------------
  5826. !
  5827. WMAX = AMAX1( WWW(1), WWW(2), WWW(3), 0.05 )
  5828. WMAX = AMIN1( WMAX, 1. )
  5829. PMAX = WMAX**(-BEE)
  5830. WMIN = (PMAX-2./( PHSAT*(ZDEPTH(1)+2.*ZDEPTH(2)+ZDEPTH(3)))) &
  5831. **(-1./BEE)
  5832. WMIN = AMIN1( WWW(1), WWW(2), WWW(3), WMIN )
  5833. WMIN = AMAX1( WMIN, 0.02 )
  5834. PMIN = WMIN**(-BEE)
  5835. DPDW = PHSAT*( PMAX-PMIN )/( WMAX-WMIN )
  5836. !
  5837. do 8200 i = 1, 2
  5838. !
  5839. RSAME = 0.
  5840. AVK = TEMWP(I)*TEMWPP(I) - TEMWP(I+1)*TEMWPP(I+1)
  5841. DIV = TEMWP(I+1) - TEMWP(I)
  5842. IF ( ABS(DIV) .LT. 1.E-6 ) RSAME = 1.
  5843. AVK = SATCO*AVK / ( ( 1. + 3./BEE ) * DIV + RSAME )
  5844. AVKMIN = SATCO * AMIN1( TEMWPP(I), TEMWPP(I+1) )
  5845. AVKMAX = SATCO * AMAX1( TEMWPP(I), TEMWPP(I+1) )*1.01
  5846. AVK = AMAX1( AVK, AVKMIN )
  5847. AVK = AMIN1( AVK, AVKMAX )
  5848. !-----------------------------------------------------------------------
  5849. ! conductivities and base flow reduced when temperature drops below
  5850. ! freezing.
  5851. !-----------------------------------------------------------------------
  5852. !
  5853. TSNOW = AMIN1 ( TF-0.01, TGS )
  5854. AREAS = AMIN1 (0.999,13.2*SNOWW(2))
  5855. TGG = TSNOW*AREAS + TGS*(1.-AREAS)
  5856. TS = TGG*(2-I) + TD*(I-1)
  5857. PROPS = ( TS-(TF-10.) ) / 10.
  5858. ! props = 1.+5*(ts-tf)
  5859. PROPS = AMAX1( 0.05, AMIN1( 1.0, PROPS ) )
  5860. AVK = AVK * PROPS
  5861. Q3G = Q3G * PROPS
  5862. !
  5863. !-----------------------------------------------------------------------
  5864. ! backward implicit calculation of flows between soil layers.
  5865. !-----------------------------------------------------------------------
  5866. !
  5867. DPDWDZ = DPDW * 2./( ZDEPTH(I) + ZDEPTH(I+1) )
  5868. AAA(I) = 1. + AVK*DPDWDZ*( 1./ZDEPTH(I)+1./ZDEPTH(I+1) ) &
  5869. *DTT/POROS
  5870. BBB(I) =-AVK * DPDWDZ * 1./ZDEPTH(2)*DTT/POROS
  5871. CCC(I) = AVK * ( DPDWDZ * ( WWW(I)-WWW(I+1) ) + 1. + &
  5872. (I-1)*DPDWDZ*Q3G*1./ZDEPTH(3)*DTT/POROS )
  5873. 8200 CONTINUE
  5874. !
  5875. DENOM = ( AAA(1)*AAA(2) - BBB(1)*BBB(2) )
  5876. RDENOM = 0.
  5877. IF ( ABS(DENOM) .LT. 1.E-6 ) RDENOM = 1.
  5878. RDENOM = ( 1.-RDENOM)/( DENOM + RDENOM )
  5879. QQQ(1) = ( AAA(2)*CCC(1) - BBB(1)*CCC(2) ) * RDENOM
  5880. QQQ(2) = ( AAA(1)*CCC(2) - BBB(2)*CCC(1) ) * RDENOM
  5881. !
  5882. !-----------------------------------------------------------------------
  5883. ! update wetness of each soil moisture layer due to layer interflow
  5884. ! and base flow.
  5885. !-----------------------------------------------------------------------
  5886. !
  5887. WWW(3) = WWW(3) - Q3G*DTT/(POROS*ZDEPTH(3))
  5888. ROFF = ROFF + Q3G * DTT
  5889. !
  5890. do 8300 i = 1, 2
  5891. !
  5892. QMAX = WWW(I) * (POROS*ZDEPTH(I) /DTT)
  5893. QMIN = -WWW(I+1) * (POROS*ZDEPTH(I+1)/DTT)
  5894. QQQ(I) = AMIN1( QQQ(I),QMAX)
  5895. QQQ(I) = AMAX1( QQQ(I),QMIN)
  5896. WWW(I) = WWW(I) - QQQ(I)/(POROS*ZDEPTH(I) /DTT)
  5897. WWW(I+1) = WWW(I+1) + QQQ(I)/(POROS*ZDEPTH(I+1)/DTT)
  5898. 8300 continue
  5899. !
  5900. ! --- LOAD water flow & root-zone drainage PILPS DATA
  5901. !crr SOILDIF=SOILDIF+ QQQ(1)* DTT *1000.
  5902. !crr SOILDRA=SOILDRA+ Q3G* DTT *1000.
  5903. !
  5904. do 8400 i = 1, 3
  5905. EXCESS = AMAX1(0.,(WWW(I) - 1.))
  5906. WWW(I) = WWW(I) - EXCESS
  5907. ROFF = ROFF + EXCESS * POROS*ZDEPTH(I)
  5908. !
  5909. ! --- LOAD IN as root-drainage for PILPS
  5910. !crr IF (I.LT.2) THEN
  5911. !crr RNOFFS= RNOFFS+ 1000.*EXCESS*POROS*ZDEPTH(I)
  5912. !crr ELSE
  5913. !crr RNOFFB= RNOFFB+ 1000.*EXCESS*POROS*ZDEPTH(I)
  5914. !crr ENDIF
  5915. 8400 continue
  5916. !-----------------------------------------------------------------------
  5917. ! prevent negative values of www(i)
  5918. !-----------------------------------------------------------------------
  5919. !
  5920. do 8402 i = 1,2
  5921. DEFICIT = AMAX1 (0.,(1.E-12 - WWW(I)))
  5922. !crr IF (I.EQ.1) SOILDIF=SOILDIF-DEFICIT * ZDEPTH(1) * POROS
  5923. WWW (I) = WWW(I) + DEFICIT
  5924. WWW (I+1) = WWW(I+1) - DEFICIT * ZDEPTH(I) / ZDEPTH (I+1)
  5925. 8402 CONTINUE
  5926. WWW(3) = AMAX1 (WWW(3),1.E-12)
  5927. ! --------------------------------- end of subroutine RUN2 ------
  5928. 800 CONTINUE
  5929. !
  5930. IF (WWW(1) .GT.1.) THEN
  5931. WWW(2) = WWW(2) + (WWW(1)-1.) * ZDEPTH(1) / ZDEPTH(2)
  5932. !crr SOILDIF=SOILDIF+(WWW(1)-1.)* ZDEPTH(1) * POROS *1000.
  5933. WWW(1) = 1.
  5934. END IF
  5935. If (WWW(2) .GT.1.) THEN
  5936. WWW(3) = WWW(3) + (WWW(2)-1.) * ZDEPTH(2) / ZDEPTH(3)
  5937. !
  5938. ! --- LOAD IN AS PILP ROOT DRAINAGE
  5939. WWW(2) = 1.
  5940. END IF
  5941. IF (WWW(3) .GT.1.) THEN
  5942. ROFF = ROFF + (WWW(3)-1.)* ZDEPTH(3) * POROS
  5943. !crr RNOFFB=RNOFFB + (WWW(3)-1.)* ZDEPTH(3) * POROS *1000.
  5944. WWW(3) = 1.
  5945. END IF
  5946. !
  5947. !------------------------------------------------------
  5948. END SUBROUTINE UPDAT1
  5949. !------------------------------------------------------
  5950. !=======================================================================
  5951. !
  5952. SUBROUTINE UPDAT1_ICE(DTT,TC,TGS,TD,CAPAC,DTC,DTG,ECT,ECI,EGT,EGI, &
  5953. EGS,EG,HC,HG,HFLUX,ETMASS,FILTR,SOILDIF,SOILDRA,ROFF, &
  5954. RNOFFB,RNOFFS,NROOT,ROOTD,ROOTP,POROS,BEE,SATCO,SLOPE, &
  5955. PHSAT,ZDEPTH,WWW,CCX,CG,CHF,SHF,SMELT)
  5956. ! 12 AUGUST 2000
  5957. !=======================================================================
  5958. !
  5959. ! UPDATING OF SOIL MOISTURE STORES AND INTERCEPTION CAPACITY
  5960. !
  5961. !-----------------------------------------------------------------------
  5962. !----------------------------------------------------------------------
  5963. REAL, DIMENSION (2) :: CAPAC, SNOWW, ROOTD, aaa, bbb, ccc, qqq
  5964. REAL, DIMENSION (3) :: WWW, EF, ZDEPTH, ROOTP, temw, temwp, temwpp
  5965. !
  5966. !----------------------------------------------------------------------
  5967. ! EVAPORATION LOSSES ARE EXPRESSED IN J M-2 : WHEN DIVIDED BY
  5968. ! ( HLAT*1000.) LOSS IS IN M M-2
  5969. ! MASS TERMS ARE IN KG M-2 DT-1
  5970. !----------------------------------------------------------------------
  5971. !
  5972. SNOFAC = HLAT / ( HLAT + SNOMEL /1000. )
  5973. FACKS = 1.
  5974. IF ( (TC-DTC) .LE. TF ) FACKS = SNOFAC
  5975. IF ( (ECT+ECI) .GT. 0.) GO TO 100
  5976. ECI = ECT + ECI
  5977. ECT = 0.
  5978. FACKS = 1. / FACKS
  5979. 100 CAPAC(1)=CAPAC(1) - ECI*FACKS/HLAT/1000.
  5980. !
  5981. ECMASS = ( ECT + ECI * FACKS ) / HLAT
  5982. !
  5983. FACKS = 1.
  5984. IF ( (TGS-DTG) .LE. TF ) FACKS = SNOFAC
  5985. IF ( (EGT+EGI) .GT. 0. ) GO TO 200
  5986. EGI = EGT + EGI
  5987. EGT = 0.
  5988. FACKS = 1. / FACKS
  5989. 200 CAPAC(2)=CAPAC(2) - EGI*FACKS/HLAT/1000.
  5990. !
  5991. EGMASS = ( EGT + EGS + EGI * FACKS ) / HLAT
  5992. !
  5993. ETMASS = ECMASS + EGMASS
  5994. !
  5995. HFLUX = ( HC + HG )
  5996. !
  5997. !----------------------------------------------------------------------
  5998. ! DUMPING OF SMALL CAPAC VALUES ONTO SOIL SURFACE STORE
  5999. !----------------------------------------------------------------------
  6000. !
  6001. DO 1000 IVEG = 1, 2
  6002. IF ( CAPAC(IVEG) .GT. 0.000001 ) GO TO 300
  6003. FILTR = FILTR + CAPAC(IVEG)
  6004. WWW(1) = WWW(1) + CAPAC(IVEG) / ( POROS*ZDEPTH(1) )
  6005. CAPAC(IVEG) = 0.
  6006. 300 CONTINUE
  6007. 1000 CONTINUE
  6008. !----------------------------------------------------------------------
  6009. ! SNOWMELT / REFREEZE CALCULATION
  6010. !----------------------------------------------------------------------
  6011. !
  6012. ! CALCULATION OF SNOWMELT AND MODIFICATION OF TEMPERATURES
  6013. ! N.B. THIS VERSION DEALS WITH REFREEZING OF WATER
  6014. !
  6015. !-----------------------------------------------------------------------
  6016. !
  6017. DO 7000 IVEG = 1, 2
  6018. !
  6019. CCT = CCX
  6020. TS = TC
  6021. DTS = DTC
  6022. FLUX = CHF
  6023. IF ( IVEG .EQ. 1 ) GO TO 7100
  6024. CCT = CG
  6025. TS = TGS
  6026. DTS = DTG
  6027. FLUX = CCT * DTG / DTT
  6028. 7100 CONTINUE
  6029. !
  6030. TTA = TS - DTS
  6031. TTB = TS
  6032. SNOWW(IVEG) = 0.
  6033. IF ( TTA .LE. TF ) SNOWW(IVEG) = CAPAC(IVEG)
  6034. CAPAC(IVEG) = CAPAC(IVEG) - SNOWW(IVEG)
  6035. IF ( TTA .GT. TF .AND. TTB .GT. TF ) GO TO 7200
  6036. IF ( TTA .LE. TF .AND. TTB .LE. TF ) GO TO 7200
  6037. !
  6038. DTF = TF - TTA
  6039. DTIME1 = CCT * DTF / FLUX
  6040. HF = FLUX*(DTT-DTIME1)
  6041. FCAP = - CAPAC(IVEG) * SNOMEL
  6042. SPWET = AMIN1( 5. , SNOWW(IVEG) )
  6043. IF ( DTS .GT. 0. ) FCAP = SPWET * SNOMEL
  6044. DTIME2 = FCAP / FLUX
  6045. DTF2 = FLUX * (DTT-DTIME1-DTIME2)/CCT
  6046. TN = TF + DTF2
  6047. TS = TF - 0.1
  6048. IF (ABS(HF) .GE.ABS(FCAP) ) TS = TN
  6049. CHANGE = HF
  6050. IF (ABS(CHANGE) .GE.ABS(FCAP) ) CHANGE = FCAP
  6051. !
  6052. CHANGE = CHANGE / SNOMEL
  6053. !
  6054. IF (CHANGE.GT.0.0) SMELT=CHANGE+SMELT
  6055. !
  6056. SNOWW(IVEG) = SNOWW(IVEG) - CHANGE
  6057. CAPAC(IVEG) = CAPAC(IVEG) + CHANGE
  6058. !
  6059. IF ( IVEG .EQ. 1 ) TC = TS
  6060. IF ( IVEG .EQ. 2 ) TGS = TS
  6061. IF ( SNOWW(IVEG) .LT. 0.00001 ) GO TO 7200
  6062. ZMELT = 0.
  6063. ! modified to force water into soil. Xue Feb. 1994
  6064. ZMELT = CAPAC(IVEG)
  6065. FILTR = FILTR+ ZMELT
  6066. WWW(1) = WWW(1) + ZMELT / ( POROS * ZDEPTH(1) )
  6067. CAPAC(IVEG) = 0.
  6068. 7200 CONTINUE
  6069. !
  6070. CAPAC(IVEG) = CAPAC(IVEG) + SNOWW(IVEG)
  6071. !
  6072. 7000 CONTINUE
  6073. !
  6074. FLUXEF = SHF - CCT*DTG/DTT
  6075. TD = TD + FLUXEF / ( CG * 2. * SQRT ( PIE*365. ) ) * DTT
  6076. !
  6077. change=0.0
  6078. !
  6079. !----------------------------------------------------------------------
  6080. ! BARE SOIL EVAPORATION LOSS
  6081. !----------------------------------------------------------------------
  6082. !
  6083. FILTR = FILTR - EGS / HLAT / 1000.
  6084. WWW(1) = WWW(1) - EGS / HLAT / 1000. / ( POROS * ZDEPTH(1) )
  6085. !
  6086. !----------------------------------------------------------------------
  6087. ! EXTRACTION OF TRANSPIRATION LOSS FROM ROOT ZONE
  6088. !----------------------------------------------------------------------
  6089. !
  6090. DO 2000 IVEG = 1, 2
  6091. !
  6092. IF ( IVEG .EQ. 1 ) ABSOIL = ECT / HLAT / 1000.
  6093. IF ( IVEG .EQ. 2 ) ABSOIL = EGT / HLAT / 1000.
  6094. !
  6095. IF (NROOT.EQ.1) THEN
  6096. EF(2) = 0.
  6097. EF(3) = 0.
  6098. TOTDEP = ZDEPTH(1)
  6099. !
  6100. DO 3000 IL = 2, 3
  6101. TOTDEP = TOTDEP + ZDEPTH(IL)
  6102. !
  6103. IF ( ROOTD(IVEG) .LT. TOTDEP ) GO TO 400
  6104. !
  6105. EF(IL) = ZDEPTH(IL) / ROOTD(IVEG)
  6106. GO TO 500
  6107. !
  6108. 400 CONTINUE
  6109. EF(IL) = ROOTD(IVEG) - TOTDEP + ZDEPTH(IL)
  6110. EF(IL) = EF(IL) / ROOTD(IVEG)
  6111. GO TO 600
  6112. !
  6113. 500 CONTINUE
  6114. 3000 CONTINUE
  6115. !
  6116. 600 EFT = EF(2) + EF(3)
  6117. !
  6118. EFT = MAX(EFT,0.1E-5)
  6119. !
  6120. EF(2) = EF(2) / EFT
  6121. EF(3) = EF(3) / EFT
  6122. !
  6123. DO 4000 IL = 2, 3
  6124. WWW(IL) = WWW(IL) - ABSOIL * EF(IL) / ( POROS * ZDEPTH(IL) )
  6125. 4000 CONTINUE
  6126. ELSE
  6127. EF(1) = ROOTP(1)
  6128. EF(2) = ROOTP(2)
  6129. EF(3) = ROOTP(3)
  6130. DO 4004 IL = 1, 3
  6131. WWW(IL) = WWW(IL) - ABSOIL * EF(IL) / ( POROS * ZDEPTH(IL) )
  6132. 4004 CONTINUE
  6133. END IF
  6134. !
  6135. 2000 CONTINUE
  6136. !
  6137. !----------------------------------------------------------------------
  6138. !
  6139. ! CALCULATION OF INTERFLOW, INFILTRATION EXCESS AND LOSS TO
  6140. ! GROUNDWATER . ALL LOSSES ARE ASSIGNED TO VARIABLE 'ROFF' .
  6141. !
  6142. !----------------------------------------------------------------------
  6143. !
  6144. DO 5000 IL = 1, 2
  6145. IF ( WWW(IL) .GT. 0. ) GO TO 700
  6146. WWW(IL+1) = WWW(IL+1) + WWW(IL) * ZDEPTH(IL)/ZDEPTH(IL+1)
  6147. WWW(IL) = 0.
  6148. 700 CONTINUE
  6149. 5000 CONTINUE
  6150. !
  6151. !=======================================================================
  6152. ! calculation of interflow, infiltration excess and loss to
  6153. ! groundwater . all losses are assigned to variable 'roff' .
  6154. !----------------------------------------------------------------------
  6155. !
  6156. do 8000 i = 1, 3
  6157. !
  6158. TEMW(I) = AMAX1( 0.03, WWW(I) )
  6159. TEMWP(I) = TEMW(I) ** ( -BEE )
  6160. TEMWPP(I) = AMIN1( 1., TEMW(I)) ** ( 2.*BEE+ 3. )
  6161. 8000 CONTINUE
  6162. !
  6163. !-----------------------------------------------------------------------
  6164. !
  6165. ! calculation of gravitationally driven drainage from w(3) : taken
  6166. ! as an integral of time varying conductivity.addition of liston
  6167. ! baseflow term to original q3g to insure flow in
  6168. ! dry season. modified liston baseflow constant scaled
  6169. ! by available water.
  6170. !
  6171. ! q3g (q3) : equation (62) , SE-86
  6172. !
  6173. !-----------------------------------------------------------------------
  6174. !
  6175. POWS = 2.*BEE+2.
  6176. Q3G = TEMW(3)**(-POWS) + SATCO/ZDEPTH(3)/POROS*SLOPE*POWS*DTT
  6177. Q3G = Q3G ** ( 1. / POWS )
  6178. Q3G = - ( 1. / Q3G - WWW(3) ) * POROS * ZDEPTH(3) / DTT
  6179. Q3G = AMAX1( 0., Q3G )
  6180. Q3G = AMIN1( Q3G, WWW(3)*POROS*ZDEPTH(3)/DTT )
  6181. !
  6182. Q3G = Q3G + 0.002*POROS*ZDEPTH(3)*0.5 / 86400. * WWW(3)
  6183. !
  6184. !----------------------------------------------------------------------
  6185. !
  6186. ! calculation of inter-layer exchanges of water due to gravitation
  6187. ! and hydraulic gradient. the values of w(x) + dw(x) are used to
  6188. ! calculate the potential gradients between layers.
  6189. ! modified calculation of mean conductivities follows ME-82 ),
  6190. ! reduces recharge flux to top layer.
  6191. !
  6192. ! dpdw : estimated derivative of soil moisture potential
  6193. ! with respect to soil wetness. assumption of
  6194. ! gravitational drainage used to estimate likely
  6195. ! minimum wetness over the time step.
  6196. !
  6197. ! qqq (q ) : equation (61) , SE-86
  6198. ! i,i+1
  6199. ! -
  6200. ! avk (k ) : equation (4.14) , ME-82
  6201. ! i,i+1
  6202. !
  6203. !----------------------------------------------------------------------
  6204. !
  6205. WMAX = AMAX1( WWW(1), WWW(2), WWW(3), 0.05 )
  6206. WMAX = AMIN1( WMAX, 1. )
  6207. PMAX = WMAX**(-BEE)
  6208. WMIN = (PMAX-2./( PHSAT*(ZDEPTH(1)+2.*ZDEPTH(2)+ZDEPTH(3)))) &
  6209. **(-1./BEE)
  6210. WMIN = AMIN1( WWW(1), WWW(2), WWW(3), WMIN )
  6211. WMIN = AMAX1( WMIN, 0.02 )
  6212. PMIN = WMIN**(-BEE)
  6213. DPDW = PHSAT*( PMAX-PMIN )/( WMAX-WMIN )
  6214. !
  6215. DO 8200 I = 1, 2
  6216. !
  6217. RSAME = 0.
  6218. AVK = TEMWP(I)*TEMWPP(I) - TEMWP(I+1)*TEMWPP(I+1)
  6219. DIV = TEMWP(I+1) - TEMWP(I)
  6220. IF ( ABS(DIV) .LT. 1.E-6 ) RSAME = 1.
  6221. AVK = SATCO*AVK / ( ( 1. + 3./BEE ) * DIV + RSAME )
  6222. AVKMIN = SATCO * AMIN1( TEMWPP(I), TEMWPP(I+1) )
  6223. AVKMAX = SATCO * AMAX1( TEMWPP(I), TEMWPP(I+1) )*1.01
  6224. AVK = AMAX1( AVK, AVKMIN )
  6225. AVK = AMIN1( AVK, AVKMAX )
  6226. !
  6227. !-----------------------------------------------------------------------
  6228. ! conductivities and base flow reduced when temperature drops below
  6229. ! freezing.
  6230. !-----------------------------------------------------------------------
  6231. !
  6232. TSNOW = AMIN1 ( TF-0.01, TGS )
  6233. AREAS = AMIN1 (0.999,13.2*SNOWW(2))
  6234. TGG = TSNOW*AREAS + TGS*(1.-AREAS)
  6235. TS = TGG*(2-I) + TD*(I-1)
  6236. PROPS = ( TS-(TF-10.) ) / 10.
  6237. PROPS = AMAX1( 0.05, AMIN1( 1.0, PROPS ) )
  6238. AVK = AVK * PROPS
  6239. Q3G = Q3G * PROPS
  6240. !
  6241. !-----------------------------------------------------------------------
  6242. ! backward implicit calculation of flows between soil layers.
  6243. !-----------------------------------------------------------------------
  6244. !
  6245. DPDWDZ = DPDW * 2./( ZDEPTH(I) + ZDEPTH(I+1) )
  6246. AAA(I) = 1. + AVK*DPDWDZ*( 1./ZDEPTH(I)+1./ZDEPTH(I+1) ) &
  6247. *DTT/POROS
  6248. BBB(I) =-AVK * DPDWDZ * 1./ZDEPTH(2)*DTT/POROS
  6249. CCC(I) = AVK * ( DPDWDZ * ( WWW(I)-WWW(I+1) ) + 1. + &
  6250. (I-1)*DPDWDZ*Q3G*1./ZDEPTH(3)*DTT/POROS )
  6251. 8200 CONTINUE
  6252. !
  6253. DENOM = ( AAA(1)*AAA(2) - BBB(1)*BBB(2) )
  6254. RDENOM = 0.
  6255. IF ( ABS(DENOM) .LT. 1.E-6 ) RDENOM = 1.
  6256. RDENOM = ( 1.-RDENOM)/( DENOM + RDENOM )
  6257. QQQ(1) = ( AAA(2)*CCC(1) - BBB(1)*CCC(2) ) * RDENOM
  6258. QQQ(2) = ( AAA(1)*CCC(2) - BBB(2)*CCC(1) ) * RDENOM
  6259. !
  6260. !-----------------------------------------------------------------------
  6261. ! update wetness of each soil moisture layer due to layer interflow
  6262. ! and base flow.
  6263. !-----------------------------------------------------------------------
  6264. !
  6265. WWW(3) = WWW(3) - Q3G*DTT/(POROS*ZDEPTH(3))
  6266. ROFF = ROFF + Q3G * DTT
  6267. !
  6268. DO 8300 I = 1, 2
  6269. !
  6270. QMAX = WWW(I) * (POROS*ZDEPTH(I) /DTT)
  6271. QMIN = -WWW(I+1) * (POROS*ZDEPTH(I+1)/DTT)
  6272. QQQ(I) = AMIN1( QQQ(I),QMAX)
  6273. QQQ(I) = AMAX1( QQQ(I),QMIN)
  6274. WWW(I) = WWW(I) - QQQ(I)/(POROS*ZDEPTH(I) /DTT)
  6275. WWW(I+1) = WWW(I+1) + QQQ(I)/(POROS*ZDEPTH(I+1)/DTT)
  6276. 8300 CONTINUE
  6277. !
  6278. ! *** LOAD water flow & root-zone drainage PILPS DATA
  6279. SOILDIF=SOILDIF+QQQ(1)*DTT*1000.
  6280. SOILDRA=SOILDRA+Q3G*DTT*1000.
  6281. !
  6282. DO 8400 I = 1, 3
  6283. EXCESS = AMAX1(0.,(WWW(I) - 1.))
  6284. WWW(I) = WWW(I) - EXCESS
  6285. ROFF = ROFF + EXCESS * POROS*ZDEPTH(I)
  6286. !
  6287. ! *** LOAD IN as root-drainage for PILPS
  6288. IF (I.LT.2) THEN
  6289. RNOFFS= RNOFFS+ 1000.*EXCESS*POROS*ZDEPTH(I)
  6290. ELSE
  6291. RNOFFB= RNOFFB+ 1000.*EXCESS*POROS*ZDEPTH(I)
  6292. ENDIF
  6293. 8400 CONTINUE
  6294. !
  6295. !-----------------------------------------------------------------------
  6296. ! prevent negative values of www(i)
  6297. !-----------------------------------------------------------------------
  6298. !
  6299. DO 8402 I = 1,2
  6300. DEFICIT = AMAX1 (0.,(1.E-12 - WWW(I)))
  6301. IF (I.EQ.1) SOILDIF=SOILDIF-DEFICIT* &
  6302. ZDEPTH(1)*POROS
  6303. WWW (I) = WWW(I) + DEFICIT
  6304. WWW (I+1) = WWW(I+1) - DEFICIT * ZDEPTH(I) / ZDEPTH (I+1)
  6305. 8402 CONTINUE
  6306. WWW(3) = AMAX1 (WWW(3),1.E-12)
  6307. !
  6308. 800 CONTINUE
  6309. !
  6310. IF (WWW(1) .GT.1.) THEN
  6311. WWW(2) = WWW(2) + (WWW(1)-1.) * ZDEPTH(1)/ &
  6312. ZDEPTH(2)
  6313. SOILDIF=SOILDIF+(WWW(1)-1.)*ZDEPTH(1) &
  6314. *POROS*1000.
  6315. WWW(1) = 1.
  6316. END IF
  6317. If (WWW(2) .GT.1.) WWW(3) = WWW(3) + (WWW(2)-1.) * &
  6318. ZDEPTH(2) / ZDEPTH(3)
  6319. !
  6320. ! *** LOAD IN AS PILP ROOT DRAINAGE
  6321. IF (WWW(2) .GT.1.) WWW(2) = 1.
  6322. IF (WWW(3) .GT.1.) THEN
  6323. ROFF = ROFF + (WWW(3)-1.)*POROS*ZDEPTH(3)
  6324. RNOFFB=RNOFFB+((WWW(3)-1.)*ZDEPTH(3)* &
  6325. POROS*1000.)
  6326. WWW(3) = 1.
  6327. END IF
  6328. !
  6329. !------------------------------------------------------
  6330. END SUBROUTINE UPDAT1_ICE
  6331. !------------------------------------------------------
  6332. !=======================================================================
  6333. !
  6334. SUBROUTINE CONVDIM(IOFLAG, &
  6335. DZO1,WO1,TSSN1,TSSNO1,BWO1,BTO1,CTO1,FIO1,FLO1,BIO1,BLO1,HO1, &
  6336. DZO2,WO2,TSSN2,TSSNO2,BWO2,BTO2,CTO2,FIO2,FLO2,BIO2,BLO2,HO2, &
  6337. DZO3,WO3,TSSN3,TSSNO3,BWO3,BTO3,CTO3,FIO3,FLO3,BIO3,BLO3,HO3, &
  6338. DZO4,WO4,TSSN4,TSSNO4,BWO4,BTO4,CTO4,FIO4,FLO4,BIO4,BLO4,HO4, &
  6339. DZO, WO, TSSN, TSSNO, BWO, BTO, CTO, FIO, FLO, BIO, BLO, HO )
  6340. !
  6341. !=======================================================================
  6342. ! Ratko Oct., 2007
  6343. !----------------------------------------------------------------------
  6344. REAL, DIMENSION (4) :: DZO,WO,TSSN,TSSNO,BWO,BTO,CTO,FIO,FLO,BIO,BLO,HO
  6345. IF (IOFLAG.EQ.0) THEN ! variable to array
  6346. DZO (1) = DZO1
  6347. WO (1) = WO1
  6348. TSSN (1) = TSSN1
  6349. TSSNO (1) = TSSNO1
  6350. BWO (1) = BWO1
  6351. BTO (1) = BTO1
  6352. CTO (1) = CTO1
  6353. FIO (1) = FIO1
  6354. FLO (1) = FLO1
  6355. BIO (1) = BIO1
  6356. BLO (1) = BLO1
  6357. HO (1) = HO1
  6358. DZO (2) = DZO2
  6359. WO (2) = WO2
  6360. TSSN (2) = TSSN2
  6361. TSSNO (2) = TSSNO2
  6362. BWO (2) = BWO2
  6363. BTO (2) = BTO2
  6364. CTO (2) = CTO2
  6365. FIO (2) = FIO2
  6366. FLO (2) = FLO2
  6367. BIO (2) = BIO2
  6368. BLO (2) = BLO2
  6369. HO (2) = HO2
  6370. DZO (3) = DZO3
  6371. WO (3) = WO3
  6372. TSSN (3) = TSSN3
  6373. TSSNO (3) = TSSNO3
  6374. BWO (3) = BWO3
  6375. BTO (3) = BTO3
  6376. CTO (3) = CTO3
  6377. FIO (3) = FIO3
  6378. FLO (3) = FLO3
  6379. BIO (3) = BIO3
  6380. BLO (3) = BLO3
  6381. HO (3) = HO3
  6382. DZO (4) = DZO4
  6383. WO (4) = WO4
  6384. TSSN (4) = TSSN4
  6385. TSSNO (4) = TSSNO4
  6386. BWO (4) = BWO4
  6387. BTO (4) = BTO4
  6388. CTO (4) = CTO4
  6389. FIO (4) = FIO4
  6390. FLO (4) = FLO4
  6391. BIO (4) = BIO4
  6392. BLO (4) = BLO4
  6393. HO (4) = HO4
  6394. ELSEIF (IOFLAG.EQ.1) THEN ! array to variable
  6395. DZO1 = DZO(1)
  6396. WO1 = WO(1)
  6397. TSSN1 = TSSN(1)
  6398. TSSNO1 = TSSNO(1)
  6399. BWO1 = BWO(1)
  6400. BTO1 = BTO(1)
  6401. CTO1 = CTO(1)
  6402. FIO1 = FIO(1)
  6403. FLO1 = FLO(1)
  6404. BIO1 = BIO(1)
  6405. BLO1 = BLO(1)
  6406. HO1 = HO(1)
  6407. DZO2 = DZO(2)
  6408. WO2 = WO(2)
  6409. TSSN2 = TSSN(2)
  6410. TSSNO2 = TSSNO(2)
  6411. BWO2 = BWO(2)
  6412. BTO2 = BTO(2)
  6413. CTO2 = CTO(2)
  6414. FIO2 = FIO(2)
  6415. FLO2 = FLO(2)
  6416. BIO2 = BIO(2)
  6417. BLO2 = BLO(2)
  6418. HO2 = HO(2)
  6419. DZO3 = DZO(3)
  6420. WO3 = WO(3)
  6421. TSSN3 = TSSN(3)
  6422. TSSNO3 = TSSNO(3)
  6423. BWO3 = BWO(3)
  6424. BTO3 = BTO(3)
  6425. CTO3 = CTO(3)
  6426. FIO3 = FIO(3)
  6427. FLO3 = FLO(3)
  6428. BIO3 = BIO(3)
  6429. BLO3 = BLO(3)
  6430. HO3 = HO(3)
  6431. DZO4 = DZO(4)
  6432. WO4 = WO(4)
  6433. TSSN4 = TSSN(4)
  6434. TSSNO4 = TSSNO(4)
  6435. BWO4 = BWO(4)
  6436. BTO4 = BTO(4)
  6437. CTO4 = CTO(4)
  6438. FIO4 = FIO(4)
  6439. FLO4 = FLO(4)
  6440. BIO4 = BIO(4)
  6441. BLO4 = BLO(4)
  6442. HO4 = HO(4)
  6443. ELSE
  6444. print*,'something wrong in CONVDIM',IOFLAG
  6445. STOP
  6446. ENDIF
  6447. !------------------------------------------------------
  6448. END SUBROUTINE CONVDIM
  6449. !------------------------------------------------------
  6450. END MODULE module_sf_ssib