1 /* Copyright 2022-2025 Romain Serra 2 * Licensed to CS GROUP (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.propagation.sampling; 18 19 import org.hipparchus.CalculusFieldElement; 20 import org.orekit.propagation.FieldSpacecraftState; 21 import org.orekit.time.FieldAbsoluteDate; 22 23 import java.util.ArrayList; 24 import java.util.List; 25 26 /** 27 * Step handler recording states. 28 * Automatically clears them at start of propagation. 29 * 30 * @author Romain Serra 31 * @since 13.0 32 */ 33 public class FieldPropagationStepRecorder<T extends CalculusFieldElement<T>> implements FieldOrekitStepHandler<T> { 34 35 /** 36 * Recorded times. 37 */ 38 private final List<FieldSpacecraftState<T>> states; 39 40 /** 41 * Constructor. 42 */ 43 public FieldPropagationStepRecorder() { 44 this.states = new ArrayList<>(); 45 } 46 47 /** 48 * Copy the current saved steps. 49 * @return copy of steps 50 */ 51 public List<FieldSpacecraftState<T>> copyStates() { 52 return new ArrayList<>(states); 53 } 54 55 /** {@inheritDoc} */ 56 @Override 57 public void init(final FieldSpacecraftState<T> s0, final FieldAbsoluteDate<T> t) { 58 FieldOrekitStepHandler.super.init(s0, t); 59 states.clear(); 60 } 61 62 /** {@inheritDoc} */ 63 @Override 64 public void handleStep(final FieldOrekitStepInterpolator<T> interpolator) { 65 states.add(interpolator.getCurrentState()); 66 } 67 }