Skip to content

v21.09

Compare
Choose a tag to compare
@MaxThevenet MaxThevenet released this 01 Sep 11:45
· 469 commits to development since this release
2c35214

DOI

This is the first official HiPACE++ release.

Dependencies

AMReX: release 21.08
openPMD-api: releases 0.12.0-0.14.*

List of PRs

git log | grep -A 3 "Author: " | grep -B 1 "\-\-" | sed '/--/d' | sed -e 's/^    /- /'

(in the future, one can use git log 21.09.. | grep -A 3 "Author: " | grep -B 1 "\-\-" | sed '/--/d' | sed -e 's/^ /- /')

  • version 21.09

  • openPMD-api: 0.14.2 (#585)

  • interpolate rho and psi at the boundaries (#572)

  • print precision in output (#581)

  • proper bin policy for tile sort (#577)

  • use _rt in GetDomainLev (#579)

  • Fix offset of interpolation and use second order interpolation in x and y (#570)

  • fix transverse size of IO for level 1 (#569)

  • Fix handling of tiling and GPU (#576)

  • OpenMP handling (#575)

  • Particle tiling and OpenMP threading (#551)

  • change test number of cells to be a multiple of 8... (#571)

  • fix slice IO for MR (#568)

  • use correct longitudinal index in InterpolateBoundaries (#567)

  • Mesh refinement: fix MR on GPUs (#564)

  • enforceBC works for all levels (#566)

  • remove unused parameters (#560)

  • CMake: Warn Unknown Build Type (#563)

  • Fix: CUDA Host-Side -O3 with CMake (#562)

  • Add a few beam profiles (#558)

  • Field Interpolation (#557)

  • [mini] document compile option -DAMReX_LINEAR_SOLVERS (#559)

  • CMake: FFTW Search w/ CMake Install (#553)

  • add seed to write_beam.py (#555)

  • initialize the plasma on the correct level (#554)

  • Mesh refinement: enable level 1 to be longitudinally a different size than level 0 (#546)

  • [mini] add missing/errorenous CMake in build description (#549)

  • add OpenMP support for transverse and longitudinal derivative (#545)

  • Unify forward and backward dst plans to save GPU memory (#537)

  • Automatically use small DST for large Resolutions (#548)

  • add OpenMP to CI tests (#547)

  • New Discrete Sine Transformation (#534)

  • Mesh refinement: fix parallel runs (#544)

  • Add OpenMP for FFTW (#541)

  • rescale weight of beam in normalized units (#543)

  • ccache now on the JSC Juwels Booster (#539)

  • FFTW: CMakeConfig Support (Windows, OpenMP) (#540)

  • fix includes (#533)

  • pass vector of geometries to field solve functions (#536)

  • fix a few style warnings on AMD (#535)

  • clean loop over levels (#531)

  • Mesh refinement: first working field solve on level 1 (#530)

  • Mesh refinement: fix boxarray (#529)

  • Mesh refinement: multiple Poisson solvers (#527)

  • Mesh refinement: Adding IO (#526)

  • remove unused parameters (#525)

  • we dont seem to need Fields::m_F anymore (#524)

  • first preparation to enable multiple levels (#523)

  • when odd number of cells, no need to average to get slice io (#521)

  • CMake 3.20+ and CUDA: Modernized AMReX (#522)

  • Update RNG (#520)

  • switch assert to >0 density in adaptive time step (#518)

  • Add atomic mass table for Plasmas (#510)

  • Add beam selection for IO (#514)

  • [mini] Sphinx: fix link in typo (#516)

  • initialize m_adaptive_density (#515)

  • move Diagnostic class from Fields to Hipace class (#513)

  • add Adios2 support (#508)

  • add proton element for convenience (#507)

  • [sphinx] add links and logos to package managers (#506)

  • Add possibility to input multiple beams at once (#502)

  • [mini] clearer naming of direction (#501)

  • Renaming to HiPACE++ (#505)

  • conversion to normalized units for explicit solver (#499)

  • remove hardcoded lev calls (#503)

  • enable multiple boxes per rank (#493)

  • add the possibility to have different species of beams (#492)

  • remove deprecated comment (#500)

  • Fix mass calculation for Dalton (#497)

  • fix typo (#498)

  • fix typo in execution command (#495)

  • fix typos in readme (#491)

  • [mini] add documentation badge (#490)

  • add doc for juwels and maxwell (#489)

  • change names from WarpX to Hipace++ (#485)

  • Add get_started example (#488)

  • add subcycling for beams (#487)

  • introduce subheaddings (#486)

  • Last changes for going open-source (#484)

  • Add Cl test for Beam input from_file (#479)

  • communicate physical time (#482)

  • add second flush for beam IO (#480)

  • assert no ion motion with explicit solver (#477)

  • assert explicit isn't used with SI (#478)

  • clean a few compilation warning (#481)

  • updating a few parameters in the sphinx documentation (#473)

  • option to not compile the MG solver (#476)

  • parallelization for beam deposition in next slice (#458)

  • clean up input parameters for bxby solver (#475)

  • adding more parameters to the sphinx documentation (#471)

  • [mini] comply with convention for variable parameter names (#470)

  • Add Plasma Ionization using ADK Model (#456)

  • fix transverse beam currents for explicit solver (#468)

  • Fix explicit solver (#459)

  • CI test for hosing and ion motion (#466)

  • add hollow core plasma profile (#463)

  • change parabolic profile from channel_radius to parabolic_curvature (#464)

  • cuFFTUtils: Add Missing Include (#461)

  • minor update of available input parameters (#460)

  • fix sign of psi (#455)

  • remove wrong assert (#454)

  • Fix shift in time between fields and beam in IO (#453)

  • deposit jx and jy of the beam on the next slice (#451)

  • Limit number of significant digits in checksums (#444)

  • Use previous slice as MG initial guess for explicit solver (#450)

  • store MG solver to initialize it only once, to improve performance (#449)

  • Replace predictor-corrector by analytic integration and multigrid solve (#437)

  • Call OpenPMDWriter::InitDiagnostics() only if they are actually written (#447)

  • Add correlated energy spread (#446)

  • Remove option to dump to plotfiles (#445)

  • add the possibility to have a parabolic plasma profile (#415)

  • openPMD: clean up 'injection_type = restart' and add SI units to beam output (#423)

  • adding ion motion (#439)

  • must pass charge and mass by reference (#438)

  • set default for skip empty comms to false (#436)

  • Enable multiple plasma species (#432)

  • change assert in predictor corrector loop to Warning (#435)

  • Stop communicating if only empty boxes downstream (#434)

  • Print Version (#433)

  • last rank needs to resize to remove particles from previous time step (#426)

  • Fix b field error calculation (#430)

  • add option to not deposit Jx and Jy of the beam (#431)

  • add additional diagnostics for the predictor corrector loop (#427)

  • CMake: Update AMReX Particle Precision (#425)

  • remove deprecated parameter (#422)

  • remove configure_mpiexec from cmake (#421)

  • AMReX: Skip AMRLEVEL (#403)

  • Add licensing files in preparation of open-source release (#419)

  • [WIP] New pipeline (#407)

  • Constant accelerating field (#372)

  • Add a paragraph on wandpic in the tex file (#354)

  • #190 Performance changes to linear_wake analysis (#348)

  • only write important field data to file (#346)

  • renaming to the correctly describing name peak_current_density (#350)

  • only run CI on development (#352)

  • Adding possibility to write current directly to grid (#349)

  • adding profiling for SolveOneSlice() (#343)

  • CMake: Quick, Local Dependencies (#347)

  • openPMD: restart simulation and multiple Beams (#325)

  • fix bug by using std::abs instead of abs (#340)

  • Transverse beam redistribute (#339)

  • assert that the number of cells doesn't overflow int (#342)

  • only init openPMD data if outputperiod > 0 (#326)

  • Remove redundant which_slice from plasma particle advance (#328)

  • add helpful error message, if user specifies output_period=0 (#327)

  • Doc: update tex file with the algorithm description (#323)

  • send beam particle information only at initialization (#322)

  • [SCALING TEST] Only allocate required field components in each slice (#320)

  • Readin from HiPACE-C files improved + conversion script (#315)

  • openPMD-api: new CMake Control (tests) (#312)

  • Optimize packing and unpacking particles to pinned memory buffers. (#308)

  • README: openPMD-api Install (#313)

  • removing namespace io (#311)

  • checksum.py: unused import "re" (#310)

  • openPMD: 0.13.1 (#309)

  • Reset plasma particle weight to the initial value (#302)

  • fix compiler warning for compiling without openPMD (#303)

  • Make openPMD default, including for CI (#291)

  • Encapsulate field IO, first step to multiple slice IO (#300)

  • fix #ifdef OPENPMD to get rid of compiler warnings (#299)

  • add ifdef AMREX_USE_MPI around communication functions (#298)

  • Fix non-blocking communication for adaptive time step (#296)

  • cleaning of the openPMD beam write PR (#294)

  • [mini] Clean compiler warnings (#293)

  • checksum tests: abstract the backend, to enable either openPMD or yt (#292)

  • Remove the option slice_beam: it is ALWAYS true (#289)

  • openPMD: read input beam from HDF5 file (#285)

  • Fixing momentum for openPMD I/O (#286)

  • Sending info for adaptive time step via nonblocking communication (#282)

  • openPMD: cleaning (#281)

  • fixing typo in notify finish (#280)

  • openPMD default Path: as in WarpX (#278)

  • openPMD: write beam data (#277)

  • Use HDF5 File to input Beam with openPMD (#276)

  • [WIP] openPMD: Collective Open & Group Based (#274)

  • openPMD: Guard Output, Avoid 2x Copy (#275)

  • [openPMD] Communication of upstream beam particle number (#269)

  • openPMD: Rebased Handle fields with Guards (#272)

  • revert collective open (#273)

  • openPMD: Collective Open & Group Based (#270)

  • [mini] option to disable z push of beam particles (#268)

  • CMake: Update GPU Backend Vars (#267)

  • Add missing Device::synchronize() calls to Wait() and Notify(). (#266)

  • openPMD output (fields) (#265)

  • fixing index error in DST (#264)

  • Accelerating CI (#263)

  • Fix a classic implicit capture of *this bug (#262)

  • Longitudinal particle exchanges (#261)

  • also send the ion charge density inn pipeline (#259)

  • Fix bug in which plasma particles were not being initialized on the right proc. (#258)

  • typo in doc (#256)

  • openPMD: Doc Quote & Version (#254)

  • Adding openPMD support (#252)

  • Full domain transversally for slice IO to avoid losing particles (#253)

  • Clean 'using namespace amrex;' (#250)

  • Longitudinally parallelized adaptive time step (#247)

  • fixing order of AMReX includes (#251)

  • fix typo in the example Jupyter notebook (#249)

  • Capability to have multiple beams (#246)

  • store a correct time step in output files (#248)

  • Move a few files in a utils directory (#245)

  • F needs guard cells when beam deposits on the 3d grid (#244)

  • Adding tilted beam (#243)

  • CI for adaptive timestep (#242)

  • Adding an adaptive time step (#241)

  • Const weight Gaussian beam based on density input (#235)

  • adding a few general parameters to sphinx documentation (#237)

  • [mini] Assert for slice beam for slice IO (#236)

  • using DeviceVector instead of ManagedVector for beam and plasma particle init (#233)

  • Fix parallelization (except for plasma particles) (#230)

  • Adding breathe to sphinx documentation (#229)

  • A few bugfixes for longitudinal parallelization for beam particles. (#228)

  • Gaussian beam with fixed weight (#220)

  • fix slice averaging and clean up its IC (#225)

  • adding printout for QSA violating particles (#222)

  • fixing an important error in the longitudinal plasma velocity (#224)

  • Node-center slice IO so it is at the domain center (#221)

  • quick fix to make the external field work on GPU (#219)

  • Sphinx documentation (#217)

  • Implementation of the beam pusher (#202)

  • add a visualization notebook with all useful basic operations (#218)

  • IO slice defined on slice geom, to output a 2d array (#215)

  • option to NOT dump plasma particles (#216)

  • reset particlecontainer dm and ba (#199)

  • Fixing bug with initialization of arrays (#213)

  • Coarsen beam injection box (#211)

  • Only define slice box if needed (#212)

  • Fix redistribute and handling of particles which violate the QSA (#207)

  • Slice diagnostics (#206)

  • add doxygen documentation for beam slice deposition (#203)

  • CMake: New AMReX Options (#204)

  • CI: CUDA Update (#205)

  • check for predictor corrector loop divergence only if B field error tolerance > 0 (#201)

  • Selfmade redistribute to avoid high memory shifting (#200)

  • remove pedantic semicolumn (#196)

  • 3D array has no guard cell (#195)

  • Handling of plasma particles violating the quasi-static approximation (#193)

  • add virtual destructor to abstract class (#191)

  • adding the possibility of a finite radius plasma column (#192)

  • fixed-ppc Gaussian beam (#189)

  • Move slice solve to a separate function (#187)

  • replace hipace.do_plot with more flexible hipace.output_period (#184)

  • Turn off serial tests to spare CI time (#183)

  • Bash: Exit Earl on Error (+Pipes) (#178)

  • oops, forgot one renaming (#182)

  • Fix a number of naming inconsistencies in CI and examples (#181)

  • forget about assert_exit, python assert work well (#179)

  • LWFA Analysis: Fix Typo (#180)

  • Adding CI test in the blowout regime and removing now redundant can_beam test (#174)

  • Fix SI (#170)

  • fixing CI tests not triggering (#171)

  • [mini] adding CI test for a linear wake vs theory (#167)

  • Fix SI Poisson solver for transverse fields (#169)

  • Reset all quantities at the beginning of each time step (#168)

  • Reformat poisson (#164)

  • Add option to call Gpu::Synchronize around profiler region (#160)

  • proper number of grid points in the error calculation (#161)

  • Correct ion charge deposition (#156)

  • Fixing bug with particles being pushed to the next slice (#159)

  • Minor Cleaning in the plasma current deposition + addition of safe guards (#155)

  • [mini] Improving host-device performance by removing redundant copy call (#151)

  • push/pop the transverse communicator only once in the loop over slices (#150)

  • Minor cleaning, in particular fix the order of includes in 1 file. (#149)

  • Renaming slices to WhichSilce::Next, This, Previous1, Previous2 (#148)

  • Moving class FFTPoissonSolver and all field-only related functions from class Hipace to Fields (#147)

  • Consistent naming for pseudo-potential on plasma particles (#140)

  • Add option to put the 3D array in pinned memory so it stays on the host (#143)

  • Wrap BL_PROFILE into HIPACE_PROFILE for more control (#139)

  • Improved predictor corrector loop (#138)

  • Option to deposit beam charge and current in the slice MultiFab (#132)

  • Predictor-corrector loop to compute transverse magnetic fields (#133)

  • Fix crash when no plasma is specified (#131)

  • Solve fields Ex-By, Ey+Bx, Ez, and Bz (#129)

  • Plasma particle pusher (#125)

  • enabling coefficient and add for TransvereDerivative (#121)

  • fix sign error in Poisson solver, and adapt CI scripts (they missed that :/) (#126)

  • Deposit ion charge (#128)

  • add some _rt and remove parallel test from script to reset benchmarks (#127)

  • Deposit beam density (#120)

  • CI: Doxygen Builds (#118)

  • add WarpX Copyright header for file taken from WarpX (#117)

  • Add .editorconfig file (#119)

  • Deposit plasma density (#112)

  • Turn off OpenMP by default, and improve benchmark reset script (#114)

  • Improve checksums (#113)

  • space between function name and bracket for declaration and definition (#111)

  • Update plasma force terms (#108)

  • Create pull_request_template.md

  • Implementation of the first part of the actual plasma particle pusher (field gathering) (#101)

  • add option to get given field of given level (#102)

  • fix units and typo in current deposition (#99)

  • Fix order 0 deposition (#98)

  • Physical plasma current deposition + read-in of particle momentum as vector (#95)

  • fix typo in CMake compilation flag (#94)

  • typo: remove extra character (#92)

  • Doxygen-readable docstring in all .H file (#91)

  • only run CI on PR, not on push (#89)

  • Modified input and input_normalized to allow for a comparison. Added … (#73)

  • Add style checks, stolen from WarpX (#87)

  • Reformat CI, add checksum, and make beam_in_vacuum smaller (#85)

  • add 1 checksum regression test. Others should be copied from there (#84)

  • Add automated test that compares with theory (#79)

  • renamed the plasma pseudo potential to psi (#82)

  • CMake: openPMD Suffix

  • Move examples to subfolder (#67)

  • CMake: RelWithDebInfo -O3 (#71)

  • option to not have IO (#65)

  • Expose plasma species options to the input file (#64)

  • space before bracket for function definition/declaration (#63)

  • Instrument the main functions (#62)

  • Current deposition for plasma particles (#61)

  • compute Bx (#59)

  • clean includes and current deposition (#58)

  • Enable normalized units (#57)

  • support various deposition order

  • Add test for By field in vacuum with can beam (#56)

  • set val to 0 at the beginning of each step (#55)

  • do NGP deposition (#53)

  • Initialize a can beam (#52)

  • Cleanup: remove extra ;

  • use amrex::Math::floor instead of floor for DPC++ (#51)

  • Change AMREX_USE_GPU to AMREX_USE_CUDA (#50)

  • Assertions and minor changes in FFT solver. Reduce the size of slice BoxArray. (#48)

  • CMake: DPC++, OMP Def., Binary Names (#47)

  • Cleaning in the FFT solver (#46)

  • CMake: MPI, Asserts and Advanced AMReX (#44)

  • field communication in longitude direction (#43)

  • Update CI Badge: macOS deactivated

  • Update CI Badge: development

  • CMake: Compute Backend & Precision (#42)

  • Loop over slices. Tranverse FillBoundary for j and By. (#41)

  • add two subcommunicators (#39)

  • FFTW: stress again not needed with CUDA

  • Update README: Dependencies/Options

  • Current: GPU (#38)

  • Missing CMake 3.17 CUDA Feature Guard (#36)

  • Loop over slices and call Poisson solver! (#35)

  • CMake: -lcufft (#37)

  • list optimizations we kept for later (#32)

  • Clean duplicate utilities Constants and Direction::z (#34)

  • Copy data between the full and slice MultiFab. Shift data in slices. (#33)

  • FFT poisson solver (#28)

  • Add a direction enum struct (#31)

  • set up slice ba and dm (#29)

  • Add function to compute transverse derivative function (#26)

  • adjust field components (#30)

  • Docs: pkg-config for FFTW/CMake

  • FFTW: Only Needed in non-CUDA (#27)

  • Remove options for multiple dimensions in FFT (#24)

  • Fix indexing error in particle initialization (#25)

  • Readme: Document Dependencies

  • CI: FFTW3 (Serial)

  • first attempt to include FFT in Hipace (#23)

  • remove extra ;

  • [WIP] Current deposition (#21)

  • Readme: cleanup

  • Readme: Formatting

  • Doc: Debug Mode

  • CMake: CUDA C++ Language Minimum

  • Readme: Details AMReX External

  • CMake: CCache (#22)

  • AMReX: Clean-Up Options

  • syntax fix in readme

  • CUDACXX

  • Add CUDAHOSTCXX

  • CMake Build Dirs: Advanced Options

  • add array of multifabs for 2D slices (#19)

  • Add physical constants (#20)

  • CMake: Guard in-Source builds

  • Init Plasma Particles (#18)

  • make sure the domain is decomposed only in z-direction (#17)

  • Disable compilation of linear solvers (#16)

  • CMake: Cleanup Include

  • EOL

  • Correct minor typos (#15)

  • Add document with the equations of HiPACE

  • macOS: move disabled

  • macOS CI: empty job list

  • CI: Reduce for now

  • Doc & CI: OpenMP (#14)

  • CI: Linux & macOS (#13)

  • Default Build Type: RelWithDebInfo (#12)

  • Same constant again

  • CUDA: Fix Compile (constexpr)

  • CMake: CUDA Support (Var Scope)

  • CMake: Finish Cleaning (#11)

  • Single Arg Constructors: Explicit (#10)

  • readme file explains how to run simulation and plot the results

  • also have plasma particles in the simulation

  • add plotting script, to show results after running simulation

  • fix merge conflits

  • remove multi particle containers, for simplicity

  • Fix Warnings: ;s and Init (#9)

  • gitignore: typical IDE dirs (#8)

  • Merge pull request #7 from Hi-PACE/topic-cmakeFunctions

  • give the particles positive ids

  • fix unitialized variable warning

  • set max_step by default

  • make sure constructor for the plasma particle container gets called

  • fix some warnings

  • CMake: Functions, 1 & 2 Ranks

  • add beam particles in the simulation. Particle IO still not readable

  • Merge branch 'master' of https://github.com/Hi-PACE/hipace

  • fix bug in multifab allocation

  • Merge pull request #6 from Hi-PACE/topic-amrexSystemIncludes

  • add field diagnostics and evolve

  • AMReX: System Includes

  • fixes so it compiles

  • Merge branch 'master' of https://github.com/Hi-PACE/hipace

  • Initialize field data

  • fix compilation of multi pc stuff

  • multi plasma particle container

  • typo

  • Merge branch 'master' of github.com:Hi-PACE/hipace

  • add the multi beam particle container

  • set up the subdirectories in cmake

  • finish spack env reactivate

  • brew: mpi

  • ignore *~

  • Merge branch 'master' of https://github.com/Hi-PACE/hipace

  • add example

  • Readme: Set CC & CXX

  • Hipace derives from AmrCore

  • field class

  • Merge pull request #5 from Hi-PACE/particle_containers

  • Adjust Include Dirs: src/

  • Merge pull request #4 from Hi-PACE/main

  • add main function and hipace clss

  • hook up the particle containers to the build system

  • Merge branch 'master' into particle_containers

  • check in stubs for beam and particle container classes

  • Merge pull request #3 from Hi-PACE/topic-noFortran

  • AMReX: no Fortran in CMake

  • Merge pull request #2 from Hi-PACE/topic-cmake

  • Add CMake structure & Docs

  • Merge pull request #1 from Hi-PACE/topic-gitignore

  • Add .gitignore for C++