7 pemit_lw_roof, pemit_lwdn_panel, plw_rad, &
8 pabs_sw_panel, pta, pn_floor, pfrac_panel,&
9 pemis_panel, palb_panel, peff_panel, &
10 pabs_lw_panel, ph_panel, prn_panel, &
12 pther_prod_panel, pphot_prod_panel, &
14 pther_prod_bld, pphot_prod_bld, &
58 USE yomhook
,ONLY : lhook, dr_hook
59 USE parkind1
,ONLY : jprb
66 REAL,
INTENT(IN) :: ptstep
67 REAL,
DIMENSION(:),
INTENT(IN) :: ptsun
68 REAL,
DIMENSION(:),
INTENT(IN) :: presidential
69 REAL,
DIMENSION(:),
INTENT(IN) :: pemit_lw_roof
70 REAL,
DIMENSION(:),
INTENT(IN) :: pemit_lwdn_panel
71 REAL,
DIMENSION(:),
INTENT(IN) :: plw_rad
72 REAL,
DIMENSION(:),
INTENT(IN) :: pabs_sw_panel
73 REAL,
DIMENSION(:),
INTENT(IN) :: pta
74 REAL,
DIMENSION(:),
INTENT(IN) :: pn_floor
75 REAL,
DIMENSION(:),
INTENT(IN) :: pfrac_panel
76 REAL,
DIMENSION(:),
INTENT(IN) :: pemis_panel
77 REAL,
DIMENSION(:),
INTENT(IN) :: palb_panel
78 REAL,
DIMENSION(:),
INTENT(IN) :: peff_panel
79 REAL,
DIMENSION(:),
INTENT(OUT) :: pabs_lw_panel
80 REAL,
DIMENSION(:),
INTENT(OUT) :: ph_panel
81 REAL,
DIMENSION(:),
INTENT(OUT) :: prn_panel
82 REAL,
DIMENSION(:),
INTENT(INOUT)::pther_prodc_day
83 REAL,
DIMENSION(:),
INTENT(OUT) :: pther_prod_panel
84 REAL,
DIMENSION(:),
INTENT(OUT) :: pphot_prod_panel
85 REAL,
DIMENSION(:),
INTENT(OUT) :: pprod_panel
86 REAL,
DIMENSION(:),
INTENT(OUT) :: pther_prod_bld
87 REAL,
DIMENSION(:),
INTENT(OUT) :: pphot_prod_bld
88 REAL,
DIMENSION(:),
INTENT(OUT) :: pprod_bld
90 REAL(KIND=JPRB) :: zhook_handle
95 REAL,
PARAMETER :: xkt = 0.05
98 REAL,
PARAMETER :: xft = 1.10
101 REAL,
PARAMETER :: xt_opt = 298.15
104 REAL,
PARAMETER :: xt_loss= 0.005
107 REAL,
PARAMETER :: xwater_dt = 45.
110 REAL,
PARAMETER :: xther_floor= 1./30.
113 REAL,
PARAMETER :: xther_rate= 0.5 * 1.16*32.
118 REAL,
PARAMETER :: xther_eff = 0.60
125 REAL :: zther_daily_target
126 REAL,
DIMENSION(SIZE(PTA)) :: zirradiance
127 REAL,
DIMENSION(SIZE(PTA)) :: zts_panel
128 REAL,
DIMENSION(SIZE(PTA)) :: zlwu_panel
129 REAL,
DIMENSION(SIZE(PTA)) :: zther_frac
130 REAL,
DIMENSION(SIZE(PTA)) :: zphot_frac
131 REAL,
DIMENSION(SIZE(PTA)) :: zther_prodc_day
134 IF (lhook) CALL dr_hook(
'SOLAR_PANEL',0,zhook_handle)
140 pabs_lw_panel = xundef
143 pther_prod_panel= xundef
144 pphot_prod_panel= xundef
159 WHERE (ptsun(:)>=0. .AND. ptsun(:)<=3600.) pther_prodc_day(:) = 0.
165 zther_daily_target = (2.*xther_rate) * xwater_dt * (1000. / 365. * 3600. )
170 WHERE (pfrac_panel(:)>0.)
176 zirradiance(:) = xft * pabs_sw_panel(:) / (1.-palb_panel(:) )
183 zts_panel(:) = pta(:) + xkt * zirradiance(:)
190 zlwu_panel(:) = pemis_panel(:) * xstefan * zts_panel(:)**4 &
191 + (1.-pemis_panel(:)) * plw_rad(:)
198 pabs_lw_panel(:)= plw_rad(:) + pemit_lw_roof(:) - pemit_lwdn_panel(:) - zlwu_panel(:)
205 prn_panel(:) = pabs_sw_panel(:) + pabs_lw_panel(:)
215 zther_frac(:) = min( xther_floor * pn_floor(:) * presidential(:), pfrac_panel(:) )
220 zphot_frac(:) = pfrac_panel(:) - zther_frac(:)
230 pther_prod_panel(:)= xther_eff * zirradiance(:)
236 zther_prodc_day(:) = pther_prodc_day(:) + ptstep * pther_prod_panel(:)
241 zther_prodc_day(:) = min( zther_prodc_day(:) , zther_daily_target )
246 pther_prod_panel(:)= ( zther_prodc_day(:) - pther_prodc_day(:) ) / ptstep
251 pther_prodc_day(:) = zther_prodc_day(:)
258 pphot_prod_panel(:) = peff_panel(:) * zirradiance(:) * min(1.,1.-xt_loss*(zts_panel(:)-xt_opt))
265 pprod_panel(:) = pther_prod_panel(:) * (zther_frac(:) / pfrac_panel(:)) &
266 + pphot_prod_panel(:) * (zphot_frac(:) / pfrac_panel(:))
273 ph_panel(:) = prn_panel(:) - pprod_panel(:)
280 pther_prod_bld(:) = pther_prod_panel(:) * zther_frac(:)
281 pphot_prod_bld(:) = pphot_prod_panel(:) * zphot_frac(:)
282 pprod_bld(:) = pther_prod_bld(:) + pphot_prod_panel(:)
289 IF (lhook) CALL dr_hook(
'SOLAR_PANEL',1,zhook_handle)
subroutine solar_panel(PTSTEP, PTSUN, PRESIDENTIAL, PEMIT_LW_ROOF, PEMIT_LWDN_PANEL, PLW_RAD, PABS_SW_PANEL, PTA, PN_FLOOR, PFRAC_PANEL, PEMIS_PANEL, PALB_PANEL, PEFF_PANEL, PABS_LW_PANEL, PH_PANEL, PRN_PANEL, PTHER_PRODC_DAY, PTHER_PROD_PANEL, PPHOT_PROD_PANEL, PPROD_PANEL, PTHER_PROD_BLD, PPHOT_PROD_BLD, PPROD_BLD)