Skip to content
This repository was archived by the owner on Aug 5, 2024. It is now read-only.

Commit cb9c613

Browse files
Fix/kernels (#110)
* Upgrade kernel manager * Add clear kernels and consolidate kernel loading and unloading
1 parent 8ece4b6 commit cb9c613

17 files changed

Lines changed: 198 additions & 25 deletions

File tree

IO.Astrodynamics.CLI/IO.Astrodynamics.CLI.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<FileVersion>0.0.1</FileVersion>
1010
<PackAsTool>true</PackAsTool>
1111
<ToolCommandName>astro</ToolCommandName>
12-
<Version>0.1.13</Version>
12+
<Version>0.2.0</Version>
1313
<Title>Astrodynamics command line interface</Title>
1414
<Authors>Sylvain Guillet</Authors>
1515
<Description>This CLI allows end user to exploit IO.Astrodynamics framework </Description>

IO.Astrodynamics.Tests/APITest.cs

Lines changed: 61 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
namespace IO.Astrodynamics.Tests;
2727

28+
2829
public class APITest
2930
{
3031
public APITest()
@@ -307,7 +308,7 @@ public async Task ReadOrientation()
307308
spacecraft.AddPayload(new Payload("payload1", 50.0, "pay01"));
308309
spacecraft.AddCircularInstrument(-1794600, "CAM600", "mod1", 1.5, Vector3.VectorZ, Vector3.VectorX, Vector3.VectorX);
309310

310-
spacecraft.SetStandbyManeuver(new NadirAttitude(TestHelpers.EarthAtJ2000,DateTime.MinValue, TimeSpan.Zero,
311+
spacecraft.SetStandbyManeuver(new NadirAttitude(TestHelpers.EarthAtJ2000, DateTime.MinValue, TimeSpan.Zero,
311312
spacecraft.Engines.First()));
312313

313314
scenario.AddSpacecraft(spacecraft);
@@ -322,12 +323,12 @@ public async Task ReadOrientation()
322323

323324
//Read results
324325
Assert.Equal(0.70710678118654757, res.ElementAt(0).Rotation.W);
325-
Assert.Equal(0.0, res.ElementAt(0).Rotation.VectorPart.X,6);
326-
Assert.Equal(0.0, res.ElementAt(0).Rotation.VectorPart.Y,6);
326+
Assert.Equal(0.0, res.ElementAt(0).Rotation.VectorPart.X, 6);
327+
Assert.Equal(0.0, res.ElementAt(0).Rotation.VectorPart.Y, 6);
327328
Assert.Equal(0.70710678118654746, res.ElementAt(0).Rotation.VectorPart.Z);
328-
Assert.Equal(0.0, res.ElementAt(0).AngularVelocity.X,6);
329-
Assert.Equal(0.0, res.ElementAt(0).AngularVelocity.Y,6);
330-
Assert.Equal(0.0, res.ElementAt(0).AngularVelocity.Z,6);
329+
Assert.Equal(0.0, res.ElementAt(0).AngularVelocity.X, 6);
330+
Assert.Equal(0.0, res.ElementAt(0).AngularVelocity.Y, 6);
331+
Assert.Equal(0.0, res.ElementAt(0).AngularVelocity.Z, 6);
331332
Assert.Equal(window.StartDate, res.ElementAt(0).Epoch);
332333
Assert.Equal(Frames.Frame.ICRF, res.ElementAt(0).ReferenceFrame);
333334

@@ -537,15 +538,65 @@ void AzimuthRange()
537538
}
538539

539540
[Fact]
540-
void UnloadKernelException()
541+
void LoadKernelException()
541542
{
542-
Assert.Throws<ArgumentNullException>(() => API.Instance.UnloadKernels(null));
543+
Assert.Throws<ArgumentNullException>(() => API.Instance.LoadKernels(null));
543544
}
544545

546+
private static object lockobj = new Object();
545547
[Fact]
546-
void LoadKernelException()
548+
void UnloadKernels()
547549
{
548-
Assert.Throws<ArgumentNullException>(() => API.Instance.LoadKernels(null));
550+
lock (lockobj)
551+
{
552+
API.Instance.LoadKernels(new FileInfo(@"Data/UserDataTest/scn100/Sites/MySite/Ephemeris/MySite.spk"));
553+
API.Instance.LoadKernels(new FileInfo(@"Data/UserDataTest/scn100/Spacecrafts/DRAGONFLY32/Ephemeris/DRAGONFLY32.spk"));
554+
API.Instance.LoadKernels(new DirectoryInfo(@"Data/UserDataTest/scn100"));
555+
API.Instance.UnloadKernels(new FileInfo(@"Data/UserDataTest/scn100/Spacecrafts/DRAGONFLY32/Ephemeris/DRAGONFLY32.spk"));
556+
var kernels = API.Instance.GetLoadedKernels().ToArray();
557+
Assert.Equal(1, @kernels.Count(x => x.FullName.Contains("scn100")));
558+
}
559+
}
560+
561+
[Fact]
562+
void UnloadKernels2()
563+
{
564+
lock (lockobj)
565+
{
566+
API.Instance.LoadKernels(new FileInfo(@"Data/UserDataTest/scn100/Spacecrafts/DRAGONFLY32/Clocks/DRAGONFLY32.tsc"));
567+
568+
API.Instance.UnloadKernels(new FileInfo(@"Data/UserDataTest/scn100/Spacecrafts/DRAGONFLY32/Clocks/DRAGONFLY32.tsc"));
569+
var kernels = API.Instance.GetLoadedKernels().ToArray();
570+
Assert.Equal(0, kernels.Count(x => x.FullName.Contains("DRAGONFLY32.tsc")));
571+
}
572+
}
573+
574+
[Fact]
575+
void LoadKernels()
576+
{
577+
lock (lockobj)
578+
{
579+
API.Instance.LoadKernels(new FileInfo(@"Data/UserDataTest/scn100/Sites/MySite/Ephemeris/MySite.spk"));
580+
API.Instance.LoadKernels(new FileInfo(@"Data/UserDataTest/scn100/Spacecrafts/DRAGONFLY32/Ephemeris/DRAGONFLY32.spk"));
581+
API.Instance.LoadKernels(new DirectoryInfo(@"Data/UserDataTest/scn100"));
582+
583+
var kernels = API.Instance.GetLoadedKernels().ToArray();
584+
Assert.Equal(1, @kernels.Count(x => x.FullName.Contains("scn100")));
585+
}
586+
}
587+
588+
[Fact]
589+
void LoadKernels2()
590+
{
591+
lock (lockobj)
592+
{
593+
API.Instance.LoadKernels(new DirectoryInfo(@"Data/UserDataTest/scn100"));
594+
API.Instance.LoadKernels(new FileInfo(@"Data/UserDataTest/scn100/Spacecrafts/DRAGONFLY32/Ephemeris/DRAGONFLY32.spk"));
595+
API.Instance.LoadKernels(new FileInfo(@"Data/UserDataTest/scn100/Sites/MySite/Ephemeris/MySite.spk"));
596+
597+
var kernels = API.Instance.GetLoadedKernels().ToArray();
598+
Assert.Equal(1, @kernels.Count(x => x.FullName.Contains("scn100")));
599+
}
549600
}
550601

551602
[Fact]
@@ -580,6 +631,4 @@ void TLEElements()
580631
Assert.Equal(9, tle.O);
581632
Assert.Equal(10, tle.M);
582633
}
583-
584-
585634
}
Binary file not shown.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
KPL/FK
2+
\begindata
3+
NAIF_BODY_NAME += 'MYSITE'
4+
NAIF_BODY_CODE += 399132
5+
FRAME_MYSITE_TOPO = 1399132
6+
FRAME_1399132_NAME = 'MYSITE_TOPO'
7+
FRAME_1399132_CLASS = 4
8+
FRAME_1399132_CLASS_ID = 1399132
9+
FRAME_1399132_CENTER = 399132
10+
OBJECT_399132_FRAME = 'MYSITE_TOPO'
11+
TKFRAME_1399132_SPEC = 'ANGLES'
12+
TKFRAME_1399132_RELATIVE = 'ITRF93'
13+
TKFRAME_1399132_ANGLES = (-0.5,-1.2707963267948965,3.141592653589793116)
14+
TKFRAME_1399132_AXES = (3,2,3)
15+
TKFRAME_1399132_UNITS = 'RADIANS'
16+
\begintext
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
KPL/SCLK
2+
\begindata
3+
SCLK_KERNEL_ID = ( @1957-01-01/00:00:00.0 )
4+
SCLK_DATA_TYPE_1785 = ( 1 )
5+
SCLK01_TIME_SYSTEM_1785 = ( 1 )
6+
SCLK01_N_FIELDS_1785 = ( 2 )
7+
SCLK01_MODULI_1785 = ( 4294967296 65536 )
8+
SCLK01_OFFSETS_1785 = ( 0 0 )
9+
SCLK01_OUTPUT_DELIM_1785 = ( 2 )
10+
SCLK_PARTITION_START_1785 = ( 0.0000000000000E+00 )
11+
SCLK_PARTITION_END_1785 = ( 2.8147497671065E+14 )
12+
SCLK01_COEFFICIENTS_1785 = ( 0.0000000000000E+00 -1.3569552000000E+09 1.0000000000000E+00 )
13+
\begintext
Binary file not shown.
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
KPL/FK
2+
\begindata
3+
FRAME_DRAGONFLY32_FRAME = -1785000
4+
FRAME_-1785000_NAME = 'DRAGONFLY32_FRAME'
5+
FRAME_-1785000_CLASS = 3
6+
FRAME_-1785000_CLASS_ID = -1785000
7+
FRAME_-1785000_CENTER = -1785
8+
CK_-1785000_SCLK = -1785
9+
CK_-1785000_SPK = -1785
10+
OBJECT_-1785_FRAME = 'DRAGONFLY32_FRAME'
11+
NAIF_BODY_NAME += 'DRAGONFLY32_FRAME'
12+
NAIF_BODY_CODE += -1785000
13+
NAIF_BODY_NAME += 'DRAGONFLY32'
14+
NAIF_BODY_CODE += -1785
15+
\begintext
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
KPL/FK
2+
\begindata
3+
FRAME_DRAGONFLY32_CAM601 = -1785601
4+
FRAME_-1785601_NAME = 'DRAGONFLY32_CAM601'
5+
FRAME_-1785601_CLASS = 4
6+
FRAME_-1785601_CLASS_ID = -1785601
7+
FRAME_-1785601_CENTER = -1785
8+
TKFRAME_-1785601_SPEC = 'ANGLES'
9+
TKFRAME_-1785601_RELATIVE = 'DRAGONFLY32_FRAME'
10+
TKFRAME_-1785601_ANGLES = ( 1,0,0 )
11+
TKFRAME_-1785601_AXES = ( 1, 2, 3 )
12+
TKFRAME_-1785601_UNITS = 'RADIANS'
13+
NAIF_BODY_NAME += 'DRAGONFLY32_CAM601'
14+
NAIF_BODY_CODE += -1785601
15+
\begintext
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
KPL/IK
2+
\begindata
3+
INS-1785601_FOV_CLASS_SPEC = 'ANGLES'
4+
INS-1785601_FOV_SHAPE = 'CIRCLE'
5+
INS-1785601_FOV_FRAME = 'DRAGONFLY32_CAM601'
6+
INS-1785601_BORESIGHT = ( 0, 0, 1 )
7+
INS-1785601_FOV_REF_VECTOR = ( 1, 0, 0 )
8+
INS-1785601_FOV_REF_ANGLE = 1.3962634015954636
9+
INS-1785601_FOV_ANGLE_UNITS = 'RADIANS'
10+
\begintext
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
KPL/FK
2+
\begindata
3+
FRAME_DRAGONFLY32_CAM601 = -1785601
4+
FRAME_-1785601_NAME = 'DRAGONFLY32_CAM601'
5+
FRAME_-1785601_CLASS = 4
6+
FRAME_-1785601_CLASS_ID = -1785601
7+
FRAME_-1785601_CENTER = -1785
8+
TKFRAME_-1785601_SPEC = 'ANGLES'
9+
TKFRAME_-1785601_RELATIVE = 'DRAGONFLY32_SPACECRAFT'
10+
TKFRAME_-1785601_ANGLES = ( -1.000000,-0.000000,-0.000000 )
11+
TKFRAME_-1785601_AXES = ( 1, 2, 3 )
12+
TKFRAME_-1785601_UNITS = 'RADIANS'
13+
NAIF_BODY_NAME += 'DRAGONFLY32_CAM601'
14+
NAIF_BODY_CODE += -1785601
15+
\begintext

0 commit comments

Comments
 (0)