diff options
Diffstat (limited to 'Python/pywarpx/WarpX.py')
-rw-r--r-- | Python/pywarpx/WarpX.py | 70 |
1 files changed, 63 insertions, 7 deletions
diff --git a/Python/pywarpx/WarpX.py b/Python/pywarpx/WarpX.py index f0a31f3f9..9c4a4b380 100644 --- a/Python/pywarpx/WarpX.py +++ b/Python/pywarpx/WarpX.py @@ -1,24 +1,80 @@ from .Bucket import Bucket -from ._libwarpx import libwarpx +from .Constants import constants +from .Amr import amr +from .Geometry import geometry +from .Algo import algo +from .Langmuirwave import langmuirwave +from .Interpolation import interpolation +from .Laser import laser +from . import Particles +from .Particles import particles, particles_list + class WarpX(Bucket): """ A Python wrapper for the WarpX C++ class """ + def create_argv_list(self): + argv = [] + argv += warpx.attrlist() + argv += constants.attrlist() + argv += amr.attrlist() + argv += geometry.attrlist() + argv += algo.attrlist() + argv += langmuirwave.attrlist() + argv += interpolation.attrlist() + argv += particles.attrlist() + argv += laser.attrlist() + + # --- Search through species_names and add any predefined particle objects in the list. + particles_list_names = [p.instancename for p in particles_list] + for pstring in particles.species_names.split(' '): + if pstring in particles_list_names: + # --- The species is already included in particles_list + continue + elif hasattr(Particles, pstring): + # --- Add the predefined species to particles_list + particles_list.append(getattr(Particles, pstring)) + particles_list_names.append(pstring) + else: + raise Exception('Species %s listed in species_names not defined'%pstring) + + for particle in particles_list: + argv += particle.attrlist() + + return argv + def init(self): - libwarpx.warpx_init() + from . import wx + argv = ['warpx'] + self.create_argv_list() + wx.initialize(argv) def evolve(self, nsteps=-1): - libwarpx.warpx_evolve(nsteps) + from . import wx + wx.evolve(nsteps) - def finalize(self): - libwarpx.warpx_finalize() + def finalize(self, finalize_mpi=1): + from . import wx + wx.finalize(finalize_mpi) def getProbLo(self, direction): - return libwarpx.warpx_getProbLo(direction) + from . import wx + return wx.libwarpx.warpx_getProbLo(direction) def getProbHi(self, direction): - return libwarpx.warpx_getProbHi(direction) + from . import wx + return wx.libwarpx.warpx_getProbHi(direction) + + def write_inputs(self, filename='inputs', **kw): + argv = self.create_argv_list() + with open(filename, 'w') as ff: + + for k, v in kw.iteritems(): + ff.write('{0} = {1}\n'.format(k, v)) + + for arg in argv: + ff.write('{0}\n'.format(arg)) warpx = WarpX('warpx') + |