/[ascend]/trunk/models/solar/tracker.a4l
ViewVC logotype

Diff of /trunk/models/solar/tracker.a4l

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2618 by jpye, Mon Apr 23 22:03:47 2012 UTC revision 2619 by jpye, Fri May 11 23:49:20 2012 UTC
# Line 1  Line 1 
1    (*
2    Models of fixed surfaces and solar trackers.
3    
4    First version by Vikram Kaadam (2011) as part of GSOC2011.
5    Second version by John Pye (2012).
6    *)
7  REQUIRE "atoms.a4l";  REQUIRE "atoms.a4l";
8  REQUIRE "solar/solar_types.a4l";  REQUIRE "solar/solar_types.a4l";
9  REQUIRE "johnpye/thermo_types.a4c";  REQUIRE "johnpye/thermo_types.a4c";
10  REQUIRE "johnpye/nrel/sunpos_nrel.a4c";  REQUIRE "johnpye/nrel/sunpos_nrel.a4c";
11    
12    (*
13        Fixed surface with specified tilt and orientation. Calculate the
14        angle between the solar rays and the surface normal.
15    
16        Equation from Duffie and Beckman.
17    *)
18  MODEL sunpos_tilted_surface REFINES sunpos_nrel;  MODEL sunpos_tilted_surface REFINES sunpos_nrel;
19      beta "inclination angle of tilted surface"      beta "inclination angle of tilted surface"
20      , gamma "azimuth angle of tilted surface"      , gamma "azimuth angle of tilted surface"
# Line 35  METHOD self_test; Line 47  METHOD self_test;
47  END self_test;  END self_test;
48  END sunpos_tilted_surface_test;  END sunpos_tilted_surface_test;
49    
50    
51  (*  (*
52  MODEL sunpos_tracker_type1;      A single-axis solar tracker with horizontal axis. Calculate the
53      (* The collector is rotated about a horizontal east-west axis with single daily adjustment such that the solar beam is normal to the collector aperture plane at solar noon *)      angle between the solar rays and the normal to the tracker. Also
54        calculate the tracker orientation angle.
55    
56        Equation adapted from http://www.powerfromthesun.net.
57    
58      sp IS_A sunpos_wrapper;      TODO need to be check carefully, because Powewr From The Sun uses the
59        azimuth as east of north angle convention, and we are using west of south.
60    *)
61    MODEL solar_tracker_single_horiz REFINES sunpos_nrel;
62        gamma "azimuth angle of the tracker axis"
63        , theta "angle between solar rays and the collector normal"
64        , rho "rotation angle of the tracker, with upwards = 0"
65        IS_A angle;
66    
67      cos(sp.beta) * cos(sp.phi - sp.delta) + cos(sp.gamma) * sin(sp.beta) * sin(sp.phi - sp.delta) = 1;      theta = arcsin(cos(altitude)*cos(azimuth - gamma));
68        rho = arctan(sin(azimuth - gamma)/tan(altitude));
69    METHODS
70    METHOD specify;
71        RUN offset.specify;
72        FIX p, T, t;
73        FIX gamma;
74    END specify;
75    METHOD values;
76        RUN offset.values;
77        gamma := 0 {deg}; (* axis aligned north-south *)
78        p := 1 {bar};
79        T := 298 {K};
80        t :=  43.5 {d};
81    END values;
82    END solar_tracker_single_horiz;
83    
     METHODS  
         METHOD specify;  
             RUN sp.specify;  
             FREE sp.beta;  
         END specify;  
   
         METHOD bound_self;  
             sp.beta.lower_bound := -90 {deg};  
             sp.beta.upper_bound := 90 {deg};  
         END bound_self;  
   
   
         METHOD values;        
             sp.L_st := -90{deg};    (* USA Central time*)  
             sp.L_loc := -89.4{deg};  
             sp.phi := +43{deg};     (* t := 32.4375 {d}; *)  
             sp.t := 32{d} + 10{h}+30{min};  
   
             (* surface orientation *)  
             sp.gamma := 15{deg};  
               
             (* Assumption *)  
             sp.beta := 45{deg};  
         END values;  
   
         METHOD on_load;  
             RUN specify;  
             RUN bound_self;  
             RUN values;  
         END on_load;  
   
 END sunpos_tracker_type1;  
   
   
 MODEL tracker_axis_type2 REFINES sunpos_db;  
     (* The collector is rotated about a horizontal east-west axis with single daily adjustment such that the solar beam is normal to the collector aperture plane at solar noon *)  
   
     cos(beta) * cos(phi - delta) + cos(gamma) * sin(beta) * sin(phi - delta) = 1;  
   
     METHODS  
         METHOD specify;  
             FIX t, L_st, L_loc, phi; (* time and location *)  
             FIX beta, gamma; (* surface orientation *)  
   
             FREE beta;  
         END specify;  
   
         METHOD bound_self;  
             beta.lower_bound := 0 {deg};  
             beta.upper_bound := 90 {deg};  
         END bound_self;  
   
         METHOD values;  
             L_st := -90{deg};    (* USA Central time*)  
             L_loc := -89.4{deg};  
             phi := +43{deg};     (* t := 32.4375 {d}; *)  
             t := 32{d} + 10{h}+30{min};  
   
             (* surface orientation *)  
             gamma := 15{deg};  
   
             (* Assumption *)  
             beta := 45{deg};  
         END values;  
   
         METHOD on_load;  
             RUN specify;  
             RUN bound_self;  
             RUN values;  
         END on_load;  
 END sunpos_tracker_type2;  
84    
85    (*
86        Test of the single-axis tracker model. Plot the values of rho and theta
87        for t = 43 to t = 44 d, for gamma = 0 and gamma = 90.
88  *)  *)
89    MODEL solar_tracker_single_horiz_test REFINES solar_tracker_single_horiz;
90        loc.latitude :== 43{deg};
91        loc.longitude :== 0{deg};
92        loc.elevation :== 0{m};
93    METHODS
94    METHOD on_load;
95        RUN specify;
96        zenith := 0;
97        RUN offset.on_load;
98        (* Greenwich at 10:30 am GMT on 13 Feb *)
99        FIX offset.h := 0;
100        FIX offset.tz := 0 {h};
101        FIX t := 31 {d} + 13 {d} - 1 {d} + 10 {h} + 30 {min};
102        (* wot a luvly day: *)
103        FIX T := 298 {K};
104        FIX p := 1 {atm};
105        FIX gamma := 0 {deg};
106        SOLVER QRSlv;
107    END on_load;
108    END solar_tracker_single_horiz_test;
109    
110    

Legend:
Removed from v.2618  
changed lines
  Added in v.2619

john.pye@anu.edu.au
ViewVC Help
Powered by ViewVC 1.1.22