Skip to content

Commit

Permalink
Remerge upstream/development and gradient descent (#182)
Browse files Browse the repository at this point in the history
* Apply shift in BTD for zmax different than 0 (ECP-WarpX#3091)

* Include shift in t_lab when `zmax` is different than 0

* Revert "Include shift in t_lab when `zmax` is different than 0"

This reverts commit 5f786f2.

* Apply shift in BTD for zmax > 0

* AMReX: Weekly Update (ECP-WarpX#3095)

* Fix miscellaneous issues found with clang tidy (ECP-WarpX#3083)

* fix miscellaneous issues found with clang tidy
* fix miscellaneous issues found with clang tidy
* moved default constructors and destructors to header
* fix issue
* Use default again

* Add a python script to generate timestep duration plots (ECP-WarpX#3036)

* add script to generate timestep duration plots
* disable transparent background
* fix bugs
* fix bug in doc
* Update plot_timestep_duration.rst
* add permissions
* using argparse
* using if __name__ == __main__:
* add page in workflows
* Update Docs/source/usage/workflows.rst
* added missing file
* Formatting

* Apply shift for zmax>0 in old BTD (ECP-WarpX#3094)

* Apply shift for zmax>0 in old BTD
* BTD: also shift t_slice_lab

* Use uniform error message formatting for all the amrex::Abort() calls in WarpX.cpp (ECP-WarpX#2952)

* use WARPX_ALWAYS_ASSERT_WITH_MESSAGE instead of Abort()
* fix bug
* Update Source/WarpX.cpp
* fixed bug
* fixed bug
* Update Source/WarpX.cpp
* Update Source/WarpX.cpp
Co-authored-by: Axel Huebl <[email protected]>

* Use queryWithParser to Parse v_particle_pml (ECP-WarpX#3096)

Use queryWithParser, instead of query, to parse v_particle_pml, in order to support functions like sin, cos, sqrt, etc.

* Fix Wrong Abort Message for PSATD w/ Time Averaging (ECP-WarpX#3098)

* Doc: Improve Doxygen Links (ECP-WarpX#3099)

* Doc: Improve Doxygen Links

- download also openPMD-api tag files & link them
- improve developer page: clearer links

* Update: .gitignore

* Fix Mirrors for RZ (NullifyMF) (ECP-WarpX#3101)

* Fix Breaking Pip 22.1 Logic (ECP-WarpX#3106)

* CI: Fix Windows

Pip's `--no-build-isolation` says we have to have build-deps pre-installed.
But Pip does offer no option to install those from `pyproject.toml`.

* Pip 22.1: in-tree-build default

And dropped the old option with a fatal error... classic.

* Pip no-build isolation: pre-install build tools

not installed in non-isolated builds
- we want isolated builds, because they have a derministic
  path that we can cache with ccache

* fix bug (ECP-WarpX#3110)

* Fix Laser Injection in RZ (ECP-WarpX#3104)

* Add STL files support in pywarpx (ECP-WarpX#3089)

* Added STL files support in pywarpx

* Add new EB bucket

* Added name to file headers

* Fixing year in  file headers

* Checking that stl file and imp function are not both specified

* Renamed EB bucket to EB2

* Adding STL documentation

* Implement suggestions from code review

Co-authored-by: lgiacome <[email protected]>

* Stricter Tolerance for 3D Langmuir Tests (ECP-WarpX#3097)

* CI: HIP with https (ECP-WarpX#3111)

Small update in HIP docs: now supports HTTPS:
https://rocmdocs.amd.com/en/latest/Installation_Guide/Installation-Guide.html#ubuntu

* Add Headers to Input File Written by PICMI (ECP-WarpX#3093)

* Add Headers to Input File Written by PICMI
* Commit Suggestion by @dpgrote
* Add Comment
* Add Empty Line
* Slightly Better Readable with a newline

* AMReX/PICSAR: Weekly Update (ECP-WarpX#3112)

* AMReX: Weekly Update

* PICSAR: Weekly Update

* [pre-commit.ci] pre-commit autoupdate (ECP-WarpX#3113)

updates:
- [github.com/Lucas-C/pre-commit-hooks: v1.1.13 → v1.1.14](Lucas-C/pre-commit-hooks@v1.1.13...v1.1.14)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Use uniform error message formatting in more source files (ECP-WarpX#2964)

* use WARPX_ALWAYS_ASSERT_WITH_MESSAGE instead of Abort()

* fix bug

* Update Source/WarpX.cpp

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

* use more uniform text formatting

* fixed bug

* fixed bug

* using Utils::TextMsg in more files

* fixed bug

* use Utils::TextMsg in more files

* fixed bug

* use Utils::TextMsg in more files

* fixed last merge conflict

* fixed bug

* fix indentation

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

* Avoid resizing ParticleBoundaryBuffer allocation to total particle count (ECP-WarpX#3068)

* Avoid resizing ParticleBoundaryBuffer allocation to total particle count

* Switch atomic increments over to reductions

* Lassen (LLNL): ADIOS2, BLAS++ & LAPACK++ (ECP-WarpX#3071)

* Lassen (LLNL): ADIOS2, BLAS++ & LAPACK++

Document how to install ADIOS2 (for openPMD `.bp`) and
BLAS++/LAPACK++ (for PSATD in RZ) on Lassen at LLNL.

* Update: ADIOS2~SST, BLAS++/LAPACK++ w/ ESSL

* Add workaround for Libfabric bug on Crusher to job script. (ECP-WarpX#3114)

* Add workaround for Libfabric bug on Crusher to job script.

* add known issues section for Crusher

* ABLASTR: localIDtoGlobal (ECP-WarpX#3115)

* ABLASTR: localIDtoGlobal

Move the control of `localIDtoGlobal` to ABLASTR for particle IDs.

* WarpX: Use ABLASTR now

* Clarify error messages when parsing diagnostics input (ECP-WarpX#3122)

* Add `do_average` option to the particle fields diagnostic (ECP-WarpX#3067)

* Added do_average option to the particle fields diagnostic

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Updated CI benchmark files

* Updated CI benchmark files

* Fix ParticleReductionFunctor comment

* Changed maps to vector for code simplification

* Change do_average to bool

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

* Fix from the merge

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Hannah Klion <[email protected]>
Co-authored-by: Edoardo Zoni <[email protected]>

* fix unnecessary double promotions (ECP-WarpX#3120)

* use fwd declaration for WarpXFaceInfoBox (ECP-WarpX#3125)

* remove unused enum (ECP-WarpX#3124)

* AMReX/PICSAR: Weekly Update (ECP-WarpX#3126)

* AMReX: Weekly Update

* PICSAR: Weekly Update

* [pre-commit.ci] pre-commit autoupdate (ECP-WarpX#3128)

updates:
- [github.com/Lucas-C/pre-commit-hooks: v1.1.14 → v1.2.0](Lucas-C/pre-commit-hooks@v1.1.14...v1.2.0)
- [github.com/hadialqattan/pycln: v1.3.2 → v1.3.3](hadialqattan/pycln@v1.3.2...v1.3.3)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Add new class `NamedComponentParticleContainer` (ECP-WarpX#3100)

* Add new class `NamedComponentParticleContainer`
* Update docstrings
* Fix compilation
* Address review comments
* Update Doxygen

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

* Fold Python tests into their corresponding base configurations, to better exploit ccache (ECP-WarpX#3107)

* Fold Python tests into their corresponding base configurations, to better exploit ccache

* Align 1D Python tests with rest of 1D tests

* Remove archaic test exclusions

* Reintroduce exclusion of Python_Langmuir test, since it currently fails

* Docs: New Perlmutter Default Env, Microarch (ECP-WarpX#3127)

* Docs: New Perlmutter Default Env

The default environment on Perlmutter is now the one we already
used, `PrgEnv-gnu`. Thus, we don't need to switch anymore.

* Perlmutter: Build Microarch

Tuned for Zen3, which is used on Login and Compute nodes alike:
https://docs.nersc.gov/systems/perlmutter/system_details/

* Keep PrgEnv-gnu

... in case it changes again

* Comment microarch flags

* CMake Pip: Unique Custom Targets (ECP-WarpX#3116)

Add a prefix to custom targets so we do not collide if used as a
CMake subproject, e.g., in ARTEMIS.

* Simplify the function computePhi (ECP-WarpX#3026)

* Simplify the function computePhi
* Allow to compile RZ without EB
* Allow to compile RZ without EB
* Deactivate semi-coarsening when both EB and RZ are used
* Update Source/FieldSolver/ElectrostaticSolver.cpp

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

* Specify particle precision (ECP-WarpX#3065)

* Add precision to printed PIC parameters

* Added WarpX_PARTICLE_PRECISION as a build option

* Update types to ParticleReal

* Updated libwarpx to inject particles with correct ParticleReal type

* Fix syntax error

* Add logic to avoid duplicate definitions

* Use correct ParticleReal type in add_particles

* Cleaned up code, addressed comments

* Update Python/pywarpx/_libwarpx.py

Co-authored-by: Peter Scherpelz <[email protected]>

* Removed redundant functions, fixed some typing

* Modified template functions

* Cast d_w to Real

* Fixed failing tests

* Cast types to be consistent

* removed in-tree-build from pip command

* Added GPU device macros to PDim3 methods

* rerun tests

* Removed unecessary casting, update calls to use PDim3 instead of XDim3

* Refactored comments

* Added mcc fields double precision, particles single precision test

* Updated casting and formatting

* Removed cast, updated declaration

Co-authored-by: Peter Scherpelz <[email protected]>
Co-authored-by: Peter Scherpelz <[email protected]>

* Test Filter: Include Python Langmuir (ECP-WarpX#3129)

* Test Filter: Include Python Langmuir

* Reset Benchmarks (Python Langmuir)

Co-authored-by: Tools <[email protected]>

* Reactivate Multi-J RZ PSATD Checksums (ECP-WarpX#2459)

* Try to reactivate Multi-J RZ PSATD checksums

* Reduce size of test and add debug prints

* No MPI in test

* Revert "Reduce size of test and add debug prints"

This reverts commit c865671.

* Revert "No MPI in test"

This reverts commit 1a0a682.

* Remove close to zero values from field outputs

* Update benchmarks

* PML.cpp: missing util include (ECP-WarpX#3138)

fix a missing include for `PML.cpp`

* Fix: Field Probe no-MPI Gather (ECP-WarpX#3134)

In AMReX, Gather without MPI was implemented as a no-OP.
This applies a work-around so we can patch already released WarpX
versions.

* SpectralFieldDataRZ: Missing Utils Include (ECP-WarpX#3140)

* Fix: Install ABLASTR (ECP-WarpX#3141)

Since ABLASTR is a proper library now, we need to install it as well.

* Write Inputs to `warpx_used_inputs` (ECP-WarpX#3132)

Write a general file `warpx_used_inputs` that contains all
inputs of a simulation.

This is needed, since we add & overwrite the inputs parameters in the
inputs file with command-line options regularly. Writing the actually
used inputs increases reproducibility of such workflows, especially
in unsupervised scripted runs/optimizations.

* Docs: Improve `collision_name>.species` (ECP-WarpX#3143)

... for `background_stopping` we also just use one species.

* Remove Extraneous `WARPX_DIM_RZ` in Gaussian Laser Init (ECP-WarpX#3144)

* move serialization to ablastr (ECP-WarpX#3145)

* Use Utils::TextMsg::Err and WARPX_ALWAYS_ASSERT_WITH_MESSAGE in more files (ECP-WarpX#3117)

* use formatted error messages

* fixed bug

* fixed bug

* fixed bugs

* fixed bug

* Move MsgLogger to ablastr (ECP-WarpX#3148)

* move Msg Logger to ablastr

* fixed bug

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* fixed bug

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* AMReX: Weekly Update (ECP-WarpX#3147)

* Docs: Science Highlights (ECP-WarpX#3139)

* Docs: Science Highlights

Document science papers of ours and users that use WarpX.

* Add: More LWFA Preprints 🚀

* Use Ordered (Numbered) Lists

* Add 3D tests for proton boron fusion (ECP-WarpX#2450)

* Add 3D tests for proton boron fusion

* Add execute permission to analysis script

* Fix Checksum path

* Increase tolerance for energy check

* Update benchmarks

* Specify type of exception in try expect block

* Apply suggestions from code review

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

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Add review suggestions

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

* Safe Runtime: <species>.do_not_deposit = 1

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

* Remove division by zero warning in python analysis script

* Update cross-section in the E > 3.5 MeV range

* Increase some tolerances

* Update benchmark

Co-authored-by: Remi Lehe <[email protected]>
Co-authored-by: Axel Huebl <[email protected]>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Revert ""Gradient descent" convergence to steady-state (#176)"

This reverts commit e31338f.

* update changelog and version

* Gradient Descent (#181)

* Added ArbitraryDistributionVolumeEmitter

* Updated particle weight calculation

* renamed thermionic_emission test directory to emission

* arbitrary seed from uniform distribution

* Bug fixes and changes to test

* add test for arbitrary seeding

* Changed position sampling, added test

* Removed unused imports and code

* revert traceback printout

* Added comments for binning particle positions

* increased rtol for test

* Allow input of any 2d array, add interpolation of 2d array onto current simulation grid

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Updated changelog

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Updated changelog

* update version

* created steady_state_descent.py file

* Added coarsening algorithm

* Added ability to read numpy data and coarsen grid

* Added regression function calculation

* Solve system of equations rather than curve fit

* Use skimage block_reduce

* Hard coded inverse exponential solve

* take mean if exponential equation can't be solved

* Added special cases to use linear regression

* Update docstring

* Added command line arguments

* Modified linear regression logic and added main function

* Added entry point

* Change output file name

* Change output file name

* Fixed interpolate grid

* updated arbitrary distribution emitter test

* Fix interpolation logic

* Changed to take in exact prediction timestep rather than a multiple

* Added ability to specify save directory

* Updated docstrings, removed unneeded files

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Added gradient descent test, refactored code

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Changed test parameters

* Increase rtol of arbitrary seed test by 0.01

* Update mewarpx/mewarpx/utils_store/plasma_density_oracle.py

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

* Update changelog

* Update version

* Add controller for plasma density oracle

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* WIP oracle control

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Allow oracle control bins to be overridden

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Added command line arguments

* Fixed bugs, added info logging

* added ability to modify run_script

* removed unnecessary code

* Cleaned up code

* Refactored code to be clearer

* Update docstrings

* Added test

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Added documentation about oracle_control

* Updated changelog

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Fixed TOTAL_TIME calculation

* update wheel in docker build

* change numpy to oldest-supported-numpy for docker

* Updated formatting and documentation

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

Co-authored-by: Remi Lehe <[email protected]>
Co-authored-by: Axel Huebl <[email protected]>
Co-authored-by: Luca Fedeli <[email protected]>
Co-authored-by: amadou38 <[email protected]>
Co-authored-by: Edoardo Zoni <[email protected]>
Co-authored-by: David Grote <[email protected]>
Co-authored-by: Lorenzo Giacomel <[email protected]>
Co-authored-by: lgiacome <[email protected]>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Phil Miller <[email protected]>
Co-authored-by: Andrew Myers <[email protected]>
Co-authored-by: Hannah Klion <[email protected]>
Co-authored-by: Phil Miller <[email protected]>
Co-authored-by: Peter Scherpelz <[email protected]>
Co-authored-by: Peter Scherpelz <[email protected]>
Co-authored-by: Tools <[email protected]>
Co-authored-by: Neïl Zaim <[email protected]>
Co-authored-by: Ryan Sandberg <[email protected]>
  • Loading branch information
19 people authored Jun 1, 2022
2 parents e31338f + cc6f6d7 commit 3a59c69
Show file tree
Hide file tree
Showing 97 changed files with 2,324 additions and 846 deletions.
4 changes: 1 addition & 3 deletions .azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,6 @@ jobs:
WARPX_CI_REGULAR_CARTESIAN_2D: 'TRUE'
cartesian3d:
WARPX_CI_REGULAR_CARTESIAN_3D: 'TRUE'
python:
WARPX_CI_PYTHON_MAIN: 'TRUE'
single_precision:
WARPX_CI_SINGLE_PRECISION: 'TRUE'
rz_or_nompi:
Expand Down Expand Up @@ -100,7 +98,7 @@ jobs:
-DopenPMD_USE_PYTHON=OFF -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF -DBUILD_CLI_TOOLS=OFF
python3 -m pip install --upgrade openpmd-api
fi
if [[ "${WARPX_CI_RZ_OR_NOMPI:-FALSE}" == "TRUE" || "${WARPX_CI_PYTHON_MAIN:-FALSE}" == "TRUE" ]]; then
if [[ "${WARPX_CI_RZ_OR_NOMPI:-FALSE}" == "TRUE" ]]; then
cmake-easyinstall --prefix=/usr/local git+https://bitbucket.org/icl/blaspp.git \
-DCMAKE_CXX_COMPILER_LAUNCHER=$(which ccache) \
-DCMAKE_CXX_STANDARD=17 \
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/cuda.yml
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ jobs:
which nvcc || echo "nvcc not in PATH!"
git clone https://github.com/AMReX-Codes/amrex.git ../amrex
cd amrex && git checkout --detach 843a7dff266273a0f5b7b9f6cc9233a278f41fe1 && cd -
cd amrex && git checkout --detach b78921a2d80d95add9ff3ec9b498a96299ec4ed7 && cd -
make COMP=gcc QED=FALSE USE_MPI=TRUE USE_GPU=TRUE USE_OMP=FALSE USE_PSATD=TRUE USE_CCACHE=TRUE -j 2
build_nvhpc21-11-nvcc:
Expand Down
2 changes: 0 additions & 2 deletions .github/workflows/source/test_ci_matrix.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,6 @@ WARPX_CI_REGULAR_CARTESIAN_2D=TRUE python prepare_file_ci.py
grep "\[" ci-tests.ini >> ci_matrix_elements.txt
WARPX_CI_REGULAR_CARTESIAN_3D=TRUE python prepare_file_ci.py
grep "\[" ci-tests.ini >> ci_matrix_elements.txt
WARPX_CI_PYTHON_MAIN=TRUE python prepare_file_ci.py
grep "\[" ci-tests.ini >> ci_matrix_elements.txt
WARPX_CI_SINGLE_PRECISION=TRUE python prepare_file_ci.py
grep "\[" ci-tests.ini >> ci_matrix_elements.txt
WARPX_CI_RZ_OR_NOMPI=TRUE python prepare_file_ci.py
Expand Down
4 changes: 2 additions & 2 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ repos:

# Changes tabs to spaces
- repo: https://github.com/Lucas-C/pre-commit-hooks
rev: v1.1.14
rev: v1.2.0
hooks:
- id: remove-tabs
exclude: 'Make.WarpX|Make.package|Makefile|GNUmake'
Expand All @@ -67,7 +67,7 @@ repos:

# Autoremoves unused Python imports
- repo: https://github.com/hadialqattan/pycln
rev: v1.3.2
rev: v1.3.3
hooks:
- id: pycln
name: pycln (python)
Expand Down
26 changes: 21 additions & 5 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,13 @@ if(NOT WarpX_PRECISION IN_LIST WarpX_PRECISION_VALUES)
message(FATAL_ERROR "WarpX_PRECISION (${WarpX_PRECISION}) must be one of ${WarpX_PRECISION_VALUES}")
endif()

set(WarpX_PARTICLE_PRECISION_VALUES SINGLE DOUBLE)
set(WarpX_PARTICLE_PRECISION ${WarpX_PRECISION} CACHE STRING "Particle floating point precision (SINGLE/DOUBLE)")
set_property(CACHE WarpX_PARTICLE_PRECISION PROPERTY STRINGS ${WarpX_PARTICLE_PRECISION_VALUES})
if(NOT WarpX_PARTICLE_PRECISION IN_LIST WarpX_PARTICLE_PRECISION_VALUES)
message(FATAL_ERROR "WarpX_PARTICLE_PRECISION (${WarpX_PARTICLE_PRECISION}) must be one of ${WarpX_PARTICLE_PRECISION_VALUES}")
endif()

set(WarpX_COMPUTE_VALUES NOACC OMP CUDA SYCL HIP)
set(WarpX_COMPUTE OMP CACHE STRING "On-node, accelerated computing backend (NOACC/OMP/CUDA/SYCL/HIP)")
set_property(CACHE WarpX_COMPUTE PROPERTY STRINGS ${WarpX_COMPUTE_VALUES})
Expand Down Expand Up @@ -358,7 +365,7 @@ configure_file(
# Installs ####################################################################
#
# headers, libraries and executables
set(WarpX_INSTALL_TARGET_NAMES)
set(WarpX_INSTALL_TARGET_NAMES ablastr)
if(WarpX_APP)
list(APPEND WarpX_INSTALL_TARGET_NAMES app)
endif()
Expand Down Expand Up @@ -418,8 +425,17 @@ if(WarpX_LIB)
set(PYINSTALLOPTIONS "" CACHE STRING
"Additional parameters to pass to `pip install`")

# add a prefix to custom targets so we do not collide if used as a subproject
if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
set(_WarpX_CUSTOM_TARGET_PREFIX_DEFAULT "")
else()
set(_WarpX_CUSTOM_TARGET_PREFIX_DEFAULT "warpx_")
endif()
set(WarpX_CUSTOM_TARGET_PREFIX "${_WarpX_CUSTOM_TARGET_PREFIX_DEFAULT}"
CACHE STRING "Prefix for custom targets")

# build the wheel by re-using the shared library we build
add_custom_target(pip_wheel
add_custom_target(${WarpX_CUSTOM_TARGET_PREFIX}pip_wheel
${CMAKE_COMMAND} -E rm -f ${WarpX_BINARY_DIR}/pywarpx*whl
COMMAND
${CMAKE_COMMAND} -E env PYWARPX_LIB_DIR=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
Expand All @@ -431,7 +447,7 @@ if(WarpX_LIB)
)

# this will also upgrade/downgrade dependencies, e.g., when the version of picmistandard changes
add_custom_target(pip_install_requirements
add_custom_target(${WarpX_CUSTOM_TARGET_PREFIX}pip_install_requirements
python3 -m pip install ${PYINSTALLOPTIONS} -r ${WarpX_SOURCE_DIR}/requirements.txt
WORKING_DIRECTORY
${WarpX_BINARY_DIR}
Expand All @@ -440,13 +456,13 @@ if(WarpX_LIB)
# We force-install because in development, it is likely that the version of
# the package does not change, but the code did change. We need --no-deps,
# because otherwise pip would also force reinstall all dependencies.
add_custom_target(pip_install
add_custom_target(${WarpX_CUSTOM_TARGET_PREFIX}pip_install
${CMAKE_COMMAND} -E env WARPX_MPI=${WarpX_MPI}
python3 -m pip install --force-reinstall --no-deps ${PYINSTALLOPTIONS} ${WarpX_BINARY_DIR}/pywarpx*whl
WORKING_DIRECTORY
${WarpX_BINARY_DIR}
DEPENDS
shared pip_wheel pip_install_requirements
shared ${WarpX_CUSTOM_TARGET_PREFIX}pip_wheel ${WarpX_CUSTOM_TARGET_PREFIX}pip_install_requirements
)
endif()

Expand Down
12 changes: 10 additions & 2 deletions Docs/source/acknowledge_us.rst
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
.. _acknowledge_warpx:

Acknowledge WarpX
=================

Expand Down Expand Up @@ -32,6 +34,8 @@ Please add the following sentence to your publications, it helps contributors ke
Primary WarpX contributors are with LBNL, LLNL, CEA-LIDYL, SLAC, DESY, CERN, and Modern Electron.
We acknowledge all WarpX contributors.

.. _acknowledge_warpx_ref:

Latest WarpX reference
**********************

Expand All @@ -41,14 +45,18 @@ If your project leads to a scientific publication, please consider citing the pa
**Porting WarpX to GPU-accelerated platforms**. *Parallel Computing*. 2021 Sep, 108:102833.
https://doi.org/10.1016/j.parco.2021.102833

.. _acknowledge_warpx_all_refs:

Prior WarpX references
----------------------

If your project uses the specific algorithms, please consider citing the respective publications in addition.

- Fedeli L, Zaim N, Sainte-Marie A, Thevenet M, Huebl A, Myers A, Vay J-L, Vincenti H.
**PICSAR-QED: a Monte Carlo module to simulate Strong-Field Quantum Electrodynamics in Particle-In-Cell codes for exascale architectures**. *New Journal of Physics*. in-press, 2022.
https://arxiv.org/abs/2110.00256
**PICSAR-QED: a Monte Carlo module to simulate Strong-Field Quantum Electrodynamics in Particle-In-Cell codes for exascale architectures**.
*New Journal of Physics* **24** 025009, 2022.
`arXiv:2110.00256 <https://arxiv.org/abs/2110.00256>`__,
`DOI:10.1088/1367-2630/ac4ef1 <https://doi.org/10.1088/1367-2630/ac4ef1>

- Zoni E, Lehe R, Shapoval O, Belkin D, Zaim N, Fedeli L, Vincenti H, Vay J-L.
**A Hybrid Nodal-Staggered Pseudo-Spectral Electromagnetic Particle-In-Cell Method with Finite-Order Centering**. under review, 2022.
Expand Down
67 changes: 67 additions & 0 deletions Docs/source/highlights.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
.. _highlights:

Science Highlights
==================

WarpX can be used in many domains of laser-plasma science, plasma physics, accelerator physics and beyond.
Below, we collect a series of scientific publications that used WarpX.
Please :ref:`acknowledge WarpX in your works`, so we can find your works.

Is your publication missing? :ref:`Contact us <contact>` or edit this page via a pull request.

Plasma-Based Acceleration
*************************

Scientific works in laser-plasma and beam-plasma acceleration.

#. Wang J, Zeng M, Li D, Wang X, Lu W, Gao J.
**Injection induced by coaxial laser interference in laser wakefield accelerators**.
*preprint*. under review, 2022.
`arXiv:2205.12083 <https://arxiv.org/abs/2205.12083>`__

#. Levy D, Andriyash IA, Haessler S, Ouille M, Kaur J, Flacco A, Kroupp E, Malka V, Lopez-Martens R.
**Low-divergence MeV-class proton beams from kHz-driven laser-solid interactions**.
*preprint*. under review, 2021.
`arXiv:2112.12581 <https://arxiv.org/abs/2112.12581>`__

#. Miao B, Shrock JE, Feder L, Hollinger RC, Morrison J, Nedbailo R, Picksley A, Song H, Wang S, Rocca JJ, Milchberg HM.
**Multi-GeV electron bunches from an all-optical laser wakefield accelerator**.
*preprint*. under review, 2021.
`arXiv:2112.03489 <https://arxiv.org/abs/2112.03489>`__

#. Mirani F, Calzolari D, Formenti A, Passoni M.
**Superintense laser-driven photon activation analysis**.
Nature Communications Physics volume **4**.185, 2021
`DOI:10.1038/s42005-021-00685-2 <https://doi.org/10.1038/s42005-021-00685-2>`__


Laser-Plasma Interaction
************************

Scientific works in laser-ion acceleration and laser-matter interaction.

#. Hakimi S, Obst-Huebl L, Huebl A, Nakamura K, Bulanov SS, Steinke S, Leemans WP, Kober Z, Ostermayr TM, Schenkel T, Gonsalves AJ, Vay J-L, Tilborg Jv, Toth C, Schroeder CB, Esarey E, Geddes CGR.
**Laser-solid interaction studies enabled by the new capabilities of the iP2 BELLA PW beamline**.
under review, 2022


Particle Accelerator & Beam Physics
***********************************

Scientific works in particle and beam modeling.


Microelectronics
****************

.. note::

Link ARTEMIS publications.


High-Performance Computing and Numerics
***************************************

Scientific works in High-Performance Computing, applied mathematics and numerics.

Please see :ref:`this section <acknowledge_warpx_all_refs>`.
1 change: 1 addition & 0 deletions Docs/source/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ We also have a `discussion page <https://github.com/ECP-WarpX/WarpX/discussions>

coc
acknowledge_us
highlights

Installation
------------
Expand Down
2 changes: 2 additions & 0 deletions Docs/source/install/cmake.rst
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ CMake Option Default & Values Descr
``WarpX_MPI_THREAD_MULTIPLE`` **ON**/OFF MPI thread-multiple support, i.e. for ``async_io``
``WarpX_OPENPMD`` **ON**/OFF openPMD I/O (HDF5, ADIOS)
``WarpX_PRECISION`` SINGLE/**DOUBLE** Floating point precision (single/double)
``WarpX_PARTICLE_PRECISION`` SINGLE/**DOUBLE** Particle floating point precision (single/double), defaults to WarpX_PRECISION value if not set
``WarpX_PSATD`` ON/**OFF** Spectral solver
``WarpX_QED`` **ON**/OFF QED support (requires PICSAR)
``WarpX_QED_TABLE_GEN`` ON/**OFF** QED table generation support (requires PICSAR and Boost)
Expand Down Expand Up @@ -266,6 +267,7 @@ Environment Variable Default & Values Descr
``WARPX_MPI`` ON/**OFF** Multi-node support (message-passing)
``WARPX_OPENPMD`` **ON**/OFF openPMD I/O (HDF5, ADIOS)
``WARPX_PRECISION`` SINGLE/**DOUBLE** Floating point precision (single/double)
``WARPX_PARTICLE_PRECISION`` SINGLE/**DOUBLE** Particle floating point precision (single/double), defaults to WarpX_PRECISION value if not set
``WARPX_PSATD`` ON/**OFF** Spectral solver
``WARPX_QED`` **ON**/OFF PICSAR QED (requires PICSAR)
``WARPX_QED_TABLE_GEN`` ON/**OFF** QED table generation (requires PICSAR and Boost)
Expand Down
12 changes: 12 additions & 0 deletions Docs/source/usage/how_to_run.rst
Original file line number Diff line number Diff line change
Expand Up @@ -92,3 +92,15 @@ On an :ref:`HPC system <install-hpc>`, you would instead submit the :ref:`job sc
.. code-block:: bash
mpirun -np 4 ./warpx <input_file> max_step=10 warpx.numprocs=1 2 2
5. Outputs
----------

By default, WarpX will write a status update to the terminal (``stdout``).
On :ref:`HPC systems <install-hpc>`, we usually store a copy of this in a file called ``outputs.txt``.

We also store by default an exact copy of all explicitly and implicitly used inputs parameters in a file called ``warpx_used_inputs``.
This is important for reproducibility, since as we wrote in the previous paragraph, the options in the input file can be extended and overwritten from the command line.

:ref:`Further configured diagnostics <running-cpp-parameters-diagnostics>` are explained in the next sections.
By default, they are written to a subdirectory in ``diags/`` and can use various :ref:`output formats <dataanalysis-formats>`.
17 changes: 11 additions & 6 deletions Docs/source/usage/parameters.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1417,8 +1417,8 @@ WarpX provides several particle collions models, using varying degrees of approx
between which the collision will be considered.
The number of provided ``<collision_name>.species`` should match
the number of collision names, i.e. ``collisions.collision_names``.
If using ``background_mcc`` type this should be the name of the species for
which collisions will be included. Only one species name should be given.
If using ``background_mcc`` or ``background_stopping`` type this should be the name of the species for which collisions will be included.
Only one species name should be given.

* ``<collision_name>.CoulombLog`` (`float`) optional
Only for ``pairwisecoulomb``. A provided fixed Coulomb logarithm of the
Expand Down Expand Up @@ -2005,8 +2005,8 @@ In-situ capabilities can be used by turning on Sensei or Ascent (provided they a
Whether to save all modes when in RZ. When ``openpmd_backend = openpmd``, this parameter is ignored and all modes are saved.

* ``<diag_name>.particle_fields_to_plot`` (list of `strings`, optional)
Names of per-cell averages of particle properties to calculate and output as additional fields.
Note that these averages do not respect the particle shape factor, and instead use nearest-grid point interpolation.
Names of per-cell diagnostics of particle properties to calculate and output as additional fields.
Note that the deposition onto the grid does not respect the particle shape factor, but instead uses nearest-grid point interpolation.
Default is none.
Parser functions for these field names are specified by ``<diag_name>.particle_fields.<field_name>(x,y,z,ux,uy,uz)``.
Also, note that this option is only available for ``<diag_name>.diag_type = Full``
Expand All @@ -2016,18 +2016,23 @@ In-situ capabilities can be used by turning on Sensei or Ascent (provided they a
Fields will be calculated separately for each specified species.
The default is a list of all of the available particle species.

* ``<diag_name>.particle_fields.<field_name>.do_average`` (`0` or `1`) optional (default `1`)
Whether the diagnostic is an average or a sum. With an average, the sum over the specified function is divided
by the sum of the particle weights in each cell.

* ``<diag_name>.particle_fields.<field_name>(x,y,z,ux,uy,uz)`` (parser `string`)
Parser function to be calculated for each particle and averaged per cell. The field written is
Parser function to be calculated for each particle per cell. The averaged field written is

.. math::
\texttt{<field_name>_<species>} = \frac{\sum_{i=1}^N w_i \, f(x_i,y_i,z_i,u_{x,i},u_{y,i},u_{z,i})}{\sum_{i=1}^N w_i}
where :math:`w_i` is the particle weight, :math:`f()` is the parser function, and :math:`(x_i,y_i,z_i)` are particle positions in units of a meter. The sums are over all particles of type ``<species>`` in a cell (ignoring the particle shape factor) that satisfy ``<diag_name>.particle_fields.<field_name>.filter(x,y,z,ux,uy,uz)``.
When ``<diag_name>.particle_fields.<field_name>.do_average`` is `0`, the division by the sum over particle weights is not done.
In 1D or 2D, the particle coordinates will follow the WarpX convention. :math:`(u_{x,i},u_{y,i},u_{z,i})` are components of the particle four-velocity. :math:`u = \gamma v/c`, :math:`\gamma` is the Lorentz factor, :math:`v` is the particle velocity, and :math:`c` is the speed of light.

* ``<diag_name>.particle_fields.<field_name>.filter(x,y,z,ux,uy,uz)`` (parser `string`, optional)
Parser function returning a boolean for whether to include a particle in the average.
Parser function returning a boolean for whether to include a particle in the diagnostic.
If not specified, all particles will be included (see above).
The function arguments are the same as above.

Expand Down
Loading

0 comments on commit 3a59c69

Please sign in to comment.