181 throw std::runtime_error(
"Sampling rate must be > 0");
193 params.random_seed = seed;
216 throw std::runtime_error(
"Oversample ratio must be >= 1");
218 params.oversample_ratio = ratio;
228 inline void setOrigin(
const double lat,
const double lon,
const double alt)
noexcept
230 params.origin_latitude = lat;
231 params.origin_longitude = lon;
232 params.origin_altitude = alt;
248 inline std::expected<void, std::string>
setThreads(
const unsigned threads)
noexcept
252 return std::unexpected(
"Thread count must be >= 1");
254 params.render_threads = threads;
267 params.coordinate_frame = frame;
269 params.utm_north_hemisphere = north;
Global configuration file for the project.
double RealType
Type for real numbers.
Header file for the logging system.
@ INFO
Info level for informational messages.
@ DEBUG
Debug level for general debugging information.
unsigned renderThreads() noexcept
Get the number of worker threads.
RealType simSamplingRate() noexcept
Get the simulation sampling rate.
void setRandomSeed(const unsigned seed) noexcept
Set the random seed.
RealType endTime() noexcept
Get the end time for the simulation.
std::expected< void, std::string > setThreads(const unsigned threads) noexcept
Set the number of worker threads.
RealType rate() noexcept
Get the rendering sample rate.
unsigned randomSeed() noexcept
Get the random seed.
RealType startTime() noexcept
Get the start time for the simulation.
RealType boltzmannK() noexcept
Get the Boltzmann constant.
void setTime(const RealType startTime, const RealType endTime) noexcept
Set the start and end times for the simulation.
unsigned oversampleRatio() noexcept
Get the oversampling ratio.
double originLongitude() noexcept
CoordinateFrame
Defines the coordinate systems supported for scenario definition.
@ UTM
Universal Transverse Mercator.
@ ENU
East-North-Up local tangent plane (default)
@ ECEF
Earth-Centered, Earth-Fixed.
void setRate(RealType rateValue)
Set the rendering sample rate.
void setOrigin(const double lat, const double lon, const double alt) noexcept
Set the geodetic origin for the KML generator.
void setOversampleRatio(unsigned ratio)
Set the oversampling ratio.
unsigned renderFilterLength() noexcept
Get the render filter length.
void setC(RealType cValue) noexcept
Set the speed of light.
unsigned adcBits() noexcept
Get the ADC quantization bits.
void setSimSamplingRate(const RealType rate) noexcept
Set the simulation sampling rate.
void setAdcBits(const unsigned bits) noexcept
Set the ADC quantization bits.
void setCoordinateSystem(const CoordinateFrame frame, const int zone, const bool north) noexcept
Set the coordinate system for the scenario.
CoordinateFrame coordinateFrame() noexcept
double originLatitude() noexcept
bool utmNorthHemisphere() noexcept
RealType c() noexcept
Get the speed of light.
double originAltitude() noexcept
Struct to hold simulation parameters.
static constexpr RealType DEFAULT_BOLTZMANN_K
Boltzmann constant.
RealType rate
Rendering sample rate.
double origin_longitude
Geodetic origin longitude.
RealType start
Start time for the simulation.
double origin_altitude
Geodetic origin altitude (in meters)
unsigned render_threads
Number of worker threads to use for parallel tasks.
CoordinateFrame coordinate_frame
Scenario coordinate frame.
unsigned filter_length
Default render filter length.
RealType end
End time for the simulation.
int utm_zone
UTM zone (1-60), if applicable.
unsigned oversample_ratio
Oversampling ratio.
std::optional< unsigned > random_seed
Random seed for simulation.
RealType sim_sampling_rate
Temporal sampling rate (Hz) that determines time-step resolution for radar pulse simulation.
std::string simulation_name
The name of the simulation, from the XML.
RealType boltzmann_k
Boltzmann constant.
RealType c
Speed of light (modifiable)
static constexpr RealType DEFAULT_C
Speed of light (m/s)
unsigned adc_bits
ADC quantization bits.
bool utm_north_hemisphere
UTM hemisphere, if applicable.
double origin_latitude
Geodetic origin latitude.
void reset() noexcept
Resets the parameters to their default-constructed state.