aboutsummaryrefslogtreecommitdiff
path: root/Source/FieldSolver (follow)
AgeCommit message (Collapse)AuthorFilesLines
2020-05-29Encapsulate FFTs (#1055)Gravatar MaxThevenet 6-218/+303
* wrap fft libraries * implementation in cpp to avoid duplicate symbole * delete some fftw code * further cleaning * typo * pass fft plans by reference * fix bug due to typo. Dammit, macros sometimes make it hard * FFT wrapper also support cuFFT (not tested yet) * eol * further cleaning * fix cuFFT, tested on Summit * clean WarpX Complex checks * pass directly the IntVect instead of the components (what were you thinking?) * add some amrex prefix * add a few const * Should not need an FFT library to compile FDTD * gather all FFT header files into one. * eol * minor changes in code comments. * let dimension be chosen at runtime instead of at compile-time * fix compilation on GPU * add description to the wrapper namespace
2020-05-29Macroscopic EvolveE with constant properties (#991)Gravatar Revathi Jambunathan 7-0/+275
* Adding macro-E Push and new file * Add macroEvolveE, call it, and include algo selection in utils * fix eol * Fixing bug in macroE for sigma method 1 * changing MacroEvolveE to MacroscopicEvolveE * add class for macroscopicproperties and an object in WarpX class * fix eol * adding templated ckc call with comment that EvolveE is same for yee and ckc * add header file pointing to ckc algorithm * adding obejct m_macroscopic_properties to access sigma,eps,mu * some cleaning * Adding comments * adding documentation * spelling wandroff to wendroff * fixing eol * eol * const in the right place. Thanks bot! * profiler for macroscopic evolveE * re-introduced deleted line when fixing conflict to declare templated EvolveBPMLCartesian function * fixing if-else statement for RZ in MAcroscopicEvolveE.cpp * adding suggestions and corrections made in PR review. * fixing grammar in docs * fix eol whitespace * fix typo
2020-05-29Set particular modified wavenumbers to 0 for spectral (nodal). (#1030)Gravatar Olga Shapoval 1-0/+18
* Set particular modified wavenumbers to 0 for spectral (nodal). * Add comments Co-authored-by: Remi Lehe <remi.lehe@normalesup.org>
2020-05-22Dpcpp (#1045)Gravatar WeiqunZhang 1-5/+5
* Make changes to be able to compile with DPC++. Parser is disabled for DPC++ because it does not work. amrex::Math::abs instead of std::abs is used in device functions. * std::isnan not supported on device with DPC++
2020-05-22Use C++ templates for the PML field pusher (#808)Gravatar Remi Lehe 7-291/+523
* Allow to pass component in stencil templates * Define and use enum to address PML components * Start implementing PML equations * Implement EvolveEPML * Implemented EvolveBPML * Added interface for pml_has_particles * Added interface for pml_has_particles * [skip ci] Add update expressions for E * [skip ci] Fix compilation * Call new PML pusher for B field * Fix compilation errors * Fix more typos * Abort code if `do_pml` is used in cylindrical geometry * Add contribution from F in EvolveEPML * Remove unused function for CKC coefficients * Remove unneeded ExchangeF * Add damping for J * Apply suggestions from code review Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja> * Revert "Apply suggestions from code review" This reverts commit 08f262a676ba5e5b44b9118b8daba1b03c08b64b. * Remove sanity checks for nodal * Implement dive cleaning in PML * Implement push F in the PML * Clean-up unused code Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
2020-05-22Fix DivE diagnostic in RZ (#1034)Gravatar David Grote 1-1/+6
* Added dump_rz_modes to picmi field diagnostic * Fixed DivEFunctor for RZ * In Diagnostics, write out RZ components of divE if requested * Fix RZ component names in diagnostic files * Fixed RZ spectral back transform, fixing DivE calculation * In SpectralSolverRZ.H changed BL_PROFILE to WARPX_PROFILE * Undid change of BL_PROFILE to WARPX_PROFILE in SpectralSolverRZ.H
2020-05-22Added stub for current correction in RZ spectral solver (#1007)Gravatar David Grote 4-0/+55
* Added stub for current correction in RZ spectral solver * Fixed comments in RZ spectral for current correction stub * Modified automated test for Galilean PSATD (#1033) Co-authored-by: Olga Shapoval <30510597+oshapoval@users.noreply.github.com>
2020-05-13Allow to pass component in stencil templates (#1012)Gravatar Remi Lehe 3-70/+70
2020-05-12Remove unneeded ExchangeF (#996)Gravatar Remi Lehe 1-2/+0
2020-05-08Fix bug for PSATD momentum-conserving runs (#965)Gravatar Remi Lehe 1-2/+2
* Relax PSATD check on boxes, so that PSATD momentum-conserving can be used * Increase tolerance of test * Add automated tests for momentum-conserving PSATD
2020-05-08remove unused variables from WarpX::EvolveE (#995)Gravatar Andrew Myers 1-19/+1
2020-05-05Current correction in Fourier space (#675)Gravatar Edoardo Zoni 4-5/+141
* Start implementing PSATD push without rho. TODO: 1) fix unit test pml_x_psatd; 2) try new PSATD push in PML; 3) avoid intro of new derived class? * Correct PSATD push to fix PML test. * Few improvements on new PSATD push: - new class name is 'PsatdAlgorithmMixed' (both rho and J are used); - new algorithm parameter to choose between available implementations: parameter name is 'psatd_push', possible values are 'standard' for old implementation using rho via Gauss law and continuity equation and 'mixed' for new implementation using rho via Gauss law and J for all remaining terms. * Fix style error (tabs vs four white spaces). * Improve comments for available PSATD algorithms. * Correct few typos in latest comments. * Implement first current correction: - new member function 'CurrentCorrection' in class SpectralSolver; - correction applied only without subcycling (in function 'OneStep_nosub'); - TODO: add correction when subcycling is used (in function 'OneStep_sub1'); - back to old implementation of PSATD push of E and B (class 'PsatdAlgorithmMixed' removed); - TODO: PML unit test 'pml_x_psatd' does not pass. * Small cleanup: - remove residual option for choice of PSATD push algorithm (only one choice now); - improve comments. * Implement div(E) diagnostics for spectral case. * split travis tests in bigger matrix * split more TravisCI tests, add electrostatic, use defaults values * typo * Move computation of div(E) to base class SpectralBaseAlgorithm. * need to split psatd too * consistent variable names and use function to avoid duplication * fix typo for qed tests * typo * also need to update run_tests.sg * Update copyright tags. * change matrix * Add test of div(E) vs rho/epsilon_0 in PML test. * Small clean-up. * Small clean-up * Remove option for current correction from input files of two new tests (not used) * Small clean-up: remove unnecessary references * More clean-up (minimize style changes to keep PR simple). * Add specific 2D/3D tests for current correction: - 'Langmuir_multi_2d_psatd_cc': same input file as 'Langmuir_multi_2d_psatd', except for current correction and output of divE; - 'Langmuir_multi_psatd_cc': same input file (3D) as 'Langmuir_multi_psatd', except for current correction and output of divE; - add corresponding Python scripts for analysis: same as previous ones, except for check on L-infinity spatial norm of rho/epsilon_0 vs div(E); - revert changes on old tests: do not use current correction in old tests (benchmarks on Battra do not need to be updated). * Improve comments. * Start implementation of new averaging with staggering: - face-to-cell-center and edge-to-cell-center replaced so far; - TODO: node-to-cell-center and 1D behavior (AMREX_SPACEDIM=1). * Remove unrelated style changes (cleaner PR). * Avoid duplication of input files and analysis scripts for new tests * Improve comments for Doxygen documentation. * Improve comments for Doxygen documentation. * Small clean-up * first implementation of Diags base classes * Small clean-up * Small clean-up * Fix erroneous non-ASCII character * Small clean-up * Auxiliary function for current correction in class WarpX to keep OneStep_nosub clean * Remove unrelated style changes (cleaner PR) * Improve comments * Instrument virtual function 'CurrentCorrection' * Trying to fix build error detected by LGTM analysis only * add example, temporarily * Continue implementation of new averaging with staggering: - new function takes reference to single MultiFab (no vector); - TODO: node-to-cell-center still in progress. * Fix small bug and clean up * Fix bug in loop over n=0,...,ncomp-1 and clean up * add more functions * Add Doxygen documentation and clean up * Small clean-up in Doxygen documentation * Compile in single precision: add _rt suffix to avoid unnecessary conversions * Avoid accessing staggering index directly from IntVect in innermost loops * Implement periodic-single box option for spectral * Fix out-of-bound in the periodic, single-box case * Replace do-while loop with for loop (default ncomp=1) * Remove temporary pointer and pass reference to MultiFab (instead of MultiFab*) * Replace AMREX_LAUNCH_HOST_DEVICE_LAMBDA with ParallelFor * cleaning and initialize output mf * use general average routine * move flush in new class, and implemented the Plotfile derived class * add comments * eol * free memory in destructor * typo * typo * no need to clear MF pointers there * though shalt not break existing tests * FlushRaw doesnt have to be virtual for now * The importance of being constant * Capability to select fields in output files * EOL * revert to old inputs * const in right place * avoid brace initializer there * oops, fix logic error in is_in * Use old name for output image of new 2D test * user can choose flush interval, same behavior as plot_int * Small clean-up in Doxygen documentation * Add option to plot raw fields * eol * replace ter flush with dump to avoid confusion * add options * Diagnostics stores a vector of functors to compute diags on the fly * eol * Field gather from diags to sync particle quantities * New diagnostics handle RZ with same behavior as old ones * cleaning and doc * const ref for string * smarter for loop from Axel and typo fix from Reva * Functors to compute some fields * simplify code following Dave's comments * Create subfolders and add more output options (divE etc.) * eol * Add documentation for periodic_single_box_fft * For periodic, single-box, apply current correction after guard cell exchange * rename mode_avg to convertRZmodes2cartesian * Update CellCenterFunctor.H * fill varnames and vector of functors at the same time * output rho_new, not rho_old * WarpX instance not needed here * add const * little bit more of reorganization * Travis CI: force 2 MPI processes only for numprocs > 2 * Use special FFT (PR #834) and new diagnostics (PR #844) in new tests * Improve Doxygen documentation * Move option do_current_correction from warpx to psatd * Fix path to output files for tests using new diagnostics * Fix additional paths to output files for new diagnostics * Add input paramter do_current_correction to documentation * Fix test Langmuir_multi_psatd_hybrid: do not plot divE * Remove input parameter amr.plot_int in tests using new diagnostics * Trigger failing source/style checks on Travis CI * Fix build error due to public include * Add missing const keywords * Change test names and corresponding analysis scripts * Improve Python script for analysis * Do not rename output files in old CI tests (without current correction) * Fix output file name prefix for some tests * Trigger Travis CI build after AMReX bug fix * Void commit: trigger Travis CI build * Fix some tests failing due to recent changes in master * Use new diagnostics for particle output correctly Co-authored-by: MaxThevenet <mthevenet@lbl.gov> * Print tolerance and error in Python analysis Co-authored-by: MaxThevenet <mthevenet@lbl.gov> * Print tolerance and error in Python analysis Co-authored-by: MaxThevenet <mthevenet@lbl.gov> * Improve documentation Co-authored-by: MaxThevenet <mthevenet@lbl.gov> * Fix EOL white spaces * Fix name of particle output variables Co-authored-by: MaxThevenet <mthevenet@lbl.gov> Co-authored-by: Remi Lehe <remi.lehe@normalesup.org>
2020-05-05Switch costs to LayoutData (#970)Gravatar Michael E Rowan 1-1/+1
Cleanup Cleanup
2020-05-01Do not rely on nodal flags (#931)Gravatar Edoardo Zoni 2-16/+16
* Start removing nodal flags where possible * Remove additional nodal flags * Clean up getFieldNodalFlagData in Python wrappers * Remove nodal flags from PML files * Revert "Remove nodal flags from PML files" This reverts commit 1d58519f9cee2e64df811f76f3d8a0aead1aa4ef. * Fix issue when removing nodal flags from PML files * Remove nodal flags from (OLD) slice diagnostics * Nodal flags are now local variables in WarpX::AllocLevelMFs * Trigger Travis CI build after AMReX bug fix * Void commit: trigger Travis CI build
2020-04-29CI: macOS Single Precision (#964)Gravatar Axel Huebl 1-3/+3
* CI: macOS Single Precision Add another compile with single precision on AppleClang. * AMReX' complex for everything This is nice and compliant and works on all platforms.
2020-04-28Style change to match the standard (#957)Gravatar Michael E Rowan 2-10/+10
2020-04-26minor code changes to remove warnings when compiling with gcc DEBUG=TRUE (#950)Gravatar MaxThevenet 1-6/+0
2020-04-17Remove code for hybrid PSATD, as well as remaining Fortran interface file (#927)Gravatar Remi Lehe 7-845/+2
* Clean-up hybrid code * Remove Fortran interface
2020-04-14Implementation of the RZ spectral solver (#816)Gravatar David Grote 20-3/+1939
* For diagnostics, added RZ modes of scalars, allowed different centerings * For RZ, generalized the centering of the inverse volume scaling of J and rho * Fixed spacing in ConstructTotalRZScalarField Co-Authored-By: MaxThevenet <mthevenet@lbl.gov> * Added Python wrapper of charge density arrays * Add assert ensuring that Jr is never node-centered Co-Authored-By: MaxThevenet <mthevenet@lbl.gov> * Small fixes to Python to better handle particle weights * Implementation of the RZ spectral solver * Removed k-space filtering code * Removed more k-space filter code from RZ spectral solver * For RZ spectral, added _rt for literals and cleaned up namespace use * In RZ spectral solver, cleaned up some member names * Update Docs/source/building/rzgeometry.rst Small fix for clarity. Co-Authored-By: Remi Lehe <remi.lehe@normalesup.org> * Update Source/Evolve/WarpXEvolve.cpp Fix macro indentation Co-Authored-By: Remi Lehe <remi.lehe@normalesup.org> * Update Source/Evolve/WarpXEvolve.cpp Fix more macro indentation Co-Authored-By: Remi Lehe <remi.lehe@normalesup.org> * Update Source/Evolve/WarpXEvolve.cpp Fix another macro indentation Co-Authored-By: Remi Lehe <remi.lehe@normalesup.org> * New diagnostics support RZ (#836) * Start implementation of new averaging with staggering: - face-to-cell-center and edge-to-cell-center replaced so far; - TODO: node-to-cell-center and 1D behavior (AMREX_SPACEDIM=1). * first implementation of Diags base classes * add example, temporarily * Continue implementation of new averaging with staggering: - new function takes reference to single MultiFab (no vector); - TODO: node-to-cell-center still in progress. * Fix small bug and clean up * Fix bug in loop over n=0,...,ncomp-1 and clean up * add more functions * Add Doxygen documentation and clean up * Small clean-up in Doxygen documentation * Compile in single precision: add _rt suffix to avoid unnecessary conversions * Avoid accessing staggering index directly from IntVect in innermost loops * Replace do-while loop with for loop (default ncomp=1) * Remove temporary pointer and pass reference to MultiFab (instead of MultiFab*) * Replace AMREX_LAUNCH_HOST_DEVICE_LAMBDA with ParallelFor * cleaning and initialize output mf * use general average routine * move flush in new class, and implemented the Plotfile derived class * add comments * eol * free memory in destructor * typo * typo * no need to clear MF pointers there * though shalt not break existing tests * FlushRaw doesnt have to be virtual for now * The importance of being constant * Capability to select fields in output files * EOL * revert to old inputs * const in right place * avoid brace initializer there * oops, fix logic error in is_in * user can choose flush interval, same behavior as plot_int * Add option to plot raw fields * eol * replace ter flush with dump to avoid confusion * add options * Diagnostics stores a vector of functors to compute diags on the fly * eol * Field gather from diags to sync particle quantities * New diagnostics handle RZ with same behavior as old ones * cleaning and doc * const ref for string * smarter for loop from Axel and typo fix from Reva * simplify code following Dave's comments * rename mode_avg to convertRZmodes2cartesian * Update CellCenterFunctor.H * fill varnames and vector of functors at the same time * WarpX instance not needed here * add const Co-authored-by: Edoardo Zoni <ezoni@lbl.gov> * Add load balance options documentation (#842) * Add load balance options documentation * Add load balance options documentations * EOL * Replace tilebox by growntilebox (#849) * Updated Profiling information in running_cpp (#776) * Fixed link that was pointing to 404 error page * Added motivation for profiling and TINYPROFILERS explanation * Moved section on NERSC profiling to developers Docs * Update Docs/source/running_cpp/profiling.rst Co-Authored-By: MaxThevenet <mthevenet@lbl.gov> * Update tiny profilers suggestion Docs/source/running_cpp/profiling.rst Co-Authored-By: MaxThevenet <mthevenet@lbl.gov> * Fix typo Docs/source/running_cpp/profiling.rst Co-authored-by: MaxThevenet <mthevenet@lbl.gov> * Add a few additional diags (divE etc.) (#844) * Start implementation of new averaging with staggering: - face-to-cell-center and edge-to-cell-center replaced so far; - TODO: node-to-cell-center and 1D behavior (AMREX_SPACEDIM=1). * first implementation of Diags base classes * add example, temporarily * Continue implementation of new averaging with staggering: - new function takes reference to single MultiFab (no vector); - TODO: node-to-cell-center still in progress. * Fix small bug and clean up * Fix bug in loop over n=0,...,ncomp-1 and clean up * add more functions * Add Doxygen documentation and clean up * Small clean-up in Doxygen documentation * Compile in single precision: add _rt suffix to avoid unnecessary conversions * Avoid accessing staggering index directly from IntVect in innermost loops * Replace do-while loop with for loop (default ncomp=1) * Remove temporary pointer and pass reference to MultiFab (instead of MultiFab*) * Replace AMREX_LAUNCH_HOST_DEVICE_LAMBDA with ParallelFor * cleaning and initialize output mf * use general average routine * move flush in new class, and implemented the Plotfile derived class * add comments * eol * free memory in destructor * typo * typo * no need to clear MF pointers there * though shalt not break existing tests * FlushRaw doesnt have to be virtual for now * The importance of being constant * Capability to select fields in output files * EOL * revert to old inputs * const in right place * avoid brace initializer there * oops, fix logic error in is_in * user can choose flush interval, same behavior as plot_int * Add option to plot raw fields * eol * replace ter flush with dump to avoid confusion * add options * Diagnostics stores a vector of functors to compute diags on the fly * eol * Field gather from diags to sync particle quantities * New diagnostics handle RZ with same behavior as old ones * cleaning and doc * const ref for string * smarter for loop from Axel and typo fix from Reva * Functors to compute some fields * simplify code following Dave's comments * Create subfolders and add more output options (divE etc.) * eol * rename mode_avg to convertRZmodes2cartesian * Update CellCenterFunctor.H * fill varnames and vector of functors at the same time * output rho_new, not rho_old * WarpX instance not needed here * add const * little bit more of reorganization * Apply suggestions from code review Co-Authored-By: Axel Huebl <axel.huebl@plasma.ninja> * add a bunch of const * make derived classes final Co-authored-by: Edoardo Zoni <ezoni@lbl.gov> Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja> * Add Initial Distribution Test (#735) * Add Histogram * Add normalization * Add doc * Minor * Minor * Fix a bug * Add gaussian distribution test * Fix alert and change amr.plot_int * Add maxwell-boltzmann distribution test * Add maxwell-boltzmann distribution test * Add maxwell-boltzmann distribution test * Add maxwell-juttner * Minor * Typo * Minor * Minor * Add const * Apply suggestions from code review Co-Authored-By: MaxThevenet <mthevenet@lbl.gov> * Modify based on suggestions. * Add histogram name * Add bin values * Don't add histogram name * Modify read_raw_data.py * Add doc * Change ux,uy,uz units * Change ux,uy,uz units * Change if format * Save some variables * Change more * Minor * Fix a bug on GPU * Fix a bug on GPU * Add wrong species name abort * Minor doc * Change #include format * Apply suggestions from code review Co-Authored-By: MaxThevenet <mthevenet@lbl.gov> * Add const * Change to member variables * revert * Change units based on changes of PR#727 * merge * Add Gaussian position distribution test * Minor * Change based on suggestions * Use read_raw_data.py * Minor * Change to no normalization * Add more in doc * doc * doc * Use relative error * Don't divide by bin_size * Change based on suggestions Co-authored-by: MaxThevenet <mthevenet@lbl.gov> * Tests: Fix Bool Switch Typo OMP (#854) useOMP is 0 (False) or 1 (True) * Costs vector of (pointer to) vector (#829) * [WIP] costs mf --> costs vector * [WIP] costs vector * [WIP] vector costs * formatting * makefile * [WIP] costs vector * [WIP] *= costs * wts do not need to divide by num cells * Tiling safety on CPU * Add tests * EOL * Remove unneeded input * Update Source/WarpX.H costs documentation Co-Authored-By: MaxThevenet <mthevenet@lbl.gov> * Update timers with times only if user Timers update * warpx.-->WarpX:: * warpx.-->WarpX:: * warpx.-->WarpX:: * warpx.-->WarpX:: * warpx.-->WarpX:: * add dev synch * Update Regression/WarpX-tests.ini Co-Authored-By: MaxThevenet <mthevenet@lbl.gov> * Delete inputs_loadbalance_costs_heuristic * Update and rename inputs_loadbalancecosts_timers to inputs_loadbalancecosts * Update WarpX-tests.ini Co-authored-by: MaxThevenet <mthevenet@lbl.gov> * [mini-PR] Read species distribution from OPMD file (#847) * Added <species>.profile=external_file and .profile_file * Added description of input parameters to Docs * Changed from profile to injection option for external file * Fix typo in amrex abort message (due to copy paste) * Added the OpenPMD use amrex abort message * Minor fix - not sure how to remove EOL issue * Tried to add AddExternalFileBeam functon to PhysicalParticleContainer * Trued to fix EOL white space issue * Added read/print species name from OPMD file * Update Source/Initialization/PlasmaInjector.cpp Co-Authored-By: Axel Huebl <axel.huebl@plasma.ninja> * Update Source/Particles/PhysicalParticleContainer.cpp Co-Authored-By: Axel Huebl <axel.huebl@plasma.ninja> * Update Source/Particles/PhysicalParticleContainer.cpp Co-Authored-By: Axel Huebl <axel.huebl@plasma.ninja> * Update Source/Particles/PhysicalParticleContainer.H Co-Authored-By: Axel Huebl <axel.huebl@plasma.ninja> * Update Source/Particles/PhysicalParticleContainer.cpp Co-Authored-By: Axel Huebl <axel.huebl@plasma.ninja> * No need to include openPMD header yet * Fix EOL according to @ax3l's recommendation in #845 * Remove commented out AbortMessage Co-Authored-By: MaxThevenet <mthevenet@lbl.gov> * Removed commented out part initialization (used only in branch for next PR) Co-Authored-By: MaxThevenet <mthevenet@lbl.gov> * Added warning that this is WIP Co-Authored-By: MaxThevenet <mthevenet@lbl.gov> * Changed function name to AddPlasmaFromFile * Removed AMReX warning from loop Co-Authored-By: MaxThevenet <mthevenet@lbl.gov> Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja> Co-authored-by: MaxThevenet <mthevenet@lbl.gov> * Ignore python build/dist and egg folders (#850) * Travis CI: set max numprocs=2 and do not overwrite (#860) * [mini-PR] Fix bug in Breit-Wheeler engine (#852) * fixed bug in BW engine * fixed bug * fixed bug * fixed bug * fixed bug * fixed bug * eliminate useless variable * updated test * updated inputfile * Updated tests * increase tolerance from .04 to .07 in QED 3D BW test * do plot pos_bw and ele_bw Co-authored-by: MaxThevenet <mthevenet@lbl.gov> * Documentation update - towards full SI (#301) * Added blank line after list. Changed characters in link to Q. H. Liu paper so hyoerlink works with sphinx-build 2.1.2. * Added line cut unintentionally. * Removed line added unintentionally. * Same as before. * Same as before, but hopefully successfully * Same as before, but hopefully successfully * Minor changes to description of PWFA example run * Revert "Minor changes to description of PWFA example run" This reverts commit a4d7fa969c906959b018efe683a3e585cbd741f9. * Revert "Profiler wrapper to allow for cudaDeviceSynchronize (#738)" This reverts commit bbefc3dad687f4370afd5bc85386d983201cb321. * Revert "Revert "Minor changes to description of PWFA example run"" This reverts commit 965982d35361ff54d0ad10101ffc31605117e5ac. * Revert "Minor changes to description of PWFA example run" This reverts commit a4d7fa969c906959b018efe683a3e585cbd741f9. * I am making a huge mess with merging * Minor changes to description of PWFA example run * Added explanation PWFA simulation section * Re-structuring. Adding sections for each choice. * Minor fix to note * Minor changes to text * Time step description + fixed line length * Added FDTD and CKC selection * Added max time step calculations * Trying to fix EOL issue * Added mesh refinement and moving window * Fixed minor issues * Fix EOL issues again * Fixed typo - auxiliary Co-Authored-By: MaxThevenet <mthevenet@lbl.gov> Co-authored-by: Diana Amorim <diana@henrivincenti.dhcp.lbl.gov> Co-authored-by: MaxThevenet <mthevenet@lbl.gov> * Remove compiler warnings (#843) * Fix compiler warnings with DIM=2 * Fix compiler warnings with USE_RZ=TRUE * Fix compiler warnings with USE_PSATD=TRUE and DIM=2 * Fix compiler warnings with USE_PSATD=TRUE and DIM=3 * Fix bug: discard only return value when calling DefineAndReturnParticleTile * Remove unused variables not triggering warnings * [mini-PR] Fix energy calculation for photons in reduced diagnostics (#861) * fix energy calculation for photons * fixed typo and mada calculation clearer * added photon particles in reduced diags test * Update Source/Diagnostics/ReducedDiags/ParticleEnergy.cpp Co-Authored-By: MaxThevenet <mthevenet@lbl.gov> * Update Source/Diagnostics/ReducedDiags/ParticleEnergy.cpp Co-Authored-By: MaxThevenet <mthevenet@lbl.gov> Co-authored-by: MaxThevenet <mthevenet@lbl.gov> * Port rigid injection to the gpu (#862) * port rigid injection to the gpu * eol * Apply suggestions from code review Co-Authored-By: MaxThevenet <mthevenet@lbl.gov> * define csqi Co-authored-by: MaxThevenet <mthevenet@lbl.gov> * Added blocking factor to 2d and RZ geometries (#864) * doc: fix formatting for ascent yaml examples (#865) * [mini-PR] Clarifying ionizable particle charge (#863) * Added documentation note on ionization particle charge * Added correct charge of ion to be ionized * Corrected multiplication symbol Co-Authored-By: MaxThevenet <mthevenet@lbl.gov> * Testing doxygen issue * Charge correction only to ionizable species * Trying to fix doxygen url fetch issue Co-authored-by: MaxThevenet <mthevenet@lbl.gov> * In HankelTransform, added explicit matrix multiply for GPU * In RZ spectral solver, update setval to be on device * Removed CEXE_headers from FieldSolver/SpectralSolver/Make.package * In HankelTransform, added check of the Bessel root finder * Updated includes to RZ spectral solver * Added comments on how Hankel transform matrix is calculated * Added more comments to Hankel transform calculation * For RZ spectral solver, cleaned up naming and add subdirectory for Hankel transform files * Cleaned up code in PsatdAlgorithmRZ.cpp * Updated comment for fields in SpectralFieldDataRZ.cpp * Changed HankelTransformer to MultiSpectralHankelTransformer * Updates comments in RZ spectral solver * Removed code for k-space filtering that will be added in a later PR * For RZ spectral solver, passed lev in * Fixed comment in SpectralFieldDataRZ.cpp Co-authored-by: MaxThevenet <mthevenet@lbl.gov> Co-authored-by: Remi Lehe <remi.lehe@normalesup.org> Co-authored-by: Edoardo Zoni <ezoni@lbl.gov> Co-authored-by: Michael E Rowan <38045958+mrowan137@users.noreply.github.com> Co-authored-by: NeilZaim <49716072+NeilZaim@users.noreply.github.com> Co-authored-by: L. Diana Amorim <LDianaAmorim@lbl.gov> Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja> Co-authored-by: Yinjian Zhao <yinjianzhao@lbl.gov> Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> Co-authored-by: Luca Fedeli <luca.fedeli@cea.fr> Co-authored-by: Diana Amorim <diana@henrivincenti.dhcp.lbl.gov> Co-authored-by: Andrew Myers <atmyers@lbl.gov> Co-authored-by: Cyrus Harrison <cyrush@llnl.gov>
2020-04-06replace ixType().ixType() with ixType().toIntVect() for clarity (#895)Gravatar MaxThevenet 6-26/+26
2020-04-03Avoid i%1 in a lambda, gives compiler segfault (#892)Gravatar MaxThevenet 1-6/+11
* avoid i%1 in a lambda, gives compiler segfault * add 1 comment * Update Source/FieldSolver/SpectralSolver/SpectralFieldData.cpp * explicit capture by value * Update Source/FieldSolver/SpectralSolver/SpectralFieldData.cpp Co-Authored-By: Axel Huebl <axel.huebl@plasma.ninja> Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
2020-04-02Includes: Only From `Source/` (#873)Gravatar Axel Huebl 9-12/+6
* Includes: Only From `Source/` Avoid adding all directories to include paths: - automatically structure includes more clearly, e.g. a util include with a short name is clearly seen as such - should have some small positive impact on compile time, since the compiler has to search less directories for an include file * Includes: Fix Non-Local Paths Add missing prefix relative to `Source/` for WarpX-local includes.
2020-04-02Periodic, single-box FFT (#881)Gravatar Remi Lehe 4-11/+43
* Implement periodic-single box option for spectral * Fix out-of-bound in the periodic, single-box case * Add documentation for periodic_single_box_fft
2020-03-31Make Build System: No Public Includes (#870)Gravatar Axel Huebl 5-13/+1
Remove the listing of all header-files from the Make-buildsystem. Listing public header files here tells the AMReX Makefile build system to install those in an install step after build. WarpX is currently not building a public library which can be consumed by users for their projects and only an executable.
2020-03-30Current effects in QED corrections (#767)Gravatar Glenn Richardson 2-17/+52
* corrected two typos missed during review of PR-719 * changed file permission from executable to read/write * added current into QED corrections * corrected tabs * fixed indent in multifab construction section * adjusted more indentations that were accidently changed from the origional * Corrected the curent mesh * Update Source/FieldSolver/WarpX_QED_Field_Pushers.cpp Co-Authored-By: Revathi Jambunathan <41089244+RevathiJambunathan@users.noreply.github.com> * Correctly implimented Revathi's recommended changes to the E,B and J boxes * Adjusted comments, tabs, and copyrights * and EOL Co-authored-by: Revathi Jambunathan <41089244+RevathiJambunathan@users.noreply.github.com>
2020-03-30Bug fix in ApplyInverseVolumeScalingToCurrentDensity (#866)Gravatar David Grote 1-1/+1
2020-03-30Remove compiler warnings (#843)Gravatar Edoardo Zoni 8-22/+18
* Fix compiler warnings with DIM=2 * Fix compiler warnings with USE_RZ=TRUE * Fix compiler warnings with USE_PSATD=TRUE and DIM=2 * Fix compiler warnings with USE_PSATD=TRUE and DIM=3 * Fix bug: discard only return value when calling DefineAndReturnParticleTile * Remove unused variables not triggering warnings
2020-03-27Costs vector of (pointer to) vector (#829)Gravatar Michael E Rowan 2-15/+11
* [WIP] costs mf --> costs vector * [WIP] costs vector * [WIP] vector costs * formatting * makefile * [WIP] costs vector * [WIP] *= costs * wts do not need to divide by num cells * Tiling safety on CPU * Add tests * EOL * Remove unneeded input * Update Source/WarpX.H costs documentation Co-Authored-By: MaxThevenet <mthevenet@lbl.gov> * Update timers with times only if user Timers update * warpx.-->WarpX:: * warpx.-->WarpX:: * warpx.-->WarpX:: * warpx.-->WarpX:: * warpx.-->WarpX:: * add dev synch * Update Regression/WarpX-tests.ini Co-Authored-By: MaxThevenet <mthevenet@lbl.gov> * Delete inputs_loadbalance_costs_heuristic * Update and rename inputs_loadbalancecosts_timers to inputs_loadbalancecosts * Update WarpX-tests.ini Co-authored-by: MaxThevenet <mthevenet@lbl.gov>
2020-03-16For RZ, generalized the centering of the inverse volume scaling of J and rho ↵Gravatar David Grote 1-23/+60
(#772) * For RZ, generalized the centering of the inverse volume scaling of J and rho * Add assert ensuring that Jr is never node-centered Co-Authored-By: MaxThevenet <mthevenet@lbl.gov> Co-authored-by: MaxThevenet <mthevenet@lbl.gov>
2020-03-16Use C++ templates for the `EvolveF` and `ComputeDivE` function (#753)Gravatar Remi Lehe 6-62/+432
* Prepare EvolveE * Cartesian equations without current * Implement Cartesian EvolveE * Progress towards cylindrical solver * Correct typo * Implement cylindrical solver (without on-axis condition) * Fix compilation errors * Add regularization for RZ solver * Added correction term for F * Remove file for nodal stencil * Apply stylistic changes to EvolveE * Fix compilation errors * Correction to avoid out of bound * Remove references to old file * Correct bug in EvolveB * Implement correction on axis for Et * Remove previous field update functions * Implement EvolveF in Cartesian * Add missing file * Update on-axis condition * Correct typo * Add theta derivative for divE calculation * Fix rho component * Fix compilation error * Use C++ templates in computation of divE * Update Source/FieldSolver/FiniteDifferenceSolver/ComputeDivE.cpp Co-Authored-By: MaxThevenet <mthevenet@lbl.gov> * Apply suggestions from code review Co-Authored-By: MaxThevenet <mthevenet@lbl.gov> * Use comparisons to 0 again Co-authored-by: MaxThevenet <mthevenet@lbl.gov>
2020-03-13PSATD Single precision (#805)Gravatar MaxThevenet 6-77/+122
* fix compilation for single precision PSATD with USE_GPU * compiles and tested on CPU also * add sentence to doc: FFTW needs to be compiled with single precision option * add test, better pre-proc directives indent, clearer ifdef * use using whenever possible * indent * fix TravisCI matrix, and improve matrix test * need to compile with same precision for fields and particles
2020-03-13Fixed FDTD coefficients of E push from F (#804)Gravatar David Grote 1-13/+13
2020-03-10Allowed for more general centering of charge density (#768)Gravatar David Grote 1-1/+1
* Allowed for more general centering of charge density * Used rho_nodal_flag in ApplyInverseVolumeScalingToChargeDensity * Simplify declaration of rho_nodal_flag Co-Authored-By: MaxThevenet <mthevenet@lbl.gov> * Fix documentation for doChargeDepositionShapeN Co-Authored-By: MaxThevenet <mthevenet@lbl.gov> Co-authored-by: MaxThevenet <mthevenet@lbl.gov>
2020-03-06Remove FFTW include (#777)Gravatar Remi Lehe 1-4/+0
2020-03-04Fix and automatically test USE_PSATD_PICSAR=TRUE (#769)Gravatar MaxThevenet 1-0/+1
* Fix compilation for hybrid PSATD * Add automated test for hybrid PSATD
2020-03-02Heuristic load balance based on number of particles and number of cells (#737)Gravatar Michael E Rowan 2-2/+2
* Issue #713: Load Balance w.r.t. number of cells + particles README: Update Badged to `master` (#725) * README: Update Badged to `master` Update the badges to check the `master` branch as development branch. * Docs: More dev->master updates - release workflow - contribution guide link Galilean PSATD with shift (#704) * Read Galilean velocity * Prepare structures for Galilean solver * Started implementing Galilean equations * Analytical limits for X1, X2, X3, X4 coefficients added * Slight changes added * Added Galilean position pusher * Scale galilean velocity * Remove unneeded Abort * Fix Galilean pusher * Allocate Theta2 array * Fix definition of coefficients * Increase guard cells for Galilean * Add guard cell in particle exchange * Type corrected * v_gal added to warpx_current_deposition * v_gal added to WarpXParticleContainer.H * Bug fixed - update particle x-position over one time step * Fix issues with merge from dev * Preparation for merging dev into galilean. * Adding galilean shift * Implemented galilean shift * Changed method's name from GalileanShift to ShiftGalileanBoundary * Added doxygen string for ShiftGalileanBoundary * Removed never used method LowerCornerWithCentering * Removed temporary comments * Removed dt as a variable from DepositCharge method and its dependencies * Converted tab to spaces * Removed EOL white space * Add documentation and automated tests * Fix compilation error * Add automated test * Update automated test * Removed temporary used galilean shift * Removed temporary used particle's push for Galilean PSATD * Removed unused statement * Remove EOL white space. * Added zero shift for LowerCorner in RZ geometry * Minor changes to Galilean implementation * Modifications for GPU * Fix typo Co-authored-by: Remi Lehe <remi.lehe@normalesup.org> [mini-PR] when a cufft error occurs, print a meaningful error message (#728) * added method to translate cufft errors * fixed style * bug fixing avoid duplicate tests and plot less often (#726) * avoid duplicate tests and plot less often * fix tests I broke when trying to save plotfiles doc install yt on Summit (#729) * doc install yt on Summit * eol Do not use local Redistribute for electrostatic solver (#731) Add Reset Random Seed Feature (#717) * Add ResetRandomSeed * Add doc * Modify and change location of the code. * Small fix * Try to fix an alert * Try to fix an alert * Modify based on suggestions * Use INT_MAX * Modify based on suggestions. * Modify based on suggestions. openPMD: warn if step is already written (#718) * making sure iterations are written at most once. * prints a warning when iteration is written more than once writting is not stopped * Fixed tabs * included <iostream> as requested by Axel Minor refactoring of space-charge calculation (#732) Improve clarity and documentation Minor Update GNUmakefile Update based on comments Update GNU Makefile Formatting Formatting Formatting Formatting Remove unneeded function Removed unneeded function Formatting Formatting Formatting Whitespace Minor Formatting Formatting Formatting Formatting Formatting Formatting Formatting whitespace Formatting Minor Formatting Remove unneeded template function Change import Minor Formatting Remove unused variable Formatting Update Source/WarpX.H Co-Authored-By: MaxThevenet <mthevenet@lbl.gov> Update Source/Parallelization/WarpXRegrid.cpp Co-Authored-By: MaxThevenet <mthevenet@lbl.gov> Remove `n_particles` and `n_cells` Update Source/WarpX.H Co-Authored-By: MaxThevenet <mthevenet@lbl.gov> Revert clear costs in case of edge case Update to use new load_balance_api in AMReX Tabs Minor * minor: indentation in Source/WarpX.H Co-authored-by: MaxThevenet <mthevenet@lbl.gov>
2020-03-02EvolveE: Update Includes (#761)Gravatar Axel Huebl 1-2/+3
Generalize includes to base path.
2020-02-28fixing bug in ckc (#760)Gravatar Revathi Jambunathan 1-10/+10
2020-02-28Avoid using namespace amrex in .H files (#754)Gravatar MaxThevenet 1-10/+14
* avoid using namespace amrex in .H files * need amrex prefix to function arguments * typo
2020-02-27Implement div(E) diagnostics for spectral case (#720)Gravatar Edoardo Zoni 5-11/+100
* Implement div(E) diagnostics for spectral case. * split travis tests in bigger matrix * split more TravisCI tests, add electrostatic, use defaults values * typo * Move computation of div(E) to base class SpectralBaseAlgorithm. * need to split psatd too * consistent variable names and use function to avoid duplication * fix typo for qed tests * typo * also need to update run_tests.sg * Update copyright tags. * change matrix * Add test of div(E) vs rho/epsilon_0 in PML test. * SpectralFieldIndex: reuse memory slot for Bx when computing divE. Co-authored-by: MaxThevenet <mthevenet@lbl.gov>
2020-02-26Use C++ templates in `EvolveE` function (#676)Gravatar Remi Lehe 8-437/+378
* Prepare EvolveE * Cartesian equations without current * Implement Cartesian EvolveE * Progress towards cylindrical solver * Correct typo * Implement cylindrical solver (without on-axis condition) * Fix compilation errors * Add regularization for RZ solver * Added correction term for F * Remove file for nodal stencil * Apply stylistic changes to EvolveE * Fix compilation errors * Correction to avoid out of bound * Remove references to old file * Correct bug in EvolveB * Implement correction on axis for Et * Remove previous field update functions * Remove unused code
2020-02-25Includes: Clean Up (#743)Gravatar Axel Huebl 22-64/+121
- Use `""` for WarpX-local includes - Order: WarpX `""`, AMReX `<>`, other third party includes `<>` - Add dir prefixes for WarpX Add order to includes by including from `Source/` onward and keeping directory prefixes of non-local includes for clarity.
2020-02-25FDTD: Real Literals and Formatting (#736)Gravatar Axel Huebl 4-149/+176
Clean up `amrex::Real` literals (aka "numbers"). This avoids calculating a line in double precision and casting it down to `Real` on assignment. Also fixes some formatting issues. (Commit credited to Remi.) Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja> Co-authored-by: Remi Lehe <remi.lehe@normalesup.org>
2020-02-24Profiler wrapper to allow for cudaDeviceSynchronize (#738)Gravatar MaxThevenet 5-29/+45
* add warpx profiler wrapper * call WX profiler wrapper instead of BL * EOL and cleaning * add doc on profile syncs * do not use PROFILE macros in .H files * replace WX_PROFILE with WARPX_PROFILE and use bool instead of int * typo * this file shouldn't be there
2020-02-20Minor refactoring of space-charge calculation (#732)Gravatar Remi Lehe 2-0/+333
2020-02-19[mini-PR] when a cufft error occurs, print a meaningful error message (#728)Gravatar Luca Fedeli 2-6/+55
* added method to translate cufft errors * fixed style * bug fixing
2020-02-18Galilean PSATD with shift (#704)Gravatar Olga Shapoval 11-16/+309
* Read Galilean velocity * Prepare structures for Galilean solver * Started implementing Galilean equations * Analytical limits for X1, X2, X3, X4 coefficients added * Slight changes added * Added Galilean position pusher * Scale galilean velocity * Remove unneeded Abort * Fix Galilean pusher * Allocate Theta2 array * Fix definition of coefficients * Increase guard cells for Galilean * Add guard cell in particle exchange * Type corrected * v_gal added to warpx_current_deposition * v_gal added to WarpXParticleContainer.H * Bug fixed - update particle x-position over one time step * Fix issues with merge from dev * Preparation for merging dev into galilean. * Adding galilean shift * Implemented galilean shift * Changed method's name from GalileanShift to ShiftGalileanBoundary * Added doxygen string for ShiftGalileanBoundary * Removed never used method LowerCornerWithCentering * Removed temporary comments * Removed dt as a variable from DepositCharge method and its dependencies * Converted tab to spaces * Removed EOL white space * Add documentation and automated tests * Fix compilation error * Add automated test * Update automated test * Removed temporary used galilean shift * Removed temporary used particle's push for Galilean PSATD * Removed unused statement * Remove EOL white space. * Added zero shift for LowerCorner in RZ geometry * Minor changes to Galilean implementation * Modifications for GPU * Fix typo Co-authored-by: Remi Lehe <remi.lehe@normalesup.org>
2020-02-15Xi precision (#719)Gravatar MaxThevenet 2-101/+101
* replace xi by xi*c*c, which can be represented by single precision * replace xi with xi*c*c in QED kernel * typo * Update Source/FieldSolver/WarpX_QED_K.H Co-Authored-By: Axel Huebl <axel.huebl@plasma.ninja> * add bunch of _rt * typo, didn't compile in 2d * Apply suggestions from code review Control parameter name update. Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
2020-02-11Merge branch 'dev' into templated_fdtd_solverGravatar Remi Lehe 4-2/+511
2020-02-07Merge pull request #687 from EZoni/build-buffer-masksGravatar MaxThevenet 3-3/+0
Fortran to C++: build buffer masks