ARTS 2.5.11 (git: 6827797f)
artstime.h File Reference

Stuff related to time in ARTS. More...

#include <chrono>
#include <cmath>
#include <string_view>
#include "array.h"
#include "debug.h"
#include "matpack_data.h"
#include "mystring.h"

Go to the source code of this file.

Classes

struct  Time
 Class to handle time in ARTS. More...
 
struct  DebugTime
 Used to debug execution time, prints msg+time on destruction to std::cerr. More...
 

Typedefs

using TimeStep = std::chrono::duration< Numeric >
 A duration of time, 1 full tick should be 1 second.
 
using ArrayOfTime = Array< Time >
 List of times.
 
using ArrayOfArrayOfTime = Array< ArrayOfTime >
 List of times.
 
using ArrayOfTimeStep = Array< TimeStep >
 List of time steps.
 

Functions

std::ostream & operator<< (std::ostream &os, const TimeStep &dt)
 Debug output for duration.
 
TimeStep time_stepper_selection (const String &time_step)
 Returns a time step from valid string.
 
Time next_even (const Time &t, const TimeStep &dt)
 Returns the next time after t with an even time-step.
 
ArrayOfIndex time_steps (const ArrayOfTime &times, const TimeStep &dt)
 Finds the index matching demands in a list of times.
 
Time mean_time (const ArrayOfTime &ts, Index s=0, Index e=-1)
 Computes the average time in a list.
 
Vector time_vector (const ArrayOfTime &times)
 Converts from each Time to seconds and returns as Vector.
 
ArrayOfTime time_vector (const Vector &times)
 Converts from each Vector entry by seconds and returns as ArrayOfTime.
 
TimeStep median (ArrayOfTimeStep)
 Returns the median time step.
 
TimeStep mean (const ArrayOfTimeStep &)
 Returns the mean time step.
 

Detailed Description

Stuff related to time in ARTS.

Author
Richard Larsson
Date
2020-04-13

Definition in file artstime.h.

Typedef Documentation

◆ ArrayOfArrayOfTime

List of times.

Definition at line 125 of file artstime.h.

◆ ArrayOfTime

List of times.

Definition at line 122 of file artstime.h.

◆ ArrayOfTimeStep

List of time steps.

Definition at line 128 of file artstime.h.

◆ TimeStep

using TimeStep = std::chrono::duration<Numeric>

A duration of time, 1 full tick should be 1 second.

Definition at line 22 of file artstime.h.

Function Documentation

◆ mean()

TimeStep mean ( const ArrayOfTimeStep dt)

Returns the mean time step.

Parameters
[in]timesTimes
Returns
mean time step

Definition at line 172 of file artstime.cc.

Referenced by Raw::Reduce::focus(), NumericFromVector(), polynomial_basis_func(), Minimize::T4::x0(), Minimize::DPL::x0(), ybatchDoublingMeanFocus(), and yDoublingMeanFocus().

◆ mean_time()

Time mean_time ( const ArrayOfTime ts,
Index  s = 0,
Index  e = -1 
)

Computes the average time in a list.

Parameters
[in]tsA list of time
[in]sA starting index; valid range [0, ts.nelem())
[in]eThe end+1 index; valid range [-1, ts.nelem()]; -1 is treated as ts.nelem()

Definition at line 133 of file artstime.cc.

References ARTS_USER_ERROR_IF, and Array< base >::nelem().

Referenced by ybatchTimeAveraging().

◆ median()

TimeStep median ( ArrayOfTimeStep  dt)

Returns the median time step.

Takes vector by copy to sort

Parameters
[in]timesTimes
Returns
median time step

Definition at line 161 of file artstime.cc.

Referenced by yMaskOutsideMedianRange().

◆ next_even()

Time next_even ( const Time t,
const TimeStep dt 
)

Returns the next time after t with an even time-step.

Parameters
[in]tA time
[in]dtA duration of time
Returns
Next even time, e.g., 14:14:00 with dt as 10 minutes gives 14:20:00

Definition at line 50 of file artstime.cc.

References Time::EpochTime().

Referenced by time_steps().

◆ operator<<()

std::ostream & operator<< ( std::ostream &  os,
const TimeStep dt 
)

Debug output for duration.

Definition at line 181 of file artstime.cc.

◆ time_stepper_selection()

TimeStep time_stepper_selection ( const String time_step)

Returns a time step from valid string.

The string should look like: "X type". where X is parsed as a double and where valid string type(s) are: "hour", "hours", "h": Returns a X hour time step "minute", "minutes", "min": Returns a X minute time step "second", "seconds", "s": Returns a X seconds time step

Parameters
[in]time_stepA time step of format "X type"
Returns
The time step as TimeStep

Definition at line 19 of file artstime.cc.

References check_enum_error(), and my_basic_string< charT >::tolower().

Referenced by ybatchTimeAveraging().

◆ time_steps()

ArrayOfIndex time_steps ( const ArrayOfTime times,
const TimeStep dt 
)

Finds the index matching demands in a list of times.

The first index is 0 and the second index is the start of the first even period of the given stepsize

The last index is times.nelem(). If output has 1 element, no range was found matching the criteria.

Parameters
[in]timesTimes sorted in ascending order
[in]dtA duration of time
Returns
Starting index of the time-series

Definition at line 59 of file artstime.cc.

References ARTS_USER_ERROR_IF, Array< base >::nelem(), next_even(), and time_steps().

Referenced by time_steps(), and ybatchTimeAveraging().

◆ time_vector() [1/2]

Vector time_vector ( const ArrayOfTime times)

Converts from each Time to seconds and returns as Vector.

Parameters
[in]timesTimes
Returns
Vector of Time->Seconds() calls

Definition at line 149 of file artstime.cc.

References Array< base >::nelem().

Referenced by jacobianCalcPointingZaInterp(), jacobianCalcPointingZaRecalc(), and x2artsSensor().

◆ time_vector() [2/2]

ArrayOfTime time_vector ( const Vector &  times)

Converts from each Vector entry by seconds and returns as ArrayOfTime.

Parameters
[in]timesTimes
Returns
ArrayOfTime from seconds

Definition at line 155 of file artstime.cc.