TYPE,PUBLIC :: SolReflRecSurfData
INTEGER :: SurfNum =0 ! Number of heat transfer surface
CHARACTER(len=MaxNameLength) :: SurfName =' ' ! Name of heat transfer surface
INTEGER :: NumRecPts =0 ! Number of receiving points
REAL(r64),ALLOCATABLE,DIMENSION(:,:) :: RecPt ! Coordinates of receiving point on receiving surface in global CS (m)
REAL(r64),DIMENSION(3) :: NormVec =0.0d0 ! Unit outward normal to receiving surface
REAL(r64) :: ThetaNormVec =0.0d0 ! Azimuth of surface normal (radians)
REAL(r64) :: PhiNormVec =0.0d0 ! Altitude of surface normal (radians)
INTEGER :: NumReflRays =0 ! Number of rays from this receiving surface
REAL(r64),ALLOCATABLE,DIMENSION(:,:) :: RayVec ! Unit vector in direction of ray from receiving surface
REAL(r64),ALLOCATABLE,DIMENSION(:) :: CosIncAngRay ! Cosine of angle between ray and receiving surface outward normal
REAL(r64),ALLOCATABLE,DIMENSION(:) :: dOmegaRay ! Delta solid angle associated with ray
REAL(r64),ALLOCATABLE,DIMENSION(:,:,:) :: HitPt ! For each receiving point and ray, coords of hit point on obstruction
! that is closest to receiving point (m)
INTEGER,ALLOCATABLE,DIMENSION(:,:):: HitPtSurfNum ! Number of surface containing the hit point for a ray, except:
! 0 => ray does not hit an obstruction, but hits sky
! -1 => ray does not hit an obstruction, but hits ground
REAL(r64),ALLOCATABLE,DIMENSION(:,:) :: HitPtSolRefl ! Beam-to-diffuse solar reflectance at hit point
REAL(r64),ALLOCATABLE,DIMENSION(:,:) :: RecPtHitPtDis ! Distance from receiving point to hit point (m)
REAL(r64),ALLOCATABLE,DIMENSION(:,:,:) :: HitPtNormVec ! Hit point's surface normal unit vector pointing into hemisphere
! containing the receiving point
INTEGER,ALLOCATABLE,DIMENSION(:) :: PossibleObsSurfNums ! Surface numbers of possible obstructions for a receiving surf
INTEGER :: NumPossibleObs =0 ! Number of possible obstructions for a receiving surface
END TYPE SolReflRecSurfData