/* Copyright 2002-2017 CS Systèmes d'Information
* Licensed to CS Systèmes d'Information (CS) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* CS licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.orekit.forces.drag.atmosphere;
import java.io.Serializable;
import org.orekit.errors.OrekitException;
import org.orekit.time.AbsoluteDate;
/** Container for solar activity data, compatible with NRLMSISE-00 atmosphere model.
* <p>
* This model needs daily and average F10.7 solar fluxes and
* A<sub>p</sub> geomagnetic indices to compute the local density.
* </p>
*
* @author Pascal Parraud
*/
public interface NRLMSISE00InputParameters extends Serializable {
/** Gets the available data range minimum date.
* @return the minimum date.
* @exception OrekitException if data cannot be loaded
*/
AbsoluteDate getMinDate() throws OrekitException;
/** Gets the available data range maximum date.
* @return the maximum date.
* @exception OrekitException if data cannot be loaded
*/
AbsoluteDate getMaxDate() throws OrekitException;
/** Get the value of the daily F10.7 solar flux for previous day.
* @param date the current date
* @return the daily F10.7 flux for previous day
* @exception OrekitException if the date is out of range of available data
*/
double getDailyFlux(AbsoluteDate date) throws OrekitException;
/** Get the value of the 81 day average of F10.7 solar flux centered on current day.
* @param date the current date
* @return the 81 day average of F10.7 solar flux centered on current day
* @exception OrekitException if the date is out of range of available data
*/
double getAverageFlux(AbsoluteDate date) throws OrekitException;
/** Get the A<sub>p</sub> geomagnetic indices.
* <p>
* A<sub>p</sub> indices are provided as an array such as:
* <ul>
* <li>0 -> daily A<sub>p</sub></li>
* <li>1 -> 3 hr A<sub>p</sub> index for current time</li>
* <li>2 -> 3 hr A<sub>p</sub> index for 3 hrs before current time</li>
* <li>3 -> 3 hr A<sub>p</sub> index for 6 hrs before current time</li>
* <li>4 -> 3 hr A<sub>p</sub> index for 9 hrs before current time</li>
* <li>5 -> Average of eight 3 hr A<sub>p</sub> indices from 12 to 33 hrs
* prior to current time</li>
* <li>6 -> Average of eight 3 hr A<sub>p</sub> indices from 36 to 57 hrs
* prior to current time</li>
* </ul>
* </p>
* @param date the current date
* @return the array of A<sub>p</sub> indices
* @exception OrekitException if the date is out of range of available data
*/
double[] getAp(AbsoluteDate date) throws OrekitException;
}