1 /* Copyright 2002-2015 CS Systèmes d'Information
2 * Licensed to CS Systèmes d'Information (CS) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * CS licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17 package org.orekit.forces.radiation;
18
19 import org.apache.commons.math3.analysis.differentiation.DerivativeStructure;
20 import org.apache.commons.math3.geometry.euclidean.threed.FieldRotation;
21 import org.apache.commons.math3.geometry.euclidean.threed.FieldVector3D;
22 import org.apache.commons.math3.geometry.euclidean.threed.Rotation;
23 import org.apache.commons.math3.geometry.euclidean.threed.Vector3D;
24 import org.orekit.errors.OrekitException;
25 import org.orekit.frames.Frame;
26 import org.orekit.time.AbsoluteDate;
27
28 /** Interface for spacecraft that are sensitive to radiation pressure forces.
29 *
30 * @see SolarRadiationPressure
31 * @author Luc Maisonobe
32 * @author Pascal Parraud
33 */
34 public interface RadiationSensitive {
35
36 /** Parameter name for absorption coefficient. */
37 String ABSORPTION_COEFFICIENT = "absorption coefficient";
38
39 /** Parameter name for reflection coefficient. */
40 String REFLECTION_COEFFICIENT = "reflection coefficient";
41
42 /** Compute the acceleration due to radiation pressure.
43 * @param date current date
44 * @param frame inertial reference frame for state (both orbit and attitude)
45 * @param position position of spacecraft in reference frame
46 * @param rotation orientation (attitude) of the spacecraft with respect to reference frame
47 * @param mass current mass
48 * @param flux radiation flux in the same inertial frame as spacecraft orbit
49 * @return spacecraft acceleration in the same inertial frame as spacecraft orbit (m/s²)
50 * @throws OrekitException if acceleration cannot be computed
51 */
52 Vector3D radiationPressureAcceleration(AbsoluteDate date, Frame frame, Vector3D position,
53 Rotation rotation, double mass, Vector3D flux)
54 throws OrekitException;
55
56 /** Compute the acceleration due to radiation pressure, with state derivatives.
57 * @param date current date
58 * @param frame inertial reference frame for state (both orbit and attitude)
59 * @param position position of spacecraft in reference frame
60 * @param rotation orientation (attitude) of the spacecraft with respect to reference frame
61 * @param mass spacecraft mass
62 * @param flux radiation flux in the same inertial frame as spacecraft orbit
63 * @return spacecraft acceleration in the same inertial frame as spacecraft orbit (m/s²)
64 * @throws OrekitException if acceleration cannot be computed
65 */
66 FieldVector3D<DerivativeStructure> radiationPressureAcceleration(AbsoluteDate date, Frame frame, FieldVector3D<DerivativeStructure> position,
67 FieldRotation<DerivativeStructure> rotation, DerivativeStructure mass,
68 FieldVector3D<DerivativeStructure> flux)
69 throws OrekitException;
70
71 /** Compute the acceleration due to radiation pressure, with parameters derivatives.
72 * @param date current date
73 * @param frame inertial reference frame for state (both orbit and attitude)
74 * @param position position of spacecraft in reference frame
75 * @param rotation orientation (attitude) of the spacecraft with respect to reference frame
76 * @param mass current mass
77 * @param flux radiation flux in the same inertial frame as spacecraft orbit
78 * @param paramName name of the parameter with respect to which derivatives are required
79 * @return spacecraft acceleration in the same inertial frame as spacecraft orbit (m/s²)
80 * @throws OrekitException if acceleration cannot be computed
81 */
82 FieldVector3D<DerivativeStructure> radiationPressureAcceleration(AbsoluteDate date, Frame frame, Vector3D position,
83 Rotation rotation, double mass, Vector3D flux,
84 String paramName)
85 throws OrekitException;
86
87 /** Set the absorption coefficient.
88 * @param value absorption coefficient
89 */
90 void setAbsorptionCoefficient(double value);
91
92 /** Get the absorption coefficient.
93 * @return absorption coefficient
94 */
95 double getAbsorptionCoefficient();
96
97 /** Set the specular reflection coefficient.
98 * @param value specular reflection coefficient
99 */
100 void setReflectionCoefficient(double value);
101
102 /** Get the specular reflection coefficient.
103 * @return reflection coefficient
104 */
105 double getReflectionCoefficient();
106
107 }