Changeset 3572
- Timestamp:
- Nov 28, 2018 11:40:28 AM (6 years ago)
- Location:
- palm/trunk/SOURCE
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/radiation_model_mod.f90
r3528 r3572 28 28 ! ----------------- 29 29 ! $Id$ 30 ! Add filling the short- and longwave radiation flux arrays (e.g. diffuse, 31 ! direct, reflected, resedual) for all surfaces. This is required to surface 32 ! outputs in suface_output_mod. (M. Salim) 33 ! 34 ! 3571 2018-11-28 09:24:03Z moh.hefny 30 35 ! Add an epsilon value to compare values in if statement to fix possible 31 36 ! precsion related errors in raytrace routines. … … 692 697 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: rad_sw_out_xy_av !< average of outgoing shortwave radiation at surface 693 698 ! 694 !-- Land surface albedos for solar zenith angle of 60 ° after Briegleb (1992)699 !-- Land surface albedos for solar zenith angle of 60° after Briegleb (1992) 695 700 !-- (shortwave, longwave, broadband): sw, lw, bb, 696 701 REAL(wp), DIMENSION(0:2,1:33), PARAMETER :: albedo_pars = RESHAPE( (/& … … 788 793 rrtm_cfc22vmr, & !< CFC22 volume mixing ratio (g/mol) 789 794 rrtm_ch4vmr, & !< CH4 volume mixing ratio 790 rrtm_cicewp, & !< in-cloud ice water path (g/m ²)795 rrtm_cicewp, & !< in-cloud ice water path (g/m2) 791 796 rrtm_cldfr, & !< cloud fraction (0,1) 792 rrtm_cliqwp, & !< in-cloud liquid water path (g/m ²)797 rrtm_cliqwp, & !< in-cloud liquid water path (g/m2) 793 798 rrtm_co2vmr, & !< CO2 volume mixing ratio (g/mol) 794 799 rrtm_emis, & !< surface emissivity (0-1) … … 1710 1715 ALLOCATE( surf_lsm_h%rad_sw_in(1:surf_lsm_h%ns) ) 1711 1716 ALLOCATE( surf_lsm_h%rad_sw_out(1:surf_lsm_h%ns) ) 1717 ALLOCATE( surf_lsm_h%rad_sw_dir(1:surf_lsm_h%ns) ) 1718 ALLOCATE( surf_lsm_h%rad_sw_dif(1:surf_lsm_h%ns) ) 1719 ALLOCATE( surf_lsm_h%rad_sw_ref(1:surf_lsm_h%ns) ) 1720 ALLOCATE( surf_lsm_h%rad_sw_res(1:surf_lsm_h%ns) ) 1712 1721 ALLOCATE( surf_lsm_h%rad_lw_in(1:surf_lsm_h%ns) ) 1713 1722 ALLOCATE( surf_lsm_h%rad_lw_out(1:surf_lsm_h%ns) ) 1723 ALLOCATE( surf_lsm_h%rad_lw_dif(1:surf_lsm_h%ns) ) 1724 ALLOCATE( surf_lsm_h%rad_lw_ref(1:surf_lsm_h%ns) ) 1725 ALLOCATE( surf_lsm_h%rad_lw_res(1:surf_lsm_h%ns) ) 1714 1726 surf_lsm_h%rad_sw_in = 0.0_wp 1715 1727 surf_lsm_h%rad_sw_out = 0.0_wp 1728 surf_lsm_h%rad_sw_dir = 0.0_wp 1729 surf_lsm_h%rad_sw_dif = 0.0_wp 1730 surf_lsm_h%rad_sw_ref = 0.0_wp 1731 surf_lsm_h%rad_sw_res = 0.0_wp 1716 1732 surf_lsm_h%rad_lw_in = 0.0_wp 1717 1733 surf_lsm_h%rad_lw_out = 0.0_wp 1734 surf_lsm_h%rad_lw_dif = 0.0_wp 1735 surf_lsm_h%rad_lw_ref = 0.0_wp 1736 surf_lsm_h%rad_lw_res = 0.0_wp 1718 1737 ENDIF 1719 1738 IF ( .NOT. ALLOCATED ( surf_usm_h%rad_sw_in ) .AND. & … … 1721 1740 ALLOCATE( surf_usm_h%rad_sw_in(1:surf_usm_h%ns) ) 1722 1741 ALLOCATE( surf_usm_h%rad_sw_out(1:surf_usm_h%ns) ) 1742 ALLOCATE( surf_usm_h%rad_sw_dir(1:surf_usm_h%ns) ) 1743 ALLOCATE( surf_usm_h%rad_sw_dif(1:surf_usm_h%ns) ) 1744 ALLOCATE( surf_usm_h%rad_sw_ref(1:surf_usm_h%ns) ) 1745 ALLOCATE( surf_usm_h%rad_sw_res(1:surf_usm_h%ns) ) 1723 1746 ALLOCATE( surf_usm_h%rad_lw_in(1:surf_usm_h%ns) ) 1724 1747 ALLOCATE( surf_usm_h%rad_lw_out(1:surf_usm_h%ns) ) 1748 ALLOCATE( surf_usm_h%rad_lw_dif(1:surf_usm_h%ns) ) 1749 ALLOCATE( surf_usm_h%rad_lw_ref(1:surf_usm_h%ns) ) 1750 ALLOCATE( surf_usm_h%rad_lw_res(1:surf_usm_h%ns) ) 1725 1751 surf_usm_h%rad_sw_in = 0.0_wp 1726 1752 surf_usm_h%rad_sw_out = 0.0_wp 1753 surf_usm_h%rad_sw_dir = 0.0_wp 1754 surf_usm_h%rad_sw_dif = 0.0_wp 1755 surf_usm_h%rad_sw_ref = 0.0_wp 1756 surf_usm_h%rad_sw_res = 0.0_wp 1727 1757 surf_usm_h%rad_lw_in = 0.0_wp 1728 1758 surf_usm_h%rad_lw_out = 0.0_wp 1759 surf_usm_h%rad_lw_dif = 0.0_wp 1760 surf_usm_h%rad_lw_ref = 0.0_wp 1761 surf_usm_h%rad_lw_res = 0.0_wp 1729 1762 ENDIF 1730 1763 DO l = 0, 3 … … 1733 1766 ALLOCATE( surf_lsm_v(l)%rad_sw_in(1:surf_lsm_v(l)%ns) ) 1734 1767 ALLOCATE( surf_lsm_v(l)%rad_sw_out(1:surf_lsm_v(l)%ns) ) 1768 ALLOCATE( surf_lsm_v(l)%rad_sw_dir(1:surf_lsm_v(l)%ns) ) 1769 ALLOCATE( surf_lsm_v(l)%rad_sw_dif(1:surf_lsm_v(l)%ns) ) 1770 ALLOCATE( surf_lsm_v(l)%rad_sw_ref(1:surf_lsm_v(l)%ns) ) 1771 ALLOCATE( surf_lsm_v(l)%rad_sw_res(1:surf_lsm_v(l)%ns) ) 1772 1735 1773 ALLOCATE( surf_lsm_v(l)%rad_lw_in(1:surf_lsm_v(l)%ns) ) 1736 1774 ALLOCATE( surf_lsm_v(l)%rad_lw_out(1:surf_lsm_v(l)%ns) ) 1775 ALLOCATE( surf_lsm_v(l)%rad_lw_dif(1:surf_lsm_v(l)%ns) ) 1776 ALLOCATE( surf_lsm_v(l)%rad_lw_ref(1:surf_lsm_v(l)%ns) ) 1777 ALLOCATE( surf_lsm_v(l)%rad_lw_res(1:surf_lsm_v(l)%ns) ) 1778 1737 1779 surf_lsm_v(l)%rad_sw_in = 0.0_wp 1738 surf_lsm_v(l)%rad_sw_out = 0.0_wp 1780 surf_lsm_v(l)%rad_sw_out = 0.0_wp 1781 surf_lsm_v(l)%rad_sw_dir = 0.0_wp 1782 surf_lsm_v(l)%rad_sw_dif = 0.0_wp 1783 surf_lsm_v(l)%rad_sw_ref = 0.0_wp 1784 surf_lsm_v(l)%rad_sw_res = 0.0_wp 1785 1739 1786 surf_lsm_v(l)%rad_lw_in = 0.0_wp 1740 1787 surf_lsm_v(l)%rad_lw_out = 0.0_wp 1788 surf_lsm_v(l)%rad_lw_dif = 0.0_wp 1789 surf_lsm_v(l)%rad_lw_ref = 0.0_wp 1790 surf_lsm_v(l)%rad_lw_res = 0.0_wp 1741 1791 ENDIF 1742 1792 IF ( .NOT. ALLOCATED ( surf_usm_v(l)%rad_sw_in ) .AND. & … … 1744 1794 ALLOCATE( surf_usm_v(l)%rad_sw_in(1:surf_usm_v(l)%ns) ) 1745 1795 ALLOCATE( surf_usm_v(l)%rad_sw_out(1:surf_usm_v(l)%ns) ) 1796 ALLOCATE( surf_usm_v(l)%rad_sw_dir(1:surf_usm_v(l)%ns) ) 1797 ALLOCATE( surf_usm_v(l)%rad_sw_dif(1:surf_usm_v(l)%ns) ) 1798 ALLOCATE( surf_usm_v(l)%rad_sw_ref(1:surf_usm_v(l)%ns) ) 1799 ALLOCATE( surf_usm_v(l)%rad_sw_res(1:surf_usm_v(l)%ns) ) 1746 1800 ALLOCATE( surf_usm_v(l)%rad_lw_in(1:surf_usm_v(l)%ns) ) 1747 1801 ALLOCATE( surf_usm_v(l)%rad_lw_out(1:surf_usm_v(l)%ns) ) 1802 ALLOCATE( surf_usm_v(l)%rad_lw_dif(1:surf_usm_v(l)%ns) ) 1803 ALLOCATE( surf_usm_v(l)%rad_lw_ref(1:surf_usm_v(l)%ns) ) 1804 ALLOCATE( surf_usm_v(l)%rad_lw_res(1:surf_usm_v(l)%ns) ) 1748 1805 surf_usm_v(l)%rad_sw_in = 0.0_wp 1749 surf_usm_v(l)%rad_sw_out = 0.0_wp 1806 surf_usm_v(l)%rad_sw_out = 0.0_wp 1807 surf_usm_v(l)%rad_sw_dir = 0.0_wp 1808 surf_usm_v(l)%rad_sw_dif = 0.0_wp 1809 surf_usm_v(l)%rad_sw_ref = 0.0_wp 1810 surf_usm_v(l)%rad_sw_res = 0.0_wp 1750 1811 surf_usm_v(l)%rad_lw_in = 0.0_wp 1751 1812 surf_usm_v(l)%rad_lw_out = 0.0_wp 1813 surf_usm_v(l)%rad_lw_dif = 0.0_wp 1814 surf_usm_v(l)%rad_lw_ref = 0.0_wp 1815 surf_usm_v(l)%rad_lw_res = 0.0_wp 1752 1816 ENDIF 1753 1817 ENDDO … … 3200 3264 ! 3201 3265 !-- Calculate liquid water path and cloud fraction for each column. 3202 !-- Note that LWP is required in g/m ²instead of kg/kg m.3266 !-- Note that LWP is required in g/m2 instead of kg/kg m. 3203 3267 rrtm_cldfr = 0.0_wp 3204 3268 rrtm_reliq = 0.0_wp … … 3386 3450 ! 3387 3451 !-- Calculate liquid water path and cloud fraction for each column. 3388 !-- Note that LWP is required in g/m ²instead of kg/kg m.3452 !-- Note that LWP is required in g/m2 instead of kg/kg m. 3389 3453 rrtm_cldfr = 0.0_wp 3390 3454 rrtm_reliq = 0.0_wp … … 5136 5200 surf_usm_h%rad_sw_in(m) = surfinsw(i) 5137 5201 surf_usm_h%rad_sw_out(m) = surfoutsw(i) 5202 surf_usm_h%rad_sw_dir(m) = surfinswdir(i) 5203 surf_usm_h%rad_sw_dif(m) = surfinswdif(i) 5204 surf_usm_h%rad_sw_ref(m) = surfinsw(i) - surfinswdir(i) - & 5205 surfinswdif(i) 5206 surf_usm_h%rad_sw_res(m) = surfins(i) 5138 5207 surf_usm_h%rad_lw_in(m) = surfinlw(i) 5139 5208 surf_usm_h%rad_lw_out(m) = surfoutlw(i) … … 5141 5210 surfinlw(i) - surfoutlw(i) 5142 5211 surf_usm_h%rad_net_l(m) = surf_usm_h%rad_net(m) 5212 surf_usm_h%rad_lw_dif(m) = surfinlwdif(i) 5213 surf_usm_h%rad_lw_ref(m) = surfinlw(i) - surfinlwdif(i) 5214 surf_usm_h%rad_lw_res(m) = surfinl(i) 5143 5215 ! 5144 5216 !-- northward-facding … … 5146 5218 surf_usm_v(0)%rad_sw_in(m) = surfinsw(i) 5147 5219 surf_usm_v(0)%rad_sw_out(m) = surfoutsw(i) 5220 surf_usm_v(0)%rad_sw_dir(m) = surfinswdir(i) 5221 surf_usm_v(0)%rad_sw_dif(m) = surfinswdif(i) 5222 surf_usm_v(0)%rad_sw_ref(m) = surfinsw(i) - surfinswdir(i) - & 5223 surfinswdif(i) 5224 surf_usm_v(0)%rad_sw_res(m) = surfins(i) 5148 5225 surf_usm_v(0)%rad_lw_in(m) = surfinlw(i) 5149 5226 surf_usm_v(0)%rad_lw_out(m) = surfoutlw(i) … … 5151 5228 surfinlw(i) - surfoutlw(i) 5152 5229 surf_usm_v(0)%rad_net_l(m) = surf_usm_v(0)%rad_net(m) 5230 surf_usm_v(0)%rad_lw_dif(m) = surfinlwdif(i) 5231 surf_usm_v(0)%rad_lw_ref(m) = surfinlw(i) - surfinlwdif(i) 5232 surf_usm_v(0)%rad_lw_res(m) = surfinl(i) 5153 5233 ! 5154 5234 !-- southward-facding … … 5156 5236 surf_usm_v(1)%rad_sw_in(m) = surfinsw(i) 5157 5237 surf_usm_v(1)%rad_sw_out(m) = surfoutsw(i) 5238 surf_usm_v(1)%rad_sw_dir(m) = surfinswdir(i) 5239 surf_usm_v(1)%rad_sw_dif(m) = surfinswdif(i) 5240 surf_usm_v(1)%rad_sw_ref(m) = surfinsw(i) - surfinswdir(i) - & 5241 surfinswdif(i) 5242 surf_usm_v(1)%rad_sw_res(m) = surfins(i) 5158 5243 surf_usm_v(1)%rad_lw_in(m) = surfinlw(i) 5159 5244 surf_usm_v(1)%rad_lw_out(m) = surfoutlw(i) … … 5161 5246 surfinlw(i) - surfoutlw(i) 5162 5247 surf_usm_v(1)%rad_net_l(m) = surf_usm_v(1)%rad_net(m) 5248 surf_usm_v(1)%rad_lw_dif(m) = surfinlwdif(i) 5249 surf_usm_v(1)%rad_lw_ref(m) = surfinlw(i) - surfinlwdif(i) 5250 surf_usm_v(1)%rad_lw_res(m) = surfinl(i) 5163 5251 ! 5164 5252 !-- eastward-facing … … 5166 5254 surf_usm_v(2)%rad_sw_in(m) = surfinsw(i) 5167 5255 surf_usm_v(2)%rad_sw_out(m) = surfoutsw(i) 5256 surf_usm_v(2)%rad_sw_dir(m) = surfinswdir(i) 5257 surf_usm_v(2)%rad_sw_dif(m) = surfinswdif(i) 5258 surf_usm_v(2)%rad_sw_ref(m) = surfinsw(i) - surfinswdir(i) - & 5259 surfinswdif(i) 5260 surf_usm_v(2)%rad_sw_res(m) = surfins(i) 5168 5261 surf_usm_v(2)%rad_lw_in(m) = surfinlw(i) 5169 5262 surf_usm_v(2)%rad_lw_out(m) = surfoutlw(i) … … 5171 5264 surfinlw(i) - surfoutlw(i) 5172 5265 surf_usm_v(2)%rad_net_l(m) = surf_usm_v(2)%rad_net(m) 5266 surf_usm_v(2)%rad_lw_dif(m) = surfinlwdif(i) 5267 surf_usm_v(2)%rad_lw_ref(m) = surfinlw(i) - surfinlwdif(i) 5268 surf_usm_v(2)%rad_lw_res(m) = surfinl(i) 5173 5269 ! 5174 5270 !-- westward-facding … … 5176 5272 surf_usm_v(3)%rad_sw_in(m) = surfinsw(i) 5177 5273 surf_usm_v(3)%rad_sw_out(m) = surfoutsw(i) 5274 surf_usm_v(3)%rad_sw_dir(m) = surfinswdir(i) 5275 surf_usm_v(3)%rad_sw_dif(m) = surfinswdif(i) 5276 surf_usm_v(3)%rad_sw_ref(m) = surfinsw(i) - surfinswdir(i) - & 5277 surfinswdif(i) 5278 surf_usm_v(3)%rad_sw_res(m) = surfins(i) 5178 5279 surf_usm_v(3)%rad_lw_in(m) = surfinlw(i) 5179 5280 surf_usm_v(3)%rad_lw_out(m) = surfoutlw(i) … … 5181 5282 surfinlw(i) - surfoutlw(i) 5182 5283 surf_usm_v(3)%rad_net_l(m) = surf_usm_v(3)%rad_net(m) 5284 surf_usm_v(3)%rad_lw_dif(m) = surfinlwdif(i) 5285 surf_usm_v(3)%rad_lw_ref(m) = surfinlw(i) - surfinlwdif(i) 5286 surf_usm_v(3)%rad_lw_res(m) = surfinl(i) 5183 5287 ! 5184 5288 !-- (2) land surfaces … … 5187 5291 surf_lsm_h%rad_sw_in(m) = surfinsw(i) 5188 5292 surf_lsm_h%rad_sw_out(m) = surfoutsw(i) 5293 surf_lsm_h%rad_sw_dir(m) = surfinswdir(i) 5294 surf_lsm_h%rad_sw_dif(m) = surfinswdif(i) 5295 surf_lsm_h%rad_sw_ref(m) = surfinsw(i) - surfinswdir(i) - & 5296 surfinswdif(i) 5297 surf_lsm_h%rad_sw_res(m) = surfins(i) 5189 5298 surf_lsm_h%rad_lw_in(m) = surfinlw(i) 5190 5299 surf_lsm_h%rad_lw_out(m) = surfoutlw(i) 5191 5300 surf_lsm_h%rad_net(m) = surfinsw(i) - surfoutsw(i) + & 5192 5301 surfinlw(i) - surfoutlw(i) 5302 surf_lsm_h%rad_lw_dif(m) = surfinlwdif(i) 5303 surf_lsm_h%rad_lw_ref(m) = surfinlw(i) - surfinlwdif(i) 5304 surf_lsm_h%rad_lw_res(m) = surfinl(i) 5193 5305 ! 5194 5306 !-- northward-facding … … 5196 5308 surf_lsm_v(0)%rad_sw_in(m) = surfinsw(i) 5197 5309 surf_lsm_v(0)%rad_sw_out(m) = surfoutsw(i) 5310 surf_lsm_v(0)%rad_sw_dir(m) = surfinswdir(i) 5311 surf_lsm_v(0)%rad_sw_dif(m) = surfinswdif(i) 5312 surf_lsm_v(0)%rad_sw_ref(m) = surfinsw(i) - surfinswdir(i) - & 5313 surfinswdif(i) 5314 surf_lsm_v(0)%rad_sw_res(m) = surfins(i) 5198 5315 surf_lsm_v(0)%rad_lw_in(m) = surfinlw(i) 5199 5316 surf_lsm_v(0)%rad_lw_out(m) = surfoutlw(i) 5200 5317 surf_lsm_v(0)%rad_net(m) = surfinsw(i) - surfoutsw(i) + & 5201 5318 surfinlw(i) - surfoutlw(i) 5319 surf_lsm_v(0)%rad_lw_dif(m) = surfinlwdif(i) 5320 surf_lsm_v(0)%rad_lw_ref(m) = surfinlw(i) - surfinlwdif(i) 5321 surf_lsm_v(0)%rad_lw_res(m) = surfinl(i) 5202 5322 ! 5203 5323 !-- southward-facding … … 5205 5325 surf_lsm_v(1)%rad_sw_in(m) = surfinsw(i) 5206 5326 surf_lsm_v(1)%rad_sw_out(m) = surfoutsw(i) 5327 surf_lsm_v(1)%rad_sw_dir(m) = surfinswdir(i) 5328 surf_lsm_v(1)%rad_sw_dif(m) = surfinswdif(i) 5329 surf_lsm_v(1)%rad_sw_ref(m) = surfinsw(i) - surfinswdir(i) - & 5330 surfinswdif(i) 5331 surf_lsm_v(1)%rad_sw_res(m) = surfins(i) 5207 5332 surf_lsm_v(1)%rad_lw_in(m) = surfinlw(i) 5208 5333 surf_lsm_v(1)%rad_lw_out(m) = surfoutlw(i) 5209 5334 surf_lsm_v(1)%rad_net(m) = surfinsw(i) - surfoutsw(i) + & 5210 5335 surfinlw(i) - surfoutlw(i) 5336 surf_lsm_v(1)%rad_lw_dif(m) = surfinlwdif(i) 5337 surf_lsm_v(1)%rad_lw_ref(m) = surfinlw(i) - surfinlwdif(i) 5338 surf_lsm_v(1)%rad_lw_res(m) = surfinl(i) 5211 5339 ! 5212 5340 !-- eastward-facing … … 5214 5342 surf_lsm_v(2)%rad_sw_in(m) = surfinsw(i) 5215 5343 surf_lsm_v(2)%rad_sw_out(m) = surfoutsw(i) 5344 surf_lsm_v(2)%rad_sw_dir(m) = surfinswdir(i) 5345 surf_lsm_v(2)%rad_sw_dif(m) = surfinswdif(i) 5346 surf_lsm_v(2)%rad_sw_ref(m) = surfinsw(i) - surfinswdir(i) - & 5347 surfinswdif(i) 5348 surf_lsm_v(2)%rad_sw_res(m) = surfins(i) 5216 5349 surf_lsm_v(2)%rad_lw_in(m) = surfinlw(i) 5217 5350 surf_lsm_v(2)%rad_lw_out(m) = surfoutlw(i) 5218 5351 surf_lsm_v(2)%rad_net(m) = surfinsw(i) - surfoutsw(i) + & 5219 5352 surfinlw(i) - surfoutlw(i) 5353 surf_lsm_v(2)%rad_lw_dif(m) = surfinlwdif(i) 5354 surf_lsm_v(2)%rad_lw_ref(m) = surfinlw(i) - surfinlwdif(i) 5355 surf_lsm_v(2)%rad_lw_res(m) = surfinl(i) 5220 5356 ! 5221 5357 !-- westward-facing … … 5223 5359 surf_lsm_v(3)%rad_sw_in(m) = surfinsw(i) 5224 5360 surf_lsm_v(3)%rad_sw_out(m) = surfoutsw(i) 5361 surf_lsm_v(3)%rad_sw_dir(m) = surfinswdir(i) 5362 surf_lsm_v(3)%rad_sw_dif(m) = surfinswdif(i) 5363 surf_lsm_v(3)%rad_sw_ref(m) = surfinsw(i) - surfinswdir(i) - & 5364 surfinswdif(i) 5365 surf_lsm_v(3)%rad_sw_res(m) = surfins(i) 5225 5366 surf_lsm_v(3)%rad_lw_in(m) = surfinlw(i) 5226 5367 surf_lsm_v(3)%rad_lw_out(m) = surfoutlw(i) 5227 5368 surf_lsm_v(3)%rad_net(m) = surfinsw(i) - surfoutsw(i) + & 5228 5369 surfinlw(i) - surfoutlw(i) 5370 surf_lsm_v(3)%rad_lw_dif(m) = surfinlwdif(i) 5371 surf_lsm_v(3)%rad_lw_ref(m) = surfinlw(i) - surfinlwdif(i) 5372 surf_lsm_v(3)%rad_lw_res(m) = surfinl(i) 5229 5373 ENDIF 5230 5374 -
palm/trunk/SOURCE/surface_mod.f90
r3560 r3572 26 26 ! ----------------- 27 27 ! $Id$ 28 ! Define short- and longwave radiation flux arrays (e.g. diffuse, direct, 29 ! reflected, resedual) for all surfaces. This is required to surface outputs 30 ! in suface_output_mod. (M. Salim) 31 ! 32 ! 3560 2018-11-23 09:20:21Z raasch 28 33 ! Surface restoring in restarts commented. Some formatting. 29 34 ! … … 392 397 REAL(wp), DIMENSION(:), ALLOCATABLE :: rad_lw_in !< incoming longwave radiation 393 398 REAL(wp), DIMENSION(:), ALLOCATABLE :: rad_lw_out !< emitted longwave radiation 399 REAL(wp), DIMENSION(:), ALLOCATABLE :: rad_lw_dif !< incoming longwave radiation from sky 400 REAL(wp), DIMENSION(:), ALLOCATABLE :: rad_lw_ref !< incoming longwave radiation from reflection 401 REAL(wp), DIMENSION(:), ALLOCATABLE :: rad_lw_res !< resedual longwave radiation in surface after last reflection step 394 402 REAL(wp), DIMENSION(:), ALLOCATABLE :: rad_sw_in !< incoming shortwave radiation 395 403 REAL(wp), DIMENSION(:), ALLOCATABLE :: rad_sw_out !< emitted shortwave radiation 404 REAL(wp), DIMENSION(:), ALLOCATABLE :: rad_sw_dir !< direct incoming shortwave radiation 405 REAL(wp), DIMENSION(:), ALLOCATABLE :: rad_sw_dif !< diffuse incoming shortwave radiation 406 REAL(wp), DIMENSION(:), ALLOCATABLE :: rad_sw_ref !< incoming shortwave radiation from reflection 407 REAL(wp), DIMENSION(:), ALLOCATABLE :: rad_sw_res !< resedual shortwave radiation in surface after last reflection step 396 408 397 409 -
palm/trunk/SOURCE/surface_output_mod.f90
r3494 r3572 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Added short- and longwave radiation flux arrays (e.g. diffuse, direct, 28 ! reflected, resedual) for all surfaces (M. Salim) 29 ! 30 ! 3494 2018-11-06 14:51:27Z suehring 27 31 ! Bugfix in gathering surface data from different types and orientation. 28 32 ! Output of total number of surfaces and vertices added. … … 2003 2007 surf_lsm_v(3)%r_s, & 2004 2008 surf_usm_v(3)%r_s ) 2009 ELSE 2010 ! 2011 !-- Output of averaged data 2012 surfaces%var_out(:) = surfaces%var_av(:,n_out) / & 2013 REAL( average_count_surf, KIND=wp ) 2014 surfaces%var_av(:,n_out) = 0.0_wp 2015 2016 ENDIF 2017 2018 CASE ( 'rad_sw_dir' ) 2019 ! 2020 !-- Output of instantaneous data 2021 IF ( av == 0 ) THEN 2022 CALL surface_output_collect( surf_def_h(0)%rad_sw_dir, & 2023 surf_def_h(1)%rad_sw_dir, & 2024 surf_lsm_h%rad_sw_dir, & 2025 surf_usm_h%rad_sw_dir, & 2026 surf_def_v(0)%rad_sw_dir, & 2027 surf_lsm_v(0)%rad_sw_dir, & 2028 surf_usm_v(0)%rad_sw_dir, & 2029 surf_def_v(1)%rad_sw_dir, & 2030 surf_lsm_v(1)%rad_sw_dir, & 2031 surf_usm_v(1)%rad_sw_dir, & 2032 surf_def_v(2)%rad_sw_dir, & 2033 surf_lsm_v(2)%rad_sw_dir, & 2034 surf_usm_v(2)%rad_sw_dir, & 2035 surf_def_v(3)%rad_sw_dir, & 2036 surf_lsm_v(3)%rad_sw_dir, & 2037 surf_usm_v(3)%rad_sw_dir ) 2038 ELSE 2039 ! 2040 !-- Output of averaged data 2041 surfaces%var_out(:) = surfaces%var_av(:,n_out) / & 2042 REAL( average_count_surf, KIND=wp ) 2043 surfaces%var_av(:,n_out) = 0.0_wp 2044 2045 ENDIF 2046 2047 CASE ( 'rad_sw_dif' ) 2048 ! 2049 !-- Output of instantaneous data 2050 IF ( av == 0 ) THEN 2051 CALL surface_output_collect( surf_def_h(0)%rad_sw_dif, & 2052 surf_def_h(1)%rad_sw_dif, & 2053 surf_lsm_h%rad_sw_dif, & 2054 surf_usm_h%rad_sw_dif, & 2055 surf_def_v(0)%rad_sw_dif, & 2056 surf_lsm_v(0)%rad_sw_dif, & 2057 surf_usm_v(0)%rad_sw_dif, & 2058 surf_def_v(1)%rad_sw_dif, & 2059 surf_lsm_v(1)%rad_sw_dif, & 2060 surf_usm_v(1)%rad_sw_dif, & 2061 surf_def_v(2)%rad_sw_dif, & 2062 surf_lsm_v(2)%rad_sw_dif, & 2063 surf_usm_v(2)%rad_sw_dif, & 2064 surf_def_v(3)%rad_sw_dif, & 2065 surf_lsm_v(3)%rad_sw_dif, & 2066 surf_usm_v(3)%rad_sw_dif ) 2067 ELSE 2068 ! 2069 !-- Output of averaged data 2070 surfaces%var_out(:) = surfaces%var_av(:,n_out) / & 2071 REAL( average_count_surf, KIND=wp ) 2072 surfaces%var_av(:,n_out) = 0.0_wp 2073 2074 ENDIF 2075 2076 CASE ( 'rad_sw_ref' ) 2077 ! 2078 !-- Output of instantaneous data 2079 IF ( av == 0 ) THEN 2080 CALL surface_output_collect( surf_def_h(0)%rad_sw_ref, & 2081 surf_def_h(1)%rad_sw_ref, & 2082 surf_lsm_h%rad_sw_ref, & 2083 surf_usm_h%rad_sw_ref, & 2084 surf_def_v(0)%rad_sw_ref, & 2085 surf_lsm_v(0)%rad_sw_ref, & 2086 surf_usm_v(0)%rad_sw_ref, & 2087 surf_def_v(1)%rad_sw_ref, & 2088 surf_lsm_v(1)%rad_sw_ref, & 2089 surf_usm_v(1)%rad_sw_ref, & 2090 surf_def_v(2)%rad_sw_ref, & 2091 surf_lsm_v(2)%rad_sw_ref, & 2092 surf_usm_v(2)%rad_sw_ref, & 2093 surf_def_v(3)%rad_sw_ref, & 2094 surf_lsm_v(3)%rad_sw_ref, & 2095 surf_usm_v(3)%rad_sw_ref ) 2096 ELSE 2097 ! 2098 !-- Output of averaged data 2099 surfaces%var_out(:) = surfaces%var_av(:,n_out) / & 2100 REAL( average_count_surf, KIND=wp ) 2101 surfaces%var_av(:,n_out) = 0.0_wp 2102 2103 ENDIF 2104 2105 CASE ( 'rad_sw_res' ) 2106 ! 2107 !-- Output of instantaneous data 2108 IF ( av == 0 ) THEN 2109 CALL surface_output_collect( surf_def_h(0)%rad_sw_res, & 2110 surf_def_h(1)%rad_sw_res, & 2111 surf_lsm_h%rad_sw_res, & 2112 surf_usm_h%rad_sw_res, & 2113 surf_def_v(0)%rad_sw_res, & 2114 surf_lsm_v(0)%rad_sw_res, & 2115 surf_usm_v(0)%rad_sw_res, & 2116 surf_def_v(1)%rad_sw_res, & 2117 surf_lsm_v(1)%rad_sw_res, & 2118 surf_usm_v(1)%rad_sw_res, & 2119 surf_def_v(2)%rad_sw_res, & 2120 surf_lsm_v(2)%rad_sw_res, & 2121 surf_usm_v(2)%rad_sw_res, & 2122 surf_def_v(3)%rad_sw_res, & 2123 surf_lsm_v(3)%rad_sw_res, & 2124 surf_usm_v(3)%rad_sw_res ) 2125 ELSE 2126 ! 2127 !-- Output of averaged data 2128 surfaces%var_out(:) = surfaces%var_av(:,n_out) / & 2129 REAL( average_count_surf, KIND=wp ) 2130 surfaces%var_av(:,n_out) = 0.0_wp 2131 2132 ENDIF 2133 2134 CASE ( 'rad_lw_dif' ) 2135 ! 2136 !-- Output of instantaneous data 2137 IF ( av == 0 ) THEN 2138 CALL surface_output_collect( surf_def_h(0)%rad_lw_dif, & 2139 surf_def_h(1)%rad_lw_dif, & 2140 surf_lsm_h%rad_lw_dif, & 2141 surf_usm_h%rad_lw_dif, & 2142 surf_def_v(0)%rad_lw_dif, & 2143 surf_lsm_v(0)%rad_lw_dif, & 2144 surf_usm_v(0)%rad_lw_dif, & 2145 surf_def_v(1)%rad_lw_dif, & 2146 surf_lsm_v(1)%rad_lw_dif, & 2147 surf_usm_v(1)%rad_lw_dif, & 2148 surf_def_v(2)%rad_lw_dif, & 2149 surf_lsm_v(2)%rad_lw_dif, & 2150 surf_usm_v(2)%rad_lw_dif, & 2151 surf_def_v(3)%rad_lw_dif, & 2152 surf_lsm_v(3)%rad_lw_dif, & 2153 surf_usm_v(3)%rad_lw_dif ) 2154 ELSE 2155 ! 2156 !-- Output of averaged data 2157 surfaces%var_out(:) = surfaces%var_av(:,n_out) / & 2158 REAL( average_count_surf, KIND=wp ) 2159 surfaces%var_av(:,n_out) = 0.0_wp 2160 2161 ENDIF 2162 2163 CASE ( 'rad_lw_ref' ) 2164 ! 2165 !-- Output of instantaneous data 2166 IF ( av == 0 ) THEN 2167 CALL surface_output_collect( surf_def_h(0)%rad_lw_ref, & 2168 surf_def_h(1)%rad_lw_ref, & 2169 surf_lsm_h%rad_lw_ref, & 2170 surf_usm_h%rad_lw_ref, & 2171 surf_def_v(0)%rad_lw_ref, & 2172 surf_lsm_v(0)%rad_lw_ref, & 2173 surf_usm_v(0)%rad_lw_ref, & 2174 surf_def_v(1)%rad_lw_ref, & 2175 surf_lsm_v(1)%rad_lw_ref, & 2176 surf_usm_v(1)%rad_lw_ref, & 2177 surf_def_v(2)%rad_lw_ref, & 2178 surf_lsm_v(2)%rad_lw_ref, & 2179 surf_usm_v(2)%rad_lw_ref, & 2180 surf_def_v(3)%rad_lw_ref, & 2181 surf_lsm_v(3)%rad_lw_ref, & 2182 surf_usm_v(3)%rad_lw_ref ) 2183 ELSE 2184 ! 2185 !-- Output of averaged data 2186 surfaces%var_out(:) = surfaces%var_av(:,n_out) / & 2187 REAL( average_count_surf, KIND=wp ) 2188 surfaces%var_av(:,n_out) = 0.0_wp 2189 2190 ENDIF 2191 2192 CASE ( 'rad_lw_res' ) 2193 ! 2194 !-- Output of instantaneous data 2195 IF ( av == 0 ) THEN 2196 CALL surface_output_collect( surf_def_h(0)%rad_lw_res, & 2197 surf_def_h(1)%rad_lw_res, & 2198 surf_lsm_h%rad_lw_res, & 2199 surf_usm_h%rad_lw_res, & 2200 surf_def_v(0)%rad_lw_res, & 2201 surf_lsm_v(0)%rad_lw_res, & 2202 surf_usm_v(0)%rad_lw_res, & 2203 surf_def_v(1)%rad_lw_res, & 2204 surf_lsm_v(1)%rad_lw_res, & 2205 surf_usm_v(1)%rad_lw_res, & 2206 surf_def_v(2)%rad_lw_res, & 2207 surf_lsm_v(2)%rad_lw_res, & 2208 surf_usm_v(2)%rad_lw_res, & 2209 surf_def_v(3)%rad_lw_res, & 2210 surf_lsm_v(3)%rad_lw_res, & 2211 surf_usm_v(3)%rad_lw_res ) 2005 2212 ELSE 2006 2213 ! … … 2753 2960 surf_usm_v(3)%r_s, n_out ) 2754 2961 2962 2963 CASE ( 'rad_sw_dir' ) 2964 CALL surface_output_sum_up( surf_def_h(0)%rad_sw_dir, & 2965 surf_def_h(1)%rad_sw_dir, & 2966 surf_lsm_h%rad_sw_dir, & 2967 surf_usm_h%rad_sw_dir, & 2968 surf_def_v(0)%rad_sw_dir, & 2969 surf_lsm_v(0)%rad_sw_dir, & 2970 surf_usm_v(0)%rad_sw_dir, & 2971 surf_def_v(1)%rad_sw_dir, & 2972 surf_lsm_v(1)%rad_sw_dir, & 2973 surf_usm_v(1)%rad_sw_dir, & 2974 surf_def_v(2)%rad_sw_dir, & 2975 surf_lsm_v(2)%rad_sw_dir, & 2976 surf_usm_v(2)%rad_sw_dir, & 2977 surf_def_v(3)%rad_sw_dir, & 2978 surf_lsm_v(3)%rad_sw_dir, & 2979 surf_usm_v(3)%rad_sw_dir, n_out ) 2980 CASE ( 'rad_sw_dif' ) 2981 CALL surface_output_sum_up( surf_def_h(0)%rad_sw_dif, & 2982 surf_def_h(1)%rad_sw_dif, & 2983 surf_lsm_h%rad_sw_dif, & 2984 surf_usm_h%rad_sw_dif, & 2985 surf_def_v(0)%rad_sw_dif, & 2986 surf_lsm_v(0)%rad_sw_dif, & 2987 surf_usm_v(0)%rad_sw_dif, & 2988 surf_def_v(1)%rad_sw_dif, & 2989 surf_lsm_v(1)%rad_sw_dif, & 2990 surf_usm_v(1)%rad_sw_dif, & 2991 surf_def_v(2)%rad_sw_dif, & 2992 surf_lsm_v(2)%rad_sw_dif, & 2993 surf_usm_v(2)%rad_sw_dif, & 2994 surf_def_v(3)%rad_sw_dif, & 2995 surf_lsm_v(3)%rad_sw_dif, & 2996 surf_usm_v(3)%rad_sw_dif, n_out ) 2997 2998 CASE ( 'rad_sw_ref' ) 2999 CALL surface_output_sum_up( surf_def_h(0)%rad_sw_ref, & 3000 surf_def_h(1)%rad_sw_ref, & 3001 surf_lsm_h%rad_sw_ref, & 3002 surf_usm_h%rad_sw_ref, & 3003 surf_def_v(0)%rad_sw_ref, & 3004 surf_lsm_v(0)%rad_sw_ref, & 3005 surf_usm_v(0)%rad_sw_ref, & 3006 surf_def_v(1)%rad_sw_ref, & 3007 surf_lsm_v(1)%rad_sw_ref, & 3008 surf_usm_v(1)%rad_sw_ref, & 3009 surf_def_v(2)%rad_sw_ref, & 3010 surf_lsm_v(2)%rad_sw_ref, & 3011 surf_usm_v(2)%rad_sw_ref, & 3012 surf_def_v(3)%rad_sw_ref, & 3013 surf_lsm_v(3)%rad_sw_ref, & 3014 surf_usm_v(3)%rad_sw_ref, n_out ) 3015 3016 CASE ( 'rad_sw_res' ) 3017 CALL surface_output_sum_up( surf_def_h(0)%rad_sw_res, & 3018 surf_def_h(1)%rad_sw_res, & 3019 surf_lsm_h%rad_sw_res, & 3020 surf_usm_h%rad_sw_res, & 3021 surf_def_v(0)%rad_sw_res, & 3022 surf_lsm_v(0)%rad_sw_res, & 3023 surf_usm_v(0)%rad_sw_res, & 3024 surf_def_v(1)%rad_sw_res, & 3025 surf_lsm_v(1)%rad_sw_res, & 3026 surf_usm_v(1)%rad_sw_res, & 3027 surf_def_v(2)%rad_sw_res, & 3028 surf_lsm_v(2)%rad_sw_res, & 3029 surf_usm_v(2)%rad_sw_res, & 3030 surf_def_v(3)%rad_sw_res, & 3031 surf_lsm_v(3)%rad_sw_res, & 3032 surf_usm_v(3)%rad_sw_res, n_out ) 3033 3034 CASE ( 'rad_lw_dif' ) 3035 CALL surface_output_sum_up( surf_def_h(0)%rad_lw_dif, & 3036 surf_def_h(1)%rad_lw_dif, & 3037 surf_lsm_h%rad_lw_dif, & 3038 surf_usm_h%rad_lw_dif, & 3039 surf_def_v(0)%rad_lw_dif, & 3040 surf_lsm_v(0)%rad_lw_dif, & 3041 surf_usm_v(0)%rad_lw_dif, & 3042 surf_def_v(1)%rad_lw_dif, & 3043 surf_lsm_v(1)%rad_lw_dif, & 3044 surf_usm_v(1)%rad_lw_dif, & 3045 surf_def_v(2)%rad_lw_dif, & 3046 surf_lsm_v(2)%rad_lw_dif, & 3047 surf_usm_v(2)%rad_lw_dif, & 3048 surf_def_v(3)%rad_lw_dif, & 3049 surf_lsm_v(3)%rad_lw_dif, & 3050 surf_usm_v(3)%rad_lw_dif, n_out ) 3051 3052 CASE ( 'rad_lw_ref' ) 3053 CALL surface_output_sum_up( surf_def_h(0)%rad_lw_ref, & 3054 surf_def_h(1)%rad_lw_ref, & 3055 surf_lsm_h%rad_lw_ref, & 3056 surf_usm_h%rad_lw_ref, & 3057 surf_def_v(0)%rad_lw_ref, & 3058 surf_lsm_v(0)%rad_lw_ref, & 3059 surf_usm_v(0)%rad_lw_ref, & 3060 surf_def_v(1)%rad_lw_ref, & 3061 surf_lsm_v(1)%rad_lw_ref, & 3062 surf_usm_v(1)%rad_lw_ref, & 3063 surf_def_v(2)%rad_lw_ref, & 3064 surf_lsm_v(2)%rad_lw_ref, & 3065 surf_usm_v(2)%rad_lw_ref, & 3066 surf_def_v(3)%rad_lw_ref, & 3067 surf_lsm_v(3)%rad_lw_ref, & 3068 surf_usm_v(3)%rad_lw_ref, n_out ) 3069 3070 CASE ( 'rad_lw_res' ) 3071 CALL surface_output_sum_up( surf_def_h(0)%rad_lw_res, & 3072 surf_def_h(1)%rad_lw_res, & 3073 surf_lsm_h%rad_lw_res, & 3074 surf_usm_h%rad_lw_res, & 3075 surf_def_v(0)%rad_lw_res, & 3076 surf_lsm_v(0)%rad_lw_res, & 3077 surf_usm_v(0)%rad_lw_res, & 3078 surf_def_v(1)%rad_lw_res, & 3079 surf_lsm_v(1)%rad_lw_res, & 3080 surf_usm_v(1)%rad_lw_res, & 3081 surf_def_v(2)%rad_lw_res, & 3082 surf_lsm_v(2)%rad_lw_res, & 3083 surf_usm_v(2)%rad_lw_res, & 3084 surf_def_v(3)%rad_lw_res, & 3085 surf_lsm_v(3)%rad_lw_res, & 3086 surf_usm_v(3)%rad_lw_res, n_out ) 3087 2755 3088 END SELECT 2756 3089 ENDDO … … 3311 3644 CASE ( 'rad_net' ) 3312 3645 3313 CASE ( 'rad_lw_in', 'rad_lw_out', 'rad_sw_in', 'rad_sw_out' ) 3646 CASE ( 'rad_lw_in', 'rad_lw_out', 'rad_lw_dif', 'rad_lw_ref', & 3647 'rad_lw_res' ) 3648 3649 CASE ( 'rad_sw_in', 'rad_sw_out', 'rad_sw_dif', 'rad_sw_ref', & 3650 'rad_sw_res', 'rad_sw_dir' ) 3314 3651 3315 3652 CASE ( 'ghf' )
Note: See TracChangeset
for help on using the changeset viewer.