aboutsummaryrefslogtreecommitdiff
path: root/Source/Particles/Collision (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 5-14/+14
* 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 4-4/+4
* 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 15-38/+38
* 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 6-10/+12
* 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 4-19/+31
* 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 3-1/+6
* 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-28For background stopping, added error checks of the user input (#3163)Gravatar David Grote 1-24/+39
* Added error checks of the user input * Fixed literals and const's
2022-10-10Partial refactoring of the utils directory (#3404)Gravatar Luca Fedeli 6-33/+53
* 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-09-02Remove some magic numbers (#3355)Gravatar Luca Fedeli 1-2/+3
* remove some magic numbers * fixed unreachable code issue * fixed issue with unreachable code * fixed issue with unreachable code * remove type traits * revert one change in Gaussian Laser * improved ParticleExtrema * fix bug
2022-07-27ParticleReal for external fields and collisions (#3262)Gravatar David Grote 13-258/+259
* 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-06-13Extend MCC to accurately treat relativistic particles (#3118)Gravatar Roelof Groenewald 4-164/+128
* initial commit for MCC to support relativistic particles * proper calculation of collision energy when target mass is not much greater than projectile mass * fix bug with scattered velocity rotation to lab frame * refactor the MCC sequence for clarity * use cross-section input to determine energy limits when calculating the maximum collision frequency * code cleanup * updated CI tests * added Collisions section to Implementation Details in docs * reset benchmark for mixed precision MCC test and other more code cleanup * fix issue with single precision and simplified implementation * use `double` for particle mass and energy calculations in MCC * added comment to ImpactIonization.H explaining why `double`s are used for `energy` and `mass` * switch to round off safe version of energy calculation and switched to using u instead of v for gamma*v in ParticleUtils.H * update documentation * simplified expression for collision energy, updated docs * Add comment that the direct solver can be replaced for the MLMG solver once the issue with that solver is fixed (in the 1d MCC test)
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 8-28/+24
* Clean up the use of ndt for collisions * Update BackgroundStopping to match changes
2022-03-09move MCC modules to a new folder inside "Particles/Collision/" (#2945)Gravatar Roelof Groenewald 10-8/+15
2022-03-08Add background stopping (#2884)Gravatar David Grote 7-0/+359
* Added BackgroundStopping * Added BackgroundStopping CI test * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * For background stopping, allowed parsed background density and temperature * Updated background stopping CI test * For background stopping, temperature is specified in Kelvin * Added documentation for background stopping * Added ion stopping plus other fixes * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Made dt level dependent * Revert "Made dt level dependent" This reverts commit 1aed9654d24ff1411a7b5fd8558891e0688f0032. The collisions should be done using the time step of the lowest level. * Add a comment about dt * Add const declaration * Added comment regarding stopped particle * Several fixes and clean up of the documentation * Update CI benchmark Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2022-03-08Make error and info messages visually uniform (#2939)Gravatar Luca Fedeli 4-19/+27
* initial work to add msg formatter * wip * replace AMREX_ALWAYS_ASSERT_WITH_MESSAGE with WarpX equivalent
2022-03-07properly handle MCC collision subcycling (#2934)Gravatar Roelof Groenewald 1-2/+2
2022-02-25MCC: allow background density and temperature to be functions of space and ↵Gravatar Roelof Groenewald 3-35/+123
time (#2881) * allow background density and temperature to be function of space and time for MCC * properly get particle positions during ionization events * update documentation * added sanity checks for background density and temperature
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-07fix issues found with performance-for-range-copy clang-tidy check (#2833)Gravatar Luca Fedeli 1-1/+1
2022-02-05Fixes removing implicit double to float conversions (#2687)Gravatar David Grote 5-17/+24
* 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-26fix typo in docstring for ImpactIonizationTransformFunc constructor (#2793)Gravatar Roelof Groenewald 1-1/+0
2022-01-04Add Coulomb collision and nuclear fusion subfolders (#2389)Gravatar Neïl Zaim 11-7/+8
2021-12-16Doxygen: Fix Diags, FieldSolver, Parallelization & Particles (#2662)Gravatar Axel Huebl 4-7/+13
* 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 3-4/+38
* 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-19added cost of MCC collisions to load balancing calculation (when using ↵Gravatar Roelof Groenewald 2-3/+33
Timers) (#2584)