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 }