1 /* Copyright 2002-2013 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.drag; 18 19 import java.io.Serializable; 20 21 import org.apache.commons.math3.geometry.euclidean.threed.Vector3D; 22 import org.orekit.errors.OrekitException; 23 import org.orekit.frames.Frame; 24 import org.orekit.time.AbsoluteDate; 25 26 27 /** Interface for atmospheric models. 28 * @author Luc Maisonobe 29 */ 30 public interface Atmosphere extends Serializable { 31 32 /** Get the frame of the central body. 33 * @return frame of the central body. 34 * @since 6.0 35 */ 36 Frame getFrame(); 37 38 /** Get the local density. 39 * @param date current date 40 * @param position current position in frame 41 * @param frame the frame in which is defined the position 42 * @return local density (kg/m<sup>3</sup>) 43 * @exception OrekitException if date is out of range of solar activity model 44 * or if some frame conversion cannot be performed 45 */ 46 double getDensity(AbsoluteDate date, Vector3D position, Frame frame) 47 throws OrekitException; 48 49 /** Get the inertial velocity of atmosphere molecules. 50 * @param date current date 51 * @param position current position in frame 52 * @param frame the frame in which is defined the position 53 * @return velocity (m/s) (defined in the same frame as the position) 54 * @exception OrekitException if some conversion cannot be performed 55 */ 56 Vector3D getVelocity(AbsoluteDate date, Vector3D position, Frame frame) 57 throws OrekitException; 58 59 }