korba 0.4.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e02130eb6662759d8869d606d53c5d7ecc64c26ed59a5605487fdf5e8d785f01
4
- data.tar.gz: 90d8fe4257842deffd1f45ca5fab34013f9decb275ff03f9d59c369f3182e11e
3
+ metadata.gz: 2e1fb6aee8c669efdda379b50b45af24fc6fabf6514972cbfc93a8156c54f533
4
+ data.tar.gz: cde0a77ead9cecb840aa1fad00693c5a5c61428ae6cd6f905f2faf05ec1973d7
5
5
  SHA512:
6
- metadata.gz: 95b4ade626d6622599c3d7e6b533db46a49b820c81cdbc3a8f57838901220950dfdb2643de622d8a414c63a4a24fa15831a8dc489c821ec15c1d10335a929d6c
7
- data.tar.gz: 84b650670d1d10fc81b0cd9e9b5005a2dba965bb119df8913a7e38d0997b0c0f31f53ba105d9c3d13198ae4b768df5c7f23b5eb8e3d4694ea86bc7bf0b3e1ff6
6
+ metadata.gz: 8981644e546a11c656d83c751aa9e9ce19046df56258287a1f9219401377feef7def725de5d4cfa75481dd156179cd93404cc89d20aa80b0761ac0fba42c4d93
7
+ data.tar.gz: 17306bb686d434c116d531681a6dcabd4998825e24ec042e65f1d08b84350e80a2645603ece086edf2c8d124811f641f0706011e5d32b29da687482c3ee61c5b
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## [0.6.0] - 2024-12-27
2
+
3
+ - Enable use SGP4
4
+
5
+ ## [0.5.0] - 2024-12-15
6
+
7
+ - Enable transformation to Cartesian elements
8
+
1
9
  ## [0.4.0] - 2024-12-09
2
10
 
3
11
  - Enable save tle_string
data/README.md CHANGED
@@ -38,7 +38,7 @@ orbit.height_at_perigee
38
38
  orbit.height_at_apogee
39
39
  # => 420372.03623388056
40
40
 
41
- orbit.to_kep
41
+ kep = orbit.to_kep
42
42
  # =>
43
43
  # #<Korba::Kep:xxxxxxxxxxxxxxxx
44
44
  # @arg_of_pericenter=314.0303,
@@ -49,8 +49,28 @@ orbit.to_kep
49
49
  # @object_name="ISS (ZARYA)",
50
50
  # @ra_of_asc_node=174.9565,
51
51
  # @semi_major_axis=6793877.649839985>
52
+
53
+ kep.to_car
54
+ # =>
55
+ # #<Korba::Car:xxxxxxxxxxxxxxxx
56
+ # @epoch="2024-12-07T20:37:24.085055",
57
+ # @object_name="ISS (ZARYA)",
58
+ # @vx=6150.772410883998,
59
+ # @vy=2489.3298780751356,
60
+ # @vz=-3816.0301666253677,
61
+ # @x=4019753.8621700387,
62
+ # @y=-3623966.518673545,
63
+ # @z=4114361.6934797494>
64
+
52
65
  ```
53
66
 
67
+ ## References
68
+
69
+ - 宇宙工学シリーズ 3 人工衛星と宇宙探査機
70
+ - https://www.coronasha.co.jp/np/isbn/9784339012316/
71
+ - 人工衛星の軌道 概論
72
+ - https://www.coronasha.co.jp/np/isbn/9784339046403/
73
+
54
74
  ## Development
55
75
 
56
76
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
data/lib/korba/car.rb ADDED
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Korba
4
+ class Car
5
+ attr_reader :object_name, :epoch, :x, :y, :z, :vx, :vy, :vz
6
+
7
+ def initialize(object_name:, epoch:, x:, y:, z:, vx:, vy:, vz:)
8
+ @object_name = object_name
9
+ @epoch = epoch
10
+ @x = x
11
+ @y = y
12
+ @z = z
13
+ @vx = vx
14
+ @vy = vy
15
+ @vz = vz
16
+ end
17
+ end
18
+ end
data/lib/korba/kep.rb CHANGED
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
- require_relative "orbit_utils"
2
+ require "matrix"
3
3
 
4
4
  module Korba
5
5
  class Kep
6
- include Korba::OrbitUtils
6
+ include OrbitUtils
7
7
 
8
8
  attr_reader :object_name, :epoch, :semi_major_axis, :eccentricity, :inclination, :ra_of_asc_node, :arg_of_pericenter, :mean_anomaly
9
9
 
@@ -17,5 +17,22 @@ module Korba
17
17
  @arg_of_pericenter = arg_of_pericenter
18
18
  @mean_anomaly = mean_anomaly
19
19
  end
20
+
21
+ def to_car
22
+ vector_n = Vector[
23
+ Math.sin(deg_to_rad(inclination)) * Math.sin(deg_to_rad(ra_of_asc_node)),
24
+ -Math.sin(deg_to_rad(inclination)) * Math.cos(deg_to_rad(ra_of_asc_node)),
25
+ Math.cos(deg_to_rad(inclination))
26
+ ]
27
+ vector_omega = Vector[Math.cos(deg_to_rad(ra_of_asc_node)), Math.sin(deg_to_rad(ra_of_asc_node)), 0]
28
+ vector_m = vector_n.cross(vector_omega)
29
+
30
+ r_angle_factor = deg_to_rad(arg_of_pericenter + true_anomaly)
31
+ vector_r = distance * (Math.cos(r_angle_factor) * vector_omega + Math.sin(r_angle_factor) * vector_m)
32
+ v_angle_factor = deg_to_rad(arg_of_pericenter + true_anomaly - path_angle)
33
+ vector_v = velocity * (-Math.sin(v_angle_factor) * vector_omega + (Math.cos(v_angle_factor)) * vector_m)
34
+
35
+ Car.new(object_name:, epoch:, x: vector_r[0], y: vector_r[1], z: vector_r[2], vx: vector_v[0], vy: vector_v[1], vz: vector_v[2])
36
+ end
20
37
  end
21
38
  end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+ require_relative "newton_function"
3
+
4
+ module Korba
5
+ class KeplerEquationFunction < NewtonFunction
6
+ include OrbitUtils
7
+
8
+ attr_reader :eccentricity, :mean_anomaly
9
+
10
+ def initialize(eccentricity:, mean_anomaly:)
11
+ super()
12
+ @eccentricity = eccentricity
13
+ @mean_anomaly = mean_anomaly
14
+ end
15
+
16
+ def values(x)
17
+ [x[0] - eccentricity * Math.sin(x[0]) - deg_to_rad(mean_anomaly)]
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+ require "bigdecimal/newton"
3
+ include Newton
4
+
5
+ module Korba
6
+ class NewtonFunction
7
+ def initialize()
8
+ @zero = BigDecimal("0.0")
9
+ @one = BigDecimal("1.0")
10
+ @two = BigDecimal("2.0")
11
+ @ten = BigDecimal("10.0")
12
+ @eps = BigDecimal("1.0e-14")
13
+ end
14
+
15
+ def zero; @zero; end
16
+ def one; @one; end
17
+ def two; @two; end
18
+ def ten; @ten; end
19
+ def eps; @eps; end
20
+
21
+ def values(x)
22
+ raise NotImplementedError
23
+ end
24
+ end
25
+ end
@@ -4,15 +4,64 @@ module Korba
4
4
  module OrbitUtils
5
5
  def semi_major_axis
6
6
  # a = (μ / n^2)^(1/3) m
7
- (Korba::Constant::GME / (mean_motion * 2 * Math::PI / 86400.0) ** 2.0) ** (1.0 / 3.0)
7
+ (Constant::GME / (mean_motion * 2 * Math::PI / 86400.0) ** 2.0) ** (1.0 / 3.0)
8
8
  end
9
9
 
10
10
  def height_at_perigee
11
- semi_major_axis * (1 - eccentricity) - Korba::Constant::EARTH_RADIUS
11
+ semi_major_axis * (1 - eccentricity) - Constant::EARTH_RADIUS
12
12
  end
13
13
 
14
14
  def height_at_apogee
15
- semi_major_axis * (1 + eccentricity) - Korba::Constant::EARTH_RADIUS
15
+ semi_major_axis * (1 + eccentricity) - Constant::EARTH_RADIUS
16
+ end
17
+
18
+ def eccentric_anomaly
19
+ f = KeplerEquationFunction.new(eccentricity:, mean_anomaly:)
20
+ x = [deg_to_rad(mean_anomaly)]
21
+ nlsolve(f, x)
22
+ rad_to_deg(x[0])
23
+ end
24
+
25
+ def true_anomaly
26
+ factor = (Math.cos(deg_to_rad(eccentric_anomaly)) - eccentricity) / (1 - eccentricity * Math.cos(deg_to_rad(eccentric_anomaly)))
27
+ rad_to_deg(Math.acos(factor))
28
+ end
29
+
30
+ def distance
31
+ semi_major_axis * (1 - eccentricity * Math.cos(deg_to_rad(eccentric_anomaly)))
32
+ end
33
+
34
+ def velocity
35
+ Math.sqrt(Constant::GME * (2 / distance - 1 / semi_major_axis))
36
+ end
37
+
38
+ def path_angle
39
+ factor = Math.sqrt(Constant::GME * semi_major_axis * (1 - eccentricity ** 2)) / (distance * velocity)
40
+ rad_to_deg(Math.acos(factor))
41
+ end
42
+
43
+ def deg_to_rad(deg)
44
+ rad = deg * Math::PI / 180.0
45
+ normalize_rad(rad)
46
+ end
47
+
48
+ def normalize_rad(rad)
49
+ rad = rad + 2 * Math::PI if rad < 0
50
+ normalize_rad = rad > 2 * Math::PI ? rad - 2 * Math::PI : rad
51
+ normalize_rad(normalize_rad) if normalize_rad != rad
52
+ normalize_rad
53
+ end
54
+
55
+ def rad_to_deg(rad)
56
+ deg = rad * 180.0 / Math::PI
57
+ normalize_deg(deg)
58
+ end
59
+
60
+ def normalize_deg(deg)
61
+ deg = deg + 360 if deg < 0
62
+ normalized_deg = deg > 360 ? deg - 360 : deg
63
+ normalize_deg(normalized_deg) if normalized_deg != deg
64
+ normalized_deg
16
65
  end
17
66
  end
18
67
  end
@@ -0,0 +1,432 @@
1
+ module Korba
2
+ #
3
+ # This class implements the elsetrec data type from Vallado's SGP4 code.
4
+ #
5
+ # From SGP4.h
6
+ # #define SGP4Version "SGP4 Version 2016-03-09"
7
+ #
8
+ # @author aholinch
9
+ #
10
+ #
11
+ class ElsetRec
12
+ attr_accessor :whichconst
13
+ attr_accessor :satnum
14
+ attr_accessor :epochyr
15
+ attr_accessor :epochtynumrev
16
+ attr_accessor :error
17
+ attr_accessor :operationmode
18
+ attr_accessor :init
19
+ attr_accessor :method
20
+ attr_accessor :a
21
+ attr_accessor :altp
22
+ attr_accessor :alta
23
+ attr_accessor :epochdays
24
+ attr_accessor :jdsatepoch
25
+ attr_accessor :jdsatepochF
26
+ attr_accessor :nddot
27
+ attr_accessor :ndot
28
+ attr_accessor :bstar
29
+ attr_accessor :rcse
30
+ attr_accessor :inclo
31
+ attr_accessor :nodeo
32
+ attr_accessor :ecco
33
+ attr_accessor :argpo
34
+ attr_accessor :mo
35
+ attr_accessor :no_kozai
36
+ attr_accessor :classification
37
+ attr_accessor :intldesg
38
+ attr_accessor :ephtype
39
+ attr_accessor :elnum
40
+ attr_accessor :revnum
41
+ attr_accessor :no_unkozai
42
+ attr_accessor :am
43
+ attr_accessor :em
44
+ attr_accessor :im
45
+ attr_accessor :Om
46
+ attr_accessor :om
47
+ attr_accessor :mm
48
+ attr_accessor :nm
49
+ attr_accessor :t
50
+ attr_accessor :tumin
51
+ attr_accessor :mu
52
+ attr_accessor :radiusearthkm
53
+ attr_accessor :xke
54
+ attr_accessor :j2
55
+ attr_accessor :j3
56
+ attr_accessor :j4
57
+ attr_accessor :j3oj2
58
+ attr_accessor :dia_mm
59
+ attr_accessor :period_sec
60
+ attr_accessor :active
61
+ attr_accessor :not_orbital
62
+ attr_accessor :rcs_m2
63
+ attr_accessor :ep
64
+ attr_accessor :inclp
65
+ attr_accessor :nodep
66
+ attr_accessor :argpp
67
+ attr_accessor :mp
68
+ attr_accessor :isimp
69
+ attr_accessor :aycof
70
+ attr_accessor :con41
71
+ attr_accessor :cc1
72
+ attr_accessor :cc4
73
+ attr_accessor :cc5
74
+ attr_accessor :d2
75
+ attr_accessor :d3
76
+ attr_accessor :d4
77
+ attr_accessor :delmo
78
+ attr_accessor :eta
79
+ attr_accessor :argpdot
80
+ attr_accessor :omgcof
81
+ attr_accessor :sinmao
82
+ attr_accessor :t2cof
83
+ attr_accessor :t3cof
84
+ attr_accessor :t4cof
85
+ attr_accessor :t5cof
86
+ attr_accessor :x1mth2
87
+ attr_accessor :x7thm1
88
+ attr_accessor :mdot
89
+ attr_accessor :nodedot
90
+ attr_accessor :xlcof
91
+ attr_accessor :xmcof
92
+ attr_accessor :nodecf
93
+ attr_accessor :irez
94
+ attr_accessor :d2201
95
+ attr_accessor :d2211
96
+ attr_accessor :d3210
97
+ attr_accessor :d3222
98
+ attr_accessor :d4410
99
+ attr_accessor :d4422
100
+ attr_accessor :d5220
101
+ attr_accessor :d5232
102
+ attr_accessor :d5421
103
+ attr_accessor :d5433
104
+ attr_accessor :dedt
105
+ attr_accessor :del1
106
+ attr_accessor :del2
107
+ attr_accessor :del3
108
+ attr_accessor :didt
109
+ attr_accessor :dmdt
110
+ attr_accessor :dnodt
111
+ attr_accessor :domdt
112
+ attr_accessor :e3
113
+ attr_accessor :ee2
114
+ attr_accessor :peo
115
+ attr_accessor :pgho
116
+ attr_accessor :pho
117
+ attr_accessor :pinco
118
+ attr_accessor :plo
119
+ attr_accessor :se2
120
+ attr_accessor :se3
121
+ attr_accessor :sgh2
122
+ attr_accessor :sgh3
123
+ attr_accessor :sgh4
124
+ attr_accessor :sh2
125
+ attr_accessor :sh3
126
+ attr_accessor :si2
127
+ attr_accessor :si3
128
+ attr_accessor :sl2
129
+ attr_accessor :sl3
130
+ attr_accessor :sl4
131
+ attr_accessor :gsto
132
+ attr_accessor :xfact
133
+ attr_accessor :xgh2
134
+ attr_accessor :xgh3
135
+ attr_accessor :xgh4
136
+ attr_accessor :xh2
137
+ attr_accessor :xh3
138
+ attr_accessor :xi2
139
+ attr_accessor :xi3
140
+ attr_accessor :xl2
141
+ attr_accessor :xl3
142
+ attr_accessor :xl4
143
+ attr_accessor :xlamo
144
+ attr_accessor :zmol
145
+ attr_accessor :zmos
146
+ attr_accessor :atime
147
+ attr_accessor :xli
148
+ attr_accessor :xni
149
+ attr_accessor :snodm
150
+ attr_accessor :cnodm
151
+ attr_accessor :sinim
152
+ attr_accessor :cosim
153
+ attr_accessor :sinomm
154
+ attr_accessor :cosomm
155
+ attr_accessor :day
156
+ attr_accessor :emsq
157
+ attr_accessor :gam
158
+ attr_accessor :rtemsq
159
+ attr_accessor :s1
160
+ attr_accessor :s2
161
+ attr_accessor :s3
162
+ attr_accessor :s4
163
+ attr_accessor :s5
164
+ attr_accessor :s6
165
+ attr_accessor :s7
166
+ attr_accessor :ss1
167
+ attr_accessor :ss2
168
+ attr_accessor :ss3
169
+ attr_accessor :ss4
170
+ attr_accessor :ss5
171
+ attr_accessor :ss6
172
+ attr_accessor :ss7
173
+ attr_accessor :sz1
174
+ attr_accessor :sz2
175
+ attr_accessor :sz3
176
+ attr_accessor :sz11
177
+ attr_accessor :sz12
178
+ attr_accessor :sz13
179
+ attr_accessor :sz21
180
+ attr_accessor :sz22
181
+ attr_accessor :sz23
182
+ attr_accessor :sz31
183
+ attr_accessor :sz32
184
+ attr_accessor :sz33
185
+ attr_accessor :z1
186
+ attr_accessor :z2
187
+ attr_accessor :z3
188
+ attr_accessor :z11
189
+ attr_accessor :z12
190
+ attr_accessor :z13
191
+ attr_accessor :z21
192
+ attr_accessor :z22
193
+ attr_accessor :z23
194
+ attr_accessor :z31
195
+ attr_accessor :z32
196
+ attr_accessor :z33
197
+ attr_accessor :argpm
198
+ attr_accessor :inclm
199
+ attr_accessor :nodem
200
+ attr_accessor :dndt
201
+ attr_accessor :eccsq
202
+ attr_accessor :ainv
203
+ attr_accessor :ao
204
+ attr_accessor :con42
205
+ attr_accessor :cosio
206
+ attr_accessor :cosio2
207
+ attr_accessor :omeosq
208
+ attr_accessor :posq
209
+ attr_accessor :rp
210
+ attr_accessor :rteosq
211
+ attr_accessor :sinio
212
+
213
+ def initialize
214
+ @whichconst = 2 #SGP4.wgs72
215
+ @satnum = 0
216
+ @epochyr = 0
217
+ @epochtynumrev = 0
218
+ @error = 0
219
+ @operationmode = 0
220
+ @init = 0
221
+ @method = 0
222
+ @a = 0.0
223
+ @altp = 0.0
224
+ @alta = 0.0
225
+ @epochdays = 0.0
226
+ @jdsatepoch = 0.0
227
+ @jdsatepochF = 0.0
228
+ @nddot = 0.0
229
+ @ndot = 0.0
230
+ @bstar = 0.0
231
+ @rcse = 0.0
232
+ @inclo = 0.0
233
+ @nodeo = 0.0
234
+ @ecco = 0.0
235
+ @argpo = 0.0
236
+ @mo = 0.0
237
+ @no_kozai = 0.0
238
+
239
+ # sgp4fix add new variables from tle
240
+ @classification = "U"
241
+ @intldesg = ""
242
+ @ephtype = 0
243
+ @elnum = 0
244
+ @revnum = 0
245
+
246
+ # sgp4fix add unkozai'd variable
247
+ @no_unkozai = 0.0
248
+ # sgp4fix add singly averaged variables
249
+ @am = 0.0
250
+ @em = 0.0
251
+ @im = 0.0
252
+ @Om = 0.0
253
+ @om = 0.0
254
+ @mm = 0.0
255
+ @nm = 0.0
256
+ @t = 0.0
257
+
258
+ # sgp4fix add constant parameters to eliminate mutliple calls during execution
259
+ @tumin = 0.0
260
+ @mu = 0.0
261
+ @radiusearthkm = 0.0
262
+ @xke = 0.0
263
+ @j2 = 0.0
264
+ @j3 = 0.0
265
+ @j4 = 0.0
266
+ @j3oj2 = 0.0
267
+
268
+ # Additional elements to capture relevant TLE and object information:
269
+ @dia_mm = 0 # RSO dia in mm
270
+ @period_sec = 0.0 # Period in seconds
271
+ @active = 0 # "Active S/C" flag (0=n, 1=y)
272
+ @not_orbital = 0 # "Orbiting S/C" flag (0=n, 1=y)
273
+ @rcs_m2 = 0.0 # "RCS (m^2)" storage
274
+
275
+ # temporary variables because the original authors call the same method with different variables
276
+ @ep = 0.0
277
+ @inclp = 0.0
278
+ @nodep = 0.0
279
+ @argpp = 0.0
280
+ @mp = 0.0
281
+
282
+ @isimp = 0
283
+ @aycof = 0.0
284
+ @con41 = 0.0
285
+ @cc1 = 0.0
286
+ @cc4 = 0.0
287
+ @cc5 = 0.0
288
+ @d2 = 0.0
289
+ @d3 = 0.0
290
+ @d4 = 0.0
291
+ @delmo = 0.0
292
+ @eta = 0.0
293
+ @argpdot = 0.0
294
+ @omgcof = 0.0
295
+ @sinmao = 0.0
296
+ @t2cof = 0.0
297
+ @t3cof = 0.0
298
+ @t4cof = 0.0
299
+ @t5cof = 0.0
300
+ @x1mth2 = 0.0
301
+ @x7thm1 = 0.0
302
+ @mdot = 0.0
303
+ @nodedot = 0.0
304
+ @xlcof = 0.0
305
+ @xmcof = 0.0
306
+ @nodecf = 0.0
307
+
308
+ # deep space
309
+ @irez = 0
310
+ @d2201 = 0.0
311
+ @d2211 = 0.0
312
+ @d3210 = 0.0
313
+ @d3222 = 0.0
314
+ @d4410 = 0.0
315
+ @d4422 = 0.0
316
+ @d5220 = 0.0
317
+ @d5232 = 0.0
318
+ @d5421 = 0.0
319
+ @d5433 = 0.0
320
+ @dedt = 0.0
321
+ @del1 = 0.0
322
+ @del2 = 0.0
323
+ @del3 = 0.0
324
+ @didt = 0.0
325
+ @dmdt = 0.0
326
+ @dnodt = 0.0
327
+ @domdt = 0.0
328
+ @e3 = 0.0
329
+ @ee2 = 0.0
330
+ @peo = 0.0
331
+ @pgho = 0.0
332
+ @pho = 0.0
333
+ @pinco = 0.0
334
+ @plo = 0.0
335
+ @se2 = 0.0
336
+ @se3 = 0.0
337
+ @sgh2 = 0.0
338
+ @sgh3 = 0.0
339
+ @sgh4 = 0.0
340
+ @sh2 = 0.0
341
+ @sh3 = 0.0
342
+ @si2 = 0.0
343
+ @si3 = 0.0
344
+ @sl2 = 0.0
345
+ @sl3 = 0.0
346
+ @sl4 = 0.0
347
+ @gsto = 0.0
348
+ @xfact = 0.0
349
+ @xgh2 = 0.0
350
+ @xgh3 = 0.0
351
+ @xgh4 = 0.0
352
+ @xh2 = 0.0
353
+ @xh3 = 0.0
354
+ @xi2 = 0.0
355
+ @xi3 = 0.0
356
+ @xl2 = 0.0
357
+ @xl3 = 0.0
358
+ @xl4 = 0.0
359
+ @xlamo = 0.0
360
+ @zmol = 0.0
361
+ @zmos = 0.0
362
+ @atime = 0.0
363
+ @xli = 0.0
364
+ @xni = 0.0
365
+ @snodm = 0.0
366
+ @cnodm = 0.0
367
+ @sinim = 0.0
368
+ @cosim = 0.0
369
+ @sinomm = 0.0
370
+ @cosomm = 0.0
371
+ @day = 0.0
372
+ @emsq = 0.0
373
+ @gam = 0.0
374
+ @rtemsq = 0.0
375
+ @s1 = 0.0
376
+ @s2 = 0.0
377
+ @s3 = 0.0
378
+ @s4 = 0.0
379
+ @s5 = 0.0
380
+ @s6 = 0.0
381
+ @s7 = 0.0
382
+ @ss1 = 0.0
383
+ @ss2 = 0.0
384
+ @ss3 = 0.0
385
+ @ss4 = 0.0
386
+ @ss5 = 0.0
387
+ @ss6 = 0.0
388
+ @ss7 = 0.0
389
+ @sz1 = 0.0
390
+ @sz2 = 0.0
391
+ @sz3 = 0.0
392
+ @sz11 = 0.0
393
+ @sz12 = 0.0
394
+ @sz13 = 0.0
395
+ @sz21 = 0.0
396
+ @sz22 = 0.0
397
+ @sz23 = 0.0
398
+ @sz31 = 0.0
399
+ @sz32 = 0.0
400
+ @sz33 = 0.0
401
+ @z1 = 0.0
402
+ @z2 = 0.0
403
+ @z3 = 0.0
404
+ @z11 = 0.0
405
+ @z12 = 0.0
406
+ @z13 = 0.0
407
+ @z21 = 0.0
408
+ @z22 = 0.0
409
+ @z23 = 0.0
410
+ @z31 = 0.0
411
+ @z32 = 0.0
412
+ @z33 = 0.0
413
+ @argpm = 0.0
414
+ @inclm = 0.0
415
+ @nodem = 0.0
416
+ @dndt = 0.0
417
+ @eccsq = 0.0
418
+
419
+ # for initl
420
+ @ainv = 0.0
421
+ @ao = 0.0
422
+ @con42 = 0.0
423
+ @cosio = 0.0
424
+ @cosio2 = 0.0
425
+ @omeosq = 0.0
426
+ @posq = 0.0
427
+ @rp = 0.0
428
+ @rteosq = 0.0
429
+ @sinio = 0.0
430
+ end
431
+ end
432
+ end