There is a newer version of the record available.

Published September 1, 2021 | Version v21.09
Software Open

Hi-PACE/hipace: v21.09

  • 1. Deutsches Elektronen-Synchrotron, previously LBNL
  • 2. Deutsches Elektronen-Synchrotron
  • 3. LBNL, previously HZDR
  • 4. Lawrence Berkeley National Laboratory

Description

This is the first official release of HiPACE++.

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++

Files

Hi-PACE/hipace-v21.09.zip

Files (290.8 kB)

Name Size Download all
md5:ad4457605e435527770ec557a9f8ad58
290.8 kB Preview Download

Additional details

Related works