aboutsummaryrefslogtreecommitdiff
path: root/Source/Particles/Collision/BinaryCollision (follow)
AgeCommit message (Collapse)AuthorFilesLines
2023-09-20Prevent NaNs in Coulomb collision module (#4304)Gravatar Remi Lehe 1-167/+176
* Prevent NaNs in collisions between particles * Avoid another division by 0 t# Please enter the commit message for your changes. Lines starting
2023-09-08Clang tidy CI test: add selected google-* checks (#4267)Gravatar Luca Fedeli 2-0/+4
* clang-tidy CI test: add selected google- checks * address issues found with clang-tidy * fixed bugs * fix bugs
2023-08-29Clang tidy CI test: add more readability checks to clang tidy CI test (#4146)Gravatar Luca Fedeli 3-9/+9
* add more readability checks to clang-tidy CI test * reformat check list * starting to address issues found with clang-tidy£ * addressing issues * remove check * address issues * address all issues * address issue found with github code scanning
2023-08-12Transition to pyAMReX (#3474)Gravatar Axel Huebl 1-1/+1
* 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>
2023-08-01Clang tidy CI test: add several readability checks to clang tidy CI test ↵Gravatar Luca Fedeli 1-4/+1
(#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
2023-07-31Clang tidy CI test: add some modernize checks to clang-tidy CI test (#4133)Gravatar Luca Fedeli 1-2/+2
* Clang Tidy: add several modernize checks * eliminate file included in commit by mistake * fix bug
2023-07-26Initialize variables at declaration if it improves readability (#4117)Gravatar Luca Fedeli 2-12/+3
* 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>
2023-06-13Enforce const correctness using clang-tidy CI test (#3921)Gravatar Luca Fedeli 9-20/+20
* 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
2023-06-12Replace amrex::Abort with WARPX_ABORT_WITH_MESSAGE (#3965)Gravatar Luca Fedeli 4-7/+9
* 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
2023-06-02revert #3928 calculation of b0 in binary collisions and add comment (#3961)Gravatar Severin Diederichs 1-3/+9
* revert b0 calculation and add comment * Add More References
2023-05-22Multi-Dim Buildsystem Support (#3933)Gravatar Axel Huebl 1-5/+8
* Multi-Dim Buildsystem Support * Docs
2023-05-16Fix calculation of `b0` in binary collisions (#3928)Gravatar Severin Diederichs 1-0/+1
2023-04-20Use amrex::Math::powi<N>(x) in WarpX (#3846)Gravatar Luca Fedeli 3-15/+19
* use_powi * fix bug * fix bug * fix bug * fix bug
2023-04-11DD fusion anneutronic branch (#3789)Gravatar Johan Carlsson 1-2/+4
* Allow DD fusion products to be tritium + protium For deuterium-deuterium (DD) fusion there are two branches: | He-3 + n (neutronic branch, 50% probability) d + d -> < | t + p (anneutronic branch, 50% probability) Currently in Warpx anneutronic DD fusion only works when the species of the fusion products are tritium (or hydrogen3) and proton. If protium (or hydrogen1) are specified instead of proton, the simulation aborts with the following error message: amrex::Abort::0::ERROR: Product species of proton-boron fusion must be of type helium3 and neutron, or tritium and proton !!! The proposed diff allows anneutronic DD fusion to produce either protium / hydrogen1 or proton. It also corrects the error message. * Shows that DD fusion cannot produce protium Input deck that demonstrates how anneutronic DD fusion in the development branch cannot produce protium, only proton. Some options of the anneutronic DD branch: 1) tritium + proton (currently the only option) 2) tritium + protium (added in this branch) 3) triton + proton (another alternative) Option 1) seems inconsistent (why include the electron mass in one fusion product species but not in the other?). Option 2) is enabled by the diff in this branch. Option 3) would require adding a triton species (and deuteron and helion species for consistency). * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Remove test file --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Remi Lehe <remi.lehe@normalesup.org>
2023-03-23Fix typos and comments from #3708 (#3770)Gravatar Phil Miller 1-7/+8
2023-03-16Coulomb collisions: fix roundoff issues w/ gamma close to 1 (#3708)Gravatar David Grote 1-2/+5
2023-01-12Fix Doxygen Warnings (#3616)Gravatar Axel Huebl 1-1/+3
2023-01-04Fix bug for intra-species Coulomb collisions (#3526)Gravatar Yinjian Zhao 2-3/+15
* Correct density * update * Add test * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update Regression/WarpX-tests.ini * update * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Apply suggestions from code review * update * Fix shadowing of variables * Simplify code * Correct density * Update checksum * Update exponential fit * Remove unused global variable * Add comment on exponential fit * Cleaning * Cleaning * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Remi Lehe <remi.lehe@normalesup.org> Co-authored-by: Edoardo Zoni <ezoni@lbl.gov> Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
2022-12-19Clean up documentation (#3542)Gravatar David Grote 2-1/+5
* Fix comments for documentation * More fixes to comments for documentation * Fixes in the doc files * Fix typo in parameters.rst
2022-10-31Implement D+D and D+He fusion (#3257)Gravatar Remi Lehe 8-111/+215
* Implement D+D -> n+He3 fusion * Fix logic for fusion reaction * Check products in a different place * Correct compilation error * Implement D+D -> T+p cross-section * Update example * Use clearer naming convention for fusion types * Revert changes to example input script * Add analysis script * Progress on tests * Use 2 species in test * Correct momentum of colliding species * Update test * Update test * Generalize species names in fusion tests * Update benchmarks * Correct typo * Updated scripts * Update script so that it works for D+T and D+D * Update CI * Add benchmark file * Correct typo * Fix compilation on GPU * Update RZ CI test * Implement Deuterium-Helium reaction * Apply suggestions from code review Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
2022-10-10Partial refactoring of the utils directory (#3404)Gravatar Luca Fedeli 3-9/+11
* initial work to clean WarpX Utils * remove AMRCore from Ionization tables * progress * refactoring of a part of the utils directory * fix bug * fixed bug * fixed bug * remove debug line accidentally slipped into the code * remove debug line accidentally slipped into the code * remove debug line accidentally slipped into the code * cleaning * fixed bug
2022-09-21Fix compilation of RZ version on GPU (#3418)Gravatar Remi Lehe 1-3/+0
2022-09-20Correct and test fusion module in RZ geometry (#3255)Gravatar Remi Lehe 1-0/+31
* Add particle rotation in NuclearFusionFunc.H * Minor * indent * initial work * fixed bugs and added species * update documentation * delete unused file * Add properties for neutron, hydrogen isotopes, helium isotopes * Update code to be more consistent * Correct typo * Parse deuterium-tritium fusion * Start putting in place the files for deuterium-tritium * Update documentation * Prepare structures for deuterium tritium * Fix typo * Fix compilation * Add neutron * Add correct formula for the cross-section * Correct compilation error * Fix nuclear fusion * Reset benchmarks * Prepare creation functor for 2-product fusion * First implementation of momentum initialization * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Use utility function for fusion * Minor modification of variable names * Fix GPU compilation * Fix single precision compilation * Update types * Use util function in P-B fusion * Correct compilation errors * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Correct errors * Update values of mass and charge * Correct compilation error * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Correct compilation error * Correct compilation error * Correct compilation error * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Reset benchmark * Use helium particle in proton-boron, to avoid resetting benchmark * Fixed proton-boron test * Revert "Fixed proton-boron test" This reverts commit 73c8d9d0be8417d5cd08a23daeebbc322c984808. * Incorporate Neil's recommendations * Reset benchmarks * Correct compilation errors * Add new deuterium tritium automated test * Correct formula of cross-section * Correct cross-section * Improve analysis script * Add test of energy conservation * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Add test of conservation of momentum * Progress in analysis script * Fix error in the initial energy of the deuterium particles * Add check of isotropy * Clean up the test script * Rewrite p_sq formula in a way to avoids machine-precision negative numbers * Add checksum * Clean up code * Add test for fusion in RZ geometry * Update code to take into account actual timestep * Update RZ test * Update RZ test * Increase number of particles * Impart radial memory on DT particles * Correct RZ momenta * Remove unused file * Update test * Fix definition of theta * Add new test * Add checksum * Update test * Update tests * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Fix Python analysis script * Remove CPU and ID from new benchmark Co-authored-by: Yinjian Zhao <yinjianzhao@lbl.gov> Co-authored-by: Luca Fedeli <luca.fedeli@cea.fr> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2022-07-27ParticleReal for external fields and collisions (#3262)Gravatar David Grote 6-134/+135
* Use ParticleReal consistently in GetExternalFields * Use ParticleReal in Collision code * Use ParticleReal in Algorithms/KineticEnergy.H * Fix _prt in Algorithms/KineticEnergy.H
2022-07-19D-T fusion (#3153)Gravatar Remi Lehe 9-6/+236
* initial work * fixed bugs and added species * update documentation * delete unused file * Add properties for neutron, hydrogen isotopes, helium isotopes * Update code to be more consistent * Correct typo * Parse deuterium-tritium fusion * Start putting in place the files for deuterium-tritium * Update documentation * Prepare structures for deuterium tritium * Fix typo * Fix compilation * Add neutron * Add correct formula for the cross-section * Correct compilation error * Fix nuclear fusion * Reset benchmarks * Prepare creation functor for 2-product fusion * First implementation of momentum initialization * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Use utility function for fusion * Minor modification of variable names * Fix GPU compilation * Fix single precision compilation * Update types * Use util function in P-B fusion * Correct compilation errors * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Correct errors * Update values of mass and charge * Correct compilation error * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Correct compilation error * Correct compilation error * Correct compilation error * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Reset benchmark * Use helium particle in proton-boron, to avoid resetting benchmark * Fixed proton-boron test * Revert "Fixed proton-boron test" This reverts commit 73c8d9d0be8417d5cd08a23daeebbc322c984808. * Incorporate Neil's recommendations * Reset benchmarks * Correct compilation errors * Add new deuterium tritium automated test * Correct formula of cross-section * Correct cross-section * Improve analysis script * Add test of energy conservation * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Add test of conservation of momentum * Progress in analysis script * Fix error in the initial energy of the deuterium particles * Add check of isotropy * Clean up the test script * Rewrite p_sq formula in a way to avoids machine-precision negative numbers * Add checksum * Clean up code * Apply suggestions from code review * Update PR according to comments * Update benchmark * Address additional comments * Numerical Literals Co-authored-by: Luca Fedeli <luca.fedeli@cea.fr> Co-authored-by: Neïl Zaim <49716072+NeilZaim@users.noreply.github.com>
2022-07-13Refactor code in fusion module to avoid machine-precision issues (#3229)Gravatar Remi Lehe 2-12/+14
* Refactor code in fusion module to avoid machine-precision issues * Update formula
2022-07-05Add new entries in Physical Species properties (+ refactoring of the ↵Gravatar Luca Fedeli 3-4/+4
SpeciesPhysicalProperties file) (#3090) * initial work * fixed bugs and added species * update documentation * delete unused file * Add neutron * Fix nuclear fusion * Reset benchmarks * Update values of mass and charge * Correct compilation error * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci Co-authored-by: Remi Lehe <remi.lehe@normalesup.org> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2022-06-16Extract function for two-particle fusion reaction (#3175)Gravatar Remi Lehe 2-100/+192
* Extract function for fusion reaction between 2 particles * Extract function for two-particle momenta in fusion reaction * Apply suggestions from code review Co-authored-by: Neïl Zaim <49716072+NeilZaim@users.noreply.github.com> * Remove obsolete comment * Update Source/Particles/Collision/BinaryCollision/NuclearFusion/TwoProductFusionUtil.H Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> Co-authored-by: Neïl Zaim <49716072+NeilZaim@users.noreply.github.com> Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
2022-05-24Specify particle precision (#3065)Gravatar Kevin Z. Zhu 3-9/+10
* Add precision to printed PIC parameters * Added WarpX_PARTICLE_PRECISION as a build option * Update types to ParticleReal * Updated libwarpx to inject particles with correct ParticleReal type * Fix syntax error * Add logic to avoid duplicate definitions * Use correct ParticleReal type in add_particles * Cleaned up code, addressed comments * Update Python/pywarpx/_libwarpx.py Co-authored-by: Peter Scherpelz <31747262+peterscherpelz@users.noreply.github.com> * Removed redundant functions, fixed some typing * Modified template functions * Cast d_w to Real * Fixed failing tests * Cast types to be consistent * removed in-tree-build from pip command * Added GPU device macros to PDim3 methods * rerun tests * Removed unecessary casting, update calls to use PDim3 instead of XDim3 * Refactored comments * Added mcc fields double precision, particles single precision test * Updated casting and formatting * Removed cast, updated declaration Co-authored-by: Peter Scherpelz <peter.scherpelz@modernelectron.com> Co-authored-by: Peter Scherpelz <31747262+peterscherpelz@users.noreply.github.com>
2022-05-04Nuclear fusion: remove underflow warning in single precision (#3058)Gravatar Neïl Zaim 1-14/+8
* Nuclear fusion: remove underflow warning in single precision * Explicitly set underflowing constexprs as double * Also set alpha and beryllium masses as doubles
2022-03-10Clean up the use of ndt for collisions (#2944)Gravatar David Grote 1-10/+6
* Clean up the use of ndt for collisions * Update BackgroundStopping to match changes
2022-03-08Make error and info messages visually uniform (#2939)Gravatar Luca Fedeli 1-2/+3
* initial work to add msg formatter * wip * replace AMREX_ALWAYS_ASSERT_WITH_MESSAGE with WarpX equivalent
2022-02-07Binary Collisions: Const & Restrict (#2829)Gravatar Axel Huebl 4-5/+9
`const`-ifying and `restrict`-ing pointers to index arrays for binary collision routines. This should allow the compiler to do more optimizations.
2022-02-05Fixes removing implicit double to float conversions (#2687)Gravatar David Grote 3-14/+20
* 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
2022-01-04Add Coulomb collision and nuclear fusion subfolders (#2389)Gravatar Neïl Zaim 10-5/+6
2021-12-16Doxygen: Fix Diags, FieldSolver, Parallelization & Particles (#2662)Gravatar Axel Huebl 2-7/+8
* Doxygen: Fix Diags, FieldSolver, Parallelization & Particles * Apply suggestions: Remi Co-authored-by: Remi Lehe <remi.lehe@normalesup.org> * Apply suggestions: Roelof Co-authored-by: Roelof Groenewald <40245517+roelof-groenewald@users.noreply.github.com> * Apply suggestions: Luca Co-authored-by: Luca Fedeli <luca.fedeli@for.unipi.it> * Apply suggestions: Edoardo Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> * Apply suggestions: Andrew * Apply suggestions: Edoardo Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> * Apply suggestions: Neil Co-authored-by: Neïl Zaim <49716072+NeilZaim@users.noreply.github.com> * Apply suggestions: Roelof * Apply suggestions: Weiqun Co-authored-by: Weiqun Zhang <WeiqunZhang@lbl.gov> Co-authored-by: Remi Lehe <remi.lehe@normalesup.org> Co-authored-by: Roelof Groenewald <40245517+roelof-groenewald@users.noreply.github.com> Co-authored-by: Luca Fedeli <luca.fedeli@for.unipi.it> Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> Co-authored-by: Neïl Zaim <49716072+NeilZaim@users.noreply.github.com> Co-authored-by: Weiqun Zhang <WeiqunZhang@lbl.gov>
2021-12-13Add high energy asymptotic fit for Proton-Boron total cross section (#2408)Gravatar Neïl Zaim 1-26/+72
* Add high energy asymptotic fit for Proton Boron total cross section * Write keV and MeV instead of kev and mev * Add @return doxystrings
2021-12-06AMREX_SPACEDIM : Initialization and Particles (#2628)Gravatar Prabhat Kumar 1-2/+2
* AMREX_SPACEDIM : Boundary Conditions * AMREX_SPACEDIM : Parallelization * Fix compilation * AMREX_SPACEDIM : Initialization * Fix Typo * space * AMREX_SPACEDIM : Particles
2021-12-06Correct collision algorithm in RZ. (#2510)Gravatar Yinjian Zhao 2-4/+35
* Add rotation. * Fix a small bug * Add automated test. * rename inputs_rz * Add json * minor * add comment. * Apply suggestions from code review Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja> * Update analysis_collision_rz.py * Fix missing import * Change tolerance. * Add warnings * Apply suggestions from code review * Move assert. * fix end-of-Line whitespaces. Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja> Co-authored-by: Remi Lehe <remi.lehe@normalesup.org>
2021-11-22Proton-boron fusion: compute initial momentum of produced alphas (#2330)Gravatar Neïl Zaim 6-31/+232
* Proton-boron fusion: initialize alphas momentum assuming isotropy * Remove constexpr underflow in single precision * Update Source/Particles/Collision/BinaryCollision/ProtonBoronFusionInitializeMomentum.H Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
2021-11-191D3V Cartesian Support (#2307)Gravatar Prabhat Kumar 1-2/+6
* 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>
2021-11-08Install pre-commit (#2532)Gravatar Axel Huebl 1-1/+0
* Add pre-commit Add basis for automated pre-commit checks. Install locally via: ```bash python3 -m pip install -U pre-commit pre-commit install ``` See: https://pre-commit.com * Cleanup: Whitespaces * Cleanup: requirements.txt order
2021-10-27Fix Doxygen: Particles (#2486)Gravatar Axel Huebl 3-15/+22
* 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>
2021-10-27Fix BinaryCollision on GPU (#2504)Gravatar Neïl Zaim 1-4/+6
2021-10-19BinaryCollision: implement particle creation functor (#2315)Gravatar Neïl Zaim 6-103/+313
* BinaryCollision: implement particle creation functor * Apply suggestions from code review (restrict keyword) Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja> * Don't restrict the particle pointers * Use atomicSetID * Use more restricts * Don't use auto restrict Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
2021-10-12Add total cross section for proton boron nuclear reaction (#2301)Gravatar Neïl Zaim 1-3/+88
* Implement Higginson's nuclear fusion algorithm * Fix uninitialized variable * Typo fix and compute probability in a more robust way numerically * Set mask to false when no fusion * Update NuclearFusionFunc Doxystring * Add total cross section for proton boron nuclear reaction * Rewrite reduced mass calculation to avoir compilation error in single precision (underflow in constexpr evaluation) * Apply suggestions from code review Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja> * 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>
2021-10-07Implement Higginson's nuclear fusion algorithm (#2290)Gravatar Neïl Zaim 5-20/+343
* Implement Higginson's nuclear fusion algorithm * Fix uninitialized variable * Typo fix and compute probability in a more robust way numerically * Set mask to false when no fusion * Update NuclearFusionFunc Doxystring
2021-10-04Add structure for proton-boron fusion module (#2217)Gravatar Neïl Zaim 13-0/+1495
* Add structure for proton-boron fusion module * Fix clang compile error * Generalize structure for other nuclear fusion types * Workaround: try to use std::vectors to fix clang compile error * Simplify workaround for clang * Rebase on 2245 and add empty particle creation functor * Apply suggestions from code review Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja> * Add couple of consts and runtime assert * Add another const Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>