UNPKG

ootk

Version:

Orbital Object Toolkit including Multiple Propagators, Initial Orbit Determination, and Maneuver Calculations.

55 lines (54 loc) 2.47 kB
/** * @author @thkruz Theodore Kruczek * @license AGPL-3.0-or-later * @copyright (c) 2025 Kruczek Labs LLC * * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the * terms of the GNU Affero General Public License as published by the Free Software * Foundation, either version 3 of the License, or (at your option) any later version. * * Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License along with * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>. */ import { EpochUTC, J2000, Seconds } from '../main.js'; import { ForceModel } from '../force/ForceModel.js'; import { Thrust } from '../force/Thrust.js'; import { VerletBlendInterpolator } from './../interpolator/VerletBlendInterpolator.js'; import { Propagator } from './Propagator.js'; export declare abstract class RungeKuttaAdaptive extends Propagator { private readonly initState_; private forceModel_; private readonly tolerance_; /** * Create a new [RungeKuttaAdaptive] object from an initial state vector * along with an optional [ForceModel] and [tolerance]. * @param initState_ Initial state vector. * @param forceModel_ Numerical integration force model. * @param tolerance_ Minimum allowable local error tolerance. */ constructor(initState_: J2000, forceModel_?: ForceModel, tolerance_?: number); private _cacheState; private readonly _checkpoints; private _stepSize; private static readonly _minTolerance; protected abstract get a(): Float64Array; protected abstract get b(): Float64Array[]; protected abstract get ch(): Float64Array; protected abstract get c(): Float64Array; protected abstract get order(): number; get state(): J2000; reset(): void; setForceModel(forceModel: ForceModel): void; private kfn_; private integrate_; propagate(epoch: EpochUTC): J2000; maneuver(maneuver: Thrust, interval?: Seconds): J2000[]; ephemerisManeuver(start: EpochUTC, finish: EpochUTC, maneuvers: Thrust[], interval?: Seconds): VerletBlendInterpolator; checkpoint(): number; clearCheckpoints(): void; restore(index: number): void; }