aboutsummaryrefslogtreecommitdiff
path: root/Source/FieldSolver (follow)
AgeCommit message (Collapse)AuthorFilesLines
2020-09-24RZ spectral current correction and Galilean (#1216)Gravatar David Grote 11-37/+574
* 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) * Impemented current correction in RZ spectral * Implementation Galilean version of RZ spectral solver * For RZ spectral, do forward and backward transform with current correction * Big fix in DivEFunctor.cpp for RZ spectral * Added RZ rho diagnostic for saving the modes * Implemented fft_periodic_single_box for RZ spectral * Moved routines from SpectralSolverRZ.H to .cpp * Added hook for VayDeposition in GalileanPsatdAlgorithmRZ * Bug fix in DivEFunctor * Fixes and cleanup for GalileanPsatdAlgorithmRZ * Fix line spacing in SpectralSolverRZ.H * Fix factor 1/2 in update of Ep_m * Fix factor 1/2 in update of Em_m * Fix sign error in current correction in GalileanPsatdAlgorithmRZ.cpp Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> * Add Langmuir RZ PSATD test with current correction * Add Galilean tests with/without current correction * For RZ psatd, simplified copy for forward transform * Added GalileanPsatdAlgorithmRZ.cpp to CMakeLists * Minor cleanup in RZ spectral solver * In GalileanPsatdAlgorithmRZ.cpp use member initialization for m_v_galilean Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> * Added some _rt to GalileanPsatdAlgorithmRZ.cpp Co-authored-by: Olga Shapoval <30510597+oshapoval@users.noreply.github.com> Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> Co-authored-by: Edoardo Zoni <ezoni@lbl.gov>
2020-09-23[mini-PR] Fix a couple of warnings (#1372)Gravatar Luca Fedeli 1-4/+4
* removed extra ; * fixed unused variable * changed variable name to avoid shadowing * fixed bug
2020-09-23Implemented fft_periodic_single_box for RZ spectral (#1301)Gravatar Remi Lehe 6-97/+97
* Implemented fft_periodic_single_box for RZ spectral For RZ psatd, simplified copy for forward transform * Apply review's suggestions and clean up * Add few comments, fix warnings, apply style conventions Co-authored-by: Dave Grote <dpgrote@lbl.gov> Co-authored-by: Edoardo Zoni <ezoni@lbl.gov>
2020-09-22Initial version of use_damp_fields_in_z_guard option (#1304)Gravatar David Grote 1-0/+88
* Initial version of use_damp_in_z_guard option * Fix typo in WarpX.H Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> * Changed use_damp_in_z_guard to use_damp_fields_in_z_guard * Added documentatin for use_damp_fields_in_z_guard * Clean up for use_damp_fields_in_z_guard * Added use_damp_fields_in_z_guard to picmi interface, and moved it to the psatd input group * For RZ spectral, damping of the fields is on by default when not periodic * Updated documentation for use_damp_fields_in_z_guard Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
2020-09-18fix warnings in RZ (#1349)Gravatar Luca Fedeli 10-16/+38
2020-09-17Fix few compilation warnings (shift) (#1310)Gravatar Luca Fedeli 1-1/+0
* fix << declaration of galilean_shift shadows a member of WarpX >> * fix << unused mu_stag >> * fix << unused uxp, uyp, uzp >> * renamed galilean_shift (member variable of WarpX class) into m_galilean_shift * renamed v_galilean to m_v_galilean when appropriate * fixed bug introduced in latest commit * fix <<comparison of integer expressions of different signedness>> * Update Source/FieldSolver/FiniteDifferenceSolver/MacroscopicEvolveE.cpp Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja> Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
2020-09-14Remove The_Managed_Arena (#1313)Gravatar WeiqunZhang 2-6/+6
* Remove the base class of InjectorPoisition, InjectorDensity and InjectorMomentum so that they no longer live in managed memory. * Have both host and device copies of Injector*. * Modify Parser classes so that they can work without unified memory. Add HostDeviceParser that is non-owning and therefore suitable for being value captured by device lambda.
2020-09-14Clean up profiling labels (#1320)Gravatar Edoardo Zoni 1-2/+2
2020-09-10SpectralSolverRZ.H: Move Implementations to Source File (#1290)Gravatar Remi Lehe 2-38/+74
* Moved routines from SpectralSolverRZ.H to .cpp * Correct missing Vay deposition routine * Apply suggestions from code review Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja> * Apply suggestions from code review * Apply suggestions from code review Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> Co-authored-by: Dave Grote <dpgrote@lbl.gov> Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja> Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
2020-09-09Variation of macroscopic properties for E-update (#1016)Gravatar Revathi Jambunathan 8-85/+461
* 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 * MultiFab macroproperties with constant init, templated macroEvolveE, * call macroparameter init * eol fix * add parser for macroscopic properties * fix eol * adding input file * __device__ lambda cannot be private in class * fix grown tilebox declaration for init data * [skip ci] some more merge conflicts * some comments * removing redundant calls to Macroscopic EvolveE * [skip ci] fix growntilebox for initializing macro mf * clean and fix BackwardEuler call for ckc * commenting out old alpha and beta implementations * temporarily commiting local changes with calls in Interp. * fixing a typo * clean and add documentation * remove the test input file * fix typo * eol fix * Update Docs/source/running_cpp/parameters.rst Co-authored-by: Andy Nonaka <AJNonaka@lbl.gov> * PR suggestions * Update Source/FieldSolver/WarpXPushFieldsEM.cpp Co-authored-by: Andy Nonaka <AJNonaka@lbl.gov> * removing unnecessary includes * adding 2D initialization for stag arrays * removing init_style input parameter for material properties * eol fix * Adding dE/dt eq curl of (B/mu) * PhysConst ep0 and mu0 * Add functor for field access for macro and vacuum (B/mu) * fix eol * Update Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/FieldAccessorFunctors.H Co-authored-by: Remi Lehe <remi.lehe@normalesup.org> * Apply suggestions from code review Co-authored-by: Remi Lehe <remi.lehe@normalesup.org> * Update Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H Co-authored-by: Remi Lehe <remi.lehe@normalesup.org> * Apply suggestions from code review Co-authored-by: Remi Lehe <remi.lehe@normalesup.org> * fixing compilation errors and removing Gpu ManagedVector Co-authored-by: Andy Nonaka <AJNonaka@lbl.gov> Co-authored-by: Remi Lehe <remi.lehe@normalesup.org>
2020-09-03Fix some warnings in RZ spectral solver (#1286)Gravatar Remi Lehe 2-13/+13
* Fix some warnings in RZ spectral solver * enum: re-add ; Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
2020-09-03Remove ManagedVector from finite-difference solver (#1269)Gravatar WeiqunZhang 6-21/+51
2020-09-03fix implicit capture of this in lambda function (#1282)Gravatar Luca Fedeli 1-1/+2
2020-09-01Remove ManagedVector from spectral solver (#1270)Gravatar WeiqunZhang 8-104/+131
2020-09-01 Fix 🩹(almost) all warnings ⚠️ with default configuration in 2D ↵Gravatar Luca Fedeli 1-0/+3
(DIM=2, openMP+MPI, double precision, no advanced solvers, no QED, native output) (#1264) Depends on #1263
2020-08-31Fix 🩹 (almost) all warnings ⚠️ with default configuration (DIM=3, ↵Gravatar Luca Fedeli 2-1/+6
openMP+MPI, double precision, no advanced solvers, no QED, native output) (#1263) This PR should fix almost all the compilation warnings in the default configuration (DIM=3, openMP+MPI, double precision, no advanced solvers, no QED, native output...). Or at least it does that on my system (my compiler is `g++ (Ubuntu 9.3.0-10ubuntu2) 9.3.0` ). I have just two residual warnings: ### 1 ``` [ 89%] Building CXX object CMakeFiles/WarpX.dir/Source/Parser/wp_parser.lex.cpp.o wp_parser.lex.c:1356:17: warning: ‘void yyunput(int, char*)’ defined but not used [-Wunused-function] ``` I don't know if `yyunput(int, char*)` is there for a reason, even if it is not used. So I didn't do anything. ### 2 ``` [ 96%] Building CXX object CMakeFiles/WarpX.dir/Source/Utils/CoarsenIO.cpp.o /home/luca/Projects/warpx_dir/WarpX/Source/Particles/WarpXParticleContainer.cpp: In member function ‘void WarpXParticleContainer::AddNParticles(int, int, const ParticleReal*, const ParticleReal*, const ParticleReal*, const ParticleReal*, const ParticleReal*, const ParticleReal*, int, const ParticleReal*, int, int)’: /home/luca/Projects/warpx_dir/WarpX/Source/Particles/WarpXParticleContainer.cpp:102:44: warning: unused parameter ‘nattr’ [-Wunused-parameter] 102 | int nattr, const ParticleReal* attr, int uniqueparticles, int id) ``` The first line of `AddNParticles` is `BL_ASSERT(nattr == 1); //! @fixme nattr is unused below: false sense of safety` . So I thought that there might be something to fix here and I didn't do anything.
2020-08-31Add copyright headers when missing (#1262)Gravatar MaxThevenet 3-0/+21
This PR adds a copyright header when missing in some files.
2020-08-24Fix some warnings (#1239)Gravatar Luca Fedeli 12-36/+76
This PR fixes the source of several compilation warnings. Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
2020-08-17Bug fix for RZ PSATD backwards transform for GPU (#1247)Gravatar David Grote 1-1/+1
2020-08-13Fix RZ PSATD backward transform for icomp > 0 (#1246)Gravatar David Grote 1-4/+3
2020-08-06Galilean PSATD: current correction and rho-free formulation (#1151)Gravatar Edoardo Zoni 14-164/+458
* Introduce option to update E with/without rho * Clean up * Implement current correction for Galilean PSATD (needs bug fix) * Include equations in docs * Fix EOL whitespaces error * Small clean-up * Implement Galilean PSATD update without rho * Clean up * Fix bug in current correction * Fix EOL whitespaces * Clean up * Fix unused import * Remove unused variable * [skip CI] Improve docs * Clean up style * Fix EOL whitespaces * Fix EOL whitespaces * Clean up style * Revert analysis script to old status * [skip CI] Clean up style * Make equations more human-readable and improve comments * 2D test with current correction works * Temporary build fix as in #1197 * 3D test with current correction works * Rename th and th_star as theta and theta_star * Fix a couple of wrong comments * Add vertical spaces to improve readability * Improve documentation * Function CurrentCorrection is now pure * 2D benchmark fields data are now correct * Add limits of coefficients for nu=-1 * Change default of update_with_rho for Galilean PSATD
2020-08-03Fix bug in imaginary part of divE (#1233)Gravatar Edoardo Zoni 1-1/+1
2020-07-27Added k-space filter for RZ spectral solver (#1006)Gravatar David Grote 11-5/+217
* Added k-space filter for RZ spectral solver * Added SpectralBinomialFilter files for RZ spectral solver * Added RZspectral binomial filter to CMakeLists.txt * Update Docs/source/running_cpp/parameters.rst Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> * Update Docs/source/running_cpp/parameters.rst Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> * Update Source/FieldSolver/SpectralSolver/SpectralBinomialFilter.H Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> * Update Source/FieldSolver/SpectralSolver/SpectralBinomialFilter.cpp Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> * Update Source/FieldSolver/SpectralSolver/SpectralFieldDataRZ.H Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> * Fixed literals in SpectralBinomialFilter.cpp * For RZ spectral, apply filter to rho old and new * Added SpectralBinomialFilter::InitFilterArray * For SpectralBinomialFilter, combine R and Z into one routine Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> * For SpectralBinomialFilter, combine R and Z into one routine, part 2 Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> * For SpectralBinomialFilter, combine R and Z into one routine, part 3 Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
2020-07-24Fix -Wextra-semi (#1207)Gravatar Axel Huebl 4-19/+19
Remove unnecessary semicolons (fix compiler warnings).
2020-07-22Cleaner calculation of the simulation timestep (#1031)Gravatar Remi Lehe 4-0/+82
* Cleaner calculation of the simulation timestep * Fix compilation errors * Remove specification of CKC solver in PSATD test * Correct calculation of dt * Fix compilation error * Cleaner calculation of the simulation timestep * Fix compilation errors * Remove specification of CKC solver in PSATD test * Correct calculation of dt * Fix compilation error * Cleanup for cylindrical * Change input of automated tests to preserve previous results * Fix import statement for cylindrical * Preserve dt for PML test * Move function documentation to WarpX.H * Update CMakeList * Update CFL in some tests * Apply suggestions from code review Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja> * Fix compilation errors * Revert "Fix compilation errors" This reverts commit 56ef67f228269b266876629f49789d3afdbbc00b. * Fix compilation error * Add cmath headers Add directly used header files. * Fix Include Order Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
2020-07-20Vay current deposition (#1051)Gravatar Edoardo Zoni 16-12/+245
* Added stub for current correction in RZ spectral solver * Start implementation of Vay deposition * Continue implementation of Vay deposition * Correct deposition of D * Add phase shift for staggered currents * Small clean-up * Fix units in deposition of D * Implement average of cumulative sum (needs bug fix) * Start fixing bug in average of cumulative sum * Still debugging * Cumulative sums should be correct now * Subtract averages of cumulative sums: - current implementation: cumulative sums, inverse Fourier transform, subtraction of averages - needs to be tested (including units of D after Vay deposition) - needs to be shortened (too many loops over boxes and ParallelFors) * [skip CI] Clean up and fix units * Still fixing units * [skip CI] Remove temporarily averages of cumulative sums * [skip CI] Remove distinction between staggered and nodal * Vay and Esirkepov similar results on periodic single box: TODO: - debug (charge not conserved); - try using compute_shifted_shape_factor as in Esirkepov deposition; - clean up; - try on multiple boxes and with correction of mode at 0 frequency. * [skip CI] Clean up * Fix bug in 3D deposition * [skip CI] Clean up * Fix 2D and 3D implementation: - simulation results agree between direct and Vay deposition in both 2D and 3D - Travis CI tests should pass except for check of charge conservation (debug) * Small clean-up * Fix bug when compiling in RZ geometry * Add benchmark json files (will be reset later) * Do not set zero current at zero frequency * [skip CI] Revert last commit and clean up * Fix small bug after reverting commit * Set nodal test first on Travis * Fix benchmark for nodal test in 3D * Fix particle output for nodal test in 3D * Fix bugs due to staggering * Rename current nodal Travis tests * Add Travis tests staggered in 2D and 3D * Further clean-up after bug fix * Abort when using Vay deposition with domain decomposition * Add optional argument of index type to forward FFT * Fourier shifts can be private members as before * Small clean-up * Clean up and improve Doxygen documentation * Fix small bug in analysis script for 2D tests * Fix tests (remove E and B fields from particle diags) * Add option to fill guard cells and docs * Fix value of last guard cell by enforcing periodicity * Revert changes merged from #1121 * Clean up style * Improve docs * Fix forgotten alignment * Improve docs * Make base class functions VayDeposition pure Co-authored-by: Dave Grote <dpgrote@lbl.gov>
2020-07-17Fixing compiler warnings (#1178)Gravatar Olga Shapoval 1-13/+2
* Removed unused variables and made 'vy=v_galilean[1]' declaration conditional on 3D case (this fixes compiler warnings) * Avoid unnecessary conversion from 'double' to 'int' (this fixes compiler warnings)
2020-07-17For RZ, fix the deposition near the axis (#1072)Gravatar David Grote 1-17/+16
* For RZ, fix the deposition near the axis * Updated LaserAccelerationRZ checksum The change was expected since the code changes modified the charge and current density near the axis. * Updated LaserAccelerationRZ checksum The change was expected since the code changes modified the charge and current density near the axis. * Update benchmark Co-authored-by: Remi Lehe <remi.lehe@normalesup.org>
2020-07-15Add support for infinite-order PSATD (#1169)Gravatar danielbelkin 1-49/+65
* Set k_modified = k for inf order * Add support for nox = inf in input file * Added infinite-order to documentation * Add back in accidentally-removed line * End-of-line whitespaces? * End-of-line whitespaces. * Remove vspace Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> * Remove vspace Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> * Add whitespace Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> * Remove unnecessary line Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> * Whitespace Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> * Remove whitespace * Clarify error message Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> * ...whitespace Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
2020-07-14Fix bug in RZ PSATD rho terms (#1172)Gravatar David Grote 1-2/+2
2020-07-14make fft_do_time_averaging a member of class WarpX (#1165)Gravatar MaxThevenet 3-8/+5
2020-07-10Fix compilation of AvgGalilean for GPU (#1159)Gravatar Remi Lehe 2-2/+18
2020-07-08Averaged Galilean PSATD (#869)Gravatar Olga Shapoval 9-18/+456
* 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 * Added modifications for PICSAR galilean branch * Averaged coefficients added * 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 * Averaged fileds allocated on fine patch (Ex) * Preparation for merging dev into galilean. * remove TABs by hand * Removed a tab. * Redeclared v_galilean as a vector & related changed * Added an automated test * Moved v_galilean inside WarpX constructor * Added analysis script for the automated test * Changed name of the automated test to galilean_psatd * Added InitializeSpectralCoefficients method * Removed temporary comments * Averaged fields added to FiledGather * Added infinite order k[i] * Setting kx_mod( kz_mod) = 0 for index = nx/2(-nz/2) * 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 * Changing type of v_galilean from amrex::Vector to amrex::Array * Changed back ng_fft to be equal nox_fft * Changed v_galilean's type from amrex::vector to amrex::array * Removed type * Removed temporary comments * Added flag 'do_time_averaging' to swith from unaveraged to averaged Galilean PSATD * Updated doxygen * Small fix on using 'do_time_averaging' flag * Remove some commented Print statements * [skip ci] Further cleanup * Fix compilation * Guard cells update of the averaged E,B fields * Corrected included header file accordingly * Removed EOL * Removed EOL * Corrected path of the included header file * Updated choice of the spectral solver. * Cleanup. * use amrex::exp instead of std::exp * no backward FFT for avg fields if avg is off * Need to shift avg fields in MoveWindow * Further cleaning * Added 2D automated test for averaged PSATD * Added automated 2D and 3D tests for averaged PSATD * Removed comments * Added specifications for averaged Galilean PSATD tests. * Bug fixed - do FillBoundary of the averaged fields only if averaged is activated * Do shiftMF of the averaged fields only if fft_do_time_averaging=true * Add checksum json benchmarks for averaged Galilean PSATD * Add missing indentation * Add missing indentation * Updated automated analysis script * Updated diags period * Fixed bug: no backtransform of the averaged fields when WARPX_DIM_RZ is set * Fixed an uninitialized variable * Clean-up * Changed permissions for analysis_avg_*d.py * Compactified variables initialization via conditional assignment * Initialized averaged E_avg, B_avg fields * Updated automated test for 2D averaged galilean PSATD * Updated benchmark for 2D averaged galilean PSATD * Updated automated 2D averaged PSATD test & benchmark * Updated automated 3D averaged PSATD test & benchmark * Fixed typo * Updated benchmark averaged_galilean_3d_psatd * Initialize the averaged fields only if the averaged Galilean PSATD algorithm is enabled * Encreased time step for automated 3D averaged Galilean PSATD (to be equal c*dt=dz while dz/dx=3) * Updated 3D automated test: specified standard deviations `.ux_th, .uy_th, .uz_th` along each direction * Typo from the previous commit: enabled the averaged algorithm * Trying out another input parameters for 3D averaged automated test with v_gal = v_plasma * Update benchmark for previously added 3D averaged automated test * Update 2D averaged automated test and corresponding benchmark * Revert "Updated diags period" This reverts commit 7334729b05e96589e020c981efdb430ca095991d. * Cleanup: removed unwanted comment. * Added descriptions of the 2D and 3D automated tests for the averaged Galilean PSATD. * Updated value calculated via standard Galilean PSATD. * Encreased relative error tolerance for 3D automated test for the averaged Galilean PSATD. * Removed to avoid duplication since it already specified in the corresponding 2D/3D input scripts. * Removed unwanted empty lines * Added spaces after function's names * Removed unwanted empty line * Removed * Fixed indentation * Cleanup: removed #include <math.h> * Cleanup: removed empty lines and fixed indentation * Added 'AvgGalileanAlgorithm.cpp' to 'CMakeLists.txt' Co-authored-by: Remi Lehe <remi.lehe@normalesup.org> Co-authored-by: MaxThevenet <mthevenet@lbl.gov>
2020-07-06PSATD: add option to update E without using rho (#1128)Gravatar Edoardo Zoni 4-53/+87
* Introduce option to update E with/without rho * Clean up * Include equations in docs * Fix EOL whitespaces error * Small clean-up * Clean up
2020-07-02PSATD: current correction works only with global FFTs (#1131)Gravatar Edoardo Zoni 1-9/+9
* Clean up implementation of current correction: - abort when current correction runs with psatd.periodic_single_box_fft=0 - rename input parameter from psatd.do_current_correction to psatd.current_correction - add nodal tests in 2D and 3D (using direct current deposition) - change 2D test: use Esirkepov deposition, instead of direct, as in 3D test - add/update relevant checksum benchmarks * Small clean-up
2020-06-12Add CMake Scripts (#759)Gravatar Axel Huebl 7-5/+82
* [skip travis] CMake: Add CMake Scripts This add CMake scripts for the CMake build system generator. * CUDA Support Achieved Fastest compile via: cmake .. -DENABLE_CUDA=ON -DCUDA_ARCH=6.0 * CMake: openPMD & QED * CMake: Dimension Support WarpX_DIMS=2,3,RZ * CCache & Out-of-Source Enable CCache when found and prevent in-root builds (in-source okay-ish). * CMake: CUDA C++ Language Minimum * Add new Files * CI: Migrate macOS to CMake * Fortran: Enable Because Transitive ... for now :) * CI: Migrate Linux ICC to CMake * CI: Verbose Make * CMake: Add Missing PSATD Sources * CMake: PSATD, Compute, Precision, Clean
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