diff options
Diffstat (limited to 'Python/pywarpx/WarpX.py')
-rw-r--r-- | Python/pywarpx/WarpX.py | 50 |
1 files changed, 49 insertions, 1 deletions
diff --git a/Python/pywarpx/WarpX.py b/Python/pywarpx/WarpX.py index f0a31f3f9..7a05c40fb 100644 --- a/Python/pywarpx/WarpX.py +++ b/Python/pywarpx/WarpX.py @@ -1,19 +1,56 @@ from .Bucket import Bucket + +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 + +import ctypes from ._libwarpx import libwarpx +from ._libwarpx import amrex_init class WarpX(Bucket): """ A Python wrapper for the WarpX C++ class """ + def create_argv_list(self): + argv = [] + argv += warpx.attrlist() + argv += amr.attrlist() + argv += geometry.attrlist() + argv += algo.attrlist() + argv += langmuirwave.attrlist() + argv += interpolation.attrlist() + argv += particles.attrlist() + argv += laser.attrlist() + + if not particles_list: + # --- This is needed in case only species_names has been set, + # --- assuming that only the built in particle types are being used. + for pstring in particles.species_names.split(' '): + particles_list.append(getattr(Particles, pstring)) + + for particle in particles_list: + argv += particle.attrlist() + + return argv + def init(self): + argv = ['warpx'] + self.create_argv_list() + amrex_init(argv) libwarpx.warpx_init() def evolve(self, nsteps=-1): libwarpx.warpx_evolve(nsteps) - def finalize(self): + def finalize(self, finalize_mpi=1): libwarpx.warpx_finalize() + libwarpx.amrex_finalize(finalize_mpi) def getProbLo(self, direction): return libwarpx.warpx_getProbLo(direction) @@ -21,4 +58,15 @@ class WarpX(Bucket): def getProbHi(self, direction): return 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') + |