WarpX
IntervalsParser.H
Go to the documentation of this file.
1 /* Copyright 2022 Andrew Myers, Burlen Loring, Luca Fedeli
2  * Maxence Thevenet, Remi Lehe, Revathi Jambunathan
3  *
4  * This file is part of WarpX.
5  *
6  * License: BSD-3-Clause-LBNL
7  */
8 
9 #ifndef WARPX_UTILS_PARSER_INTERVALSPARSER_H_
10 #define WARPX_UTILS_PARSER_INTERVALSPARSER_H_
11 
12 #include <limits>
13 #include <string>
14 #include <vector>
15 
16 namespace utils::parser
17 {
18 
24  {
25  public:
36  SliceParser (const std::string& instr, bool isBTD=false);
37 
45  bool contains (const int n) const;
46 
53  int nextContains (const int n) const;
54 
61  int previousContains (const int n) const;
62 
67  int getPeriod () const;
68 
73  int getStart () const;
74 
79  int getStop () const;
80 
85  int numContained() const;
86 
87  private:
88  bool m_isBTD = false;
89  int m_start = 0;
90  int m_stop = std::numeric_limits<int>::max();
91  int m_period = 1;
92  std::string m_separator = ":";
93 
94  };
95 
96 
103  {
104  public:
108  IntervalsParser () = default;
109 
117  IntervalsParser (const std::vector<std::string>& instr_vec);
118 
125  bool contains (const int n) const;
126 
133  int nextContains (const int n) const;
134 
141  int previousContains (const int n) const;
142 
149  int previousContainsInclusive (const int n) const;
150 
157  int localPeriod (const int n) const;
158 
163  bool isActivated () const;
164 
165  private:
166  std::vector<SliceParser> m_slices;
167  std::string m_separator = ",";
168  bool m_activated = false;
169  };
170 
177  {
178  public:
182  BTDIntervalsParser () = default;
183 
191  BTDIntervalsParser (const std::vector<std::string>& instr_vec);
192 
196  int NumSnapshots () const;
197 
203  int GetBTDIteration(int i_buffer) const;
204 
209  int GetFinalIteration() const;
210 
215  bool isActivated () const;
216 
217  private:
218  std::vector<int> m_btd_iterations;
219  std::vector<SliceParser> m_slices;
220  std::vector<int> m_slice_starting_i_buffer;
221  static constexpr char m_separator = ',';
222  bool m_activated = false;
223  };
224 }
225 
226 #endif // WARPX_UTILS_PARSER_INTERVALSPARSER_H_
int nextContains(const int n) const
A method that returns the smallest integer strictly greater than n such that contains(n) is true...
Definition: IntervalsParser.cpp:61
std::vector< int > m_slice_starting_i_buffer
Definition: IntervalsParser.H:220
std::vector< SliceParser > m_slices
Definition: IntervalsParser.H:166
std::vector< SliceParser > m_slices
Definition: IntervalsParser.H:219
int m_period
Definition: IntervalsParser.H:91
This class is a parser for multiple slices of the form x,y,z,... where x, y and z are slices of the f...
Definition: IntervalsParser.H:176
bool contains(const int n) const
A method that returns true if the input integer is contained in the slice. (e.g. if the list is initi...
Definition: IntervalsParser.cpp:54
int getStop() const
A method that returns the slice stop.
Definition: IntervalsParser.cpp:86
int m_start
Definition: IntervalsParser.H:89
int previousContains(const int n) const
A method that returns the greatest integer strictly smaller than n such that contains(n) is true...
Definition: IntervalsParser.cpp:71
int getStart() const
A method that returns the slice start.
Definition: IntervalsParser.cpp:83
This class is a parser for multiple slices of the form x,y,z,... where x, y and z are slices of the f...
Definition: IntervalsParser.H:102
bool m_isBTD
Definition: IntervalsParser.H:88
This class is a parser for slices of the form i:j:k where i, j and k are integers representing respec...
Definition: IntervalsParser.H:23
SliceParser(const std::string &instr, bool isBTD=false)
Constructor of the SliceParser class.
Definition: IntervalsParser.cpp:19
int n
Definition: run_libensemble_on_warpx.py:67
std::vector< int > m_btd_iterations
Definition: IntervalsParser.H:218
std::string m_separator
Definition: IntervalsParser.H:92
Definition: IntervalsParser.H:16
int getPeriod() const
A method that returns the slice period.
Definition: IntervalsParser.cpp:80
int m_stop
Definition: IntervalsParser.H:90
int numContained() const
A method that returns the number of integers contained by the slice.
Definition: IntervalsParser.cpp:89