Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Orekit
Orekit
Commits
9b96b064
Commit
9b96b064
authored
Jan 09, 2023
by
Luc Maisonobe
Browse files
Merge branch 'orekit-issue-1015' into develop
parents
dcdb3086
f641409c
Pipeline
#2896
passed with stages
in 37 minutes and 54 seconds
Changes
19
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
src/main/java/org/orekit/orbits/CartesianOrbit.java
View file @
9b96b064
...
...
@@ -20,8 +20,6 @@ import java.io.Serializable;
import
java.util.stream.Stream
;
import
org.hipparchus.analysis.differentiation.UnivariateDerivative2
;
import
org.hipparchus.exception.LocalizedCoreFormats
;
import
org.hipparchus.exception.MathIllegalStateException
;
import
org.hipparchus.geometry.euclidean.threed.FieldVector3D
;
import
org.hipparchus.geometry.euclidean.threed.Rotation
;
import
org.hipparchus.geometry.euclidean.threed.RotationConvention
;
...
...
@@ -71,6 +69,7 @@ import org.orekit.utils.TimeStampedPVCoordinates;
* @author Guylaine Prat
* @author Fabien Maussion
* @author Véronique Pommier-Maurussane
* @author Andrew Goetz
*/
public
class
CartesianOrbit
extends
Orbit
{
...
...
@@ -433,48 +432,49 @@ public class CartesianOrbit extends Orbit {
private
PVCoordinates
shiftPVElliptic
(
final
double
dt
)
{
// preliminary computation
final
Vector3D
pvP
=
getPosition
();
final
Vector3D
pvV
=
getPVCoordinates
().
getVelocity
();
final
double
r2
=
pvP
.
getNormSq
();
final
double
r
=
FastMath
.
sqrt
(
r2
);
final
double
rV2OnMu
=
r
*
pvV
.
getNormSq
()
/
getMu
();
final
double
a
=
getA
();
final
double
eSE
=
Vector3D
.
dotProduct
(
pvP
,
pvV
)
/
FastMath
.
sqrt
(
getMu
()
*
a
);
final
double
eCE
=
rV2OnMu
-
1
;
final
double
e2
=
eCE
*
eCE
+
eSE
*
eSE
;
// we can use any arbitrary reference 2D frame in the orbital plane
// in order to simplify some equations below, we use the current position as the u axis
final
Vector3D
u
=
pvP
.
normalize
();
final
Vector3D
v
=
Vector3D
.
crossProduct
(
getPVCoordinates
().
getMomentum
(),
u
).
normalize
();
// the following equations rely on the specific choice of u explained above,
// some coefficients that vanish to 0 in this case have already been removed here
final
double
ex
=
(
eCE
-
e2
)
*
a
/
r
;
final
double
ey
=
-
FastMath
.
sqrt
(
1
-
e2
)
*
eSE
*
a
/
r
;
final
double
beta
=
1
/
(
1
+
FastMath
.
sqrt
(
1
-
e2
));
final
double
thetaE0
=
FastMath
.
atan2
(
ey
+
eSE
*
beta
*
ex
,
r
/
a
+
ex
-
eSE
*
beta
*
ey
);
final
SinCos
scThetaE0
=
FastMath
.
sinCos
(
thetaE0
);
final
double
thetaM0
=
thetaE0
-
ex
*
scThetaE0
.
sin
()
+
ey
*
scThetaE0
.
cos
();
// compute in-plane shifted eccentric argument
final
double
thetaM1
=
thetaM0
+
getKeplerianMeanMotion
()
*
dt
;
final
double
thetaE1
=
meanToEccentric
(
thetaM1
,
ex
,
ey
);
final
SinCos
scTE
=
FastMath
.
sinCos
(
thetaE1
);
final
double
cTE
=
scTE
.
cos
();
final
double
sTE
=
scTE
.
sin
();
final
PVCoordinates
pv
=
getPVCoordinates
();
final
Vector3D
pvP
=
pv
.
getPosition
();
final
Vector3D
pvV
=
pv
.
getVelocity
();
final
Vector3D
pvM
=
pv
.
getMomentum
();
final
double
r2
=
pvP
.
getNormSq
();
final
double
r
=
FastMath
.
sqrt
(
r2
);
final
double
rV2OnMu
=
r
*
pvV
.
getNormSq
()
/
getMu
();
final
double
a
=
r
/
(
2
-
rV2OnMu
);
final
double
muA
=
getMu
()
*
a
;
// compute mean anomaly
final
double
eSE
=
Vector3D
.
dotProduct
(
pvP
,
pvV
)
/
FastMath
.
sqrt
(
muA
);
final
double
eCE
=
rV2OnMu
-
1
;
final
double
E0
=
FastMath
.
atan2
(
eSE
,
eCE
);
final
double
M0
=
E0
-
eSE
;
final
double
e
=
FastMath
.
sqrt
(
eCE
*
eCE
+
eSE
*
eSE
);
final
double
sqrt
=
FastMath
.
sqrt
((
1
+
e
)
/
(
1
-
e
));
// find canonical 2D frame with p pointing to perigee
final
double
v0
=
2
*
FastMath
.
atan
(
sqrt
*
FastMath
.
tan
(
E0
/
2
));
final
Vector3D
p
=
new
Rotation
(
pvM
,
v0
,
RotationConvention
.
FRAME_TRANSFORM
).
applyTo
(
pvP
).
normalize
();
final
Vector3D
q
=
Vector3D
.
crossProduct
(
pvM
,
p
).
normalize
();
// compute shifted eccentric anomaly
final
double
M1
=
M0
+
getKeplerianMeanMotion
()
*
dt
;
final
double
E1
=
KeplerianAnomalyUtility
.
ellipticMeanToEccentric
(
e
,
M1
);
// compute shifted in-plane Cartesian coordinates
final
double
exey
=
ex
*
ey
;
final
double
exCeyS
=
ex
*
cTE
+
ey
*
sTE
;
final
double
x
=
a
*
((
1
-
beta
*
ey
*
ey
)
*
cTE
+
beta
*
exey
*
sTE
-
ex
);
final
double
y
=
a
*
((
1
-
beta
*
ex
*
ex
)
*
sTE
+
beta
*
exey
*
cTE
-
ey
);
final
double
factor
=
FastMath
.
sqrt
(
getMu
()
/
a
)
/
(
1
-
exCeyS
);
final
double
xDot
=
factor
*
(-
sTE
+
beta
*
ey
*
exCeyS
);
final
double
yDot
=
factor
*
(
cTE
-
beta
*
ex
*
exCeyS
);
final
Vector3D
shiftedP
=
new
Vector3D
(
x
,
u
,
y
,
v
);
final
Vector3D
shiftedV
=
new
Vector3D
(
xDot
,
u
,
yDot
,
v
);
final
SinCos
scE
=
FastMath
.
sinCos
(
E1
);
final
double
cE
=
scE
.
cos
();
final
double
sE
=
scE
.
sin
();
final
double
sE2m1
=
FastMath
.
sqrt
((
1
-
e
)
*
(
1
+
e
));
// coordinates of position and velocity in the orbital plane
final
double
x
=
a
*
(
cE
-
e
);
final
double
y
=
a
*
sE2m1
*
sE
;
final
double
factor
=
FastMath
.
sqrt
(
getMu
()
/
a
)
/
(
1
-
e
*
cE
);
final
double
xDot
=
-
factor
*
sE
;
final
double
yDot
=
factor
*
sE2m1
*
cE
;
final
Vector3D
shiftedP
=
new
Vector3D
(
x
,
p
,
y
,
q
);
final
Vector3D
shiftedV
=
new
Vector3D
(
xDot
,
p
,
yDot
,
q
);
if
(
hasNonKeplerianAcceleration
)
{
// extract non-Keplerian part of the initial acceleration
...
...
@@ -574,43 +574,6 @@ public class CartesianOrbit extends Orbit {
}
/** Computes the eccentric in-plane argument from the mean in-plane argument.
* @param thetaM = mean in-plane argument (rad)
* @param ex first component of eccentricity vector
* @param ey second component of eccentricity vector
* @return the eccentric in-plane argument.
*/
private
double
meanToEccentric
(
final
double
thetaM
,
final
double
ex
,
final
double
ey
)
{
// Generalization of Kepler equation to in-plane parameters
// with thetaE = eta + E and
// thetaM = eta + M = thetaE - ex.sin(thetaE) + ey.cos(thetaE)
// and eta being counted from an arbitrary reference in the orbital plane
double
thetaE
=
thetaM
;
double
thetaEMthetaM
=
0.0
;
int
iter
=
0
;
do
{
final
SinCos
scThetaE
=
FastMath
.
sinCos
(
thetaE
);
final
double
f2
=
ex
*
scThetaE
.
sin
()
-
ey
*
scThetaE
.
cos
();
final
double
f1
=
1.0
-
ex
*
scThetaE
.
cos
()
-
ey
*
scThetaE
.
sin
();
final
double
f0
=
thetaEMthetaM
-
f2
;
final
double
f12
=
2.0
*
f1
;
final
double
shift
=
f0
*
f12
/
(
f1
*
f12
-
f0
*
f2
);
thetaEMthetaM
-=
shift
;
thetaE
=
thetaM
+
thetaEMthetaM
;
if
(
FastMath
.
abs
(
shift
)
<=
1.0
e
-
12
)
{
return
thetaE
;
}
}
while
(++
iter
<
50
);
throw
new
MathIllegalStateException
(
LocalizedCoreFormats
.
CONVERGENCE_FAILED
);
}
/** Create a 6x6 identity matrix.
* @return 6x6 identity matrix
*/
...
...
src/main/java/org/orekit/orbits/FieldCartesianOrbit.java
View file @
9b96b064
...
...
@@ -23,8 +23,6 @@ import java.util.stream.Stream;
import
org.hipparchus.CalculusFieldElement
;
import
org.hipparchus.Field
;
import
org.hipparchus.analysis.differentiation.FieldUnivariateDerivative2
;
import
org.hipparchus.exception.LocalizedCoreFormats
;
import
org.hipparchus.exception.MathIllegalStateException
;
import
org.hipparchus.geometry.euclidean.threed.FieldRotation
;
import
org.hipparchus.geometry.euclidean.threed.FieldVector3D
;
import
org.hipparchus.geometry.euclidean.threed.RotationConvention
;
...
...
@@ -73,6 +71,7 @@ import org.orekit.utils.TimeStampedFieldPVCoordinates;
* @author Guylaine Prat
* @author Fabien Maussion
* @author Véronique Pommier-Maurussane
* @author Andrew Goetz
* @since 9.0
*/
public
class
FieldCartesianOrbit
<
T
extends
CalculusFieldElement
<
T
>>
extends
FieldOrbit
<
T
>
{
...
...
@@ -463,48 +462,46 @@ public class FieldCartesianOrbit<T extends CalculusFieldElement<T>> extends Fiel
final
FieldPVCoordinates
<
T
>
pva
=
getPVCoordinates
();
final
FieldVector3D
<
T
>
pvP
=
pva
.
getPosition
();
final
FieldVector3D
<
T
>
pvV
=
pva
.
getVelocity
();
final
T
r2
=
pvP
.
getNormSq
();
final
T
r
=
r2
.
sqrt
();
final
T
rV2OnMu
=
r
.
multiply
(
pvV
.
getNormSq
()).
divide
(
getMu
());
final
T
a
=
r
.
divide
(
rV2OnMu
.
negate
().
add
(
2
));
final
T
eSE
=
FieldVector3D
.
dotProduct
(
pvP
,
pvV
).
divide
(
a
.
multiply
(
getMu
()).
sqrt
());
final
T
eCE
=
rV2OnMu
.
subtract
(
1
);
final
T
e2
=
eCE
.
multiply
(
eCE
).
add
(
eSE
.
multiply
(
eSE
));
// we can use any arbitrary reference 2D frame in the orbital plane
// in order to simplify some equations below, we use the current position as the u axis
final
FieldVector3D
<
T
>
u
=
pvP
.
normalize
();
final
FieldVector3D
<
T
>
v
=
FieldVector3D
.
crossProduct
(
FieldVector3D
.
crossProduct
(
pvP
,
pvV
),
u
).
normalize
();
// the following equations rely on the specific choice of u explained above,
// some coefficients that vanish to 0 in this case have already been removed here
final
T
ex
=
eCE
.
subtract
(
e2
).
multiply
(
a
).
divide
(
r
);
final
T
s
=
e2
.
negate
().
add
(
1
).
sqrt
();
final
T
ey
=
s
.
negate
().
multiply
(
eSE
).
multiply
(
a
).
divide
(
r
);
final
T
beta
=
s
.
add
(
1
).
reciprocal
();
final
T
thetaE0
=
ey
.
add
(
eSE
.
multiply
(
beta
).
multiply
(
ex
)).
atan2
(
r
.
divide
(
a
).
add
(
ex
).
subtract
(
eSE
.
multiply
(
beta
).
multiply
(
ey
)));
final
FieldSinCos
<
T
>
scThetaE0
=
FastMath
.
sinCos
(
thetaE0
);
final
T
thetaM0
=
thetaE0
.
subtract
(
ex
.
multiply
(
scThetaE0
.
sin
())).
add
(
ey
.
multiply
(
scThetaE0
.
cos
()));
// compute in-plane shifted eccentric argument
final
T
sqrtMmuOA
=
a
.
reciprocal
().
multiply
(
getMu
()).
sqrt
();
final
T
thetaM1
=
thetaM0
.
add
(
sqrtMmuOA
.
divide
(
a
).
multiply
(
dt
));
final
T
thetaE1
=
meanToEccentric
(
thetaM1
,
ex
,
ey
);
final
FieldSinCos
<
T
>
scTE
=
FastMath
.
sinCos
(
thetaE1
);
final
T
cTE
=
scTE
.
cos
();
final
T
sTE
=
scTE
.
sin
();
final
FieldVector3D
<
T
>
pvM
=
pva
.
getMomentum
();
final
T
r2
=
pvP
.
getNormSq
();
final
T
r
=
r2
.
sqrt
();
final
T
rV2OnMu
=
r
.
multiply
(
pvV
.
getNormSq
()).
divide
(
getMu
());
final
T
a
=
r
.
divide
(
rV2OnMu
.
negate
().
add
(
2
));
final
T
muA
=
getMu
().
multiply
(
a
);
// compute mean anomaly
final
T
eSE
=
FieldVector3D
.
dotProduct
(
pvP
,
pvV
).
divide
(
muA
.
sqrt
());
final
T
eCE
=
rV2OnMu
.
subtract
(
1
);
final
T
E0
=
FastMath
.
atan2
(
eSE
,
eCE
);
final
T
M0
=
E0
.
subtract
(
eSE
);
final
T
e
=
eCE
.
multiply
(
eCE
).
add
(
eSE
.
multiply
(
eSE
)).
sqrt
();
final
T
sqrt
=
e
.
add
(
1
).
divide
(
e
.
negate
().
add
(
1
)).
sqrt
();
// find canonical 2D frame with p pointing to perigee
final
T
v0
=
sqrt
.
multiply
(
FastMath
.
tan
(
E0
.
divide
(
2
))).
atan
().
multiply
(
2
);
final
FieldVector3D
<
T
>
p
=
new
FieldRotation
<>(
pvM
,
v0
,
RotationConvention
.
FRAME_TRANSFORM
).
applyTo
(
pvP
).
normalize
();
final
FieldVector3D
<
T
>
q
=
FieldVector3D
.
crossProduct
(
pvM
,
p
).
normalize
();
// compute shifted eccentric anomaly
final
T
M1
=
M0
.
add
(
getKeplerianMeanMotion
().
multiply
(
dt
));
final
T
E1
=
FieldKeplerianAnomalyUtility
.
ellipticMeanToEccentric
(
e
,
M1
);
// compute shifted in-plane Cartesian coordinates
final
T
exey
=
ex
.
multiply
(
ey
);
final
T
exCeyS
=
ex
.
multiply
(
cTE
).
add
(
ey
.
multiply
(
sTE
));
final
T
x
=
a
.
multiply
(
beta
.
multiply
(
ey
).
multiply
(
ey
).
negate
().
add
(
1
).
multiply
(
cTE
).
add
(
beta
.
multiply
(
exey
).
multiply
(
sTE
)).
subtract
(
ex
));
final
T
y
=
a
.
multiply
(
beta
.
multiply
(
ex
).
multiply
(
ex
).
negate
().
add
(
1
).
multiply
(
sTE
).
add
(
beta
.
multiply
(
exey
).
multiply
(
cTE
)).
subtract
(
ey
));
final
T
factor
=
sqrtMmuOA
.
divide
(
exCeyS
.
negate
().
add
(
1
));
final
T
xDot
=
factor
.
multiply
(
beta
.
multiply
(
ey
).
multiply
(
exCeyS
).
subtract
(
sTE
));
final
T
yDot
=
factor
.
multiply
(
cTE
.
subtract
(
beta
.
multiply
(
ex
).
multiply
(
exCeyS
)));
final
FieldVector3D
<
T
>
shiftedP
=
new
FieldVector3D
<>(
x
,
u
,
y
,
v
);
final
FieldVector3D
<
T
>
shiftedV
=
new
FieldVector3D
<>(
xDot
,
u
,
yDot
,
v
);
final
FieldSinCos
<
T
>
scE
=
FastMath
.
sinCos
(
E1
);
final
T
cE
=
scE
.
cos
();
final
T
sE
=
scE
.
sin
();
final
T
sE2m1
=
e
.
negate
().
add
(
1
).
multiply
(
e
.
add
(
1
)).
sqrt
();
// coordinates of position and velocity in the orbital plane
final
T
x
=
a
.
multiply
(
cE
.
subtract
(
e
));
final
T
y
=
a
.
multiply
(
sE2m1
).
multiply
(
sE
);
final
T
factor
=
a
.
reciprocal
().
multiply
(
getMu
()).
sqrt
().
divide
(
e
.
multiply
(
cE
).
negate
().
add
(
1
));
final
T
xDot
=
factor
.
multiply
(
sE
).
negate
();
final
T
yDot
=
factor
.
multiply
(
sE2m1
).
multiply
(
cE
);
final
FieldVector3D
<
T
>
shiftedP
=
new
FieldVector3D
<>(
x
,
p
,
y
,
q
);
final
FieldVector3D
<
T
>
shiftedV
=
new
FieldVector3D
<>(
xDot
,
p
,
yDot
,
q
);
if
(
hasNonKeplerianAcceleration
)
{
// extract non-Keplerian part of the initial acceleration
...
...
@@ -604,43 +601,6 @@ public class FieldCartesianOrbit<T extends CalculusFieldElement<T>> extends Fiel
}
/** Computes the eccentric in-plane argument from the mean in-plane argument.
* @param thetaM = mean in-plane argument (rad)
* @param ex first component of eccentricity vector
* @param ey second component of eccentricity vector
* @return the eccentric in-plane argument.
*/
private
T
meanToEccentric
(
final
T
thetaM
,
final
T
ex
,
final
T
ey
)
{
// Generalization of Kepler equation to in-plane parameters
// with thetaE = eta + E and
// thetaM = eta + M = thetaE - ex.sin(thetaE) + ey.cos(thetaE)
// and eta being counted from an arbitrary reference in the orbital plane
T
thetaE
=
thetaM
;
T
thetaEMthetaM
=
zero
;
int
iter
=
0
;
do
{
final
FieldSinCos
<
T
>
scThetaE
=
FastMath
.
sinCos
(
thetaE
);
final
T
f2
=
ex
.
multiply
(
scThetaE
.
sin
()).
subtract
(
ey
.
multiply
(
scThetaE
.
cos
()));
final
T
f1
=
one
.
subtract
(
ex
.
multiply
(
scThetaE
.
cos
())).
subtract
(
ey
.
multiply
(
scThetaE
.
sin
()));
final
T
f0
=
thetaEMthetaM
.
subtract
(
f2
);
final
T
f12
=
f1
.
multiply
(
2.0
);
final
T
shift
=
f0
.
multiply
(
f12
).
divide
(
f1
.
multiply
(
f12
).
subtract
(
f0
.
multiply
(
f2
)));
thetaEMthetaM
=
thetaEMthetaM
.
subtract
(
shift
);
thetaE
=
thetaM
.
add
(
thetaEMthetaM
);
if
(
FastMath
.
abs
(
shift
.
getReal
())
<=
1.0
e
-
12
)
{
return
thetaE
;
}
}
while
(++
iter
<
50
);
throw
new
MathIllegalStateException
(
LocalizedCoreFormats
.
CONVERGENCE_FAILED
);
}
/** Create a 6x6 identity matrix.
* @return 6x6 identity matrix
*/
...
...
src/test/java/org/orekit/forces/drag/DragForceTest.java
View file @
9b96b064
...
...
@@ -328,7 +328,7 @@ public class DragForceTest extends AbstractLegacyForceModelTest {
CelestialBodyFactory
.
getSun
(),
20.0
,
Vector3D
.
PLUS_J
,
1.2
,
0.1
,
0.7
,
0.2
));
checkParameterDerivative
(
state
,
forceModel
,
DragSensitive
.
DRAG_COEFFICIENT
,
1.0
e
-
4
,
5
.0
e
-
1
3
);
checkParameterDerivative
(
state
,
forceModel
,
DragSensitive
.
DRAG_COEFFICIENT
,
1.0
e
-
4
,
2
.0
e
-
1
2
);
checkParameterDerivative
(
state
,
forceModel
,
DragSensitive
.
LIFT_RATIO
,
1.0
e
-
4
,
2.0
e
-
11
);
}
...
...
@@ -353,7 +353,7 @@ public class DragForceTest extends AbstractLegacyForceModelTest {
CelestialBodyFactory
.
getSun
(),
20.0
,
Vector3D
.
PLUS_J
,
1.2
,
0.1
,
0.7
,
0.2
));
checkParameterDerivativeGradient
(
state
,
forceModel
,
DragSensitive
.
DRAG_COEFFICIENT
,
1.0
e
-
4
,
5
.0
e
-
1
3
);
checkParameterDerivativeGradient
(
state
,
forceModel
,
DragSensitive
.
DRAG_COEFFICIENT
,
1.0
e
-
4
,
2
.0
e
-
1
2
);
checkParameterDerivativeGradient
(
state
,
forceModel
,
DragSensitive
.
LIFT_RATIO
,
1.0
e
-
4
,
2.0
e
-
11
);
}
...
...
src/test/java/org/orekit/forces/drag/TimeSpanDragForceTest.java
View file @
9b96b064
...
...
@@ -838,7 +838,7 @@ public class TimeSpanDragForceTest extends AbstractLegacyForceModelTest {
// Check parameter derivatives at initial date: only 1st model parameter derivatives shouldn't be 0.
checkParameterDerivative
(
state
,
forceModel
,
DragSensitive
.
DRAG_COEFFICIENT
,
1.0
e
-
4
,
2.0
e
-
12
);
checkParameterDerivative
(
state
,
forceModel
,
DragSensitive
.
LIFT_RATIO
,
1.0
e
-
4
,
2.
0
e
-
11
);
checkParameterDerivative
(
state
,
forceModel
,
DragSensitive
.
LIFT_RATIO
,
1.0
e
-
4
,
2.
2
e
-
11
);
checkParameterDerivative
(
state
,
forceModel
,
"Cd2"
,
1.0
e
-
4
,
0
.);
checkParameterDerivative
(
state
,
forceModel
,
"Cl2"
,
1.0
e
-
4
,
0
.);
checkParameterDerivative
(
state
,
forceModel
,
"Cd3"
,
1.0
e
-
4
,
0
.);
...
...
@@ -926,7 +926,7 @@ public class TimeSpanDragForceTest extends AbstractLegacyForceModelTest {
// Check parameter derivatives at initial date: only 1st model parameter derivatives shouldn't be 0.
checkParameterDerivativeGradient
(
state
,
forceModel
,
DragSensitive
.
DRAG_COEFFICIENT
,
1.0
e
-
4
,
2.0
e
-
12
);
checkParameterDerivativeGradient
(
state
,
forceModel
,
DragSensitive
.
LIFT_RATIO
,
1.0
e
-
4
,
2.
0
e
-
11
);
checkParameterDerivativeGradient
(
state
,
forceModel
,
DragSensitive
.
LIFT_RATIO
,
1.0
e
-
4
,
2.
2
e
-
11
);
checkParameterDerivativeGradient
(
state
,
forceModel
,
"Cd2"
,
1.0
e
-
4
,
0
.);
checkParameterDerivativeGradient
(
state
,
forceModel
,
"Cl2"
,
1.0
e
-
4
,
0
.);
checkParameterDerivativeGradient
(
state
,
forceModel
,
"Cd3"
,
1.0
e
-
4
,
0
.);
...
...
src/test/java/org/orekit/forces/radiation/SolarRadiationPressureTest.java
View file @
9b96b064
...
...
@@ -535,7 +535,7 @@ public class SolarRadiationPressureTest extends AbstractLegacyForceModelTest {
new
BoxAndSolarArraySpacecraft
(
1.5
,
2.0
,
1.8
,
CelestialBodyFactory
.
getSun
(),
20.0
,
Vector3D
.
PLUS_J
,
1.2
,
0.7
,
0.2
));
checkParameterDerivative
(
state
,
forceModel
,
RadiationSensitive
.
ABSORPTION_COEFFICIENT
,
0.25
,
1.9
e
-
15
);
checkParameterDerivative
(
state
,
forceModel
,
RadiationSensitive
.
ABSORPTION_COEFFICIENT
,
0.25
,
2.1
e
-
15
);
checkParameterDerivative
(
state
,
forceModel
,
RadiationSensitive
.
REFLECTION_COEFFICIENT
,
0.25
,
6.9
e
-
15
);
}
...
...
@@ -559,7 +559,7 @@ public class SolarRadiationPressureTest extends AbstractLegacyForceModelTest {
new
BoxAndSolarArraySpacecraft
(
1.5
,
2.0
,
1.8
,
CelestialBodyFactory
.
getSun
(),
20.0
,
Vector3D
.
PLUS_J
,
1.2
,
0.7
,
0.2
));
checkParameterDerivativeGradient
(
state
,
forceModel
,
RadiationSensitive
.
ABSORPTION_COEFFICIENT
,
0.25
,
1.9
e
-
15
);
checkParameterDerivativeGradient
(
state
,
forceModel
,
RadiationSensitive
.
ABSORPTION_COEFFICIENT
,
0.25
,
2.1
e
-
15
);
checkParameterDerivativeGradient
(
state
,
forceModel
,
RadiationSensitive
.
REFLECTION_COEFFICIENT
,
0.25
,
6.9
e
-
10
);
}
...
...
src/test/java/org/orekit/gnss/attitude/BeidouGeoTest.java
View file @
9b96b064
...
...
@@ -23,17 +23,17 @@ public class BeidouGeoTest extends AbstractGNSSAttitudeProviderTest {
@Test
public
void
testPatchedLargeNegativeBeta
()
{
doTestAxes
(
"patched-eclips/beta-large-negative-BEIDOU-2G.txt"
,
6.
4
e
-
15
,
6.
3
e
-
16
,
false
);
doTestAxes
(
"patched-eclips/beta-large-negative-BEIDOU-2G.txt"
,
6.
6
e
-
15
,
6.
7
e
-
16
,
false
);
}
@Test
public
void
testPatchedSmallNegativeBeta
()
{
doTestAxes
(
"patched-eclips/beta-small-negative-BEIDOU-2G.txt"
,
8.0
e
-
15
,
7.4
e
-
16
,
false
);
doTestAxes
(
"patched-eclips/beta-small-negative-BEIDOU-2G.txt"
,
8.0
e
-
15
,
8.3
e
-
16
,
false
);
}
@Test
public
void
testPatchedCrossingBeta
()
{
doTestAxes
(
"patched-eclips/beta-crossing-BEIDOU-2G.txt"
,
6.2
e
-
15
,
5.8
e
-
16
,
false
);
doTestAxes
(
"patched-eclips/beta-crossing-BEIDOU-2G.txt"
,
6.2
e
-
15
,
8.6
e
-
16
,
false
);
}
@Test
...
...
@@ -43,17 +43,17 @@ public class BeidouGeoTest extends AbstractGNSSAttitudeProviderTest {
@Test
public
void
testOriginalLargeNegativeBeta
()
{
doTestAxes
(
"original-eclips/beta-large-negative-BEIDOU-2G.txt"
,
7.6
e
-
4
,
6.
3
e
-
16
,
false
);
doTestAxes
(
"original-eclips/beta-large-negative-BEIDOU-2G.txt"
,
7.6
e
-
4
,
6.
7
e
-
16
,
false
);
}
@Test
public
void
testOriginalSmallNegativeBeta
()
{
doTestAxes
(
"original-eclips/beta-small-negative-BEIDOU-2G.txt"
,
5.0
e
-
4
,
7.4
e
-
16
,
false
);
doTestAxes
(
"original-eclips/beta-small-negative-BEIDOU-2G.txt"
,
5.0
e
-
4
,
8.6
e
-
16
,
false
);
}
@Test
public
void
testOriginalCrossingBeta
()
{
doTestAxes
(
"original-eclips/beta-crossing-BEIDOU-2G.txt"
,
9.0
e
-
4
,
5.8
e
-
16
,
false
);
doTestAxes
(
"original-eclips/beta-crossing-BEIDOU-2G.txt"
,
9.0
e
-
4
,
8.6
e
-
16
,
false
);
}
@Test
...
...
src/test/java/org/orekit/gnss/attitude/BeidouIGSOTest.java
View file @
9b96b064
...
...
@@ -23,12 +23,12 @@ public class BeidouIGSOTest extends AbstractGNSSAttitudeProviderTest {
@Test
public
void
testPatchedLargeNegativeBeta
()
{
doTestAxes
(
"patched-eclips/beta-large-negative-BEIDOU-2I.txt"
,
7.
7
e
-
15
,
9.5
e
-
1
6
,
false
);
doTestAxes
(
"patched-eclips/beta-large-negative-BEIDOU-2I.txt"
,
7.
8
e
-
15
,
1.1
e
-
1
5
,
false
);
}
@Test
public
void
testPatchedSmallNegativeBeta
()
{
doTestAxes
(
"patched-eclips/beta-small-negative-BEIDOU-2I.txt"
,
7.7
e
-
15
,
5.0
e
-
16
,
false
);
doTestAxes
(
"patched-eclips/beta-small-negative-BEIDOU-2I.txt"
,
8.1
e
-
15
,
9.3
e
-
16
,
false
);
}
@Test
...
...
@@ -38,17 +38,17 @@ public class BeidouIGSOTest extends AbstractGNSSAttitudeProviderTest {
@Test
public
void
testPatchedLargePositiveBeta
()
{
doTestAxes
(
"patched-eclips/beta-large-positive-BEIDOU-2I.txt"
,
7.
8
e
-
15
,
1.2
e
-
15
,
false
);
doTestAxes
(
"patched-eclips/beta-large-positive-BEIDOU-2I.txt"
,
7.
9
e
-
15
,
1.2
e
-
15
,
false
);
}
@Test
public
void
testOriginalLargeNegativeBeta
()
{
doTestAxes
(
"original-eclips/beta-large-negative-BEIDOU-2I.txt"
,
7.
7
e
-
15
,
9.5
e
-
1
6
,
false
);
doTestAxes
(
"original-eclips/beta-large-negative-BEIDOU-2I.txt"
,
7.
8
e
-
15
,
1.1
e
-
1
5
,
false
);
}
@Test
public
void
testOriginalSmallNegativeBeta
()
{
doTestAxes
(
"original-eclips/beta-small-negative-BEIDOU-2I.txt"
,
3.9
e
-
3
,
5.0
e
-
16
,
false
);
doTestAxes
(
"original-eclips/beta-small-negative-BEIDOU-2I.txt"
,
3.9
e
-
3
,
9.3
e
-
16
,
false
);
}
@Test
...
...
@@ -58,7 +58,7 @@ public class BeidouIGSOTest extends AbstractGNSSAttitudeProviderTest {
@Test
public
void
testOriginalLargePositiveBeta
()
{
doTestAxes
(
"original-eclips/beta-large-positive-BEIDOU-2I.txt"
,
7.
8
e
-
15
,
1.2
e
-
15
,
false
);
doTestAxes
(
"original-eclips/beta-large-positive-BEIDOU-2I.txt"
,
7.
9
e
-
15
,
1.2
e
-
15
,
false
);
}
}
src/test/java/org/orekit/gnss/attitude/BeidouMeoTest.java
View file @
9b96b064
...
...
@@ -22,42 +22,42 @@ public class BeidouMeoTest extends AbstractGNSSAttitudeProviderTest {
@Test
public
void
testPatchedLargeNegativeBeta
()
{
doTestAxes
(
"patched-eclips/beta-large-negative-BEIDOU-2M.txt"
,
8.8
e
-
15
,
7.3
e
-
1
6
,
false
);
doTestAxes
(
"patched-eclips/beta-large-negative-BEIDOU-2M.txt"
,
9.2
e
-
15
,
1.1
e
-
1
5
,
false
);
}
@Test
public
void
testPatchedSmallNegativeBeta
()
{
doTestAxes
(
"patched-eclips/beta-small-negative-BEIDOU-2M.txt"
,
7.7
e
-
15
,
7.0
e
-
16
,
false
);
doTestAxes
(
"patched-eclips/beta-small-negative-BEIDOU-2M.txt"
,
7.7
e
-
15
,
9.4
e
-
16
,
false
);
}
@Test
public
void
testPatchedSmallPositiveBeta
()
{
doTestAxes
(
"patched-eclips/beta-small-positive-BEIDOU-2M.txt"
,
7.9
e
-
15
,
4.3
e
-
16
,
false
);
doTestAxes
(
"patched-eclips/beta-small-positive-BEIDOU-2M.txt"
,
8.1
e
-
15
,
7.8
e
-
16
,
false
);
}
@Test
public
void
testPatchedLargePositiveBeta
()
{
doTestAxes
(
"patched-eclips/beta-large-positive-BEIDOU-2M.txt"
,
8.4
e
-
15
,
6.5
e
-
1
6
,
false
);
doTestAxes
(
"patched-eclips/beta-large-positive-BEIDOU-2M.txt"
,
8.4
e
-
15
,
1.1
e
-
1
5
,
false
);
}
@Test
public
void
testOriginalLargeNegativeBeta
()
{
doTestAxes
(
"original-eclips/beta-large-negative-BEIDOU-2M.txt"
,
8.8
e
-
15
,
7.3
e
-
1
6
,
false
);
doTestAxes
(
"original-eclips/beta-large-negative-BEIDOU-2M.txt"
,
9.2
e
-
15
,
1.1
e
-
1
5
,
false
);
}
@Test
public
void
testOriginalSmallNegativeBeta
()
{
doTestAxes
(
"original-eclips/beta-small-negative-BEIDOU-2M.txt"
,
2.2
e
-
3
,
6.5
e
-
16
,
false
);
doTestAxes
(
"original-eclips/beta-small-negative-BEIDOU-2M.txt"
,
2.2
e
-
3
,
9.4
e
-
16
,
false
);
}
@Test
public
void
testOriginalSmallPositiveBeta
()
{
doTestAxes
(
"original-eclips/beta-small-positive-BEIDOU-2M.txt"
,
2.7
e
-
3
,
3.6
e
-
16
,
false
);
doTestAxes
(
"original-eclips/beta-small-positive-BEIDOU-2M.txt"
,
2.7
e
-
3
,
7.8
e
-
16
,
false
);
}
@Test
public
void
testOriginalLargePositiveBeta
()
{
doTestAxes
(
"original-eclips/beta-large-positive-BEIDOU-2M.txt"
,
8.4
e
-
15
,
6.5
e
-
1
6
,
false
);
doTestAxes
(
"original-eclips/beta-large-positive-BEIDOU-2M.txt"
,
8.4
e
-
15
,
1.1
e
-
1
5
,
false
);
}
}
src/test/java/org/orekit/gnss/attitude/GPSBlockIIATest.java
View file @
9b96b064
...
...
@@ -23,17 +23,17 @@ public class GPSBlockIIATest extends AbstractGNSSAttitudeProviderTest {
@Test
public
void
testPatchedLargeNegativeBeta
()
{
doTestAxes
(
"patched-eclips/beta-large-negative-BLOCK-IIA.txt"
,
6.1
e
-
15
,
4.5
e
-
16
,
false
);
doTestAxes
(
"patched-eclips/beta-large-negative-BLOCK-IIA.txt"
,
6.1
e
-
15
,
8.7
e
-
16
,
false
);
}
@Test
public
void
testPatchedSmallNegativeBeta
()
{
doTestAxes
(
"patched-eclips/beta-small-negative-BLOCK-IIA.txt"
,
5.1
e
-
6
,
6.1
e
-
1
6
,
false
);
doTestAxes
(
"patched-eclips/beta-small-negative-BLOCK-IIA.txt"
,
5.1
e
-
6
,
1.2
e
-
1
5
,
false
);
}
@Test
public
void
testPatchedCrossingBeta
()
{
doTestAxes
(
"patched-eclips/beta-crossing-BLOCK-IIA.txt"
,
5.2
e
-
4
,
7.7
e
-
16
,
false
);
doTestAxes
(
"patched-eclips/beta-crossing-BLOCK-IIA.txt"
,
5.2
e
-
4
,
8.3
e
-
16
,
false
);
}
@Test
...
...
@@ -43,17 +43,17 @@ public class GPSBlockIIATest extends AbstractGNSSAttitudeProviderTest {
@Test
public
void
testPatchedLargePositiveBeta
()
{
doTestAxes
(
"patched-eclips/beta-large-positive-BLOCK-IIA.txt"
,
7.
0
e
-
15
,
8.
0
e
-
16
,
false
);
doTestAxes
(
"patched-eclips/beta-large-positive-BLOCK-IIA.txt"
,
7.
2
e
-
15
,
8.
8
e
-
16
,
false
);
}
@Test
public
void
testOriginalLargeNegativeBeta
()
{
doTestAxes
(
"original-eclips/beta-large-negative-BLOCK-IIA.txt"
,
6.1
e
-
15
,
4.5
e
-
16
,
false
);
doTestAxes
(
"original-eclips/beta-large-negative-BLOCK-IIA.txt"
,
6.1
e
-
15
,
8.7
e
-
16
,
false
);
}
@Test
public
void
testOriginalSmallNegativeBeta
()
{
doTestAxes
(
"original-eclips/beta-small-negative-BLOCK-IIA.txt"
,
1.2
e
-
3
,
6.1
e
-
1
6
,
false
);
doTestAxes
(
"original-eclips/beta-small-negative-BLOCK-IIA.txt"
,
1.2
e
-
3
,
1.2
e
-
1
5
,
false
);
}
@Test
...
...
@@ -84,7 +84,7 @@ public class GPSBlockIIATest extends AbstractGNSSAttitudeProviderTest {
// As a conclusion, we consider here that the reference output is wrong and that
// Orekit behaviour is correct, so we increased the threshold so the test pass,
// and wrote this big comment to explain the situation
doTestAxes
(
"original-eclips/beta-crossing-BLOCK-IIA.txt"
,
2.13
,
7.7
e
-
16
,
false
);
doTestAxes
(
"original-eclips/beta-crossing-BLOCK-IIA.txt"
,
2.13
,
8.3
e
-
16
,
false
);
}
@Test
...
...
@@ -94,7 +94,7 @@ public class GPSBlockIIATest extends AbstractGNSSAttitudeProviderTest {
@Test
public
void
testOriginalLargePositiveBeta
()
{
doTestAxes
(
"original-eclips/beta-large-positive-BLOCK-IIA.txt"
,
7.
0
e
-
15
,
8.
0
e
-
16
,
false
);
doTestAxes
(
"original-eclips/beta-large-positive-BLOCK-IIA.txt"
,
7.
2
e
-
15
,
8.
8
e
-
16
,
false
);
}
}
src/test/java/org/orekit/gnss/attitude/GPSBlockIIFTest.java
View file @
9b96b064
...
...
@@ -23,7 +23,7 @@ public class GPSBlockIIFTest extends AbstractGNSSAttitudeProviderTest {
@Test
public
void
testPatchedLargeNegativeBeta
()
{
doTestAxes
(
"patched-eclips/beta-large-negative-BLOCK-IIF.txt"
,
6.
7
e
-
15
,
7.6
e
-
16
,
false
);
doTestAxes
(
"patched-eclips/beta-large-negative-BLOCK-IIF.txt"
,
6.
8
e
-
15
,
7.6
e
-
16
,
false
);
}