aboutsummaryrefslogtreecommitdiff
path: root/Source/Python (follow)
AgeCommit message (Collapse)AuthorFilesLines
2021-08-30Make buffer of scraped particles available to Python code (#2164)Gravatar Phil Miller 2-0/+79
* Added wrapper to get number of particle species tracked by the scraper Not sure if this is going to be useful, but it demonstrates a method to get information from the ParticleBoundaryBuffer into Python. * Stubbed out the main wrapper functions * Added parameters to wrapper * Added wrapper for getting the number of particles scraped of a species on a boundary * added picmi arguments to scrape particles at the domain boundary * Added wrapper to get the full particle buffer into python * rearanged the getBuffer properties code a little * Added docstrings +other suggested changes * Added num_particles_impacted_boundary docstring * fixed mistake in docstring * Changed boundary parameter to be a string for clarity * Fixed issue with the boundary parameter for scraping * Fixed issue with the boundary input for scraping stats wrapper * Added demonstration of particle scraping wrapper * Added analysis.py file * Fix typo in one of the dimension maps Co-authored-by: Roelof Groenewald <40245517+roelof-groenewald@users.noreply.github.com> * Added before esolve to warpx evolve * added test for the scraped particle buffer wrappers * Moved python PICMI particle boundary scrape test * Renamed test file to the correct name * Removed old test * added special functionality to get the timestep at which particles were scraped * removed debug print * added python wrapper for the clearParticles() function of the scraper buffer * added special wrapper function to get the timesteps at which the particles in the boundary buffer were scraped * updated test to match the non-PICMI test for the particle scraper buffer * Fix uncaught rebase mistake * re-activated picmi test of accessing the scraped particle buffers via python * added documentation for the new parameters involved in the scraped particle buffer and fixed remaining issue with picmi test * changes requested during code review Co-authored-by: mkieburtz <michaelkieburtz@gmail.com> Co-authored-by: Roelof <roelof.groenewald@modernelectron.com> Co-authored-by: Roelof Groenewald <40245517+roelof-groenewald@users.noreply.github.com>
2021-08-26Improvement in electrostic field solve when using EB & a small refactoring ↵Gravatar Roelof Groenewald 4-0/+7
of the Electrostatic solver (#2143) * refactored parts of the electrostatic solver to allow an outside Poisson solver to be installed * added callback to install a Poisson solver that can be used instead of the MLMG solver * added call to the poissonsolver callback if one is installed and updated ElectrostaticSolver.cpp to calculate the electric field directly in amrex if EBs are used * fixed issue causing ElectrostaticSphereEB test to crash * fixed the logic for when to call computeE * added function to allow charge density to be deposited in rho_fp from outside WarpX * fixed inconsistency between labframe and relativistic electrostatic simulation setup * fixed typo * fixed issue that caused ElectrostaticSphere test to fail and removed unnecessary call to multiply E_y by -1 when doing a 2d simulation * revert edit to error handling string * changes requested during PR review * additional change requested during PR review * fixed typo * revert unnecessary changes
2021-08-02Allow extra particle attributes (besides ux, uy, uz and w) to be set at ↵Gravatar Roelof Groenewald 2-0/+10
particle creation in AddNParticles() (#2115) * exposes AddRealComp to Python to allow extra particle attributes to be added at runtime; also includes a new function to grab a particle data array from the name of the component rather than the index * added functionality to AddNParticles() to allow extra particle attributes to also be set during particle creation * added function to get index of a particle component given the PID name * changed new get component index and get_particle_arrays_from_comp_name functions to take species name as argument rather than species id * changed warpx_addRealComp to accept a species name as input and only add the new component for that species * added a test of the pywarpx bridge to get particle data and add new particle attributes at runtime * changed all particle interacting functions in libwarpx to use the species name rather than id, also changed the functions to get particle array data to use the component name rather than index * updated test according to PR #2119 changes * removed unneeded BL_ASSERT(nattr == 1) statement * fixed bug in add_particles to correctly determine the number of extra attributes * fixed bug in AddNParticles if fewer attribute values are passed than the number of extra arrays for the species * use isinstance(attr, ndarray) rather than type(attr) is np.ndarray * generalize_runtime_comps_io * fix OpenPMD * fix OpenPMD * fix plot flags in WritePlotFile * fix offset and comment * changed extra pid test to not use an underscore in the pid name * switched _libwarpx.py::add_particles to use kwargs to accept the weight and extra attribute arrays * License update in test file Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja> * fix typo * added a test with unique_particles=False * Apply suggestions from code review Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja> * updated docstring and comments Co-authored-by: atmyers <atmyers2@gmail.com> Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
2021-07-21Use only species name in libwarpx (#2119)Gravatar Roelof Groenewald 2-42/+24
* changed all particle interacting functions in libwarpx to use the species name rather than id, also changed the functions to get particle array data to use the component name rather than index * removed unneeded function declaration
2021-07-20Python - add new particle attributes at runtime (#2112)Gravatar Roelof Groenewald 2-0/+65
* exposes AddRealComp to Python to allow extra particle attributes to be added at runtime; also includes a new function to grab a particle data array from the name of the component rather than the index * added function to get index of a particle component given the PID name * changed new get component index and get_particle_arrays_from_comp_name functions to take species name as argument rather than species id * changed warpx_addRealComp to accept a species name as input and only add the new component for that species
2021-07-13Interface silver mueller (#2051)Gravatar Revathi Jambunathan 2-3/+4
* interface silvermueller with refactored boundary interface * add interface in silver mueller input files * define first and second half for EvolveB * add do_pml parse snce RZ needs do_pml to be st to false * Silver-Mueller boundary condition in docs * add firsthalf in ApplyBfieldBoundary within PushPSATD as only first first half is used to apply silvermueller * CallSilverMueller once for all boundaries * remove unused do silvermueller flag * fix typo in input file * Apply suggestions from code review Co-authored-by: Remi Lehe <remi.lehe@normalesup.org> * abort message if silver-mueller is not selected on all valid boundaries * fix typo * fix eol * remove ifdef from inside the Assert message * check silver-mueller selection after reading all boundaries Co-authored-by: Remi Lehe <remi.lehe@normalesup.org>
2021-07-09Feature pass MPI comm from Python script to AMReX during initialization (#2034)Gravatar KZhu-ME 2-4/+14
* Added functionality to pass mpi comm from python script to amrex during initialization * Fixed missing _ in MPI._sizeof() * Added functions to get the current processor's rank and total number of processors * Renamed MPI_Comm to _MPI_Comm_type and defined _MPI_Comm_type in except statement * Updated comment to explain why mpi4py needs to be imported before loading libwarpx * Removed ifdef flags that prevent amrex_init_with_inited_mpi from being declared when MPI is off * Changed amrex_init_with_inited_mpi to be declared even when not using mpi, but will be defined to be functionally the same as amrex_init * Defined MPI = None to signify whether MPI is used, to add another check when initializing amrex * Changed ifdef blocks in WarpXWrappers.cpp/h to fix compile errors. Added ifdef block to conditionally declare amrex_init_with_inited_mpi in WarpXWrappers.h to prevent compile error when not using MPI. Removed ifdef block to declare/define same function in WarpXWrappers.cpp since function needs to be declared even when MPI is not used, but will never be called in that case. * Changed BL_USE_MPI to AMREX_USE_MPI and removed incorrect MPI=None statement * Changed BL_USE_MPI to AMREX_USE_MPI * Added test to verify correct passing of MPI communicator to amrex * Added ability to pass mpi_comm to sim.step * Change test to check for differeing outputs when passed different inputs * Removed obsolete comments refactored program to use more shared code * Refactored comments * Updated description to match test * Removed unecessary imports and updated comments
2021-07-06Add possibility to start and stop moving window (#2027)Gravatar thomas clark 2-3/+3
* Add possibility to start and stop moving window * Update Benchmark laserInjection_2d * Update Source/Diagnostics/BTDiagnostics.cpp Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja> * modification of the MoveWindow function in the python interface * False to True for move j in python function Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
2021-06-24Use "Include What You Use" on WarpX (#1947)Gravatar Luca Fedeli 2-9/+23
* initial tests with IWYU * added a couple of forward declarations * used iwyu on more files * progress * used iwyu on more files * progress with iwyu * progress with iwyu * fixed bug * progress with iwyu * progress with IWYU * progress with IWYU * fixed bug * fixed bug * progress with IWYU * progress with IWYU + use forward declarations in WarpX.H * first try with .def files * fix bugs * progress with IWYU * progress with IWYU * progress with iwyu * correct copyright * fixed bug * fixed bugs * fix missing include * fixed bug * fix bug * fix bug introduced during last bugfix * use iwyu on newly added files * add space * fix bug * fix missing include * fix missing include * fix missing include * fixed bugs * fixed bug * attempt at fixing issue with math functions * added missing include * fixed missing include * using _fwd.H * fixed bug * progress with iwyu * update AMReX branch * enforce alphabetic order * progress with iwyu * use right version of amrex * use right version of amrex for tests * fixed bug * fix another bug * fix missing include * fix missing include * fix missing include * updated amrex * initial work to document new include strategy * updated documentation * Fix rst & private includes * Remove accidentially added files * Fix rst code blocks * one more rst block Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
2021-06-07Call function ReadBCParams() during python execution (#1972)Gravatar roelof-groenewald 2-0/+7
* added ReadBCParams() function call to python execution and added a test of the electrostatic solver executing from python * added separate specification of particle boundary conditions in picmi setup and adjusted the inputs for existing tests to follow the new practice * updated input for rz PICMI test and renamed the electrostatic test to follow standard practice * added arguments for particle boundary conditions to Langmuir RZ test * added dictionary to picmi.py to map from picmistandard field boundary condition specifications to that of WarpX * fixes for failing unit tests; added key, pair 'none' to picmi dictionary of field BCs * also using 'none' for upper boundary condition for RZ test Python_Langmuir_rz_multimode
2021-01-21Define: _OPENMP -> AMREX_USE_OMP (#1520)Gravatar Axel Huebl 1-3/+2
* Define: _OPENMP -> AMREX_USE_OMP Replace the define check of `_OPENMP` with the explicit backend control of `AMREX_USE_OMP` for parallel constructs. Doing so avoids that we accidentially turn on OpenMP, e.g. if a dependency pulls it in for linear algebra, I/O, etc. This can led to confusion if the user explicitly requested a serial build. Also, we might want to use OpenMP functionality here and there for auxiliary functions w/o having to use the AMReX OpenMP backend, i.e. because we compile for GPUs. * Add missing amrex::Gpu::notInLaunchRegion
2020-12-02Fix python wrapper (#1532)Gravatar David Grote 1-16/+23
* Fixes to the Python interface for accessing field and particle data * In Python wrapper, cleaned up how ngrow is handled
2020-10-23Fix Warning for SigmaBox FabFactory (#1466)Gravatar Weiqun Zhang 1-1/+1
2020-10-16New reduced diag: number of macroparticles (#1414)Gravatar NeilZaim 1-5/+5
* New reduced diag: number of macroparticles * Add parentheses in header line * Apply suggestions from code review Co-authored-by: Luca Fedeli <luca.fedeli.88@gmail.com> * Add some consts * Fuse some lines with std::ofstream Co-authored-by: Luca Fedeli <luca.fedeli.88@gmail.com>
2020-09-30removed extra ; (#1397)Gravatar Luca Fedeli 1-34/+34
2020-07-30Add input parameter to control Galerkin-scheme gather (#1191)Gravatar danielbelkin 2-3/+3
* Rename l_lower_order_in_v to galerkin_interpolation * Changed galerkin_interpolation from int to bool * ... and same for member versions. * Add input parameter to control galerkin_interpolation * Update documentation * semicolon * Update Docs/source/running_cpp/parameters.rst Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja> * Update Docs/source/running_cpp/parameters.rst Resolve ambiguity Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja> * Fix doc * Add references to documentation Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
2020-07-20Overwrite AMReX Defaults: Python (#1177)Gravatar Axel Huebl 1-2/+3
Forgot to also overwrite the initialization defines for Python with my last PR.
2020-06-22Added check of gridding for RZ spectral solver (#1005)Gravatar David Grote 2-0/+7
* Added CheckGriddingForRZSpectral * Bug fix in check gridding for RZ Spectral, fixing handling of refinement ratio * Change numprocs=2 for python reg tests and reset benchmarks (#1075) * changing nprocs to 2 for Python_PlasmaAcceleration test * Resetting benchmark for Python_PlasmaAcceleration test case due to change in nprocs=2 in reg test * resetting benchmarks for Python test-cases except Python_Langmuir due to change in numprocs in WarpX-tests.ini * changing numprocs=2 for Python tests * resetting python reg test benchmarks after updating pywarpx Co-authored-by: Revathi Jambunathan <revanathan@pop-os.localdomain> Co-authored-by: Tools <warpx.lbl.gov> Co-authored-by: Tools <warpx@lbl.gov> * Updates to picmi, mostly related to fields, and add psatd (#1077) * Fixed bad arguments in PICMI_inputs_laser_acceleration.py (#1074) Note that polarization_angle was changed to 0 since that was the value being used because the polarization_argument was bad. * Fix typo for pml_ncell in parameters doc (#1071) * remove #line wp_parser.l because it causes issues with AMReX make system (#1078) * remove amrex namespace from diag functor cpp files and use amrex:: prefic (#1093) * For RZ spectral, updated documentation regarding blocking factor and max grid size Co-authored-by: Revathi Jambunathan <41089244+RevathiJambunathan@users.noreply.github.com> Co-authored-by: Revathi Jambunathan <revanathan@pop-os.localdomain> Co-authored-by: Tools <warpx@lbl.gov> Co-authored-by: NeilZaim <49716072+NeilZaim@users.noreply.github.com> Co-authored-by: WeiqunZhang <WeiqunZhang@lbl.gov> Co-authored-by: Remi Lehe <remi.lehe@normalesup.org>
2020-06-12Add CMake Scripts (#759)Gravatar Axel Huebl 1-0/+5
* [skip travis] CMake: Add CMake Scripts This add CMake scripts for the CMake build system generator. * CUDA Support Achieved Fastest compile via: cmake .. -DENABLE_CUDA=ON -DCUDA_ARCH=6.0 * CMake: openPMD & QED * CMake: Dimension Support WarpX_DIMS=2,3,RZ * CCache & Out-of-Source Enable CCache when found and prevent in-root builds (in-source okay-ish). * CMake: CUDA C++ Language Minimum * Add new Files * CI: Migrate macOS to CMake * Fortran: Enable Because Transitive ... for now :) * CI: Migrate Linux ICC to CMake * CI: Verbose Make * CMake: Add Missing PSATD Sources * CMake: PSATD, Compute, Precision, Clean
2020-05-01Do not rely on nodal flags (#931)Gravatar Edoardo Zoni 1-16/+17
* Start removing nodal flags where possible * Remove additional nodal flags * Clean up getFieldNodalFlagData in Python wrappers * Remove nodal flags from PML files * Revert "Remove nodal flags from PML files" This reverts commit 1d58519f9cee2e64df811f76f3d8a0aead1aa4ef. * Fix issue when removing nodal flags from PML files * Remove nodal flags from (OLD) slice diagnostics * Nodal flags are now local variables in WarpX::AllocLevelMFs * Trigger Travis CI build after AMReX bug fix * Void commit: trigger Travis CI build
2020-05-01Delete old diagnostics (#933)Gravatar MaxThevenet 2-35/+0
* Create subsection for diags documentation in input parameters list * Replace old diags with new ones IN DOC ONLY * eol whitespace * Check first CI test with new diags, before changing all of them * use diags in all CI * oops, had forgotten all examples except Tests/ * Updated picmi interface to use the new diagnostics * fix bug in how field functors are initialized for diags * fix bug: should always dump output at the end of simulation * eol * update test parameters in ini file * Further fixes to picmi for new diagnostics * Updates PICMI input files to use the new diagnostics * avoid dumping final plotfile twoce * update test to run with new diags * fix typo introduced when fixing merge conflicts * had accidentally removed the max_step here, so the run never ended on TravisCI * Add Diagnostics.py for picmi with new diagnostics * Adding m_ for member variables in new diags (#934) * fixing bug to initialize CellCenterFunctor for Bx * diag_name renamed to m_diag_name * some more diag members made m_ * renaming member variable mf_avg to m_mf_output * fixing m_mf_output to mf_dst in comments * Python documentation updates (#936) * Update Python documentation * Added numpy as a requirement for the Python installation * Cleaned EOL white space in Python documentation * Add periodictable to the Python packages required Co-Authored-By: Axel Huebl <axel.huebl@plasma.ninja> * Added periodictable to required packages for pure Python version Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja> * Add hostname to LoadBalanceCosts reduced diagnostic (#902) * Add hostname to reduced diags EOL Fix rd loadbalancecosts test AMREX_USE_MPI EOL move macro to source file Review changes eol add GPU ID if running on GPU eol Typo in comment use vectors to get rid of C-style memory management Fix for test eol * Compute number of unique box data fields in analysis script * analysis script * Use amrex Tokenize to split string * Update WarpXUtil.cpp * Update WarpXUtil.H * [mini] Add contact us section to documentation (#941) * add contact us section to doc * Update Docs/source/contact_us.rst Co-Authored-By: L. Diana Amorim <LDianaAmorim@lbl.gov> * Update Docs/source/contact_us.rst Co-authored-by: L. Diana Amorim <LDianaAmorim@lbl.gov> * stop calling the old WritePlotFile functions * fix new diags, problem with rho and PSATD and particle output variables * remove more deprecated code for old diags * Move checkpoint capability to new diagnostics * error if user asks custom output for checkpoint * eol * some more old diags code deleted * further cleaning * eol * further cleaning, make sure that WarpX compiles with USE_OPENPMD * remove old diags parameters * use new option to change the plotfile name * typo * do not need checkpoint files * adapt to new option for checkpoint * removed unread options as they make tests crash * remove warpx_checkInt from the Python layer * remove some more python wrappers * add checkpoint capability with 2 diags in new output * fix bug in MultiDiagnostics, and (should) fix checkpoint-restart test * fix restart CI test * avoid issue when writing the last plotfile twice * dpgrote's fix for the Python tests * update doc for diagnostics * stop requesting ndiags, this is read from the list of diags * awk to remove ndiags from all example input files * Removed diagnostics.ndiags from picmi interface Co-authored-by: Dave Grote <dpgrote@lbl.gov> Co-authored-by: Dave Grote <grote1@llnl.gov> Co-authored-by: Revathi Jambunathan <41089244+RevathiJambunathan@users.noreply.github.com> Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja> Co-authored-by: Michael E Rowan <38045958+mrowan137@users.noreply.github.com> Co-authored-by: L. Diana Amorim <LDianaAmorim@lbl.gov>
2020-04-02Includes: Only From `Source/` (#873)Gravatar Axel Huebl 1-1/+0
* Includes: Only From `Source/` Avoid adding all directories to include paths: - automatically structure includes more clearly, e.g. a util include with a short name is clearly seen as such - should have some small positive impact on compile time, since the compiler has to search less directories for an include file * Includes: Fix Non-Local Paths Add missing prefix relative to `Source/` for WarpX-local includes.
2020-03-31Make Build System: No Public Includes (#870)Gravatar Axel Huebl 1-2/+0
Remove the listing of all header-files from the Make-buildsystem. Listing public header files here tells the AMReX Makefile build system to install those in an install step after build. WarpX is currently not building a public library which can be consumed by users for their projects and only an executable.
2020-03-23Updated Python interface for Python_Langmuir_rz_multimode test (#810)Gravatar David Grote 1-0/+29
* Added nodal and cell size data to the Python interface and updates the Python_Langmuir_rz_multimode regression test * Cleanup of PICMI_inputs_langmuir_rz_multimode_analyze.py
2020-03-16Added Python wrapper of charge density arrays (#783)Gravatar David Grote 1-0/+20
2020-02-25Includes: Clean Up (#743)Gravatar Axel Huebl 3-7/+10
- Use `""` for WarpX-local includes - Order: WarpX `""`, AMReX `<>`, other third party includes `<>` - Add dir prefixes for WarpX Add order to includes by including from `Source/` onward and keeping directory prefixes of non-local includes for clarity.
2020-02-10Python Compile in Single PrecisionGravatar Axel Huebl 3-13/+21
2020-01-28Merge pull request #661 from MaxThevenet/copyrightGravatar Remi Lehe 4-0/+29
Add Copyright header in all source files
2020-01-28Simplify Plot OptionsGravatar Axel Huebl 2-0/+11
Remove the `dump_plotfile` switch and only control via interval value in `plot_int` for plotfiles. Remove the `dump_openpmd` switch and only control via interval value in `plot_openpmd` for openPMD data dumps. openPMD: pick first available backend if unspecified.
2020-01-27Automatically add copyright header with update_copyright.shGravatar Tools 4-0/+29
2019-12-23Merge branch 'dev' into commGravatar MaxThevenet 2-125/+74
2019-12-20Merge pull request #568 from dpgrote/pml_pythonGravatar Remi Lehe 2-125/+74
Adds Python wrapper of PML fields
2019-12-18Merge branch 'dev' into commGravatar MaxThevenet 1-2/+3
2019-12-12Added Python wrapper for the PML fieldsGravatar Dave Grote 1-0/+37
2019-12-12Cleaned up the Python interface accessing the fieldsGravatar Dave Grote 2-116/+28
2019-12-11fixed possible overflow and added some static casts to replace C-style castsGravatar Luca Fedeli 1-2/+3
2019-10-27FillBoundaryE/B/F take mandatory argument nguardGravatar MaxThevenet 1-2/+2
2019-10-01Allowed single precision in the Python interfaceGravatar Dave Grote 2-55/+68
2019-09-11Source: tabs2spacesGravatar Axel Huebl 1-15/+15
Manually fix tabs to four spaces and alignments for consistent prepresentation of source code over all machines.
2019-09-11Source & Tools: No EOL WhitespacesGravatar Tools 2-27/+27
End-of-line (EOL) whitespaces are verbose and increase diffs and merge conflicts over time. Cleaned them up for the `Source/`, `Examples/` and `Tools/` directory with the following bash one-liner: ```bash find . -type f -not -path './.git*' \ -exec sed -i 's/[[:blank:]]*$//' {} \; ``` Committed as generic user so git does not credit the many lines to me: ```bash GIT_AUTHOR_NAME="Tools" GIT_AUTHOR_EMAIL="warpx@lbl.gov" \ git commit ```
2019-09-06Updated Python particles interface to allow refined levelsGravatar Dave Grote 2-14/+10
2019-08-26Clean up of RZ mutlimode, mostly removing imaginary part of mode 0Gravatar Dave Grote 1-1/+1
2019-06-14Updated Python interface, adding WarpInterfaceGravatar Dave Grote 1-2/+2
2019-06-14Another fix for the Python wrapper for RZGravatar Dave Grote 1-3/+3
2019-06-14Update Python wrapper to handle RZ versionGravatar Dave Grote 1-21/+25
2019-05-20Let amrex decide whether it should finalize MPIGravatar Weiqun Zhang 1-1/+1
2019-05-14Fixes for the Python RZ versionGravatar Dave Grote 1-4/+4
2019-04-10Convert box size to boosted frame, when using Python `step` functionGravatar Remi Lehe 2-1/+9
2019-03-01move warpxwrappers. rename ParticleContainer files to MultiParticleContainer ↵Gravatar MaxThevenet 3-1/+568
files
2019-02-19update make file(s) so that code compilesGravatar MaxThevenet 1-0/+10