aboutsummaryrefslogtreecommitdiff
path: root/Python/pywarpx/PICMI.py
diff options
context:
space:
mode:
authorGravatar Dave Grote <grote1@llnl.gov> 2018-07-10 14:45:03 -0700
committerGravatar Dave Grote <grote1@llnl.gov> 2018-07-10 14:45:03 -0700
commit55d436cc9f463a78adcba12241e09c77b2786518 (patch)
tree7910f0163b2cd50ba7183ff88943d2d80005abd3 /Python/pywarpx/PICMI.py
parent59b959590e578c4b8019ac25e59b10130f0d3a93 (diff)
downloadWarpX-55d436cc9f463a78adcba12241e09c77b2786518.tar.gz
WarpX-55d436cc9f463a78adcba12241e09c77b2786518.tar.zst
WarpX-55d436cc9f463a78adcba12241e09c77b2786518.zip
Implemented gaussian_beam_PICMI.py
Diffstat (limited to 'Python/pywarpx/PICMI.py')
-rw-r--r--Python/pywarpx/PICMI.py28
1 files changed, 19 insertions, 9 deletions
diff --git a/Python/pywarpx/PICMI.py b/Python/pywarpx/PICMI.py
index 271d363b9..19fa665c6 100644
--- a/Python/pywarpx/PICMI.py
+++ b/Python/pywarpx/PICMI.py
@@ -7,12 +7,12 @@ import pywarpx
codename = 'WarpX'
# --- Values from WarpXConst.H
-c = 299792458.
-#ep0 = 8.854187817e-12
-#mu0 = 1.2566370614359173e-06
-#q_e = 1.6021764620000001e-19
-#m_e = 9.10938291e-31
-#m_p = 1.6726231000000001e-27
+c = 299792458.
+ep0 = 8.854187817e-12
+mu0 = 1.2566370614359173e-06
+q_e = 1.602176462e-19
+m_e = 9.10938291e-31
+m_p = 1.6726231e-27
class Species(PICMI_Base.PICMI_Species):
@@ -57,7 +57,14 @@ class GaussianBeam(PICMI_Base.PICMI_GaussianBeam):
self.species.bucket.y_rms = self.Yrms
self.species.bucket.z_rms = self.Zrms
self.species.bucket.npart = self.number_sim_particles
- self.species.bucket.q_tot = self.number_real_particles*self.species.bucket.charge
+
+ # --- Calculate the total charge. Note that charge might be a string instead of a number.
+ charge = self.species.bucket.charge
+ if charge == 'q_e' or charge == '+q_e':
+ charge = q_e
+ elif charge == '-q_e':
+ charge = -q_e
+ self.species.bucket.q_tot = self.number_real_particles*charge
# --- These need to be defined even though they are not used
self.species.bucket.profile = "constant"
@@ -73,12 +80,12 @@ class GaussianBeam(PICMI_Base.PICMI_GaussianBeam):
#self.species.bucket.zmin
#self.species.bucket.zmax
- if self.UXdiv != 0. and UYdiv != 0. and UZdiv != 0.:
+ if self.UXdiv != 0. and self.UYdiv != 0. and self.UZdiv != 0.:
self.species.bucket.momentum_distribution_type = "radial_expansion"
self.species.bucket.u_over_r = self.UXdiv
#self.species.bucket.u_over_y = self.UYdiv
#self.species.bucket.u_over_z = self.UZdiv
- elif self.UXrms != 0. or UYrms != 0. or UZrms != 0.:
+ elif self.UXrms != 0. or self.UYrms != 0. or self.UZrms != 0.:
self.species.bucket.momentum_distribution_type = "gaussian"
self.species.bucket.ux_m = self.UXmean
self.species.bucket.uy_m = self.UYmean
@@ -229,6 +236,9 @@ class EM_solver(PICMI_Base.PICMI_EM_solver):
if 'particle_pusher_algo' in kw:
pywarpx.algo.particle_pusher = kw['particle_pusher_algo']
+ pywarpx.interpolation.nox = self.norderx
+ pywarpx.interpolation.noy = self.nordery
+ pywarpx.interpolation.noz = self.norderz
class Simulation(PICMI_Base.PICMI_Simulation):
def init(self, **kw):