13 #include <AMReX_REAL.H> 14 #include <AMReX_Vector.H> 15 #include <AMReX_MultiFab.H> 16 #include <AMReX_ParmParse.H> 17 #include <AMReX_Utility.H> 24 amrex::Vector<int>& boost_direction);
33 void NullifyMF(amrex::MultiFab& mf,
int lev, amrex::Real zmin,
46 std::string& stored_string);
66 static_assert(
sizeof(
int) * 2u <=
sizeof(uint64_t),
67 "int size might cause collisions in global IDs");
78 return uint64_t(
id) | uint64_t(cpu) << 32u;
92 template<
typename T> AMREX_GPU_DEVICE AMREX_FORCE_INLINE
93 const T*
upper_bound(
const T* first,
const T* last,
const T& val)
118 template<
typename T> AMREX_GPU_DEVICE AMREX_FORCE_INLINE
121 return ((x1-x)*f0 + (x-x0)*f1)/(x1-
x0);
129 template<
typename T> AMREX_GPU_DEVICE AMREX_FORCE_INLINE
143 template<
typename T> AMREX_GPU_DEVICE AMREX_FORCE_INLINE
145 T f000, T f001, T f010, T f011, T f100, T f101, T f110, T f111,
149 x0, x1, y0, y1, f000, f010, f100, f110, x, y);
151 x0, x1, y0, y1, f001, f011, f101, f111, x, y);
162 WarpXParser makeParser (std::string
const& parse_function, std::vector<std::string>
const& varnames);
171 void AlwaysAssert(
bool is_expression_true,
const std::string& msg);
182 bool is_in(
const std::vector<std::string>& vect,
183 const std::string& elem);
190 bool is_in(
const std::vector<std::string>& vect,
191 const std::vector<std::string>& elems);
207 template <
typename Container>
208 auto split (std::string
const& instr, std::string
const& separator,
209 bool const trim =
false, std::string
const& trim_space =
" \t")
212 std::size_t current = instr.find(separator);
213 std::size_t previous = 0;
214 while (current != std::string::npos) {
216 cont.push_back(amrex::trim(instr.substr(previous, current - previous),trim_space));}
218 cont.push_back(instr.substr(previous, current - previous));}
219 previous = current + separator.size();
220 current = instr.find(separator, previous);
223 cont.push_back(amrex::trim(instr.substr(previous, current - previous),trim_space));}
225 cont.push_back(instr.substr(previous, current - previous));}
231 #endif //WARPX_UTILS_H_ Definition: WarpXUtil.cpp:296
AMREX_GPU_DEVICE AMREX_FORCE_INLINE T trilinear_interp(T x0, T x1, T y0, T y1, T z0, T z1, T f000, T f001, T f010, T f011, T f100, T f101, T f110, T f111, T x, T y, T z)
Performs a trilinear interpolation.
Definition: WarpXUtil.H:144
WarpXParser makeParser(std::string const &parse_function, std::vector< std::string > const &varnames)
Initialize a WarpXParser object from a string containing a math expression.
Definition: WarpXUtil.cpp:194
list y1
Definition: plot_particle_path.py:129
data
Definition: run_alltests_1node.py:320
AMREX_GPU_DEVICE AMREX_FORCE_INLINE T linear_interp(T x0, T x1, T f0, T f1, T x)
Performs a linear interpolation.
Definition: WarpXUtil.H:119
int gamma_boost
Definition: compute_domain.py:41
Definition: WarpXUtil.cpp:307
def x
Definition: read_lab_particles.py:25
constexpr uint64_t localIDtoGlobal(int const id, int const cpu)
Definition: WarpXUtil.H:64
void ConvertLabParamsToBoost()
Definition: WarpXUtil.cpp:50
int count
Definition: run_alltests.py:318
void ReadBoostedFrameParameters(amrex::Real &gamma_boost, amrex::Real &beta_boost, amrex::Vector< int > &boost_direction)
def z
Definition: read_lab_particles.py:26
void CheckGriddingForRZSpectral()
Ensures that the blocks are setup correctly for the RZ spectral solver.
Definition: WarpXUtil.cpp:224
filename
Definition: write_atomic_data_cpp.py:17
bool is_in(const std::vector< std::string > &vect, const std::string &elem)
Definition: WarpXUtil.cpp:309
AMREX_GPU_DEVICE AMREX_FORCE_INLINE T bilinear_interp(T x0, T x1, T y0, T y1, T f00, T f01, T f10, T f11, T x, T y)
Performs a bilinear interpolation.
Definition: WarpXUtil.H:130
AMREX_GPU_DEVICE AMREX_FORCE_INLINE const T * upper_bound(const T *first, const T *last, const T &val)
Returns a pointer to the first element in the range [first, last) that is greater than val...
Definition: WarpXUtil.H:93
Definition: WarpXUtil.H:82
void Store_parserString(amrex::ParmParse &pp, std::string query_string, std::string &stored_string)
Parse a string (typically a mathematical expression) from the input file and store it into a variable...
Definition: WarpXUtil.cpp:181
list y0
Definition: plot_particle_path.py:127
Definition: WarpXParser.H:26
Definition: WarpXUtil.cpp:171
int it
Definition: read_lab_particles.py:11
list x0
Definition: plot_particle_path.py:126
auto split(std::string const &instr, std::string const &separator, bool const trim=false, std::string const &trim_space=" \)
Splits a string using a string separator. This is somewhat similar to amrex::Tokenize. The main difference is that, if the separator ":" is used, amrex::Tokenize will split ":3::2" into ["3","2"] while this functio will split ":3::2" into ["","3","","2"]. This function can also perform a trimming to remove whitespaces (or any other arbitrary string) from the split string.
Definition: WarpXUtil.H:208
list x1
Definition: plot_particle_path.py:128
void NullifyMF(amrex::MultiFab &mf, int lev, amrex::Real zmin, amrex::Real zmax)
Definition: WarpXUtil.cpp:129
bool WriteBinaryDataOnFile(std::string filename, const amrex::Vector< char > &data)
Definition: WarpXUtil.cpp:172
void AlwaysAssert(bool is_expression_true, const std::string &msg="ERROR!")
If is_expression_true is false, this function prints msg and calls amrex::abort() ...
Definition: WarpXUtil.cpp:298