Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer | :: | iquasi | ||||
integer | :: | ngllayer | ||||
real(kind=r64) | :: | wlbot | ||||
real(kind=r64) | :: | wltop |
Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed arrows point from an interface to procedures which implement that interface. This could include the module procedures in a generic interface or the implementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are given different colours to make them easier to distinguish in large graphs.
Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed arrows point from an interface to procedures which implement that interface. This could include the module procedures in a generic interface or the implementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are given different colours to make them easier to distinguish in large graphs.
SUBROUTINE SystemSpectralPropertiesAtPhi(iquasi,ngllayer,wlbot,wltop)
! SUBROUTINE INFORMATION:
! AUTHOR Adapted by F.Winkelmann from WINDOW 5
! subroutine opcalc
! DATE WRITTEN August 1999
! MODIFIED na
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! For a particular angle of incidence, calculates system properties
! for a multi-layer glazing for each wavelength in the solar spectrum.
! Handles the special case of one or more layers that do not have spectral data.
! Returns, for a particular angle of incidence:
! stPhi transmissivity of system at each wavelength in swl
! srfPhi front reflectance of system at each wavelength in swl
! srbPhi back reflectance of system at each wavelength in swl
! sabsPhi absorptance by layer at each wavelength in swl
! METHODOLOGY EMPLOYED:
! na
! REFERENCES:
! na
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
REAL(r64) :: sabsPhi(5) ! System solar absorptance in each glass layer for
! particular angle of incidence
INTEGER :: in,i ! Glass layer counter
INTEGER :: iwl,j ! Wavelength counter
REAL(r64) :: wl ! Wavelength
REAL(r64) :: wlbot,wltop ! Lowest and highest wavelength considered
INTEGER :: ngllayer ! Number of glass layers in construction
INTEGER :: iquasi ! When there is no spectral data, this is the wavelength
! index to use in tPhi, rfPhi and rbPhi
! For each glass layer find tPhi, rfPhi, and rbPhi at each wavelength
do in=1,ngllayer
do iwl=1,nume
wl = wle(iwl)
if (wl < wlbot .OR. wl > wltop) CYCLE
! In the following numpt is the number of spectral data points for each layer;
! numpt = 2 if there is no spectral data for a layer.
if (numpt(in) <= 2) then
tadjPhi(iwl,in) = tPhi(iquasi,in)
rfadjPhi(iwl,in) = rfPhi(iquasi,in)
rbadjPhi(iwl,in) = rbPhi(iquasi,in)
else
! Interpolate to get properties at the solar spectrum wavelengths
CALL Interpolate(wlt(1,in), tPhi(1,in), numpt(in), wl, tadjPhi(iwl,in))
CALL Interpolate(wlt(1,in), rfPhi(1,in), numpt(in), wl, rfadjPhi(iwl,in))
CALL Interpolate(wlt(1,in), rbPhi(1,in), numpt(in), wl, rbadjPhi(iwl,in))
endif
END DO
END DO
! Calculate system properties at each wavelength
do j=1,nume
wl = wle(j)
if (wl < wlbot .OR. wl > wltop) CYCLE
! Set diagonal of matrix for subroutine SystemPropertiesAtLambdaAndPhi
do i=1,ngllayer
top(i,i) = tadjPhi(j,i)
rfop(i,i) = rfadjPhi(j,i)
rbop(i,i) = rbadjPhi(j,i)
END DO
! Calculate glazing system properties
if (ngllayer .eq. 1) then ! Single-layer system
stPhi(j) = top(1,1)
srfPhi(j) = rfop(1,1)
srbPhi(j) = rbop(1,1)
sabsPhi(1) = 1.0d0 - stPhi(j) - srfPhi(j)
else ! Multilayer system
! Get glazing system properties stPhi, etc., at this wavelength and incidence angle
CALL SystemPropertiesAtLambdaAndPhi(ngllayer, stPhi(j), srfPhi(j), srbPhi(j), sabsPhi)
endif
do i=1,ngllayer
saPhi(j,i)=sabsPhi(i)
END DO
END DO ! End of wavelength loop
return
END SUBROUTINE SystemSpectralPropertiesAtPhi