aboutsummaryrefslogtreecommitdiff
path: root/Source/Particles/Collision/CollisionHandler.cpp (follow)
AgeCommit message (Collapse)AuthorFilesLines
2023-06-13Enforce const correctness using clang-tidy CI test (#3921)Gravatar Luca Fedeli 1-2/+2
* 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 1-1/+1
* 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
2022-12-19Clean up documentation (#3542)Gravatar David Grote 1-0/+1
* Fix comments for documentation * More fixes to comments for documentation * Fixes in the doc files * Fix typo in parameters.rst
2022-03-10Clean up the use of ndt for collisions (#2944)Gravatar David Grote 1-2/+5
* 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 1-2/+2
2022-03-08Add background stopping (#2884)Gravatar David Grote 1-0/+4
* 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 1-1/+2
* initial work to add msg formatter * wip * replace AMREX_ALWAYS_ASSERT_WITH_MESSAGE with WarpX equivalent
2022-01-04Add Coulomb collision and nuclear fusion subfolders (#2389)Gravatar Neïl Zaim 1-2/+2
2021-12-06Correct collision algorithm in RZ. (#2510)Gravatar Yinjian Zhao 1-0/+3
* 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-10-04Add structure for proton-boron fusion module (#2217)Gravatar Neïl Zaim 1-4/+12
* 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>
2021-07-13Feature - Monte Carlo Collisions with static background neutrals (#1857)Gravatar Roelof Groenewald 1-0/+7
* Update copyright notices * allow specification of boundary potentials at runtime when using Dirichlet boundary conditions in the electrostatic solver (labframe) * added parsing to boundary potentials specified at runtime to allow time dependence through a mathematical expression with t (time) * updated to picmistandard 0.0.14 in order to set the electrostatic solver convergence threshold * update docs * various changes requested during PR review * fixed issue causing old tests to break and added a new test for time varying boundary potentials * possibly a fix for the failed time varying boundary condition test * changed permission on the analysis file for the time varying BCs test * switched to using yt for data analysis since h5py is not available * made changes compatible with PR#1730; changed potential boundary setting routine to use the ParallelFor construct and set all boundaries in a single call * fixed typo in computePhiRZ * updated docs and fixed other minor typos * fixed bug in returning from loop over dimensions when setting boundary potentials rather than continuing * changed to setting potentials on domain boundaries rather than tilebox boundaries and changed picmi.py to accept boundary potentials * now using domain.surroundingNodes() to get the proper boundary cells for the physical domain * fixed typo in variable name specifying z-boundary potential * Initial commit of MCC development. Collision type background_mcc handles collisions with a neutral background species * added back scattering and started expanding the multiple scattering processes functionality some * added charge exchange collision handling * added CrossSectionHandler class to install collision process cross-section calculators * added file reading for cross-section data * added input parameter for energy lost during inelastic collisions and changed how secondary species are passed for ionization events * added ionization - requires work to add to the amrex::ParallelForRNG loop * switched the MCC ionization handling to use the same workflow as other particle creation processes i.e. using the FilterCopyTransform functionality * updated the docs with the input parameters needed to include MCC in a run * added test for MCC and a function to ensure that cross-section data is provided with equal energy steps * fixed issue with build failing when USE_OMP=TRUE and some of the naming issues in Examples/Physics_applications/capacitive_discharge but I am not sure what to do about the other files in that directory * Improve file name construction to be strictly C++ compliant * WIP GPU Support * Fix QED Build (CUDA 10.0) Replace capture of a host-side array with unnamed members for E & B field transport with a nicely named struct that transports the Array4's as members. This is harder to mix up and thus more self-documenting and solves an issue with NVCC 10.0 of the form: ``` nvcc_internal_extended_lambda_implementation: In instantiation of '__nv_dl_wrapper_t<Tag, F1, F2, F3, F4, F5>::__nv_dl_wrapper_t(F1, F2, F3, F4, F5) [with Tag = __nv_dl_tag<int (*)(amrex::ParticleTile<0, 0, 4, 0, amrex::ArenaAllocator>&, amrex::ParticleTile<0, 0, 4, 0, amrex::ArenaAllocator>&, amrex::Box, const amrex::Array4<const double> (&)[6], int, int, const SchwingerFilterFunc&, const SmartCreate&, const SmartCreate&, const SchwingerTransformFunc&), filterCreateTransformFromFAB<1, amrex::ParticleTile<0, 0, 4, 0, amrex::ArenaAllocator>, amrex::Array4<const double> [6], int, const SchwingerFilterFunc&, const SmartCreate&, const SmartCreate&, const SchwingerTransformFunc&>, 1>; F1 = amrex::Array4<double>; F2 = const SchwingerFilterFunc; F3 = const amrex::Array4<const double> [6]; F4 = const amrex::Box; F5 = int*]': /home/ubuntu/repos/WarpX/Source/Particles/ParticleCreation/FilterCreateTransformFromFAB.H:174:28: required from 'Index filterCreateTransformFromFAB(DstTile&, DstTile&, amrex::Box, const FABs&, Index, Index, FilterFunc&&, CreateFunc1&&, CreateFunc2&&, TransFunc&&) [with int N = 1; DstTile = amrex::ParticleTile<0, 0, 4, 0, amrex::ArenaAllocator>; FABs = amrex::Array4<const double> [6]; Index = int; FilterFunc = const SchwingerFilterFunc&; CreateFunc1 = const SmartCreate&; CreateFunc2 = const SmartCreate&; TransFunc = const SchwingerTransformFunc&]' /home/ubuntu/repos/WarpX/Source/Particles/MultiParticleContainer.cpp:1169:167: required from here nvcc_internal_extended_lambda_implementation:70:103: error: invalid initializer for array member 'const amrex::Array4<const double> __nv_dl_wrapper_t<__nv_dl_tag<int (*)(amrex::ParticleTile<0, 0, 4, 0, amrex::ArenaAllocator>&, amrex::ParticleTile<0, 0, 4, 0, amrex::ArenaAllocator>&, amrex::Box, const amrex::Array4<const double> (&)[6], int, int, const SchwingerFilterFunc&, const SmartCreate&, const SmartCreate&, const SchwingerTransformFunc&), filterCreateTransformFromFAB<1, amrex::ParticleTile<0, 0, 4, 0, amrex::ArenaAllocator>, amrex::Array4<const double> [6], int, const SchwingerFilterFunc&, const SmartCreate&, const SmartCreate&, const SchwingerTransformFunc&>, 1>, amrex::Array4<double>, const SchwingerFilterFunc, const amrex::Array4<const double> [6], const amrex::Box, int*>::f3 [6]' ``` * CUDA: Quiet numerous warnings about unused-variable-warning suppressions being unreachable statements * Compiles on GPU; may even run as intended * Delete overwrought attempt at polymorphic implementation * Fix compilation error from nvcc being stupid * fixed improper input file for MCC test and updated reference results - a statistical test of the MCC routine would be better so that reference results should not change with changes in the RNG * Runs on CPU and GPU now * Clean up GPU-related memory/allocation management and function usage * Try inlining MCCProcess::getCrossSection to appease HIP and SYCL compilers * Fix up style/formatting issues * Typedef to make stuff cleaner and simpler * MCC: Make helper functions static * MCC: Pull parsing out to a helper * MCC: Name member variables according to convention * MCC: Pull out part of constructor * MCC: Add constructor that will take any iterable source for energies/cross sections * MCC: Overload operator new/delete to allocate in managed memory, to make later use more straightforward * MCC: Add process type for ionization * MCC: Expose a method for adding processes programmatically * MCC: Follow convention of all types being 'class', which keeps grep easy * MCC: Fix a formatting silliness * added a check that the collision cross-section is zero at the energy penalty for the collision to ensure that no collision will happen with a particle with insufficient energy to pay the energy cost * updated MCC input files to new standard inputs * reverted incorrect changes that was messed up during various upstream and branch merges * moved the MCC benchmark results to the Examples section in the documentation, which allows us to meet the style requirements - the tests are ongoing and the results will be provided in a following commit * Add GPU synchronization after collisions * added benchmark results and updated test results with the refined cross-sections needed to accurately calculate the benchmark cases * removed example input files for benchmarks since the style requirement prohibits input files not included in an automated test; also updated the reference results for the MCC test which changed slightly after merging upstream development and updated amrex * CLean up indentation and bit of commented out code * Inline addProcess method and refactor * Apply suggestions from code review Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja> * switched MCC files copyright to Modern Electron * Remove sync calls, which are unnecessary on support modern hardware * removed He collision cross-sections and instead the new warpx-data repository to access those files; also added a call in run_test.sh to clone the new repository during tests * Apply suggestions from code review Co-authored-by: David Grote <dpgrote@lbl.gov> Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja> * cleaned up the MCC documentation a bit * added include statements now needed by the MCC (after recent PR merges) and updated the MCC test reference values which changed slightly due to changing the value of Boltzmann's constant * added plot results for 3rd benchmark case from literature and changed documentation to reference uploaded image rather than local image in repo * updated MCC test file to match earlier execution which changed due to the new warpx use_filter default value being 1 * Apply suggestions from code review Co-authored-by: Remi Lehe <remi.lehe@normalesup.org> * Apply suggestions from code review Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja> * added warp-data repository clone command to docs * fix breaking change from earlier commit Co-authored-by: Peter Scherpelz <peter.scherpelz@modernelectron.com> Co-authored-by: Phil Miller <phil@intensecomputing.com> Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja> Co-authored-by: Phil Miller <phil.miller@intensecomputing.com> Co-authored-by: Ubuntu <ubuntu@ip-172-31-31-245.us-east-2.compute.internal> Co-authored-by: David Grote <dpgrote@lbl.gov> Co-authored-by: Remi Lehe <remi.lehe@normalesup.org>
2021-07-08Refactor collisions: replace PairWiseCoulombCollision class with ↵Gravatar Neïl Zaim 1-2/+4
BinaryCollision class (#2057) * Refactor collisions: replace PairWiseCoulombCollision class with BinaryCollision class * Make BinaryCollision a templated class with the functor type as parameter * Update README.md
2021-06-24Use "Include What You Use" on WarpX (#1947)Gravatar Luca Fedeli 1-0/+4
* initial tests with IWYU * added a couple of forward declarations * used iwyu on more files * progress * used iwyu on more files * progress with iwyu * progress with iwyu * fixed bug * progress with iwyu * progress with IWYU * progress with IWYU * fixed bug * fixed bug * progress with IWYU * progress with IWYU + use forward declarations in WarpX.H * first try with .def files * fix bugs * progress with IWYU * progress with IWYU * progress with iwyu * correct copyright * fixed bug * fixed bugs * fix missing include * fixed bug * fix bug * fix bug introduced during last bugfix * use iwyu on newly added files * add space * fix bug * fix missing include * fix missing include * fix missing include * fixed bugs * fixed bug * attempt at fixing issue with math functions * added missing include * fixed missing include * using _fwd.H * fixed bug * progress with iwyu * update AMReX branch * enforce alphabetic order * progress with iwyu * use right version of amrex * use right version of amrex for tests * fixed bug * fix another bug * fix missing include * fix missing include * fix missing include * updated amrex * initial work to document new include strategy * updated documentation * Fix rst & private includes * Remove accidentially added files * Fix rst code blocks * one more rst block Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
2021-03-16Add timers in routines that depend on cell-related work (#1692)Gravatar Michael E Rowan 1-1/+1
* Add timers * eol * AtomicAdd * lev argument for getCosts * style * style * wip * eol * .ipynb * passing down lev * eol * passing lev * eol * Update Source/Particles/Collision/PairWiseCoulombCollision.cpp Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja> * Add for QED and ionization routines * eol * remove unneeded * mfi-->pti * move cost * eol Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
2021-01-03Reconfigured the collision classes to allow for generalization (#1583)Gravatar David Grote 1-0/+52
* Reconfigured the collision classes to allow for generalization * Added literals to PairWiseCoulombCollision * Minor cleanup of PairWiseCoulombCollision.cpp, removing query of ndt * Add boilerplate to CollisionBase class * Fixed white space in CollisionBase.H Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>