1 |
REQUIRE "atoms.a4l"; |
2 |
REQUIRE "solar/solar_types.a4l"; |
3 |
REQUIRE "johnpye/thermo_types.a4c"; |
4 |
REQUIRE "johnpye/sunpos.a4c"; |
5 |
|
6 |
MODEL sunpos_wrapper REFINES sunpos; |
7 |
METHODS |
8 |
METHOD specify; |
9 |
FIX t, L_st, L_loc, phi; (* time and location *) |
10 |
FIX beta, gamma; (* surface orientation *) |
11 |
END specify; |
12 |
END sunpos_wrapper; |
13 |
|
14 |
|
15 |
MODEL absorbed_intensity; |
16 |
|
17 |
t IS_A time; (* starting at zero at midnight on 1 Jan *) |
18 |
|
19 |
L_st IS_A angle; (* standard meridian for the current time zone *) |
20 |
L_loc IS_A angle; (* local longitude *) |
21 |
phi IS_A angle; (* latitude, north positive *) |
22 |
|
23 |
gamma IS_A angle; (* surface azimuth angle, south=0, west positive *) |
24 |
beta IS_A angle; (* surface inclination, horiz=0, +90deg=vertical *) |
25 |
|
26 |
|
27 |
|
28 |
sp IS_A sunpos_wrapper; |
29 |
|
30 |
L_st, sp.L_st ARE_THE_SAME; |
31 |
L_loc, sp.L_loc ARE_THE_SAME; |
32 |
phi, sp.phi ARE_THE_SAME; |
33 |
t, sp.t ARE_THE_SAME; |
34 |
|
35 |
beta, sp.beta ARE_THE_SAME; |
36 |
gamma, sp.gamma ARE_THE_SAME; |
37 |
|
38 |
|
39 |
value IS_A intensity; |
40 |
G IS_A intensity; |
41 |
Gt IS_A intensity; |
42 |
Gd IS_A intensity; |
43 |
Gb IS_A intensity; |
44 |
|
45 |
Fs IS_A factor; |
46 |
Fg IS_A factor; |
47 |
Rb IS_A factor; |
48 |
r IS_A factor; |
49 |
rg IS_A factor; |
50 |
|
51 |
|
52 |
|
53 |
value = Gt * r; |
54 |
|
55 |
Gt = Gb*Rb + Fs*Gd + Fg*rg*G; |
56 |
G = Gb + Gd; |
57 |
Gd = 0.177 * G; |
58 |
|
59 |
Fs = (1 + cos(sp.beta))/2; |
60 |
Fg = (1 - cos(sp.beta))/2; |
61 |
Rb = cos(sp.theta) / cos(sp.theta_z); |
62 |
|
63 |
METHODS |
64 |
METHOD specify; |
65 |
FIX G, rg, r; |
66 |
RUN sp.specify; |
67 |
END specify; |
68 |
|
69 |
METHOD values; |
70 |
G := 950 {W/m^2}; |
71 |
rg := 0.9; |
72 |
r := 0.8; |
73 |
|
74 |
L_st := -90{deg}; (* USA Central time*) |
75 |
L_loc := -89.4{deg}; |
76 |
phi := +43{deg}; |
77 |
(* t := 32.4375 {d}; *) |
78 |
t := 32{d} + 10{h}+30{min}; |
79 |
|
80 |
(* surface orientation *) |
81 |
beta := 45{deg}; |
82 |
gamma := 15{deg}; |
83 |
END values; |
84 |
|
85 |
METHOD on_load; |
86 |
RUN specify; |
87 |
RUN values; |
88 |
END on_load; |
89 |
END absorbed_intensity; |
90 |
|
91 |
MODEL example_absorbed_intensity REFINES absorbed_intensity; |
92 |
|
93 |
METHODS |
94 |
METHOD specify; |
95 |
RUN absorbed_intensity::specify; |
96 |
END specify; |
97 |
|
98 |
METHOD values; |
99 |
G := 950 {W/m^2}; |
100 |
rg := 0.9; |
101 |
r := 0.8; |
102 |
|
103 |
L_st := -90{deg}; (* USA Central time*) |
104 |
L_loc := -89.4{deg}; |
105 |
phi := +43{deg}; |
106 |
(* t := 32.4375 {d}; *) |
107 |
t := 32{d} + 10{h}+30{min}; |
108 |
|
109 |
(* surface orientation *) |
110 |
beta := 45{deg}; |
111 |
gamma := 15{deg}; |
112 |
END values; |
113 |
|
114 |
METHOD on_load; |
115 |
RUN specify; |
116 |
RUN values; |
117 |
END on_load; |
118 |
END example_absorbed_intensity; |