Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
Orekit
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Gaëtan Pierre
Orekit
Commits
cac2729f
Commit
cac2729f
authored
5 years ago
by
Bryan Cazabonne
Browse files
Options
Downloads
Patches
Plain Diff
Improved test coverage.
parent
7160d47a
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/test/java/org/orekit/estimation/iod/IodLambertTest.java
+68
-0
68 additions, 0 deletions
src/test/java/org/orekit/estimation/iod/IodLambertTest.java
with
68 additions
and
0 deletions
src/test/java/org/orekit/estimation/iod/IodLambertTest.java
+
68
−
0
View file @
cac2729f
...
...
@@ -116,6 +116,74 @@ public class IodLambertTest {
Assert
.
assertEquals
(
orbit
.
getI
(),
context
.
initialOrbit
.
getI
(),
1.0
e
-
9
*
context
.
initialOrbit
.
getI
());
}
/** Testing IOD Lambert estimation for several orbital periods.
* @author Maxime Journot
*/
@Test
public
void
testLambert2
()
{
// Initialize context - "eccentric orbit" built-in test bench context
final
Context
context
=
EstimationTestUtils
.
eccentricContext
(
"regular-data:potential:tides"
);
final
double
mu
=
context
.
initialOrbit
.
getMu
();
final
Frame
frame
=
context
.
initialOrbit
.
getFrame
();
// Use a simple Keplerian propagator (no perturbation)
final
NumericalPropagatorBuilder
propagatorBuilder
=
context
.
createBuilder
(
OrbitType
.
KEPLERIAN
,
PositionAngle
.
TRUE
,
true
,
1.0
e
-
6
,
60.0
,
0.001
);
// Create propagator
final
Propagator
propagator
=
EstimationTestUtils
.
createPropagator
(
context
.
initialOrbit
,
propagatorBuilder
);
// Save initial state and orbit (ie. reference orbit)
final
SpacecraftState
initialState
=
propagator
.
getInitialState
();
final
KeplerianOrbit
refOrbit
=
new
KeplerianOrbit
(
initialState
.
getOrbit
());
double
[]
refOrbitArray
=
new
double
[
6
];
OrbitType
.
KEPLERIAN
.
mapOrbitToArray
(
refOrbit
,
PositionAngle
.
TRUE
,
refOrbitArray
,
null
);
final
Vector3D
position1
=
refOrbit
.
getPVCoordinates
().
getPosition
();
final
AbsoluteDate
date1
=
refOrbit
.
getDate
();
// Orbit period
final
double
T
=
context
.
initialOrbit
.
getKeplerianPeriod
();
// Always check the orbit at t0 wrt refOrbit
// Create a list of samples to treat several cases
// 0: dt = T/4 - nRev = 0 - posigrade = true
// 1: dt = T/2 - nRev = 0 - posigrade = true
// 2: dt = 3T/4 - nRev = 0 - posigrade = false
// 3: dt = 2T + T/4 - nRev = 2 - posigrade = true
// 4: dt = 3T + 3T/4 - nRev = 3 - posigrade = false
final
double
[]
dts
=
new
double
[]
{
T
/
4
,
T
/
2
,
3
*
T
/
4
,
2
*
T
+
T
/
4
,
3
*
T
+
3
*
T
/
4
};
final
int
[]
nRevs
=
new
int
[]
{
0
,
0
,
0
,
2
,
3
};
final
boolean
[]
posigrades
=
new
boolean
[]
{
true
,
true
,
false
,
true
,
false
};
for
(
int
i
=
0
;
i
<
dts
.
length
;
i
++)
{
// Reset to ref state
propagator
.
resetInitialState
(
initialState
);
// Propagate to test date
final
AbsoluteDate
date2
=
date1
.
shiftedBy
(
dts
[
i
]);
final
Vector3D
position2
=
propagator
.
propagate
(
date2
).
getPVCoordinates
().
getPosition
();
// Instantiate the IOD method
final
IodLambert
iod
=
new
IodLambert
(
mu
);
// Estimate the orbit
final
KeplerianOrbit
orbit
=
iod
.
estimate
(
frame
,
posigrades
[
i
],
nRevs
[
i
],
position1
,
date1
,
position2
,
date2
);
// Test relative values
final
double
relTol
=
1
e
-
12
;
Assert
.
assertEquals
(
refOrbit
.
getA
(),
orbit
.
getA
(),
relTol
*
refOrbit
.
getA
());
Assert
.
assertEquals
(
refOrbit
.
getE
(),
orbit
.
getE
(),
relTol
*
refOrbit
.
getE
());
Assert
.
assertEquals
(
refOrbit
.
getI
(),
orbit
.
getI
(),
relTol
*
refOrbit
.
getI
());
Assert
.
assertEquals
(
refOrbit
.
getPerigeeArgument
(),
orbit
.
getPerigeeArgument
(),
relTol
*
refOrbit
.
getPerigeeArgument
());
Assert
.
assertEquals
(
refOrbit
.
getRightAscensionOfAscendingNode
(),
orbit
.
getRightAscensionOfAscendingNode
(),
relTol
*
refOrbit
.
getRightAscensionOfAscendingNode
());
Assert
.
assertEquals
(
refOrbit
.
getTrueAnomaly
(),
orbit
.
getTrueAnomaly
(),
relTol
*
refOrbit
.
getTrueAnomaly
());
}
}
@Test
public
void
testMultiRevolutions
()
{
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment