Skip to content

Commit

Permalink
Merge dev aug26 (#34)
Browse files Browse the repository at this point in the history
* Rename: Optical Depths QED (#2140)

This is renaming the runtime added optical depth scalars for QED
physics just to create the same names in plotfile and openPMD output.

* CI: Any yt works (#2066)

Did not intent to commit that into mainline.

* CI: Add Missing Python Analysis for EB Test (#2147)

* CI: Add Missing Python Analysis for EB Test

* Use 1 MPI Process for Azure

* a few _rt (#2146)

* PSATD: div Cleaning Implemented only with psatd.J_linear_in_time=1 (#2142)

* BTD: Don't Flush If Written (#2148)

Written BTD buffers for lab snapshot data are reset to zero size
(count). When we do the final write of all partly filled buffers
in `FilterComputePackFlushLastTimestep`, we should not write such
already completed backtransformed lab snapshots again.

* openPMD: `groupBased` Option Missing (#2149)

The `groupBased` iteration encoding (input: `g`) was not parsed.

* Remove predefined constants from example input files (#2153)

* BTD_ReducedSliceDiag: BTD Plotfiles (#2152)

By accident, the 2nd test did not use plotfile output.

* Allow extra particle attributes (besides ux, uy, uz and w) to be set at particle creation in AddNParticles() (#2115)

* exposes AddRealComp to Python to allow extra particle attributes to be added at runtime; also includes a new function to grab a particle data array from the name of the component rather than the index

* added functionality to AddNParticles() to allow extra particle attributes to also be set during particle creation

* added function to get index of a particle component given the PID name

* changed new get component index and get_particle_arrays_from_comp_name functions to take species name as argument rather than species id

* changed warpx_addRealComp to accept a species name as input and only add the new component for that species

* added a test of the pywarpx bridge to get particle data and add new particle attributes at runtime

* changed all particle interacting functions in libwarpx to use the species name rather than id, also changed the functions to get particle array data to use the component name rather than index

* updated test according to PR #2119 changes

* removed unneeded BL_ASSERT(nattr == 1) statement

* fixed bug in add_particles to correctly determine the number of extra attributes

* fixed bug in AddNParticles if fewer attribute values are passed than the number of extra arrays for the species

* use isinstance(attr, ndarray) rather than type(attr) is np.ndarray

* generalize_runtime_comps_io

* fix OpenPMD

* fix OpenPMD

* fix plot flags in WritePlotFile

* fix offset and comment

* changed extra pid test to not use an underscore in the pid name

* switched _libwarpx.py::add_particles to use kwargs to accept the weight and extra attribute arrays

* License update in test file

Co-authored-by: Axel Huebl <[email protected]>

* fix typo

* added a test with unique_particles=False

* Apply suggestions from code review

Co-authored-by: Axel Huebl <[email protected]>

* updated docstring and comments

Co-authored-by: atmyers <[email protected]>
Co-authored-by: Axel Huebl <[email protected]>

* Add predefined density profile to parameters documentation (#2155)

* Release 21.08 (#2158)

* AMReX/PICSAR: 21.08
* WarpX: 21.08

* initialize guard cells for macroscopic properties (#2159)

* openPMD: Style Cleaning (Dec/Def) (#2160)

In our code base, definitions and declarations of functions need a
space after their name. This makes them easy to search for.

Ref.:
  https://warpx.readthedocs.io/en/21.08/developers/contributing.html#style-and-conventions

* openPMD: Use Steps if != BTD (#2157)

* openPMD: Use Steps if != BTD

For all but back-transformed diagnostics, we can use efficient,
temporally sequentially increasing writes to iteration numbers
for iterations.

This allows us to give a guarantee to HPC I/O libraries on how
to arrange data, e.g., we can use ADIOS2 BeginStep() and
EndStep().

This enables paths to:
- streaming workflows, such as ADIOS2 SST or SSC, where we stage data
  over the network instead of using files
  https://openpmd-api.readthedocs.io/en/0.14.0/usage/streaming.html

This mitigates:
- host-side memory aggregation for ADIOS2 with openPMD `groupBased`
  iteration encoding
  https://openpmd-api.readthedocs.io/en/0.14.0/backends/adios2.html#memory-usage

* openPMD: Open Iterations Explicitly

Explicitly open iterations. Usually, file-open operations are delayed
until the first load/storeChunk operation is flush-ed. In parallel
contexts where we might want to do only particle writes from a few
ranks but no field wries in the future, this will avoid that we run
into hangs from the non-collective nature of the first flush.

The Streaming API (i.e., Series::writeIterations()) will call this
method implicitly as well, but back-transformed diags (particles)
might still need this.

* openPMD: 0.13.0+

Needed for streaming API and collective open.

* openPMD: Missing Include (#2162)

Fix compile issue on Conda-Forge (Windows with Clang).

* PEC Analysis: Remove Unused Imports (#2165)

Fix a LGTM warning on unused imports in our PEC analysis scripts.

* BinaryCollision: use more general particle data structure (#2137)

* Added B field to plasma lens (#2163)

* Added B field to plasma lens

* Fix B field and updated CI test to include the B field

* Updated benchmark

* Fixed bug where specifying write_dir for particle diagnostic did not work (#2167)

* Add particle weight as an explicit argument for _libwarpx.py::add_particles() (#2161)

* added particle weight as an explicit argument for _libwarpx.py::add_particles()

* changes requested during code review

* RZ PSATD: Time Averaging for Multi-J Algorithm (#2141)

* RZ PSATD: Time Averaging for Multi-J Algorithm

* Fix Wrong Signs in Bm

* Use Time Averaging in CI Test, Update Benchmark

* Minor Fix

* Shift parsing of physical/mathematical constants from hard-coding to table lookup (#2128)

* Shift parsing of physical/mathematical constants from hard-coding to table lookup
* Make constants map local and static for now, until there's a reason for it to be accessible/modifiable
* Accept rewording
* Accept rewording

Co-authored-by: Axel Huebl <[email protected]>

* Moved some routines to .cpp file (#2168)

* In add_particles, used None for input parameter values (#2169)

* More cleanup of particle boundaries (#2171)

* Moved some routines to .cpp file

* Moved more stuff to a header file

* make parameter less prone to numerical issues in single precision (#2173)

* ES Solver: Fix SP Build (#2174)

Fix HIP:
```
/home/runner/work/WarpX/WarpX/Source/FieldSolver/ElectrostaticSolver.cpp:434:9: error: non-constant-expression cannot be narrowed from type 'double' to 'float' in initializer list [-Wc++11-narrowing]
        1.-beta[0]*beta[0], 1.-beta[1]*beta[1], 1.-beta[2]*beta[2])});
        ^~~~~~~~~~~~~~~~~~
/home/runner/work/WarpX/WarpX/build_sp/_deps/fetchedamrex-src/Src/Base/AMReX_SPACE.H:151:31: note: expanded from macro 'AMREX_D_DECL'
                              ^
/home/runner/work/WarpX/WarpX/Source/FieldSolver/ElectrostaticSolver.cpp:434:9: note: insert an explicit cast to silence this issue
        1.-beta[0]*beta[0], 1.-beta[1]*beta[1], 1.-beta[2]*beta[2])});
        ^~~~~~~~~~~~~~~~~~
```

* EB: RZ Warnings (#2176)

Not an implementation yet, just adding aborts and silencing warnings.

* fix typo (#2175)

* Fix: Performance Tests (Boundary) (#2178)

The performance tests were aborting since we changed the boundary
condition inputs last month. This fixes it.

* CI: Cover Performance Tests (#2179)

* CI: Cover Performance Tests

Make sure their syntax stays up-to-date.

* Performance Test in CI: Fake Output

Add "fake" output so we do not have unused variables when the tests
are run.

* AMReX/PICSAR: Weekly Update (#2184)

Weekly update to latest AMReX.
No changes in PICSAR.

* Updated documentation for the plasma lens (#2182)

* Updated documentation for the plasma lens
* Use math formatting for B
* Use math formatting for E

Co-authored-by: Axel Huebl <[email protected]>

* [mini-PR] Radiation Reaction : fix issue in single precision (#2186)

* fix issue in single precision

* Work-Around: ROCm/rocFFT <=4.3.0 (#2180)

C++ template typedefs do not work in `extern C` blocks.
This work-arounds this construct:
  https://github.com/ROCmSoftwarePlatform/rocFFT/blob/rocm-4.3.0/library/include/rocfft.h#L36-L42

This is fixed in the post 4.3.0 rocFFT `develop` branch already.

Fixes build errors of the kind:
```
AnyFFT.H:15:
In file included from /opt/rocm-4.1.0/hip/../include/rocfft.h:38:
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../include/c++/7/cstddef:69:21: error: explicit specialization of undeclared template struct '__byte_operand'
  template<> struct __byte_operand<bool> { using __type = byte; };
```

* Docs: Turner Example Calibration Data (#2185)

* Docs: Turner Example Calibration Data

Add a note how to get the additional cross-section data for the
user-facing capacitive discharge example.

* Remove EOL whitespaces

* Fix GetIteration (#2189)

- use after free: returned a reference to a local
- use copy elision to return a new iteration object

* For plasma lens, mapped particle to lab frame (#2190)

* For plasma lens, mapped particle to lab frame

* Updated documentation for plasma lens

* WarpX::Version: Not Empty (#2193)

Make sure we do not return an empty string in `WarpX::Version()`. In some situations, e.g., in CI/run_test.sh, the macro for the `WARPX_GIT_VERSION` version in GNUmake is set but empty.
`
Since empty versions are problematic for HDF5 attributes and confusing anyway, we return a proper `"Unknown"` in such a situation now, too.

Detected as bug in #2150
X-ref:
- openPMD/openPMD-api#1087
- openPMD/openPMD-api#979

* Implemented new style BTD in picmi (#2187)

* Implemented new style BTD in picmi

* Added rho_species. Added documentation

* Docs: Fix Cori URL (404) (#2194)

* Fixed issue where GPU runs would continually print 're-sorting particles' even with verbose turned off (#2197)

* Docs: Summit Ascent Moved (#2195)

Raider is now Twix.

* AMReX/PICSAR: Weekly Update (#2199)

Weekly update to latest AMReX.
No changes in PICSAR.

* do_pml should not be parsed anymore. (#2183)

* do_pml not parsed. remove code that was added to support both types of boundary interface

* add paranthesis

* fix eol and move to BackwardCompatibility

* missing semicolon

* Update Source/WarpX.cpp

* clean input files in examples

* delete do_pml in performance test input

* fixing an example input file in docs

* Update Source/WarpX.cpp

Co-authored-by: Axel Huebl <[email protected]>

* cleaning up docs

* Update Docs/source/usage/parameters.rst

* fix eol

Co-authored-by: Axel Huebl <[email protected]>

* Multi-J (Hybrid): Fix Bug with Current Centering (#2181)

* Use less guard cells in ParallelCopy of refined level's UpdateAuxilaryData (#2144)

* Use less guard cells in ParallelCopy of refined level's UpdateAuxilaryData
* Update Source/Parallelization/WarpXComm.cpp
* Add inline comments and use explicit type for ng_src

Co-authored-by: Edoardo Zoni <[email protected]>

* Update Scripts: .ini file (#2191)

Update regression tester .ini files as well in weekly/release
updates of AMReX and PICSAR.

* Minor fix to the documentation of the plasma lens (#2200)

* CI: Cancel Prev. GH Action on Push (#2202)

Save CI resources by canceling already running or waiting builds
if a PR is updated.

This was previously only done for Azure and now also for GH actions.

* openPMD-api: 0.14.2 (#2150)

This updates our requirements to openPMD-api 0.14.2+

Among others, this release introduced resizable data sets, which we
will soon use for particle backtransformed diagnostics.

* update use-sensei flag (#2192)

* update use-sensei flag
also add FlushFormatSensei.cpp to CMakeLists

* CMake: WarpX SENSEI Option

Co-authored-by: Axel Huebl <[email protected]>

* Rho Diags: Do Not Allocate `rho_fp/cp`, Remove `plot_rho`, `setplot_rho` (#2203)

* Bug fixed: looping over all species now within `OneStep_multiJ` (#2207)

* Bug fixed: looping over all species now within 'OneStep_multij'

* Bug fixed: looping over all laser particles within DepositCharge in multi-J

* Implemented the parsing of integer input parameters (#2138)

* Implemented the integer parser

* Updated comment

* Updated documentation

* Fixed unused parameters

* Added some additional documentation

* Reworked the implementation so that expressions are evaluated as real and rounded to the nearest integer

* Fixed loop type

* Copied over initial value of variable to the real instance

* Update Source/Utils/WarpXUtil.cpp

make result const

* Update Source/Utils/WarpXUtil.cpp

make result const

* Update Source/Utils/WarpXUtil.cpp

Fix comment

* Added safeCastToInt

* Fixed adding of safeCastToInt

* Cleaned up safe casting routine

* Added parsing of more integer inputs

* Cleaned up the integer parser, removing unneeded cast from int to real

* Made x a const in safeCastToInt

Co-authored-by: Neïl Zaim <[email protected]>
Co-authored-by: Axel Huebl <[email protected]>

* Ionization.H: Fix Bug (Division by Zero) (#2214)

* Add plot_raw_rho in parameters doc (#2212)

* add plot_raw_rho in parameters doc

* Update Docs/source/usage/parameters.rst

Co-authored-by: Luca Fedeli <[email protected]>

Co-authored-by: Luca Fedeli <[email protected]>

* Docs: Summit with RHEL8 (#2216)

Summit has undergone a major software update to RHEL8.
The default compilers and CUDA version have been modernized, among
others providing C++17 support by default.

Also, our scientific I/O stack is now system-provided, thanks to our
Spack and E4S efforts 🎉

Please update your `warpx.profile` on Summit, re-build your Python
virtual environment and re-compile your executables.

* Improved error handling when the libwarpx shared object library can't be loaded (#2215)

* Improved error handling when the libwarpx shared library can't be loaded

* Removed extra newline

* Improved check and ended program on error

* Particle boundary scrape (#2124)

* Some prelimary refactoring.

* missing header

* implement scraping particles that leave the domain boundaries into buffers

* fix tabs

* missing return

* merging

* remove redefinition

* functor to work around cuda bug.

* handle 2D

* Add support for EB buffer

* protect for AMREX_USE_EB, static_assert that EB and RZ aren't both on.

* fix unused

* add inputs file

* add test

* fix bugs, remove print

* fix test

* fix test path.

* remove no-op code

* adding clear particles method

* attempt at adding time stamp

* Use integer step number instead of physical time to timestamp particles; also put shared code into named functor.

* move call to before apply boundary conditions

* use more descriptive inputs parameter

* Update Source/Particles/ParticleBoundaryBuffer.cpp

* fix comp bug

* move CopyAndTimestamp to cpp file

* also move IsOutsideProblemDomain functor

* Rename to m_particle_boundary_buffer

- Name: currently only used for boundary scraping
- Singular: only one instance

* Fix missing EOF newline

* Typo: author

* Param Read / Init: Cleanup For

Simplify

Co-authored-by: Roelof Groenewald <[email protected]>
Co-authored-by: Axel Huebl <[email protected]>

* Updated the installation instructions (#2218)

* Docs: OLCF ADIOS2 Currently Broken

Tickets open:
- OLCFHELP-3319
- ornladios/ADIOS2#2836

* Allow Silver-Mueller boundary conditions to only be applied in certain directions (#2220)

* Apply Silver-Mueller boundary only in requested direction

* Include a test with independent Silver-Mueller boundary conditions

* Correct typo in implementation

* Added transform of fields from lab to boosted frame (#2201)

* Evolve: Reorder py_afterstep and cur_time break (#2213)

* Docs: Cori PICMI Instructions (#2219)

* Docs: Cori PICMI Instructions

Too tricky to get right to just cross-link - add documentation how to
build & run PICMI interfaces on Cori.

* Link: Jupyter Instructions

* No particle resorting when no species (#2136)

* default sort interval for particles if there are not species

* declare parmparse

Co-authored-by: Edoardo Zoni <[email protected]>

* fix eol

* define and set sort_interval default to -1 and then reset them to 4 for GPU, -1 for CPU if there are species/lasers in the input

Co-authored-by: Edoardo Zoni <[email protected]>

* AMReX/PICSAR: Weekly Update (#2222)

Weekly update to latest AMReX.
No changes in PICSAR.

* Scalar field interpolator from grid to particle position (#2221)

* refactored distance to EB calculation to have a more general function to interpolate from a scalar field on the grid to a given position

* changed RZ error message to general interpolation function

* changed function names to specify that scalar field interpolation is for a nodal field only

* Check for unused WarpX environment variables when compiling (#2208)

* Added check for unused 'WarpX' environment variables

* Changed the approach of this

- Go through environment variables as they are used to set cmake flags, and then
  check any remaining if they start with warpx.

* Improved the warning message

Co-authored-by: Axel Huebl <[email protected]>

* Ascent/SENSEI: Add Profiler (#2204)

* Ascent/SENSEI: Add Profiler

Add overall write profilers to Ascent & SENSEI.
Add detailed profile for sub-operaions (blueprint, publish, execute)
to Ascent as well.

* Simplify One-Time Profiler Vars

* Enable restart with PSATD (#1367)

* Enable restart with PSATD

* Add new restart test

* Add new input file

* New CI Test: Fix Inputs, Fix Analysis Script

* Reuse input for Restart with FDTD

* Read time_of_last_gal_shift from Checkpoint

* Upload Benchmark for restart_psatd

* Update Benchmark for restart_psatd

Co-authored-by: Edoardo Zoni <[email protected]>

* Use the function `SyncRho` and the array `rho_fp` in the Electrostatic solver (#1811)

* Use `SyncRho` in Electrostatic solver

* Reuse rho_fp arrays

* Allocate arrays for rho

* Fix unused variable

* Fix bug in rho deposition

* Only use rho_fp in lab-frame Poisson solver

* Update test cases

* Incorporate PR comments

* Avoid an NaN in collision module (#2225)

* Update inputs_3d

* Update inputs_2d

* Update inputs_2d

* Update inputs_3d

* fix nan

* Docs: Fix Summit Python (#2227)

We cannot use an anaconda base package, since anaconda ships its
own libstdc++ for its compiler stack, which is not compatible
with our compiler choice.

* WarpXComm.cpp: Fix Bug (Uninitialized MultiFabs) (#2230)

* Alphabetized and added PR to glossary (#2228)

* Fix: Missing Include Guards (FWD) (#2226)

* Fix: Missing Include Guards (FWD)

All header files need include guards to avoid double definitons.

* Fix copy-paste guard

* Avoid Unnecessary FFTs of rho (#2234)

* rearranging the loops (#2231)

* GetPosition 2D3V: y=0 (#2233)

In 2D3V, we currently assigned the y position a signaling NaN in
`GetPosition`, so that it cannot be used accidentially in functions.

When we call parser functions, this value is copied even if it is not
used, raising the signaling NaN.

Rethinking the strategy, we can write more general inputs files if
we instead write a sensible default for `y` in 2D3V: `y=0`. So this
PR changes the default, which also fixes the issue.

* Multi-J: Optimize Allocations of rho MultiFabs (#2224)

* OneStep_multiJ: Always Deposit rho in Component 0

* For Multi-J Algo Allocate only 1 Component

Co-authored-by: Remi Lehe <[email protected]>

* Fix SENSEI & Ascent component in AMReX.cmake (#2235)

* fix sensei component name in AMReX.cmake

* CMake: Fix Ascent/Conduit Component

Co-authored-by: Axel Huebl <[email protected]>

* Update AMReX: Parser, SENSEI (#2236)

Update AMReX to pull in new changes about:
- local variables in the parser are not reported as
  undefined
- SENSEI fixes on AMRLevel (now truly opt-in)

Co-authored-by: Axel Huebl <[email protected]>
Co-authored-by: Edoardo Zoni <[email protected]>
Co-authored-by: MaxThevenet <[email protected]>
Co-authored-by: Neïl Zaim <[email protected]>
Co-authored-by: Roelof Groenewald <[email protected]>
Co-authored-by: atmyers <[email protected]>
Co-authored-by: David Grote <[email protected]>
Co-authored-by: Kevin Z. Zhu <[email protected]>
Co-authored-by: Phil Miller <[email protected]>
Co-authored-by: Luca Fedeli <[email protected]>
Co-authored-by: Remi Lehe <[email protected]>
Co-authored-by: Corey Wetterer-Nelson <[email protected]>
Co-authored-by: Olga Shapoval <[email protected]>
Co-authored-by: Luca Fedeli <[email protected]>
Co-authored-by: Michael Kieburtz <[email protected]>
Co-authored-by: Andrew Myers <[email protected]>
Co-authored-by: Peter Scherpelz <[email protected]>
Co-authored-by: Edoardo Zoni <[email protected]>
Co-authored-by: Yinjian Zhao <[email protected]>
Co-authored-by: Tiberius Rheaume <[email protected]>
Co-authored-by: Lorenzo Giacomel <[email protected]>
  • Loading branch information
22 people authored Aug 26, 2021
1 parent 0b03a3f commit 695316a
Show file tree
Hide file tree
Showing 147 changed files with 2,499 additions and 926 deletions.
2 changes: 1 addition & 1 deletion .azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ jobs:
sudo curl -L -o /usr/local/bin/cmake-easyinstall https://git.io/JvLxY
sudo chmod a+x /usr/local/bin/cmake-easyinstall
if [ "${WARPX_CI_OPENPMD:-FALSE}" == "TRUE" ]; then
cmake-easyinstall --prefix=/usr/local git+https://github.com/openPMD/openPMD-api.git@0.13.2 \
cmake-easyinstall --prefix=/usr/local git+https://github.com/openPMD/openPMD-api.git@0.14.2 \
-DopenPMD_USE_PYTHON=OFF -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF -DBUILD_CLI_TOOLS=OFF
python -m pip install --upgrade openpmd-api
fi
Expand Down
6 changes: 5 additions & 1 deletion .github/workflows/cuda.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@ name: 🐧 CUDA

on: [push, pull_request]

concurrency:
group: ${{ github.head_ref }}-cuda
cancel-in-progress: true

jobs:
# Ref.:
# https://gitlab.com/nvidia/container-images/cuda/-/blob/master/dist/ubuntu18.04/10.1/base/Dockerfile
Expand All @@ -17,7 +21,7 @@ jobs:
run: |
.github/workflows/dependencies/nvcc11.sh
export CEI_SUDO="sudo"
cmake-easyinstall --prefix=/usr/local git+https://github.com/openPMD/openPMD-api.git@0.13.2 -DopenPMD_USE_PYTHON=OFF -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF -DBUILD_CLI_TOOLS=OFF
cmake-easyinstall --prefix=/usr/local git+https://github.com/openPMD/openPMD-api.git@0.14.2 -DopenPMD_USE_PYTHON=OFF -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF -DBUILD_CLI_TOOLS=OFF
- name: build WarpX
run: |
export PATH=/usr/local/nvidia/bin:/usr/local/cuda/bin:${PATH}
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/hip.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@ name: 🐧 HIP

on: [push, pull_request]

concurrency:
group: ${{ github.head_ref }}-hip
cancel-in-progress: true

jobs:
build_hip:
name: HIP SP
Expand Down
6 changes: 5 additions & 1 deletion .github/workflows/intel.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@ name: 🐧 Intel

on: [push, pull_request]

concurrency:
group: ${{ github.head_ref }}-intel
cancel-in-progress: true

jobs:
# Ref.: https://github.com/rscohn2/oneapi-ci
# intel-basekit intel-hpckit are too large in size
Expand All @@ -26,7 +30,7 @@ jobs:
sudo curl -L -o /usr/local/bin/cmake-easyinstall https://git.io/JvLxY
sudo chmod a+x /usr/local/bin/cmake-easyinstall
export CEI_SUDO="sudo"
CXX=$(which icpc) CC=$(which icc) cmake-easyinstall --prefix=/usr/local git+https://github.com/openPMD/openPMD-api.git@0.13.2 -DopenPMD_USE_PYTHON=OFF -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF -DBUILD_CLI_TOOLS=OFF
CXX=$(which icpc) CC=$(which icc) cmake-easyinstall --prefix=/usr/local git+https://github.com/openPMD/openPMD-api.git@0.14.2 -DopenPMD_USE_PYTHON=OFF -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF -DBUILD_CLI_TOOLS=OFF
- name: build WarpX
run: |
set +e
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@ name: 🍏 macOS

on: [push, pull_request]

concurrency:
group: ${{ github.head_ref }}-macos
cancel-in-progress: true

jobs:
build_gcc9:
name: AppleClang
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/source.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ name: 📜 Source

on: [push, pull_request]

concurrency:
group: ${{ github.head_ref }}-source
cancel-in-progress: true

jobs:
style:

Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/ubuntu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@ name: 🐧 OpenMP

on: [push, pull_request]

concurrency:
group: ${{ github.head_ref }}-ubuntu
cancel-in-progress: true

jobs:
build_cxxminimal:
name: GCC Minimal w/o MPI
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@ name: 🪟 Windows

on: [push, pull_request]

concurrency:
group: ${{ github.head_ref }}-windows
cancel-in-progress: true

jobs:
build_win_msvc:
name: MSVC C++17 w/o MPI
Expand Down
2 changes: 1 addition & 1 deletion .lgtm.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright 2019 Axel Huebl
# Copyright 2019-2021 Axel Huebl
#
# This file is part of WarpX.
#
Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,10 @@ option(WarpX_LIB "Build WarpX as a shared library" OFF)
option(WarpX_MPI "Multi-node support (message-passing)" ON)
option(WarpX_OPENPMD "openPMD I/O (HDF5, ADIOS)" OFF)
option(WarpX_PSATD "spectral solver support" OFF)
option(WarpX_SENSEI "SENSEI in situ diagnostics" OFF)
option(WarpX_QED "QED support (requires PICSAR)" ON)
option(WarpX_QED_TABLE_GEN "QED table generation (requires PICSAR and Boost)" OFF)
option(WarpX_MAG_LLG "LLG for magnetization modeling" ON)
# TODO: sensei, legacy hdf5?

set(WarpX_DIMS_VALUES 2 3 RZ)
set(WarpX_DIMS 3 CACHE STRING "Simulation dimensionality (2/3/RZ)")
Expand Down
38 changes: 19 additions & 19 deletions Docs/Doxyfile
Original file line number Diff line number Diff line change
Expand Up @@ -792,7 +792,7 @@ WARN_LOGFILE =

INPUT = ../Source/ ../Tools/ ../Regression/Checksum/
RECURSIVE = YES

# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
Expand Down Expand Up @@ -2047,24 +2047,24 @@ INCLUDE_FILE_PATTERNS =
# recursively expanded use the := operator instead of the = operator.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.

PREDEFINED = AMREX_Linux=1 \
AMREX_PARTICLES=1 \
AMREX_USE_MPI=1 \
AMREX_USE_OMP=1 \
AMREX_SPACEDIM=3 \
AMREX_TINY_PROFILING=1 \
BL_Linux=1 \
BL_USE_MPI=1 \
BL_USE_OMP=1 \
BL_USE_SENSEI_INSITU=1 \
WARPX=1 \
WARPX_DIM_RZ=1 \
WARPX_DIM_XZ=1 \
WARPX_USE_GPU=1 \
WARPX_USE_OPENPMD=1 \
WARPX_USE_PSATD=1 \
WARPX_QED=1 \
WARPX_QED_TABLE_GEN=1 \
PREDEFINED = AMREX_Linux=1 \
AMREX_PARTICLES=1 \
AMREX_USE_MPI=1 \
AMREX_USE_OMP=1 \
AMREX_SPACEDIM=3 \
AMREX_TINY_PROFILING=1 \
BL_Linux=1 \
BL_USE_MPI=1 \
BL_USE_OMP=1 \
AMREX_USE_SENSEI_INSITU=1 \
WARPX=1 \
WARPX_DIM_RZ=1 \
WARPX_DIM_XZ=1 \
WARPX_USE_GPU=1 \
WARPX_USE_OPENPMD=1 \
WARPX_USE_PSATD=1 \
WARPX_QED=1 \
WARPX_QED_TABLE_GEN=1 \


# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
Expand Down
4 changes: 2 additions & 2 deletions Docs/source/dataanalysis/inputs.2d
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ insitu.int = 2
insitu.start = 0
insitu.config = ez2d.xml
geometry.coord_sys = 0 # 0: Cartesian
geometry.is_periodic = 0 0 # Is periodic?
boundary.field_lo = pml pml
boundary.field_hi = pml pml
geometry.prob_lo = -125.e-6 -149.e-6
geometry.prob_hi = 125.e-6 1.e-6
warpx.fine_tag_lo = -12.e-6 -110.e-6
Expand All @@ -29,7 +30,6 @@ algo.particle_pusher = 0
algo.particle_shape = 3
algo.maxwell_solver = ckc
warpx.use_filter = 1
warpx.do_pml = 1
warpx.pml_ncell = 10
warpx.cfl = .99
warpx.do_moving_window = 1
Expand Down
2 changes: 1 addition & 1 deletion Docs/source/dataanalysis/paraview.rst
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ openPMD
-------

WarpX' openPMD files can be visualized with ParaView 5.9+.
ParaView supports ADIOS1, ADIOS2 and HDF5 files, as it implements (liked WarpX) against `openPMD-api <https://github.com/openPMD/openPMD-api>`__.
ParaView supports ADIOS1, ADIOS2 and HDF5 files, as it implements (like WarpX) against `openPMD-api <https://github.com/openPMD/openPMD-api>`__.

For openPMD output, WarpX automatically creates an ``.pmd`` file per diagnostics, which can be opened with ParaView.

Expand Down
5 changes: 5 additions & 0 deletions Docs/source/developers/dimensionality.rst
Original file line number Diff line number Diff line change
Expand Up @@ -50,3 +50,8 @@ extra SoA attribute ``theta``
==================== =========== =========== ===========

Please see the following sections for particle AoS and SoA details.

Conventions
-----------

In 2D3V, we assume that the position of a particle in ``y`` is equal to ``0``.
4 changes: 2 additions & 2 deletions Docs/source/developers/gnumake/openpmd.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ therefore we recommend to use `spack <https://
spack.io>`__ in order to facilitate the installation.

More specifically, we recommend that you try installing the
`openPMD-api library 0.12.0a or newer <https://openpmd-api.readthedocs.io/en/0.12.0-alpha/>`_
`openPMD-api library 0.14.2 or newer <https://openpmd-api.readthedocs.io/en/0.14.2/>`_
using spack (first section below). If this fails, a back-up solution
is to install parallel HDF5 with spack, and then install the openPMD-api
library from source.
Expand Down Expand Up @@ -89,7 +89,7 @@ If optional dependencies are installed in non-system paths, one needs to `hint t
# optional: only if you manually installed HDF5 and/or ADIOS2 in custom directories
export HDF5_ROOT=$HOME/path_to_installed_software/hdf5-1.12.0/
export ADIOS2_ROOT=$HOME/path_to_installed_software/adios2-2.6.0/
export ADIOS2_ROOT=$HOME/path_to_installed_software/adios2-2.7.1/
Then, in the ``$HOME/warpx_directory/``, download and build openPMD-api:

Expand Down
5 changes: 3 additions & 2 deletions Docs/source/glossary.rst
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,14 @@ Abbreviations
* **NERSC:** `National Energy Research Scientific Computing Center <https://www.nersc.gov/>`__, a supercomputing center located in Berkeley, CA (USA)
* **NSF:** the `National Science Foundation <https://en.wikipedia.org/wiki/National_Science_Foundation>`__, a large public agency in the United States of America, supporting research and education
* **OLCF:** `Oak Ridge Leadership Computing Facility <https://www.olcf.ornl.gov/>`__, a supercomputing center located in Oak Ridge, TN (USA)
* **PDE:** `partial differential equation <https://en.wikipedia.org/wiki/Partial_differential_equation>`__, an equation which imposes relations between the various partial derivatives of a multivariable function
* **PIC:** :ref:`particle-in-cell <theory-pic>`, the method implemented in WarpX
* **PR:** github pull request
* **PSATD:** pseudo-spectral analytical time-domain method, a spectral field solver with better numerical properties than FDTD solvers
* **PWFA:** plasma-wakefield acceleration
* **PDE:** `partial differential equation <https://en.wikipedia.org/wiki/Partial_differential_equation>`__, an equation which imposes relations between the various partial derivatives of a multivariable function
* **RZ:** for the coordinate system ``r-z`` in cylindrical geometry; we use "RZ" when we refer to quasi-cylindrical geometry, decomposed in azimuthal modes (see details `here <https://fbpic.github.io/overview/pic_algorithm.html#cylindrical-grid-with-azimuthal-decomposition>`__)
* **QED:** `quantum electrodynamics <https://en.wikipedia.org/wiki/Quantum_electrodynamics>`__
* **RPA:** radiation-pressure acceleration (of protons/ions), e.g. hole-boring (HB) or light-sail (LS) acceleration
* **RZ:** for the coordinate system ``r-z`` in cylindrical geometry; we use "RZ" when we refer to quasi-cylindrical geometry, decomposed in azimuthal modes (see details `here <https://fbpic.github.io/overview/pic_algorithm.html#cylindrical-grid-with-azimuthal-decomposition>`__)
* **TNSA:** target-normal sheet acceleration (of protons/ions)

Terms
Expand Down
3 changes: 2 additions & 1 deletion Docs/source/install/cmake.rst
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ CMake Option Default & Values Descr
``WarpX_QED_TABLE_GEN`` ON/**OFF** QED table generation support (requires PICSAR and Boost)
``WarpX_MAG_LLG`` ON/**OFF** LLG module for modeling spin for magnetized materials if set to ``ON``
============================= ============================================ ========================================================
``WarpX_SENSEI`` ON/**OFF** SENSEI in situ visualization
============================= ============================================ =========================================================

WarpX can be configured in further detail with options from AMReX, which are `documented in the AMReX manual <https://amrex-codes.github.io/amrex/docs_html/BuildingAMReX.html#customization-options>`_.
Expand All @@ -108,7 +109,7 @@ CMake Option Default & Values Des
``WarpX_amrex_internal`` **ON**/OFF Needs a pre-installed AMReX library if set to ``OFF``
``WarpX_openpmd_src`` *None* Path to openPMD-api source directory (preferred if set)
``WarpX_openpmd_repo`` ``https://github.com/openPMD/openPMD-api.git`` Repository URI to pull and build openPMD-api from
``WarpX_openpmd_branch`` ``0.13.2`` Repository branch for ``WarpX_openpmd_repo``
``WarpX_openpmd_branch`` ``0.14.2`` Repository branch for ``WarpX_openpmd_repo``
``WarpX_openpmd_internal`` **ON**/OFF Needs a pre-installed openPMD-api library if set to ``OFF``
``WarpX_picsar_src`` *None* Path to PICSAR source directory (preferred if set)
``WarpX_picsar_repo`` ``https://github.com/ECP-WarpX/picsar.git`` Repository URI to pull and build PICSAR from
Expand Down
2 changes: 1 addition & 1 deletion Docs/source/install/dependencies.rst
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Optional dependencies include:
- `FFTW3 <http://www.fftw.org>`_: for spectral solver (PSATD) support
- `BLAS++ <https://bitbucket.org/icl/blaspp>`_ and `LAPACK++ <https://bitbucket.org/icl/lapackpp>`_: for spectral solver (PSATD) support in RZ geometry
- `Boost 1.66.0+ <https://www.boost.org/>`__: for QED lookup tables generation support
- `openPMD-api 0.12.0+ <https://github.com/openPMD/openPMD-api>`__: we automatically download and compile a copy of openPMD-api for openPMD I/O support
- `openPMD-api 0.14.2+ <https://github.com/openPMD/openPMD-api>`__: we automatically download and compile a copy of openPMD-api for openPMD I/O support

- see `optional I/O backends <https://github.com/openPMD/openPMD-api#dependencies>`__
- `CCache <https://ccache.dev>`__: to speed up rebuilds (needs 3.7.9+ for CUDA)
Expand Down
Loading

0 comments on commit 695316a

Please sign in to comment.