1 /* Copyright 2022-2024 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.events;
18
19 /**
20 * Class containing parameters for event detection.
21 *
22 * @author Romain Serra.
23 * @since 12.2
24 * @see EventDetector
25 */
26 public class EventDetectionSettings {
27
28 /** Default maximum checking interval (s). */
29 public static final double DEFAULT_MAXCHECK = 600;
30
31 /** Default convergence threshold (s). */
32 public static final double DEFAULT_THRESHOLD = 1.e-6;
33
34 /** Default maximum number of iterations in the event time search. */
35 public static final int DEFAULT_MAX_ITER = 100;
36
37 /** Adaptable interval for maximum time without event evaluation. */
38 private final AdaptableInterval maxCheckInterval;
39
40 /** Detection threshold. */
41 private final double threshold;
42
43 /** Maximum iteration number when detecting event. */
44 private final int maxIterationCount;
45
46 /**
47 * Constructor.
48 *
49 * @param maxCheckInterval adaptable interval
50 * @param threshold detection threshold on time
51 * @param maxIterationCount maximum iteration number
52 */
53 public EventDetectionSettings(final AdaptableInterval maxCheckInterval, final double threshold,
54 final int maxIterationCount) {
55 this.maxCheckInterval = maxCheckInterval;
56 this.maxIterationCount = maxIterationCount;
57 this.threshold = threshold;
58 }
59
60 /**
61 * Constructor with maximum check as double.
62 *
63 * @param maxCheck constant maximum check for adaptable interval
64 * @param threshold detection threshold on time
65 * @param maxIterationCount maximum iteration number
66 */
67 public EventDetectionSettings(final double maxCheck, final double threshold, final int maxIterationCount) {
68 this(AdaptableInterval.of(maxCheck), threshold, maxIterationCount);
69 }
70
71 /**
72 * Getter for adaptable interval.
73 * @return adaptable interval
74 */
75 public AdaptableInterval getMaxCheckInterval() {
76 return maxCheckInterval;
77 }
78
79 /**
80 * Getter for threshold.
81 * @return threshold
82 */
83 public double getThreshold() {
84 return threshold;
85 }
86
87 /**
88 * Getter for max iter.
89 * @return max iter
90 */
91 public int getMaxIterationCount() {
92 return maxIterationCount;
93 }
94
95 /**
96 * Returns default settings for event detections.
97 * @return default settings
98 */
99 public static EventDetectionSettings getDefaultEventDetectionSettings() {
100 return new EventDetectionSettings(DEFAULT_MAXCHECK, DEFAULT_THRESHOLD, DEFAULT_MAX_ITER);
101 }
102 }