/home/runner/work/spades/spades/Source/Utilities.H Source File

SPADES API: /home/runner/work/spades/spades/Source/Utilities.H Source File
SPADES API
Utilities.H
Go to the documentation of this file.
1#ifndef UTILITIES_H
2#define UTILITIES_H
3
4#include <AMReX.H>
5#include <AMReX_RealVect.H>
6#include <AMReX_MultiFab.H>
7#include <AMReX_MultiFabUtil.H>
8#include <AMReX_Random.H>
9#include "Constants.H"
10
11namespace spades {
18AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Long
19pairing_function(const amrex::Long k1, const amrex::Long k2)
20{
21 return (k1 + k2) * (k1 + k2 + 1) / 2 + k2;
22}
23
30AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real
31random_exponential(const amrex::Real lambda, amrex::RandomEngine const& engine)
32{
33 return std::log(1 - amrex::Random(engine)) / (-lambda);
34}
35
41amrex::Real random_exponential(const amrex::Real lambda);
42
48AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE std::uint64_t
49max_representation(const int nbits)
50{
51 AMREX_ASSERT(nbits < 64);
52 std::uint64_t result = 2;
53 for (int i = 0; i < nbits; i++) {
54 result *= 2;
55 }
56 return result;
57}
58
64AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE std::uint64_t bitmask(const int nbits)
65{
66 AMREX_ASSERT(nbits < 64);
67 // Shift 1 by nbits (create power of 2)
68 // Subtract 1 to fill all lower nbits with 1s
69 // bitmask(16): 0xFFFF
70 return (1ULL << nbits) - 1;
71}
72
77void goto_next_line(std::istream& is);
78
88void read_file(
89 const std::string& filename,
90 amrex::Vector<char>& charBuf,
91 bool bExitOnError);
92
93} // namespace spades
94#endif
Solver for PArallel Discrete Event Simulation.
Definition ConsoleIO.cpp:14
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Long pairing_function(const amrex::Long k1, const amrex::Long k2)
Cantor pairing function.
Definition Utilities.H:19
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE std::uint64_t max_representation(const int nbits)
Maximum unsigned integer representation given a number of bits.
Definition Utilities.H:49
void goto_next_line(std::istream &is)
Skip to the next line in stream.
Definition Utilities.cpp:10
void read_file(const std::string &filename, amrex::Vector< char > &charBuf, bool bExitOnError)
Read and broadcast file to all ranks.
Definition Utilities.cpp:16
amrex::Real random_exponential(const amrex::Real lambda)
Exponential distribution.
Definition Utilities.cpp:4
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE std::uint64_t bitmask(const int nbits)
bitmask given a number of bits
Definition Utilities.H:64