Calculating Solar Array Orientation: A Guide for Scientists

In summary, the problem at hand is determining the tilt angle and azimuth of a solar array as it rotates around a fixed axis running from north to south. The tilt angle is equal to the amount of rotation about the axis, however, the problem becomes more complex if the axis is tilted at an angle towards the south. The solution involves representing the problem with vector geometry and using rotation matrices to determine the tilt angle and azimuth of the array. The confusion regarding the mechanics of the device has been addressed and the correct order of multiplication for the matrices has been clarified.
  • #1
drogerssolar
23
0
Hello!

I was hoping someone on this board might be able to point me in the right direction to solve my problem. I am trying to determine how the tilt angle (from the horizontal) and azimuth of a solar array changes as the array rotates around a fixed axis running from north to south.

The problem is simple if the axis is parallel or at 0 degrees. The tilt angle of the array would be equal to the amount of rotation about the axis; however, if the axis is tilted on a 35degree angle towards the south the problem gets more complex.

Could anyone point me to the right area of Physics that I should study in order to solve my problem. I should be able to refresh my calculus skills as this will probably be required.
Also just to clarify, the azimuth is the north-east-south-west position that the front of the array faces (if it is tilted, as there is no azimuth with 0 tilt). 0 degrees is north, 180 is south increasing clockwise.

Thank you to all that reply
 
Physics news on Phys.org
  • #2
I am having a hard time picturing exactly what you mean. In general, represent any important feature in the problem by a vector with Cartesian components, then apply rotation matrices to the vector until it points in the direction you want. There is no calculus required. This is simple vector geometry.
 
  • #3
drogerssolar,

I agree with chrisbaird that your description of the problem is unclear. If I think of an array with a given tilt angle sitting on a turntable whose top is in the horizontal plane, I can rotate the turntable without changing the angle of the array to the horizontal.
 
  • #4
Sorry about the confusion. Let me clarify:
-A flat plane (the array) is attached to a horizontal bar along center (the fixed axis). It kind of works like a teeter totter.
-In my case this bar or fixed axis runs from north to south. It can be adjusted manually to be anywhere from 0 to 80 degrees to the horizontal.
-I have mine at about 35 degrees off of the horizontal.
-The flat plane (or array) then rotates around this tilted axis, to point the plane either East or West.
-So my question is: When the North-South bar is set to 35 degrees, and the plane is rotated around this bar by 60 degrees to the East (or West), what is the tilt of the "flat plane" with respect to the horizontal, not the bar it is attached to.

-I realize that both the plane and the bar are 35 degrees to the horizontal when it is facing due south. I also know that the plane is 90 degrees and the bar 35 degrees to the horizontal when it is facing either due East or West. What I don't know is how to determine the tilt of the plane to the horizontal for the X degrees of rotation around the bar (fixed axis).

I hope this made things more clear, and not more confusing. I will attach a picture (taken from: http://www.sunlinksolartracker.com/products.htm [Broken]) with the hope the visuals will help you understand. I can't find a good picture of the back side, but the one attached shows what the array looks like partially rotated towards the west.
Thank you so much for any help you can provide.

Kindest Regards,
Dan Rogers
 

Attachments

  • tracker_city.jpg
    tracker_city.jpg
    15.2 KB · Views: 398
Last edited by a moderator:
  • #5
Ok!

I might have figured this one out. Let me know if you think I'm on the right track.
1) I said that my x-axis runs north south, my y-axis is east-west, and z is up-down
2) I created a rotation matrix to describe the 35degree tilt of my center bar that runs north to south. The matrix looks like this:
|COS(35), 0, SIN(35)|
|0 , 1, 0 |
|-SIN(35), 0, COS(35)|

3) I created a matrix to describe the rotation around the center bar (or X axis). That matrix looks like this:
|1, 0, 0|
|0, COS(60), -SIN(60)|
|0, SIN(60), COS(60) |

4) I multiplied the two matrices to get:
|COS(35), 0 , SIN(35)|
|0.49673176494347501832, 0.5 , -0.70940647993850298834|
|-0.2867882182, SIN(60), 0.40957602215|

5) I than took the Z value of my newly rotated Z axis: 0.40957602215
and than used simple trig to say that my new tilt angle with respect to the horizontal is:
COS(Tilt Angle)= Z/1
or rearranged
Tilt Angle = ACOS(Z)
Tilt Angle =ACOS(0.40957602215)
Tilt Angle = 65.82 degrees

Does this look right?
 
  • #6
You have to pay attention to the order you use in multiplying the matrices. I'm not sure the order you used is what you want. The most usual way to visualize what matrices do to vectors by saying that they multiply a column vector on the left. So if you use matrix A to represent a rotation then the rotated vector is given by the product:

[tex] A \begin{bmatrix} x \\ y \\ z \end{bmatrix} [/tex]

The order of multiplication that use used implies that you first changed the location of the existing x,y and z axis by rotating that system about the y-axis.

Then you rotated the system again about the x-axis. However since this rotation is done after the first, the rotation so it is not being done about the original x-axis. It is being done about the x-axis in its revised position, the direction it landed after the first rotation.

I still don't understand the mechanics of your device, so I don't know if that's what you intended. We will also have to pay attention to the signs of the angles that are used.
 
  • #7
Stephen,

You stated that I:

"The order of multiplication that use used implies that you first changed the location of the existing x,y and z axis by rotating that system about the y-axis.

Then you rotated the system again about the x-axis. However since this rotation is done after the first, the rotation so it is not being done about the original x-axis. It is being done about the x-axis in its revised position, the direction it landed after the first rotation."

This is exactly what I wanted to do. The angle (with respect to the original XY plane) of the new Z-axis after the 3-axis system was rotated twice, was half of the information I wanted. I was able to simulate these same steps in Google Sketchup and the answer was close to the correct value.

I also wanted to know the angle (with respect to the original ZX plane) of the new Z-axis after the 3-axis system was rotated twice. For some reason I can't figure out how to find this angle.
Any ideas?
 
  • #8
drogerssolar said:
Stephen,


I also wanted to know the angle (with respect to the original ZX plane) of the new Z-axis after the 3-axis system was rotated twice.

Multiply the product of the two rotation matrices times [tex] \begin{bmatrix}0\\0\\1 \end{bmatrix} [/tex].

That gives the final postion of the z-axis as a vector. We can figure out how to find the angle between the vector and the original zx plane.
 
  • #9
drogerssolar said:
Hello!

I was hoping someone on this board might be able to point me in the right direction to solve my problem. I am trying to determine how the tilt angle (from the horizontal) and azimuth of a solar array changes as the array rotates around a fixed axis running from north to south.

The problem is simple if the axis is parallel or at 0 degrees. The tilt angle of the array would be equal to the amount of rotation about the axis; however, if the axis is tilted on a 35degree angle towards the south the problem gets more complex.

Could anyone point me to the right area of Physics that I should study in order to solve my problem. I should be able to refresh my calculus skills as this will probably be required.
Also just to clarify, the azimuth is the north-east-south-west position that the front of the array faces (if it is tilted, as there is no azimuth with 0 tilt). 0 degrees is north, 180 is south increasing clockwise.

Thank you to all that reply


Hello, I am late to this thread but I would like to bring my contribution.

You should get accustomed with Euler angles to manage properly the solar panel. Euler angles are not quit simple to understand and manage, but in the end the work very well.

Your explanation of the problem is clear. You want to move your panel in a way that the sun rays are always perpendicular to the surface.
You can operate the panel with two angles:
Azimuth
0° North
90° West
180° South
270° East

Tilt
0° Panel is vertical (sun at sunset or dawn)
90° Sun right over your head

I did something similar some time ago, and the procedure is really not immediate to understand. You should take account of the tilt of the Earth axis (which is not small 23°), and if you take in your computation the Earth tilt you have to manage also the day of the year.

First of all you should display on a paper or in your head (more difficult) your scene: the sun, the earth, the time of the day, the day of the year, the Earth tilt, your latitude.
As you see the situation get pretty soon garbled.

It is convenient to put the Earth at the center of the scene and assume the sun rotates around the Earth during the year.

As for the rotation sequence, the most used Euler rotation proceeds like this:
- Rotate around Z
- Rotate around x
- Rotate around z'

I suggest you to follow this one.

Ok, for the moment I think you have enough to ponder about.
Is it a real application, do you have a solar panel at home, or is it just an exercise ?
 
  • #10
drogerssolar said:
Ok!

I might have figured this one out. Let me know if you think I'm on the right track.
1) I said that my x-axis runs north south, my y-axis is east-west, and z is up-down
2) I created a rotation matrix to describe the 35degree tilt of my center bar that runs north to south. The matrix looks like this:
|COS(35), 0, SIN(35)|
|0 , 1, 0 |
|-SIN(35), 0, COS(35)|

3) I created a matrix to describe the rotation around the center bar (or X axis). That matrix looks like this:
|1, 0, 0|
|0, COS(60), -SIN(60)|
|0, SIN(60), COS(60) |

4) I multiplied the two matrices to get:
|COS(35), 0 , SIN(35)|
|0.49673176494347501832, 0.5 , -0.70940647993850298834|
|-0.2867882182, SIN(60), 0.40957602215|

5) I than took the Z value of my newly rotated Z axis: 0.40957602215
and than used simple trig to say that my new tilt angle with respect to the horizontal is:
COS(Tilt Angle)= Z/1
or rearranged
Tilt Angle = ACOS(Z)
Tilt Angle =ACOS(0.40957602215)
Tilt Angle = 65.82 degrees

Does this look right?

The approach is right, but of course you will have a misalignement because of the Earth tilt.
If you want to make a good alignement you have to consider all the variable possible.
We can neglect some fancy things like the nutation of the Earth axis, of the precession of the equinox, but ok...

Your rotation matrix are about Y (the first) and about X (the second).
I don't see any rotation about the Z axis which is foundamental for your panel.
 
  • #11
Thanks for the replies Quinzio and Stephen. This is indeed a lot to think about; however, I have all day! :)
I do have a real solar array set up with this kind of tracking system (single axis). My goal is to model PV array production for any clear sky day of the year. I also have been using Google Sketch-up to rotate a module shaped rectangle the same way my array would rotate. This helps me measure angles and check the accuracy of my matrix calculations.

I have already created a model of sun position in excel for each minute of any day of the year using the NOAA method seen here: http://www.srrb.noaa.gov/highlights/sunrise/calcdetails.html
I than added the Bird clear sky model to estimate clear sky solar radiation for any particular minute. It can be found here:http://rredc.nrel.gov/solar/models/clearsky/

I am pretty sure the NOAA model takes the tilt of the Earth into account, and yes you are right, this is very important for accuracy.

I will investigate this Z,X,Z series of rotations and see if I can better understand euler angles. If I get stumped I will post more questions. OH ya.. Also you said a rotation around the Z-axis is fundamental for my panel. I have been calling the axis from the ground to the sky my Z-axis, is this correct? While reading about matrices I noticed computer gaming programmers use Y-axis as the vertical axis and X, Z as the 2 horizontal axis (at least before rotation). Sorry if this adds more confusion, I just want to be sure we are talking about the same axis.

Thank you again for all the information and help you have provided.

Regrads,
Dan Rogers
 
Last edited:
  • #12
Ok a bit of an update. I have been able to calculate the tilt and azimuth; however I had to use an angle I measured using Google Sketch-up. I'm hoping someone might be able to tell me where I can get this angle from. Anyways here is what I did step by step:
x-axis: North to South through array
y-axis: East to West through array
z-axis: Ground to sky through array

Azimuth: 0 degrees = North, 90 degrees = East, 180 degrees = south, ect.
Tilt above horizontal: angle between the ground and the array (angle between inital x-y plane and final x-y plane)

1) I rotated the x-z plane around the Y axis 35 degrees (My tilt above horizontal is now 35 degrees, and azimuth is 180 degrees {or facing due south})

2) I rotated the y-z plane around the X axis 60 degrees (My tilt is now unknown as well as my azimuth)

3) I multiplied my two matrices created from the previous steps.

3) I used the position of my Z axis after these two rotations to calculate my tilt angle. This was done by calculating the ACOS of the z position of my Z axis (Cell 33 of my new matrix created in step 3). [I now know that my tilt angle is 65.8218 after rotating the single axis of my array 60 degrees east or west]-{note that the initial 35 degree rotation is a manual adjustment made to the array just once it will not change throughout the day}

*From this point forward I rotate the array again even though these rotation don't actually take place in real life. I am just using them to calculate the azimuth. Bare with me!

4) I rotate the arrays x-y plane around its Z-axis by 51 degrees (This will not change the current tilt or azimuth of the array). I did this so that my Y-axis is back in the initial x-y plane (or Earth's plane).

5) I rotated the array back 65.8218 degrees (my current tilt angle). Now the array's x-y plane is parallel to the initial x-y plane (earth plane); however, the arrays Y axis is now 71.7 degrees off of the original Y axis. This is my azimuth! Yea! Well sorry not quite... 180-71.7 = 108.3 = Azimuth

*** Now my only problem is I had to measure to get that 51 degrees in step 4. Any idea where this number comes from, and how I can calculate it. This is the missing piece in my puzzle!***
 
  • #13
drogerssolar said:
4) I rotate the arrays x-y plane around its Z-axis by 51 degrees (This will not change the current tilt or azimuth of the array). I did this so that my Y-axis is back in the initial x-y plane (or Earth's plane).

Hi Dan.
First of all you should get an angle which is different from 51°. I checked the computation more than once, but I cannot understand why this difference.
Anyway, this angle can be calculated with the concept of gradient.
To understand the gradient imagine you have your panel in a certain position. If you place a small ball on the face of the panel the ball will start to move following a certain direction, to finally fall down. This is the maximum slope you have on the panel face. This fact is because every falling object falls following the maximum slope.
The opposite of that direction is the direction of the gradient.
Now what you want is to put the face x-axis in the gradient direction, so that y-axis will be parallel to ground.
To calculate the gradient:

[tex]arctg\left ( \frac{tg\ 60}{tg\ 35 \ cos\ 60} \right ) = 78.6° [/tex]
This is the angle you should rotate the panel clockwise (looking the panel from the above).
The problem is I obtain 78.6° while you say you had to rotate it 51°.
I cannot understand, maybe you could check it again.
It's important to be understand if you rotate the panel about the ground axis or by the panel axis.
Anyway I made the computation by rotating the panel about the X axis and then about the panel y axis, but it doesn't match your data.

Maybe you could show come pictures showing how the rotating joints are displaced.
5) I rotated the array back 65.8218 degrees (my current tilt angle). Now the array's x-y plane is parallel to the initial x-y plane (earth plane); however, the arrays Y axis is now 71.7 degrees off of the original Y axis. This is my azimuth! Yea! Well sorry not quite... 180-71.7 = 108.3 = Azimuth
The azimuth is displaced from the south by this angle
[tex]arctg\left ( \frac{sin\ 60}{tg\ 35 } \right ) = 51.04° [/tex]
(pointing east in this example)
Again I found an angle which is different from your.
I cannot understand why. Maybe you could post some picture to show the basic movements of the panel. It would be interesting as well to see the array of panels !

See you.
 
Last edited:
  • #14
Hey Quinzio,

Thank you for the help. I don't know if I did the best job explaining how my solar array operates; however, I noticed that the 51.4 degrees you calculated was awful close to my 51 (even though we were trying to calculate different things). I was able to use your azimuth formula but considered this the gradient not the azimuth. After that I was able to correctly calculate the tilt and azimuth for any rotation about my trackers single axis.

Anyways to clarify, I created a model of the array in Google sketchup and will attach it to this post. There are actually 3 arrays in the model. The first shows the array with 0 tilt, the 2nd shows the array with its single axis adjusted to 35 degrees, and the 3rd shows the array rotated 60 degrees around its single axis.

Let me know if you don't have a copy of Google Sketchup (its free), and I will take some screen shots and post them.

Now I must move on to the next step of my problem. I have a method of calculating azimuth and tilt from the number of degrees rotation around my axis; however, I need to rearrange this problem to solve for tilt if I know the azimuth, or azimuth if I know the tilt. After that I need to use my angle of incidence calculation to try and find out what tilt will give me the lowest Angle of Incidence.
 

Attachments

  • array3.zip
    42.9 KB · Views: 164
  • #15
Here is a copy of my excel sheet that shows my results and how I calculated them. If anyone is interested. I had to delete some of the bottom rows in order to shrink the file size to 100kb. You can just copy (drag and drop) the formulas down the sheet to get to 90 degrees. If you need help with this step just ask.
 

Attachments

  • Single Axis Tracker Calculation (V1).xls
    93.5 KB · Views: 217
  • #16
So I was able to calculate azimuth from knowing the modules tilt angle with respect to the ground. I can't seem to be able to calculate the modules tilt angle from the azimuth though.

I think this is because I require information about both the gradient and the degrees of rotation about the tilted axis to get there.

If I take an azimuth of 120 degrees, I know the displacement from my resting position (180) is 60 degrees. If I take the COS of 60 [COS(60)=.5] this gives me the Y position of my Y axis. In my calculation of azimuth from tilt I got this Y position by:
.5 = COS(Gradient)*COS(Rotation)*1

I also calculated the gradient in the previous calculations from the degrees of rotation around the tilted axis. So substituting that formula for (Gradient) gives me:

R= Rotation
Axis Tilt = 35

.5 = COS(R) x COS(ATAN[SIN(R)/TAN(Axis Tilt)])

so...

ACOS(.5) = R x ATAN([SIN(R)/TAN(Axis Tilt)])

then...

TAN(ACOS(.5)) = TAN(R) x SIN(R)/TAN(35)

TAN(35) x TAN(ACOS(.5)) = TAN(R) x SIN(R) = SIN(R) x SIN(R)/COS(R)

1.212795 = SIN(R) x SIN(R)/COS(R)

This is where I'm stuck. Does anyone know hoe I can rearrange anymore to solve for R? I'm starting to think I might need calculus for this step. Any hints?
 
  • #17
Hi Dan,
I have to revise my previous formula because I assumed the panel are moving in a wrong way.
Looking your picture cleared my doubts.
I will give you the expressions from going to Panel Tilt, Azimuth to Sun Elevation, Azimuth.
 
  • #18
Hello, I made this piece of code which does the calculation.
It's a Visual Basic code. You can find at Microsoft a free version of Visual Basic, but all the code can be easily converted to C, or other codes.
The code is divided into two parts.
The first part is with panel horizontal, you give the tilt angle in degree and the other rotation. I called them RotationA (tilt) and B.
As you do RotationA positive, panel will face south, and RotationB positive panel will face East.
Before the second part you have the angle of the panel face wrt the ground plane and the azimunth wrt the south.
You can also fine the panel "disaplacement", that is how much you have to rotate the panel about its perpendicular to have the edge parallel to the ground (the 51 degree of the posts above).

In the second part you have the Sun azimuth and elevation. Elevation is the Sun angle wrt the horizon, azimuth wrt the south (positive toward east).
In the end you have RotationA and B which are the same angle as before.

In the examples of the previous posts RotationA=35°. RotationB= 60°

Now I have obtained the correct angles of azimuth 71, and panel "displacement" of 51.

I have quickly tested the code, if there's something wrong, just tell me to fix it.
Have fun.
Code:
Module Module1
    Public Structure vector
        Dim x As Double
        Dim y As Double
        Dim z As Double
    End Structure

    Sub Main()
        Dim Rotation_A As Double
        Dim Rotation_B As Double
        Dim Vector_X As vector
        Dim Vector_Y As vector
        Dim Vector_Z As vector
        Dim Vect_temp As vector
        Dim Vector_Xafter_rotA As vector
        Dim Vector_Yafter_rotA As vector
        Dim Vector_Zafter_rotA As vector
        Dim Rota_axis As vector
        Dim Panel_Y_axis As vector

        Dim Tilt As Double
        Dim Azimuth As Double
        Dim Panel_rot As Double

        Vector_X.x = 1
        Vector_X.y = 0
        Vector_X.z = 0
        Vector_Y.x = 0
        Vector_Y.y = 1
        Vector_Y.z = 0
        Vector_Z.x = 0
        Vector_Z.y = 0
        Vector_Z.z = 1

       ' Begin part I
       ' Enter RotationA and B

        Rotation_A = 35 * (2 * Math.PI / 360)
        Rotation_B = -60 * (2 * Math.PI / 360)

        Vector_Xafter_rotA = Euler_Zxz_(Rotation_A, Rotation_B, 0, Vector_X)
        Vector_Yafter_rotA = Euler_Zxz_(Rotation_A, Rotation_B, 0, Vector_Y)
        Vector_Zafter_rotA = Euler_Zxz_(Rotation_A, Rotation_B, 0, Vector_Z)

        ' Tilting
        Tilt = 90 - Math.Asin(Vector_Yafter_rotA.y) / (2 * Math.PI / 360)
        ' Azimuth
        Azimuth = (Math.Atan2(-Vector_Yafter_rotA.z, -Vector_Yafter_rotA.x) / (2 * Math.PI / 360))
        ' Panel rotation
        Vect_temp = Vec_pr(Vector_Y, Vector_Yafter_rotA)
        Vect_temp = Vec_mul(Vect_temp, Vec_mod(Vect_temp) ^ -1)
        Panel_rot = Math.Acos(Dot_pr(Vect_temp, Vector_Zafter_rotA))
        Panel_rot /= (2 * Math.PI / 360)

       ' End part I       ' Begin part II
       ' Enter Elevation and Azimuth

        Tilt = 80 * (2 * Math.PI / 360)
        Azimuth = 10 * (2 * Math.PI / 360)

        Panel_Y_axis.y = Math.Sin((Math.PI / 2) - Tilt)
        Panel_Y_axis.x = ((Math.Cos(Math.PI + Azimuth)) Mod (2 * Math.PI)) * Math.Cos((Math.PI / 2) - Tilt)
        Panel_Y_axis.z = ((Math.Sin(Math.PI + Azimuth)) Mod (2 * Math.PI)) * Math.Cos((Math.PI / 2) - Tilt)

        Rota_axis = Vec_pr(Vector_Z, Panel_Y_axis)
        Rota_axis = Vec_mul(Rota_axis, Vec_mod(Rota_axis) ^ -1)
        Rotation_B = Math.Acos(Dot_pr(Vector_Z, Panel_Y_axis)) - Math.PI / 2

        Panel_Y_axis = Vec_add(Vec_mul(Vec_pr(Rota_axis, Panel_Y_axis), Math.Sin(-Rotation_B)), Vec_mul(Panel_Y_axis, Math.Cos(-Rotation_B)))

        Rotation_A = Math.Acos(Dot_pr(Vector_X, Panel_Y_axis)) - Math.PI / 2

        Rotation_A /= (2 * Math.PI / 360)
        Rotation_B /= (2 * Math.PI / 360)

       ' End part II    End Sub

    Function Euler_Zxz_(ByVal rot1 As Double, ByVal rot2 As Double, ByVal rot3 As Double, ByVal myvector As vector) As vector
        Dim ret_vector As vector

        ret_vector.x = (Math.Cos(rot1) * Math.Cos(rot3) - Math.Cos(rot2) * Math.Sin(rot1) * Math.Sin(rot3)) * myvector.x
        ret_vector.x += (-Math.Cos(rot1) * Math.Sin(rot3) - Math.Cos(rot3) * Math.Cos(rot2) * Math.Sin(rot1)) * myvector.y
        ret_vector.x += (Math.Sin(rot2) * Math.Sin(rot1)) * myvector.z

        ret_vector.y = (Math.Cos(rot2) * Math.Cos(rot1) * Math.Sin(rot3) + Math.Cos(rot3) * Math.Sin(rot1)) * myvector.x
        ret_vector.y += (Math.Cos(rot1) * Math.Cos(rot2) * Math.Cos(rot3) - Math.Sin(rot1) * Math.Sin(rot3)) * myvector.y
        ret_vector.y += (-Math.Cos(rot1) * Math.Sin(rot2)) * myvector.z

        ret_vector.z = (Math.Sin(rot3) * Math.Sin(rot2)) * myvector.x
        ret_vector.z += (Math.Cos(rot3) * Math.Sin(rot2)) * myvector.y
        ret_vector.z += (Math.Cos(rot2)) * myvector.z

        Return ret_vector

    End Function

    Function Vec_pr(ByVal vectorA As vector, ByVal vectorB As vector) As vector
        Dim ret_vector As vector
        ret_vector.x = vectorA.y * vectorB.z - vectorB.y * vectorA.z
        ret_vector.y = vectorA.z * vectorB.x - vectorB.z * vectorA.x
        ret_vector.z = vectorA.x * vectorB.y - vectorB.x * vectorA.y
        Return ret_vector
    End Function

    Function Dot_pr(ByVal vectorA As vector, ByVal vectorB As vector) As Double
        Dim ret_scalar As Double
        ret_scalar = vectorA.x * vectorB.x
        ret_scalar += vectorA.y * vectorB.y
        ret_scalar += vectorA.z * vectorB.z
        Return ret_scalar
    End Function
    Function Vec_mod(ByVal vectorA As vector) As Double
        Return Math.Sqrt(Dot_pr(vectorA, vectorA))
    End Function
    Function Vec_mul(ByVal vectorA As vector, ByVal fact As Double) As vector
        Dim Ret_vector As vector
        Ret_vector.x = vectorA.x * fact
        Ret_vector.y = vectorA.y * fact
        Ret_vector.z = vectorA.z * fact
        Return Ret_vector
    End Function
    Function Vec_add(ByVal vectorA As vector, ByVal vectorB As vector) As vector
        Dim Ret_vector As vector
        Ret_vector.x = vectorA.x + vectorB.x
        Ret_vector.y = vectorA.y + vectorB.y
        Ret_vector.z = vectorA.z + vectorB.z
        Return Ret_vector
    End Function
End Module
 
Last edited:
  • #19
Hey!

Well I can't thank you enough for all of your help Quinzio. I am currently downloading visual basic (well XP SP3 first). I can't wait to try out the code!
This was a very good learning experience. I will let you know when I actually finish my excel sheet model and will post it if you are interested.

Thanks again!
 
  • #20
Quinzio. I have downloaded a copy of Visual Basic Express 2010. I open a new Windows Fourms application and copy and paste your code but I can't seem to get it to work. Any ideas what I might be doing wrong?
Thanks again for all your help!
 
  • #21
Hi there !
I wrote that code for a "Console Application", which is the equivalent of the old DOS non-graphic applications. That means you have no windows-like input output, and you step-by-step into the code to watch it working.

So I now fit that code inside a Windows Form application, which is indeed more pleasant to see and use.
There is the project attached, unzip it and click on the .sln file.
It should open automatically.
With the project loaded press F5 to run it, or the "play-like" green arrow.
How to use it should be quite straightforward, that's what I hope...
To make step by step execution into the code, press F8, then launch a conversion, or place a so called breakpoint in the code.
I made it with Visual Basic 2008 version, but this shouldn't affect anything, it's a rather simple piece of code.
Have fun, bye.
 

Attachments

  • SolarPanel.zip
    79.1 KB · Views: 132
Last edited:

What is the orientation of a solar array?

The orientation of a solar array refers to the direction in which the solar panels are facing. It is typically measured in terms of compass directions, such as north, south, east, and west.

Why is the orientation of a solar array important?

The orientation of a solar array is important because it affects the amount of sunlight that the panels receive. Optimal orientation allows for maximum sunlight exposure, resulting in higher energy production.

What is the ideal orientation for a solar array?

The ideal orientation for a solar array depends on the location and latitude of the installation. In general, a south-facing orientation is considered the most efficient in the northern hemisphere, while a north-facing orientation is preferred in the southern hemisphere.

Can a solar array be installed on a roof with a different orientation?

Yes, a solar array can still be installed on a roof with a different orientation. However, it may not be as efficient as an ideal orientation and may require more panels to achieve the same energy production.

How can I determine the best orientation for my solar array?

The best orientation for a solar array can be determined by consulting a solar installer or using online tools that take into account factors such as location, latitude, and roof tilt. Additionally, considering the time of day and year when the most energy is needed can also help determine the best orientation.

Similar threads

  • Introductory Physics Homework Help
Replies
4
Views
746
  • Introductory Physics Homework Help
Replies
5
Views
1K
Replies
2
Views
764
  • General Math
Replies
12
Views
2K
  • Introductory Physics Homework Help
Replies
21
Views
2K
  • Introductory Physics Homework Help
Replies
1
Views
828
  • Introductory Physics Homework Help
Replies
8
Views
1K
  • Introductory Physics Homework Help
Replies
19
Views
6K
  • Introductory Physics Homework Help
Replies
14
Views
2K
  • Introductory Physics Homework Help
Replies
3
Views
2K
Back
Top