aboutsummaryrefslogtreecommitdiff
path: root/Python/pywarpx/WarpX.py
diff options
context:
space:
mode:
authorGravatar roelof-groenewald <40245517+roelof-groenewald@users.noreply.github.com> 2021-05-11 20:23:15 -0700
committerGravatar GitHub <noreply@github.com> 2021-05-11 20:23:15 -0700
commitc26fadfcfa9c39ec024ecc0053f6fddb3ffdd163 (patch)
tree9b7e35a65611e8ba375683cd4e248d49a22eb88a /Python/pywarpx/WarpX.py
parent2cdb5453ddd1a1065fcf4b2daf772fece94e7f99 (diff)
downloadWarpX-c26fadfcfa9c39ec024ecc0053f6fddb3ffdd163.tar.gz
WarpX-c26fadfcfa9c39ec024ecc0053f6fddb3ffdd163.tar.zst
WarpX-c26fadfcfa9c39ec024ecc0053f6fddb3ffdd163.zip
Feature - Time dependent Dirichlet boundary conditions for electrostatic simulations (#1761)
* Update copyright notices * allow specification of boundary potentials at runtime when using Dirichlet boundary conditions in the electrostatic solver (labframe) * added parsing to boundary potentials specified at runtime to allow time dependence through a mathematical expression with t (time) * updated to picmistandard 0.0.14 in order to set the electrostatic solver convergence threshold * update docs * various changes requested during PR review * fixed issue causing old tests to break and added a new test for time varying boundary potentials * possibly a fix for the failed time varying boundary condition test * changed permission on the analysis file for the time varying BCs test * switched to using yt for data analysis since h5py is not available * made changes compatible with PR#1730; changed potential boundary setting routine to use the ParallelFor construct and set all boundaries in a single call * fixed typo in computePhiRZ * updated docs and fixed other minor typos * fixed bug in returning from loop over dimensions when setting boundary potentials rather than continuing * changed to setting potentials on domain boundaries rather than tilebox boundaries and changed picmi.py to accept boundary potentials * now using domain.surroundingNodes() to get the proper boundary cells for the physical domain * fixed typo in variable name specifying z-boundary potential * changed boundary value parameter for Dirichlet BC to boundary.field_lo/hi and changed setPhiBC() to only loop over the grid points when a boundary value has changed * switched specifying potential boundary values though individual inputs of the form boundary.potential_lo/hi_x/y/z and incorporated the new BC formalism through FieldBoundaryType::Periodic and FieldBoundaryType::PEC rather than Geom(0).isPeriodic(idim) * removed incorrect check of whether the potential boundary values are already correct, also had to change the input to test space_charge_initialization_2d to comply with the new boundary condition input parameters and finally changed permissions to analysis_fields.py file for the embedded boundary test since it was failing * remove line from WarpX-tests.ini that was incorrectly added during upstream merge * changed input file for relativistic space charge initialization to new boundary condition specification * fixed outdated comment and updated documentation to reflect that the Dirichlet BCs can also be specified when using the relativistic electrostatic field solver * moved call to get domain boundaries inside the loop over levels * cleaned up the code some by using domain.smallEnd and domain.bigEnd rather than lbound and ubound * added check that a box contains boundary cells before launching a loop over that box cells to set the boundary conditions Co-authored-by: Peter Scherpelz <peter.scherpelz@modernelectron.com>
Diffstat (limited to 'Python/pywarpx/WarpX.py')
-rw-r--r--Python/pywarpx/WarpX.py3
1 files changed, 3 insertions, 0 deletions
diff --git a/Python/pywarpx/WarpX.py b/Python/pywarpx/WarpX.py
index ae48bfcf6..dc09ba241 100644
--- a/Python/pywarpx/WarpX.py
+++ b/Python/pywarpx/WarpX.py
@@ -9,6 +9,7 @@ from .Bucket import Bucket
from .Constants import my_constants
from .Amr import amr
from .Geometry import geometry
+from .Boundary import boundary
from .Algo import algo
from .Langmuirwave import langmuirwave
from .Interpolation import interpolation
@@ -30,6 +31,7 @@ class WarpX(Bucket):
argv += my_constants.attrlist()
argv += amr.attrlist()
argv += geometry.attrlist()
+ argv += boundary.attrlist()
argv += algo.attrlist()
argv += langmuirwave.attrlist()
argv += interpolation.attrlist()
@@ -89,6 +91,7 @@ class WarpX(Bucket):
def write_inputs(self, filename='inputs', **kw):
argv = self.create_argv_list()
+
with open(filename, 'w') as ff:
for k, v in kw.items():