Age | Commit message (Collapse) | Author | Files | Lines |
|
* ChargeDeposition: Remove Global WarpX Variable
Remove Global WarpX variable use in `ChargeDeposition`.
* CurrentDeposition: Add Missing Include
|
|
* pyAMReX: Build System
* CI Updates (Changed Options)
* Callback modernization (#4)
* refactor callbacks.py
* added binding code in `pyWarpX.cpp` to add or remove keys from the callback dictionary
* minor PR cleanups
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
* Added Python level reference to fetch the multifabs (#3)
* pyAMReX: Build System
* Added Python level reference to Ex_aux
* Now uses the multifab map
* Fix typo
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
* Add initialization and finalize routines (#5)
A basic PICMI input file will now run to completion.
* Regression Tests: WarpX_PYTHON=ON
* Update Imports to nD pyAMReX
* IPO/LTO Control
Although pybind11 relies heavily on IPO/LTO to create low-latency,
small-binary bindings, some compilers will have troubles with that.
Thus, we add a compile-time option to optionally disable it when
needed.
* Fix: Link Legacy WarpXWrappers.cpp
* Wrap WarpX instance and start multi particle container
* Fix test Python_pass_mpi_comm
* Start wrapper for multiparticle container
* Add return policy
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
* Update fields to use MultiFabs directly
Remove EOL white space
Removed old routines accessing MultiFabs
Update to use "node_centered"
* Fix compilation with Python
* Update fields.py to use modified MultiFab tag names
* Remove incorrect, unused code
* Add function to extract the WarpX MultiParticleContainer
* Complete class WarpXParticleContainer
* Wrap functions getNprocs / getMyProc
* restore `install___` callback API - could remove later if we want but should maintain backward compatibility for now
* add `gett_new` and `getistep` functions wrappers; fix typos in `callbacks.py`; avoid error in getting `rho` from `fields.py`
* Update callback call and `getNproc`/`getMyProc` function
* Replace function add_n_particles
* Fix setitem in fields.py for 1d and 2d
* also update `gett_new()` in `_libwarpx.py` in case we want to keep that API
* added binding for `WarpXParIter` - needed to port `libwarpx.depositChargeDensity()` which is an ongoing effort
* Wrap function num_real_comp
* added binding for `TotalNumberOfParticles` and continue progress on enabling 1d MCC test to run
* add `SyncRho()` binding and create helper function in `libwarpx.depositChargeDensity` to manage scope of the particle iter
* Clean up issues in fields.py
* update bindings for `get_particle_structs`
* Fix setitem in fields.py
* switch order of initialization for particle container and particle iterator
* switch deposit_charge loop to C++ code; bind `ApplyInverseVolumeScalingToChargeDensity`
* move `WarpXParticleContainer.cpp` and `MultiParticleContainer.cpp` to new Particles folder
* added binding for `ParticleBoundaryBuffer`
* More fixes for fields.py
* Fix: Backtraces from Python
Add the Python executable name with an absolute path, so backtraces
in AMReX work. See linked AMReX issue for details.
* Cleaning
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Fix: Backtraces from Python Part II
Do not add Python script name - it confuses the AMReX ParmParser to
build its table.
* Fix: CMake Dependencies for Wheel
This fixes a racecondition during `pip_install`: it was possible
that not all dimensions where yet build from pybind before we
start packing them in the wheel for pip install.
* MCC Test: Install Callbacks before Run
Otherwise hangs in aquiring the gil during shutdown.
* addition of `Python/pywarpx/particle_containers.py` and various associated bindings
* Fix: CMake Superbuild w/ Shared AMReX
We MUST build AMReX as a shared (so/dll/dylib) library, otherwise
all the global state in it will cause split-brain situations, where
our Python modules operate on different stacks.
* add `clear_all()` to callbacks in order to remove all callbacks at finalize
* add `-DWarpX_PYTHON=ON` to CI tests that failed to build
* add `get_comp_index` and continue to port particle data bindings
* Add AMReX Module as `libwarpx_so.amr`
Attribute to pass through the already loaded AMReX module with the
matching dimensionality to the simulation.
* Fix for fields accounting for guard cells
* Fix handling of ghost cells in fields
* Update & Test: Particle Boundary Scraping
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* CI: Python Updates
- modernize Python setups
- drop CUDA 11.0 for good and go 11.3+ as documented already
```
Error #3246: Internal Compiler Error (codegen): "there was an error in verifying the lgenfe output!"
```
* CI: Python Updates (chmod)
* Add support for cupy in fields.py
* Add MultiFab reduction routines
* CI: CUDA 11.3 is <= Ubuntu 20.04
* changed `AddNParticles` to take `amrex::Vector` arguments
* setup.py: WarpX_PYTHON=ON
* update various 2d and rz tests with new APIs
* add `-DWarpX_PYTHON_IPO=OFF` to compile string for 2d and 3d Python CI tests to speed up linking
* CI: -DpyAMReX_IPO=OFF
* CI: -DpyAMReX_IPO=OFF
actually adding `=OFF`
* CI: Intel Python
* CI: macOS Python Executable
Ensure we always use the same `python3` executable, as specified
by the `PATH` priority.
* CMake: Python Multi-Config Build
Add support for multi-config generators, especially on Windows.
* __init__.py: Windows DLL Support
Python 3.8+ on Windows: DLL search paths for dependent
shared libraries
Refs.:
- https://github.com/python/cpython/issues/80266
- https://docs.python.org/3.8/library/os.html#os.add_dll_directory
* CI: pywarpx Update
our setup.py cannot install pyamrex yet as a dependency.
* ABLASTR: `ablastr/export.H`
Add a new header to export public globals that are not covered by
`WINDOWS_EXPORT_ALL_SYMBOLS`.
https://stackoverflow.com/questions/54560832/cmake-windows-export-all-symbols-does-not-cover-global-variables/54568678#54568678
* WarpX: EXPORT Globals in `.dll` files
WarpX still uses a lot of globals:
- `static` member variables
- `extern` global variables
These globals cannot be auto-exported with CMake's
`WINDOWS_EXPORT_ALL_SYMBOLS` helper and thus we need to mark them
manually for DLL export (and import) via the new ABLASTR
`ablastr/export.H` helper macros.
This starts to export symbols in the:
- WarpX and particle container classes
- callback hook database map
- ES solver
* CI: pywarpx Clang CXXFLAGS Down
Move CXXFLAGS (`-Werror ...`) down until deps are installed.
* GNUmake: Generate `ablastr/export.H`
* CMake: More Symbol Exports for Windows
* `WarpX-tests.ini`: Simplify Python no-IPO
Also avoids subtle differences in compilation that increase
compile time.
* Update PICMI_inputs_EB_API.py for embedded_boundary_python_API CI test
* Fix Python_magnetostatic_eb_3d
* Update: Python_restart_runtime_components
New Python APIs
* Windows: no dllimport for now
* CI: Skip `PYINSTALLOPTIONS` For Now
* CMake: Dependency Bump Min-Versions
for external packages picked up by `find_package`.
* Fix F and G_fp names in fields.py
* Tests: Disable `Python_pass_mpi_comm`
* Wrappers: Cleanup
* pyWarpX: Include Cleaning
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* fields.py: Fix F and G Wrappers
Correct MultiFab names (w/o components).
* Remove unused in fields.py
* Windows: New Export Headers
- ABLASTR: `ablastr/export.H`
- WarpX: `Utils/export.H`
* removed `WarpInterface.py` since that functionality is now in `particle_containers.py`; removed parts of `WarpXWrappers.cpp` that have been ported to pyamrex
* CMake: Link OBJECT Target PRIVATE
* CMake: Remove OBJECT Target
Simplify and make `app` link `lib` (default: static). Remove OBJECT
target.
* Fix in fields.py for the components index
* Update get_particle_id/cpu
As implemented in pyAMReX with
https://github.com/AMReX-Codes/pyamrex/pull/165
* WarpX: Update for Private Constructor
* Import AMReX Before pyd DLL Call
Importing AMReX will add the `add_dll_directory` to a potentially
shared amrex DLL on Windows.
* Windows CI: Set PATH to amrex_Nd.dll
* CMake: AMReX_INSTALL After Python
In superbuild, Python can modify `AMReX_BUILD_SHARED_LIBS`.
* Clang Win CI: Manually Install requirements
Sporadic error is:
```
...
Installing collected packages: pyparsing, numpy, scipy, periodictable, picmistandard
ERROR: Could not install packages due to an OSError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\\hostedtoolcache\\windows\\Python\\3.11.4\\x64\\Lib\\site-packages\\numpy\\polynomial\\__init__.py'
Consider using the `--user` option or check the permissions.
```
* Hopefully final fixes to fields.py
* Update getProbLo/getProbHi
* Set plasma length strength
Co-authored-by: Remi Lehe <remi.lehe@normalesup.org>
* Fix fields method to remove CodeQL notice
* Update Comments & Some Finalize
* Move: set_plasma_lens_strength
to MPC
---------
Co-authored-by: Roelof Groenewald <40245517+roelof-groenewald@users.noreply.github.com>
Co-authored-by: David Grote <dpgrote@lbl.gov>
Co-authored-by: Remi Lehe <remi.lehe@normalesup.org>
Co-authored-by: Dave Grote <grote1@llnl.gov>
Co-authored-by: Roelof Groenewald <regroenewald@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
|
|
|
|
(#4124)
* add few readability checks to clang-tidy CI test
* address all the issues found with clang-tidy
* fix bug
* fixed bug
* fix residual issue
* fix issue found with clang-tidy
|
|
* Must pass number of ghost cells to call `SumBoundary`
* Apply suggestions from #4093
* Add inline comments on possible performance optimization
|
|
* init some variables at declaration
* make code more readable
* avoid lossy function result cast
* Update Source/Initialization/WarpXInitData.cpp
Co-authored-by: Weiqun Zhang <WeiqunZhang@lbl.gov>
* replace with equality
* Revert "replace with equality"
This reverts commit e3164f9e053d345b153d770ae107a7f68c4bb260.
* Update Source/Diagnostics/ComputeDiagFunctors/ParticleReductionFunctor.cpp
Co-authored-by: Weiqun Zhang <WeiqunZhang@lbl.gov>
---------
Co-authored-by: Weiqun Zhang <WeiqunZhang@lbl.gov>
|
|
|
|
* use GPU compatible kernel in `sumParticleCharge`
* Add omp threading if GPU is not used.
Co-authored-by: Weiqun Zhang <WeiqunZhang@lbl.gov>
---------
Co-authored-by: Weiqun Zhang <WeiqunZhang@lbl.gov>
|
|
* add clang-tidy workflow
* fix missing newline
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* make clang.14.sh executable
* remove non explicitly selected checks
* complete list of dependencies
* fix bug
* specify path of clang-tidy file
* fix bug
* add new check
* remove one check
* add magic numbers check
* removed one check
* keep only one check
* Docs: Conda Dev w/ Boost (#3911)
Add the `boost` package to the conda developer environment.
Used for QED table generation.
* Fix typo in Adastra cluster documentation (#3918)
* add back three checks
* prepare clang-tidy wrapper
* actually use clang-tidy in the script
* test
* fix bug
* actually use clang-tidy
* fixed bug
* fixed bug
* fixed bug
* fixed bug
* remove all checks except the selected 3
* fixed bug
* fixed bug
* fixed bug
* enforce const correctness using clang-tidy
* remove one check
* Fix Concurrency Issue
* BLAS++/LAPACK++ for RZ+PSATD
* Build all 4 WarpX DIMS
* add few echo for test purposes
* try to debug mysterious error
* don't test RZ with clang-tidy
* add back RZ test
* add some const
* fix bug
* check also header files
* remove header filter since it does not work as expected
* fixed bug
* check also WarpX headers
* fix bugs
* continue enforcing const correctness
* continue enforcing const correctness
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* fixed bug
* fix bugs and add new const
* clean .clang-tidy
* make regex more precise according to Weiqun's suggestion
* add more const
* fix bugs
* fix bug
* silence warning on float comparison
* fixed bug
* fixed bugs
* fix bug and add const
* fixed bugs
* fix bug
* fix bug
* fix bug
* fixed bug
* fix bug
|
|
* replace amrex::Abort with WarpX macros
* use amrex::Abort in a GPU kernel
* use amrex::Abort in a GPU kernel
* use amrex::Abort in a GPU kernel
* use amrex::Abort in a GPU kernel
* use amrex::Abort in a GPU kernel
* use amrex::Abort in a GPU kernel
* adding back missing include
* use amrex::Abort in a GPU kernel
* use amrex::Abort in a GPU kernel
* use amrex::Abort in a GPU kernel
* bump precision
|
|
* Use GPU shared memory to accelerate charge deposition (#66)
* WIP Apply charge deposition unconditionally in scratch memory
* Ensure enough threads to touch every value in the array, even if there are no particles
* Zero out the shared memory before accumulating into it
* Replace box-aware accumulation of final results with simple pointers
* Remove unused code
* WIP
* Account for shared memory being allocated per-block, not per grid/kernel
* Wording
* Fall back to non-shared memory for cases where the grid size is too big to fit, for now
* Filter out additions of 0.0 from atomic accumulation
* Restore non-GPU code path
* Pick apart #if stuff to allow better formatting and comprehension
* Fix egregious whitespace failure
* Abort on insufficient shared memory, rather than falling back to global memory
* Fix silly whitespace
* Fix stray tab character
* Sort and bin particles, pass bins to charge deposition
* Contribute on a binned tile basis; memory errors now
* Initialize array to the extent we actually allocated
* Make sure we initialize the vector the tboxes with invalid Box objects
* in 2D, we make sure we use the same particle position to tile box mapping as amrex
* go ahead and skip empty bins in deposit charge
* Quiet warning from HIP
* Avoid signed/unsigned comparison
* Code compiles for CPU ...
* Rename intermediate buffer back to reduce extraneous diff bits
* Remove another extraneous diff bit
* Leave DPC++ out in the cold, since it expects different syntax for GPU-specific code
* Reset failing value of rho that only slightly changes
* Try tiling over ng_rho to capture particles moved into guard cells
* Match box expansion in both call sites - maybe the third is also necessary
* Grow last box by ng_rho as well.
* Match macro syntax
* Use WarpX dimensionality macros instead of AMREX_SPACEDIM
* Add support for 1D case
* Update benchmark checksums for ME tests
* Fix macro used for 1D
* Fix CUDA compilation
* Rename variable to simplify diff
* Clear up assertions now that stuff is working
* Fix comment referring to current in ChargeDeposition.H
* Fix warning about unused variable after assertion change
* add runtime option
* Convert flag variable from int to bool
* Switch AMREX_SPACEDIM conditions to use WARPX_DIM_* macros
* Once again, leave DPC++ out in the cold, as it doesn't support the same syntax as CUDA and HIP
* Grow charge deposition boxes by the necessary amount
* Mark a variable only used for assertions to suppress warnings
* Fix compilation error for 1D
* Re-add missing 1D support
* Fix other bits of codfe specific to CUDA and HIP, and not DPC++
* restore missing accumulation of thread local charge into main fab.
* reset benchmark for background_mcc because randomization makes it very sensitive
* reset benchmark for Langmuir_multi_psatd_div_cleaning because diffing field is a numerical artifact
* Calm nvcc about function missing a return
* reset benchmark for background_mcc because it's randomized and numerically chaotic
* reset benchmark for LaserAccelerationBoost because of numerical shift in momentum from charge deposition order
* Remove extra nesting level
* Skip sorting the particles and just access them according to the binned permutation
* Load permutation pointer outside GPU kernel
* Revert background_mcc benchmark values
* Loosen overly-strict checksum tolerances in single-precision tests, rather than changing target values
* Revert embedded_circle
* Convert AMREX_ALWAYS_ASSERT to AMREX_ASSERT for particle bounds checking
* Match assertion macro change from #2939
* Fix indentation
* Disable shared memory charge deposition by default
* Ignore variable only used in assertion
* Add documentation of added input parameter warpx.do_shared_mem_charge_deposition
* Add comments as suggested by Remi
* Docs: Fix syntax issues in parameters.rst
* Convert error check to unconditional assertion as requested
* Make some arguments const to ease refactoring
* Finished DepositCurrent function
Ready to call the function from CurrentDeposition.H, but currently there
is only a dummy function there
* AMReX: Weekly Update
* Reset: `reduced_diags_single_precision`
* Reset: `background_mcc_dp_psp`
* Merged with develop. runs on mpi no gpu
* All funcs implemented. Compiles with bugs
* Fixed typo in CurrentDeposition
* Working on 2D version. there is bug
jz doesn't line up correctly
* Fixed 2d bug
* Removed some debugging lines
* Cleaning up comments
* Added an input param for threads per block
* Added a variable NS and START/STOP
* Added a region for kernel
* Not working on tilesize > 1 1 1
* Implemented Andrews new algo for max tilesize
* Reduce the amount of shared memory needed by re-using the same buffer for all three components
* Made default tilesize sort_bin_size LAST V1 COMMIT
* bugfix - don't add 0.0 cells back to global memory.
* Need to take abs before checking > 0.0
* Ran Whitespace Fixer As instructed
* Updated Comments
* change default tpb for current deposition to 128
* clean up comments
* quiet compiler warning
* remove unused variables
* refactor shared current depo code
* forgot to check in file
* fix cpu compilation
* fix uninitialized
* fix typo
* fix bad merge
* Fixed default tilesize bug
Previously had defualted shared_tilesize to sort_bin_size. This was
overwritting the shared_tilesize. Some scanning shows that sort_bin_size
isn't a very good default for tilesize anyways, so the new default is 1
1 1.
* changed shared tilesize default to 6 6 8
Decision based on scan over tilesizes and ppc by @atmyers and @kaplannp
* Put in switches for default tilesize 288 3d 144 2d
Tested correctness in 2 and 3 d
* Simplified parcticle contribution section
In accordance to @AlexanderSinn feedback, and tested RZ, 2D, 3D
* Cleanup tbox construction and depos->(depos+1)/2
in accordance to changes proposed by @AlexanderSinn. Tested on 3D 2D and
RZ
* Restored shared to previous version from 6acab48
Changes from before broke single precision
* Found new spot to benefit from (depos_order+1)/2
* Cleaned up sloppy comments
* Throw error on shared if no hip or cuda
This commit makes the assumption that if you use shared, you must be
using HIP or CUDA. This allows us to remove a bunch of macros that tried
to quietly revert to non shared if you didn't use HIP/CUDA, and we now
throw error if you try to run without HIP/CUDA
* More cleanup to compile and test
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* add cost to GPU clock conditional
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
* Update Source/Particles/Deposition/CurrentDeposition.H
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
* add cost to GPU clock conditional
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
* whitespace fix
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
* Updated tilesize docs, and change 1d/rz default
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Added docs for tpb
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Changed grow (depos_order+1)/2->depos_order
Turns out, above fails for shape 2
* Change default to non share, and add error check
throws errors if you try vay or esirkepov with shared, and defaults to
not using shared for all algos.
* update to use ablaster kernel timer
Compiles and runs, but at step 80 diverges from dev
---------
Co-authored-by: Phil Miller <unmobile+gh@gmail.com>
Co-authored-by: Phil Miller <phil@intensecomputing.com>
Co-authored-by: Tools <warpx@lbl.gov>
Co-authored-by: kaplannp <kaplannp@gmail.com>
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
Co-authored-by: kaplannp <56896283+kaplannp@users.noreply.github.com>
Co-authored-by: kaplannp <kaplannp@whitman.edu>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
|
|
* AMReX: Weekly Update
* Particles: Update WarpX APIs
|
|
* Fix the reflection of velocities in RZ
* Add warpx_reflect_all_velocities to the PICMI interface
|
|
* refactored the charge deposition fix to be performed with the field data rather than individual particles
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* also correct current density at PEC boundary
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* corrections pointed out during code review
* fix build fails due to unused variables
* fix issue with GPU builds
* actually apply rho boundary correction in EM case
* first round of CI fixes
* second round of CI fixes
* added description of deposition logic with PEC boundaries to documentation
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* third round of CI fixing
* move J and rho boundary handling to after `SyncRho` and `SyncCurrent` calls
* properly order the application of boundary conditions on rho, for electrostatic simulations
* fourth round of CI fixing
* don't apply J field boundary in `MultiParticleContainer::DepositCurrent`
* apply changes requested during code review
* Apply suggestions from code review
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
* Loosen tolerance on failing CI test
* Removed unused variable
* deal with fine versus coarse patches
* move the `ApplyRhofieldBoundary` call to after `SumBoundary`
* use a uniform calculation for the number of cells a given index is from the boundary
* remove unused variable
* limit number of ghost cells updated during PEC BC application
* the number of ghost cells to consider depends on whether the field is nodal or not
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
|
|
* Fix all the modernize-loop-convert issues found with clang-tidy
* Fix bug
* Implement @EZoni's suggestions
|
|
* Fix add_particles to account for theta attribute with RZ
* Add assertions in the number of attributes specified
|
|
* Introduce `warpx.grid_type` parameter
* Replace `or` with `||`
* Update examples with new user input syntax
* Fix `if` condition
* Improve error message
* Fix `if` condition
* Fix bugs
* Fix warning
* Fix RZ
* Debugging
* Fix RZ
* Fix bug
* Clean up
* More changes:
- set default algo parameters with hybrid grid
- all hybrid input parameters under warpx name
* Set default field gathering algo for hybrid grids
* Update documentation
|
|
* Fix comments for documentation
* More fixes to comments for documentation
* Fixes in the doc files
* Fix typo in parameters.rst
|
|
* Renamed Vay currents from j to D
* [pre-commit.ci] auto fixes from pre-commit.com hooks
|
|
* ABLASTR: Coarsen Functions
Move coarsen functions to ABLASTR.
Rename by property of the coarsening function.
* Remove unused imports
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
|
|
* Add "None" as an option for the Maxwell solver
* fixed some of the reasons for failing CI tests
* no longer pass `do_electrostatic` to `GuardCellManager`
* renamed `MaxwellSolverAlgo` to `ElectromagneticSolverAlgo`
* rename `do_electrostatic` to `electrostatic_solver_id`
* rename `maxwell_solver_id` to `electromagnetic_solver_id`
* changes requested during PR review
* remove `do_no_deposit` from tests without field evolution
* Fix doc-string in `GuardCellManager.H`
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
|
|
* Rearrange in preparation for lifting do_not_deposit higher in the call stack
* Make do_not_deposit public, so callers can test on it
* Make all DepositCharge call sites respect WarpXParticleContainer::do_not_deposit
* Drop check for do_not_deposit in DepositCharge
* Fix comment to accurately describe np_to_depose
* Fix logic to account for other logic in AddSpaceChargeField
* Match zero charge density array to filled array in RZ PSATD case
* Structure control flow per @dpgrote's preference
* Reword comment for clarity
|
|
* Initialize particle runtime attributes before calling AddNParticles
* Avoid Multiplication result converted to larger type warning
* Directly initialize runtime attributes inside AddNParticles
* Update doxygen comment
|
|
* Starting with the pusher, consistently use ParticleReal
* Update benchmarks for background_mcc_dp_psp
|
|
* ABLASTR: Compute Phi
Expose the computation of the electro-static potential for
relativistic beams via ABLASTR for ImpactX.
* Add `ablastr::fields::computePhi`
Co-authored-by: Remi Lehe <remi.lehe@normalesup.org>
* Cleanup: Old Comments
Co-authored-by: Remi Lehe <remi.lehe@normalesup.org>
|
|
* Move: WarpXCommUtils to ABLASTR
* Update Usage Locations
* Refactor: `WarpX::do_single_precision_comms`
Do not use a global from WarpX in ABLASTR routines.
|
|
* Add new class `NamedComponentParticleContainer`
* Update docstrings
* Fix compilation
* Address review comments
* Update Doxygen
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
|
|
* fix miscellaneous issues found with clang tidy
* fix miscellaneous issues found with clang tidy
* moved default constructors and destructors to header
* fix issue
* Use default again
|
|
* Current Deposition Interfaces: Always Pass `dt` & `relative_time`
* Fix CI Failures
* Fix 1D/RZ Warnings
* Fix RZ Bug
* Fix Bugs
* Minimize Changes, Fix Roundoff Errors
* Cleaning
* Remove dt From doDepositionShapeN
* Cleaning Esirkepov Deposition
* Cleaning Vay Deposition
* Fix Roundoff Errors
* Fix Roundoff Errors (continued)
* Fix Bug (RZ)
|
|
* Cleaned up handling of v_galilean
* Missed one
* Update Source/WarpX.cpp
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
* Update Source/WarpX.H
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
* Update Source/WarpX.cpp
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
* Update Source/Particles/PhotonParticleContainer.cpp
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
* Update Source/FieldSolver/WarpXPushFieldsEM.cpp
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
* Update Source/Diagnostics/ReducedDiags/FieldProbe.cpp
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
* Update Source/Particles/WarpXParticleContainer.cpp
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
* Update Source/Particles/WarpXParticleContainer.cpp
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
* Update Source/Diagnostics/ReducedDiags/ParticleExtrema.cpp
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
* Update Source/Particles/PhysicalParticleContainer.cpp
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
* Update Source/Particles/PhysicalParticleContainer.cpp
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
* Update Source/Utils/WarpXUtil.cpp
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
* Update Source/Particles/RigidInjectedParticleContainer.cpp
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
* Update Source/Particles/ElementaryProcess/QEDPhotonEmission.cpp
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
* Update Source/Particles/ElementaryProcess/QEDPairGeneration.cpp
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
* Update Source/Particles/ElementaryProcess/Ionization.cpp
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
* Update Source/FieldSolver/WarpXPushFieldsEM.cpp
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
* More cleanup
* Reset Galilean Benchmarks
* For mirrors, now include the Galilean shift
* Removed the flag since it is true for all calls
* Fix Source/FieldSolver/SpectralSolver/SpectralFieldDataRZ.cpp
* Update Source/WarpX.H
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
Co-authored-by: Edoardo Zoni <ezoni@lbl.gov>
|
|
* initial work to add msg formatter
* wip
* replace AMREX_ALWAYS_ASSERT_WITH_MESSAGE with WarpX equivalent
|
|
Rename to follow the naming conventions we use for I/O for scalar
and vector/tensor attributes.
https://warpx.readthedocs.io/en/latest/developers/particles.html#particle-attributes
|
|
|
|
Simplified and re-ordered interface for
`ablastr::particles::deposit_charge`.
|
|
* ABLASTR: particle weights `const`
We can declare the particle weights `const` because we don't
change values in them during deposition.
* DepositCharge: `const`-ify usage
|
|
* Fixes removing implicit double to float conversions
* Minor fix in Evolve
* Removed comments
* Reverted amrex::second to original version.
This change will be made in a separate PR
* More fixes
* Performance: pow2 & pow3
* One more pow2
* Cleaning: auto where types are repetitive
std::pow(float, int): see comments and
https://stackoverflow.com/a/5627278/2719194
|
|
|
|
* Override the default tiling option for particles *before* WarpX is initialized.
* bump AMReX version to see if tests pass.
* fix typo
* style
* use queryAdd
* namespace
|
|
* AMREX_ALWAYS_ASSERT -> AMREX_ASSERT for deposition bounds checks
* fix unused
* Apply suggestions from code review
* Apply suggestions from code review
* Simpler ignore + comment
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
|
|
* ABLASTR: Cleanups
- lowercase dir
- nested directories
- nested namespaces
- functions: lowercase and snake_case
- templates: prefix with `T_`
- profiler: doc strings
* Add: Particle Moments
Co-authored-by: Remi Lehe <rlehe@lbl.gov>
Co-authored-by: Remi Lehe <rlehe@lbl.gov>
|
|
* Refactor DepositCharge so it can be called from ImpactX.
* change thread_num
* Fix namespace
* remove all static WarpX:: members and methods from DepositChargeDoIt.
* fix unused
* Don't access ref_ratio unless lev != depos_lev
* more unused
* remove function to its own file / namespace
* don't need a CMakeLists.txt for this
* lower case namespace, rename file
* Refactor: Profiler Wrapper
Explicit control for synchronization instead of global state.
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
|
|
* AMREX_SPACEDIM : Boundary Conditions
* AMREX_SPACEDIM : Parallelization
* Fix compilation
* AMREX_SPACEDIM : Initialization
* Fix Typo
* space
* AMREX_SPACEDIM : Particles
|
|
the build's dimensionality (#2622)
* Define WARPX_ZINDEX to denote the index for the Z dimension regardless of the build's dimensionality
* Add WARPX_ZINDEX macro definition to Makefile as well
|
|
|
|
* Build System: Add 1D Geometry
* test PR
* test PR
* 1D cartesian yee algorithm
* fixed typo
* Fixes for PML
* 1D support related multiple changes
* Fix compilation
* change 1D to 1D_Z
* 1D Field Gather and typo fix
* 1D Charge Deposition
* Particle Pusher
* multiple changes related to 1D
* 1D diagnostics and initialization
* PlasmaInjector and PEC fixes for 1D
* clean-up delete diags file
* mobility 1D laser particle and bilinear filter
* deleted diags files
* update laser particle weight formula
* delete diags files
* Azure: Add 1D Cartesian Runner
* 1D fixes for FieldProbe
* Update Docs/source/developers/dimensionality.rst
Co-authored-by: Remi Lehe <remi.lehe@normalesup.org>
* 1d laser injection and langmuir test input files
* 1d tests
* clean up : delete print statements
* analyse simulation result for laser injection and Langmuir tests
* EOL
* delete input files for which there are no automated tests
* delete input files for which there are no automated tests
* add ignore_unused to remove warnings
* remove space
* Fix compilation issues
* fix error : macro name must be an identifier
* Small bug fix
* cleanup Python script for analysis
* bug fix
* bug fix
* Update ParticleProbe: Check 1D in-domain
* Update Source/Make.WarpX
* Update .azure-pipelines.yml
* Add USE_OPENPMD=FALSE to .azure-pipeline.yml
* resolve conflict
* resolve conflict
* fix typo
* Correct out-of-bound access
* Fix Particle BC in WarpXParticleContainer and correct path to checksumAPI in python analysis scripts
* EOL
* Fix bug : accessing out of bound index of cell in 1D
* remove 1d test for cartesian3d
* Fix CI check
* Slight style change
* Address review comments
* Fix GPU compilation Filter.cpp
* Fix CI
* Fix Indentation
* Address review comments
* More consistent ifdef for dimension bigger than 1
* Update Examples/Tests/Langmuir/analysis_langmuir_multi_1d.py
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
* Update GNUmakefile
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
* Update Regression/prepare_file_ci.py
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
* Update Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
* Update Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianNodalAlgorithm.H
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
* Update Source/Filter/Filter.cpp
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
* Update Source/Filter/Filter.cpp
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
* Update Source/Filter/Filter.cpp
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
* Update Source/Filter/Filter.cpp
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
* Update Source/Initialization/PlasmaInjector.cpp
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
* Update Source/Initialization/PlasmaInjector.cpp
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
* add comment inline to explain twice push_back
* Add amrex::Abort for NCIGodfreyFilter
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
Co-authored-by: Prabhat Kumar <prabhatkumar@kraken.dhcp.lbl.gov>
Co-authored-by: Remi Lehe <remi.lehe@normalesup.org>
Co-authored-by: Remi Lehe <rlehe@lbl.gov>
|
|
* Fix Doxygen: Particles
Fix doxygen errors & warnings.
* Apply suggestions from code review
Co-authored-by: Luca Fedeli <luca.fedeli@for.unipi.it>
Co-authored-by: Neïl Zaim <49716072+NeilZaim@users.noreply.github.com>
* Apply suggestions from code review
* Document ForwardIterator
* Fix tparam and comma
Co-authored-by: Neïl Zaim <49716072+NeilZaim@users.noreply.github.com>
Co-authored-by: Luca Fedeli <luca.fedeli@for.unipi.it>
Co-authored-by: Neïl Zaim <49716072+NeilZaim@users.noreply.github.com>
|
|
* option to use single precision guard cell exhanges
* add missing files
* fix namespace issue
* change precision of comms to float
* ParmParse the single_precision_comms flag
* set back to real
* test
* make sure dst is filled
* nGrow -> nGrowVect
* restore float
* don't override valid cells
* single precision mesh
* whitespace
* wrap SumBoundary
* Wrap additional uses of FillBoundary.
* catch missing copies of ParallelCopy
* missing OverrideSyncs
* add wrapper for iMultifab
* fix typo
* moar typos
* typo
* strip single_precision_mesh option
* fix original copy
* update fusible syntax
Co-authored-by: Weiqun Zhang <WeiqunZhang@lbl.gov>
* Fix: Single Precision Builds
Should not copy around data for `do_single_precision_comms`
* Docs: warpx.do_single_precision_comms
* initialize this tmp multifab to 0.0
* fix tiny profile label
* remove orig copies, they are only correct for FillBoundary
* loosen tolerance for space charge tests for single precision
* missing some setVal
* another missing setVal
* missing setVal
* add wrapper for new version of sumboundary
* add explicit cast to silence compiler warning
* add a test for single precision comms
* revert change to test precision
* add benchmark for single precision comms test
* restore tolerance I removed by mistake
* tolerance
* copyright headers
* drop tolerance for single precision tests in default analysis script
* missing python module
* bump tol again
* fix bad merge
* Apply suggestions from code review
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
Co-authored-by: Remi Lehe <remi.lehe@normalesup.org>
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
Co-authored-by: Weiqun Zhang <WeiqunZhang@lbl.gov>
|
|
* added tunable particle reflection from absorbing domain boundaries
* extended picmi.py to allow setting boundary reflection coefficients and added a CI test for the reflection implementation
* allow R(E) to be specified, except for embedded boundaries
* changed approach for particle reflection, now the ParticleBoundaries object will hold the reflection coefficient; reflection from EBs not implemented
* added functionality to reflect from EB; still needs to be tested for accuracy
* added support for energy dependent reflection models for domain boundaries
* fixed at least one issue causing CI fails - building reflection model parsers for not physical particle containers
* switched reflection coefficients to be functions of the velocity component perpendicular to the boundary rather than energy
* reverted initial work on reflecting from EBs
* changed naming convention for new CI test for particle reflection
* switched useMPI back to 1 in test
* breaking changes while trying to sort out GPU issue
* fixed issue with CUDA compilation - hopefully :)
* various code improvements from PR review suggestions
* fix of major issues
* no need to parse the reflection models at every step
* skip particles that are already flagged for removal in ApplyBoundaryConditions
|
|
|
|
* Moved some routines to .cpp file
* Moved more stuff to a header file
|