ARTEMIS
DefaultInitialization.H
Go to the documentation of this file.
1 /* Copyright 2019-2020 Andrew Myers, Axel Huebl,
2  * Maxence Thevenet
3  *
4  * This file is part of WarpX.
5  *
6  * License: BSD-3-Clause-LBNL
7  */
8 #ifndef DEFAULTINITIALIZATION_H_
9 #define DEFAULTINITIALIZATION_H_
10 
11 #include <AMReX_GpuContainers.H>
12 #include <AMReX_REAL.H>
13 
14 #include <cmath>
15 #include <map>
16 #include <string>
17 
34 
39 static std::map<std::string, InitializationPolicy> initialization_policies = {
44 #ifdef WARPX_DIM_RZ
45  {"theta", InitializationPolicy::Zero},
46 #endif
47 
48 #ifdef WARPX_QED
49  {"opticalDepthBW", InitializationPolicy::RandomExp},
50  {"opticalDepthQSR", InitializationPolicy::RandomExp}
51 #endif
52 
53 };
54 
56 amrex::ParticleReal initializeRealValue (const InitializationPolicy policy, amrex::RandomEngine const& engine) noexcept
57 {
58  switch (policy) {
59  case InitializationPolicy::Zero : return 0.0;
60  case InitializationPolicy::One : return 1.0;
62  return -std::log(amrex::Random(engine));
63  }
64  default : {
65  amrex::Abort("Initialization Policy not recognized");
66  return 1.0;
67  }
68  }
69 }
70 
72 int initializeIntValue (const InitializationPolicy policy) noexcept
73 {
74  switch (policy) {
75  case InitializationPolicy::Zero : return 0;
76  case InitializationPolicy::One : return 1;
77  default : {
78  amrex::Abort("Initialization Policy not recognized");
79  return 1;
80  }
81  }
82 }
83 
84 #endif
#define AMREX_FORCE_INLINE
#define AMREX_GPU_HOST_DEVICE
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE int initializeIntValue(const InitializationPolicy policy) noexcept
Definition: DefaultInitialization.H:72
InitializationPolicy
This set of initialization policies describes what happens when we need to create a new particle due ...
Definition: DefaultInitialization.H:33
static std::map< std::string, InitializationPolicy > initialization_policies
This map sets the initialization policy for each particle component used in WarpX.
Definition: DefaultInitialization.H:39
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal initializeRealValue(const InitializationPolicy policy, amrex::RandomEngine const &engine) noexcept
Definition: DefaultInitialization.H:56
Real Random()
void Abort(const std::string &msg)
default
Definition: run_alltests.py:113