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
7782eb84
Commit
7782eb84
authored
Jan 10, 2023
by
Maxime Journot
Browse files
Merge branch 'develop' into update-copyright-2023
parents
89ad9dd4
9b96b064
Pipeline
#2900
passed with stages
in 38 minutes and 41 seconds
Changes
19
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
src/main/java/org/orekit/orbits/CartesianOrbit.java
View file @
7782eb84
...
...
@@ -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 @
7782eb84
...
...
@@ -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 @
7782eb84
...
...
@@ -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 @
7782eb84
...
...
@@ -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 @
7782eb84
...
...
@@ -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 @
7782eb84
...
...
@@ -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 @
7782eb84
...
...
@@ -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 @
7782eb84
...
...
@@ -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 @
7782eb84
...
...
@@ -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 @
7782eb84
...
...
@@ -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
);
}