RE : the vector of sensor in SVF calculation

Hi

The sky view factor (SVF) is defined as the fraction of visible sky as seen from a given point. Thus a totally unobstructed point should get SVF=1
A point located just in front of a vertical facade should get SVF=0.5

For the calculations SVF can be defined by the ratio of two projected solid angles:
SVF= Omega_p / Omega_h
where Omega_p is the projected solid angle of the sky as seen from the point p of interest and Omega_h is the projected solid angle of the unobstructed sky hemisphere which is equal to Pi
Then we have SVF=Omega_p / Pi = Omega_p*L / Pi*L
where we just introduced an arbitrary uniform luminance for the sky vault
Then because the illuminance calculated at point p is E_p = Omega__p*L we can rewrite:
SVF= E_p / (Pi*L)
E_p can be calculated with rtarce -I
If we choose L=1/Pi then the SVF is directly SVF = E_p

So what you need is a uniform sky with L=1/Pi as defined like this:

void glow white
0
0
4 .318309886 .318309886 .318309886 0
white source uniform_sky
0
0
4 0 0 1 180

Note that you don't need to define the ground (because SVF is just about the sky...)

Then to compute SVF for some points:
rtrace -h -w -I -aa .... | rcalc -e 'SVF=$1;$1=SVF'

For the calculations, I think it is better to specify direction vectors pointing towards the true normal direction of the relevant surface.

Raphael

···

________________________________________
De : [email protected] [[email protected]] de la part de Ji Zhang [[email protected]]
Date d'envoi : mercredi, 1. septembre 2010 08:24
À : Radiance general discussion
Objet : [Radiance-general] the vector of sensor in SVF calculation

Dear Radiance experts,

According to the paper "Compagnon, R. (2004). Solar and daylight availability in the urban fabric. Energy and Buildings, 36(4), 321-328", we can use Radiance to calculate Sky View Factor by "using a uniform sky model of arbitrary luminance L and by computing the illuminance Ei without taking into account the contribution of interreflections to ensure the integration is performed over the unobstructed part of the sky vault only".

The formula is: SVF = Ei / (PI * L).

We use the following to define the uniform sky with a horizontal diffuse irradiation of 100 w/m^2:
#########################################################
!gensky 6 20 +15.0 -a 1.0 -o 103.0 -m 105 -u -B 100.0 -g 0.0

skyfunc glow sky_glow 0 0 4 1.0 1.0 1.0 0

skyfunc glow ground_glow 0 0 4 1.0 1.0 1.0 0

sky_glow source sky 0 0 4 0 0 1 180

ground_glow source ground 0 0 4 0 0 -1 180
#########################################################

We use the following specification for rtrace to calculate the irradiation of a sensor point:
aa=0.1, ab=1, ad=4096, ar=512, as=1024

We then divide the irradiation value of the sensor point as obtained by 100 (the unobstructed horizontal diffuse irradiation as specified for the "-B" option of gensky) and this will give us the SVF of that sensor point.

According to the way of calculating SVF as introduced by Compagnon (2004), my question is:
Should the vector of the sensor point being measured always point upward to the zenith (in other words, the xyz vector for the sensor is 0 0 1) no matter how the normal of that sensor point might oriented to?

For example, if we try to calculate the SVF of the centroid of a tilted polygon (a non-horizontal and non-vertical plane), should we specify the vector of the sensor as 0 0 1 or as the xyz vector values of the actual normal of that polygon?

Thanks!

Ji

One more thing:
If you have a single surface under the sky, its SVF can easily be calculated as: SVF=(1+cos(a))/2 where a is the tilt angle of the surface (a=0 for a horizontal surface; a=90 for a vertical surface; a=180 for an horizontal surface oriented towards the ground)

You can then check your radiance calculations by comparing your results with this formula.
For instance by printing a graph like this:

bgraph | x11meta
Adata=!"cnt 181 | rcalc -e '$1=0;$2=0;$3=0;a=$1*PI/180;$4=sin(a);$5=0;$6=cos(a)' | rtrace -h -w -I -aa 0 -ab 1 s.oct | rcalc -e '$1=recno;$2=$1'"
Bdata=!"cnt 181 | rcalc -e 'a=$1*PI/180;$1=recno;$2=(1+cos(a))/2'"
xlabel=tilt
ylabel=SVF

You should see that the two curves totally overlap!

Raphaël