Skip to content

Commit

Permalink
HarrisSheetinX-development merge 22-04-29 (#90)
Browse files Browse the repository at this point in the history
* CI: Fix Small Issue w/ Langmuir Plots (ECP-WarpX#3010)

* Release 22.04 (ECP-WarpX#3018)

* AMReX: 22.04

* PICSAR: 22.04

* WarpX: 22.04

* Switch test to use common build with openPMD enabled (ECP-WarpX#2988)

* Switch test to use common build with OpenPMD enabled

* Match GNU make to CMake change

Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>

* Allow process signals to trigger checkpoint or break behavior (ECP-WarpX#2896)

* Beginnings of signal handling machinery

* Add tentative logic to make checkpoint call

* Adapt formatting slightly

* Add calls to read signals and set up signal handlers

* Initialize signal flag array

* Add parsing of signal names, and fix some whitespace issues

* Skip signal setup on Windows

* added checkpoint and break signal inputs to picmi.py

* Address initial review requests

* Correct comment to match changed code

* Convert maximum signal number to a symbolic name

* Always parse signal input, and error out on Windows or wherever it may be unsupported

* Typo fix

* Add missing reset of checkpoint signal flag

* Add reset of break signal, in support of Python or library usage

* Test for a configured checkpoint diag when asked to checkpoint on a signal

* Fix typo in Linux code path

* Clean up MPI support

* Use symbolic name for maximum signal number

* Fix unused variable in the no-MPI case

* Add missing header inclusions

* Switch signal parsing to an enumerated table

* Test signal handling for Linux, not GNU C library

* Avoid another magic number

* Update MPI_Ibcast call to match symbolic array length

* Update loop over signal flags to use symbolic limit

* Match #includes to usage

* Add omitted C++ std <atomic> header include

* Guard entire set of signal definitions as *nix-only, not for Windows

* Broaden Windows exclusion to avoid zero-length array that displeases MSVC++

* Check return value from sigaction()

* Convert conditional calls to Abort() to assertions

* Move check for platform support to input parsing

* Shift signal handling code over toward ABLASTR to share with ImpactX and Hipace++

* Minor cleanup

* A bit more cleanup

* Fix formatting nits

* Add AMReX error handling on MPI calls

* Add ABLASTR signal handling code to GNU makefile too

* Document new input parameters

* Use ABLASTR assertion macros in ABLASTR code

* Convert requests limit value to a requests array size

* Generalize signal handling to an arbitrary set of potential actions

* Rename class to match usage and file name

* Stick stuff in ABLASTR namespace

* Indent conditional includes as requested

Co-authored-by: Roelof <roelof.groenewald@modernelectron.com>

* Moving Frame Field Probe Functionality (ECP-WarpX#2996)

* DRAFT for Moving Frame

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

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

* Adds m_last_compute_step

* Generalized SetParticlePosition, semicolons and formatting

* Update Source/Diagnostics/ReducedDiags/FieldProbe.H

Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>

* Moved particle push before calculations. Condensed stuff.

* Fixed Velocity, added start and stop time functionality

* Documentation

* Apply suggestions from code review

Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>

* Empty-Commit

* Fixed ParallelFor from review

* FP moving window in laser_acceleration 1d, 2d, 3d test

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

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

* Line detector instead of point

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>

* Refactoring: More General Interfaces (ECP-WarpX#2991)

* Refactoring: More General Interfaces (J, rho)

* Refactoring: More General Interfaces (E, B)

* Refactoring: More General Interfaces (rho)

* Fix const Correctness

* Fix const Correctness (continued)

* Fix Bugs

* Refactoring: More General Interfaces (averaged E, averaged B)

* LoadBalanceCosts: num_cells & num_macro_particles (ECP-WarpX#3019)

* Examples: LBC in Laser-Ion Example

* LoadBalanceCosts: num_cells & num_macro_particles

* Fix Script: Wrong Header Counting

Spliced out the first to columns twice.

* Fix Script: Blocking Factor

The script did not work if a direction only had one block

* Fix Script: 2D/3D

There is no generic way from the data we write to find this out,
without breaking corner cases such as one-block in one direction.

* LoadBalanceCosts: Fix Unused Vars in Script

Leftover to ECP-WarpX#3019

* Semicoarsening in electrostatic solvers (ECP-WarpX#3024)

* Semicoarsening in electrostatic solvers

Enable semicoarsening in electrostatic solvers if the problem is anisotropic
due to relativistic beam and/or anisotropic cell spacing.

* Update relativistic_space_charge_initialization benchmark

* AMReX: Update to latest commit (ECP-WarpX#3021)

* Added PlasmaLens class to PICMI (ECP-WarpX#3025)

* Added PlasmaLens class to PICMI

* Added CI test

* Added PICMI input file

* Fixed the output dir for the CI test

* Add `_plt` to Output File Prefix

Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>

* Minor fixes removing warnings from MSVC C++ (ECP-WarpX#3022)

* Fix MPI Signal Handling on Perlmutter (ECP-WarpX#3029)

* Fix: `MPI_CXX_BOOL` -> `MPI_BYTE`

C99 types were aded in MPI-2.2, while Cray's MPICH fork in version
8.1.13 defines `MPI_CXX_BOOL` to `MPI_DATATYPE_NULL` on Perlmutter.

We could use `MPI_C_BOOL`, which is technically a `_Bool` from
[<cstdbool>](https://en.cppreference.com/w/cpp/header/cstdbool)
(deprecated: C++17; removed: C++20) - or we simply do a static
assert on `sizeof(bool)` and communicate as a `MPI_BYTE` or
`MPI_CHAR`.

* Signals: Do no MPI Comms if none is configured

* Docs: Link and Explain Allowed Signal Values

* Review Comments & Style

* Extend `do_pml_Lo/Hi` to MR Levels (ECP-WarpX#2890)

* Vay Deposition: Fix SyncCurrent, FFTs (ECP-WarpX#3012)

* Implemented the BCK fallback for the ECT solver (ECP-WarpX#3016)

* Implemented the BCK fallback for the ECT solver

* Ignored an unused variable

* Bug fix

* Fix issue with preprocessor directive

* Added comments

* Implemented suggestions from code review

* Fixed tilebox

* Improved warning

* Using WarpX::RecordWarning instead of amrex::Print()

* Ignoring RZ

* Improving comment

* Bug Fix

* Lowered warning priority

* Ignoring low priority warnings in ECT tests

Co-authored-by: lgiacome <lorenzo.giacome@cern.ch>

* Signal: Cleanup (Simplify) (ECP-WarpX#3031)

Simplify the logic by fusing a loop.

* Fix Bug in `WarpX::MoveWindow` (ECP-WarpX#3034)

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

updates:
- [github.com/pre-commit/pre-commit-hooks: v4.1.0 → v4.2.0](pre-commit/pre-commit-hooks@v4.1.0...v4.2.0)

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

* AMReX: Update to latest commit (ECP-WarpX#3037)

* RZ + openPMD : don't transpose data, save data with shape (Nm, Nz, Nr) (ECP-WarpX#3030)

* part_per_grid/cell : cartesian diag in RZ/openPMD

* RZ+openPMD : flexible ZR or RZ order

* fix logic if not in RZ

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

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

* fix regression test, remove transpose and refactor

* Update Source/Diagnostics/WarpXOpenPMD.cpp

* Fix: Doxygen, Consistent Naming, Comments, Style

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Remi Lehe <remi.lehe@normalesup.org>
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>

* Remove Nodal Synchronization of J and Rho (ECP-WarpX#3038)

* Remove Nodal Sync of J and Rho

* Reset Benchmark of reduced_diags_single_precision

* Avoid unnecessary construction of CopyParticleAttribs (ECP-WarpX#3042)

If it's not used there is no reason to construct a CopyParticleAttribs
object.  In fact, it could result in a runtime `std::out_of_range` error in
`std::map::at()` because `tmp_particle_data` is used in the
CopyParticleAttribs constructor, but in `PhysicalParticleContainer::Evolve`,
`tmp_particle_data` is properly prepared only when doing back transformed
diagnostics.

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

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

updates:
- [github.com/hadialqattan/pycln: v1.2.5 → v1.3.1](hadialqattan/pycln@v1.2.5...v1.3.1)

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

* Summit: Prepend Hostname & Mapping (ECP-WarpX#3040)

Add an additional `jsrun` command on Summit so that one can easier map the run output to a hostname. Write a `task_host_mapping.txt` file for each run.

* Fix a bug about particle weight. (ECP-WarpX#3052)

Co-authored-by: Yinjian Zhao <yin@Yinjians-MacBook-Air.local>

* add after diagnostic python callback (ECP-WarpX#3043)

* Current Deposition Interfaces: Always Pass `dt` & `relative_time` (ECP-WarpX#2937)

* Current Deposition Interfaces: Always Pass `dt` & `relative_time`

* Fix CI Failures

* Fix 1D/RZ Warnings

* Fix RZ Bug

* Fix Bugs

* Minimize Changes, Fix Roundoff Errors

* Cleaning

* Remove dt From doDepositionShapeN

* Cleaning Esirkepov Deposition

* Cleaning Vay Deposition

* Fix Roundoff Errors

* Fix Roundoff Errors (continued)

* Fix Bug (RZ)

* `Stencil.py`: Follow PEP 8 Coding Style (ECP-WarpX#3055)

* `Stencil.py`: Follow PEP 8 Coding Style

* Commit Suggestion by @dpgrote

* Perlmutter: Boost Software Module (QED) (ECP-WarpX#3053)

* Perlmutter: Boost

Document a compatible Boost module on Perlmutter.
This is needed for detailed table generation for the QED module
(`WarpX_QED_TABLE_GEN=ON`).

* CMake: Update PICSAR

Include a fix for a compile error on CPU for QED table gen.

* Docs: Ascent 0.8.0 on Summit (ECP-WarpX#3057)

Update the Ascent installation location to use Cyrus' new install
for us.

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

* Doc: PICMI HPC System Update Requirements (ECP-WarpX#3060)

Since these requirements (i.e., PICMI) change quite rapidly, document
the line close to the `pip` install line.

* Add profiling to ParticleBoundaryBuffer::gatherParticles (ECP-WarpX#3061)

This turned out to be a major portion of a particle-heavy simulation,
and was being entirely attributed to WarpX::Evolve().

* Update CUDA repo key (ECP-WarpX#3069)

Nvidia has made changes in the signing keys.

https://forums.developer.nvidia.com/t/notice-cuda-linux-repository-key-rotation/212771

Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
Co-authored-by: Phil Miller <unmobile+gh@gmail.com>
Co-authored-by: Roelof <roelof.groenewald@modernelectron.com>
Co-authored-by: Tiberius Rheaume <35204125+TiberiusRheaume@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Weiqun Zhang <WeiqunZhang@lbl.gov>
Co-authored-by: David Grote <grote1@llnl.gov>
Co-authored-by: Lorenzo Giacomel <47607756+lgiacome@users.noreply.github.com>
Co-authored-by: lgiacome <lorenzo.giacome@cern.ch>
Co-authored-by: Ryan Sandberg <RSandberg@lbl.gov>
Co-authored-by: Remi Lehe <remi.lehe@normalesup.org>
Co-authored-by: Yinjian Zhao <yinjianzhao@lbl.gov>
Co-authored-by: Yinjian Zhao <yin@Yinjians-MacBook-Air.local>
Co-authored-by: Roelof Groenewald <40245517+roelof-groenewald@users.noreply.github.com>
Co-authored-by: Phil Miller <phil@intensecomputing.com>
  • Loading branch information
17 people authored May 3, 2022
1 parent 575bd51 commit c562208
Show file tree
Hide file tree
Showing 81 changed files with 1,681 additions and 706 deletions.
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 3aafa306ad820bbcc50a4b7c14fe912406427d1d && cd -
cd amrex && git checkout --detach 329f81b889a6ece31c67b1b70f207d6c6b2463b6 && 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
3 changes: 1 addition & 2 deletions .github/workflows/dependencies/nvcc11.sh
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,7 @@ sudo apt-get install -y \
pkg-config \
wget

sudo wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
sudo apt-key add 7fa2af80.pub
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/3bf863cc.pub
echo "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64 /" \
| sudo tee /etc/apt/sources.list.d/cuda.list

Expand Down
4 changes: 2 additions & 2 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ exclude: '^share/openPMD/thirdParty'
# See https://pre-commit.com/hooks.html for more hooks
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.1.0
rev: v4.2.0
hooks:
- id: trailing-whitespace
args: [--markdown-linebreak-ext=md]
Expand Down Expand Up @@ -67,7 +67,7 @@ repos:

# Autoremoves unused Python imports
- repo: https://github.com/hadialqattan/pycln
rev: v1.2.5
rev: v1.3.1
hooks:
- id: pycln
name: pycln (python)
Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Preamble ####################################################################
#
cmake_minimum_required(VERSION 3.18.0)
project(WarpX VERSION 22.03)
project(WarpX VERSION 22.04)

include(${WarpX_SOURCE_DIR}/cmake/WarpXFunctions.cmake)

Expand Down
4 changes: 2 additions & 2 deletions Docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,9 +71,9 @@
# built documents.
#
# The short X.Y version.
version = u'22.03'
version = u'22.04'
# The full version, including alpha/beta/rc tags.
release = u'22.03'
release = u'22.04'

# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
Expand Down
1 change: 1 addition & 0 deletions Docs/source/glossary.rst
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ Abbreviations
* **BLAST:** `Beam, Plasma & Accelerator Simulation Toolkit <https://blast.lbl.gov>`__
* **AMR:** adaptive mesh-refinement
* **BC:** boundary condition (of a simulation)
* **BCK:** `Benkler-Chavannes-Kuster <https://ieeexplore.ieee.org/document/1638381>`__ method, a stabilization technique for small cells in the electromagnetic solver
* **BTD:** backtransformed diagnosics, a method to collect data for analysis from a *boosted frame* simulation
* **CFL:** the Courant-Friedrichs-Lewy condition, a numerical parameter for the numerical convergence of PDE solvers
* **CI:** continuous integration, automated tests that we perform before a proposed code-change is accepted; see PR
Expand Down
3 changes: 3 additions & 0 deletions Docs/source/install/hpc/cori.rst
Original file line number Diff line number Diff line change
Expand Up @@ -249,6 +249,9 @@ The general :ref:`cmake compile-time options and instructions for Python (PICMI)
# PICMI build
cd $HOME/src/warpx
# install or update dependencies
python3 -m pip install -r requirements.txt
# compile parallel PICMI interfaces with openPMD support and 3D, 2D and RZ
WARPX_MPI=ON BUILD_PARALLEL=16 python3 -m pip install --force-reinstall --no-deps -v .
Expand Down
3 changes: 3 additions & 0 deletions Docs/source/install/hpc/perlmutter.rst
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,9 @@ For a *full PICMI install*, follow the :ref:`instructions for Python (PICMI) bin
# PICMI build
cd $HOME/src/warpx
# install or update dependencies
python3 -m pip install -r requirements.txt
# compile parallel PICMI interfaces in 3D, 2D, 1D and RZ
WARPX_MPI=ON WARPX_COMPUTE=CUDA WARPX_PSATD=ON BUILD_PARALLEL=16 python3 -m pip install --force-reinstall --no-deps -v .
Expand Down
3 changes: 3 additions & 0 deletions Docs/source/install/hpc/summit.rst
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,9 @@ We only prefix it to request a node for the compilation (``runNode``), so we can
# PICMI build
cd $HOME/src/warpx
# install or update dependencies
python3 -m pip install -r requirements.txt
# compile parallel PICMI interfaces in 3D, 2D, 1D and RZ
runNode WARPX_MPI=ON WARPX_COMPUTE=CUDA WARPX_PSATD=ON BUILD_PARALLEL=32 python3 -m pip install --force-reinstall --no-deps -v .
Expand Down
32 changes: 32 additions & 0 deletions Docs/source/usage/parameters.rst
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,37 @@ Overall simulation parameters
Note that even with this set to ``1`` WarpX will not catch all out-of-memory events yet when operating close to maximum device memory.
`Please also see the documentation in AMReX <https://amrex-codes.github.io/amrex/docs_html/GPU.html#inputs-parameters>`_.

Signal Handling
^^^^^^^^^^^^^^^

WarpX can handle Unix (Linux/macOS) `process signals <https://en.wikipedia.org/wiki/Signal_(IPC)>`__.
This can be useful to configure jobs on HPC and cloud systems to shut down cleanly when they are close to reaching their allocated walltime or to steer the simulation behavior interactively.

Allowed signal names are documented in the `C++ standard <https://en.cppreference.com/w/cpp/utility/program/SIG_types>`__ and `POSIX <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/signal.h.html>`__.
We follow the same naming, but remove the ``SIG`` prefix, e.g., the WarpX signal configuration name for ``SIGINT`` is ``INT``.

* ``warpx.break_signals`` (array of `string`, separated by spaces) optional
A list of signal names or numbers that the simulation should
handle by cleanly terminating at the next timestep

* ``warpx.checkpoint_signals`` (array of `string`, separated by spaces) optional
A list of signal names or numbers that the simulation should
handle by outputting a checkpoint at the next timestep. A
diagnostic of type `checkpoint` must be configured.

.. note::

Certain signals are only available on specific platforms, please see the links above for details.
Typically supported on Linux and macOS are ``HUP``, ``INT``, ``QUIT``, ``ABRT``, ``USR1``, ``USR2``, ``TERM``, ``TSTP``, ``URG``, and ``IO`` among others.

Signals to think about twice before overwriting in *interactive simulations*:
Note that ``INT`` (interupt) is the signal that ``Ctrl+C`` sends on the terminal, which most people use to abort a process; once overwritten you need to abort interactive jobs with, e.g., ``Ctrl+\`` (``QUIT``) or sending the ``KILL`` signal.
The ``TSTP`` (terminal stop) command is sent interactively from ``Ctrl+Z`` to temporarily send a process to sleep (until send in the background with commands such as ``bg`` or continued with ``fg``), overwriting it would thus disable that functionality.
The signals ``KILL`` and ``STOP`` cannot be used.

The ``FPE`` signal should not be overwritten in WarpX, as it is `controlled by AMReX <https://amrex-codes.github.io/amrex/docs_html/Debugging.html#breaking-into-debuggers>`__ for :ref:`debug workflows that catch invalid floating-point operations <debugging_warpx>`.


.. _running-cpp-parameters-box:

Setting up the field mesh
Expand Down Expand Up @@ -2326,6 +2357,7 @@ Reduced Diagnostics
otherwise it is set to ``1``.
Integrated electric and magnetic field components can instead be obtained by specifying
``<reduced_diags_name>.integrate == true``.
In a *moving window* simulation, the FieldProbe can be set to follow the moving frame by specifying ``<reduced_diags_name>.do_moving_window_FP = 1`` (default 0).

.. warning::

Expand Down
3 changes: 2 additions & 1 deletion Docs/source/usage/workflows/plot_distribution_mapping.rst
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,8 @@ can be used to read the data:
import plot_distribution_mapping as pdm
sim_knapsack = pdm.SimData('LBC_knapsack.txt', # Data directory
[2800] # Files to process
[2800], # Files to process
is_3D=False # if this is a 2D sim
)
sim_sfc = pdm.SimData('LBC_sfc.txt', [2800])
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,11 @@
m = 0
n = 1
p = 1
Lx = 1.06
Ly = 1.06
Lz = 1.06
Lx = 1
Ly = 1
Lz = 1
h_2 = (m * pi / Lx) ** 2 + (n * pi / Ly) ** 2 + (p * pi / Lz) ** 2
theta = np.pi/8
theta = np.pi/6

# Open the right plot file
filename = sys.argv[1]
Expand Down
22 changes: 11 additions & 11 deletions Examples/Modules/embedded_boundary_rotated_cube/inputs_3d
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
stop_time = 5.303669113650618e-09
amr.n_cell = 32 32 32
amr.n_cell = 64 64 64
amr.max_grid_size = 128
amr.max_level = 0

Expand All @@ -13,23 +13,23 @@ boundary.field_hi = pec pec pec

algo.maxwell_solver = ect

my_constants.xmin = -0.53
my_constants.ymin = -0.53
my_constants.zmin = -0.53
my_constants.xmax = 0.53
my_constants.ymax = 0.53
my_constants.zmax = 0.53
my_constants.xmin = -0.5
my_constants.ymin = -0.5
my_constants.zmin = -0.5
my_constants.xmax = 0.5
my_constants.ymax = 0.5
my_constants.zmax = 0.5
my_constants.pi = 3.141592653589793
my_constants.theta = pi/8
my_constants.theta = pi/6

warpx.eb_implicit_function = "max(max(max(x+xmin,-(x+xmax)), max(y*cos(-theta)-z*sin(-theta)+ymin,-(y*cos(-theta)-z*sin(-theta)+ymax))), max(y*sin(-theta)+z*cos(-theta)+zmin,-(y*sin(-theta)+z*cos(-theta)+zmax)))"

my_constants.m = 0
my_constants.n = 1
my_constants.p = 1
my_constants.Lx = 1.06
my_constants.Ly = 1.06
my_constants.Lz = 1.06
my_constants.Lx = 1
my_constants.Ly = 1
my_constants.Lz = 1
my_constants.x_cent = 0.
my_constants.y_cent = 0.
my_constants.z_cent = 0.
Expand Down
12 changes: 12 additions & 0 deletions Examples/Physics_applications/laser_acceleration/inputs_1d
Original file line number Diff line number Diff line change
Expand Up @@ -70,3 +70,15 @@ diagnostics.diags_names = diag1
diag1.intervals = 100
diag1.diag_type = Full
diag1.fields_to_plot = Ex Ey Ez Bx By Bz jx jy jz rho

# Reduced Diagnostics
warpx.reduced_diags_names = FP

FP.type = FieldProbe
FP.intervals = 10
FP.integrate = 0
FP.probe_geometry = Line
FP.z_probe = -56e-6
FP.z1_probe = 12e-6
FP.resolution = 100
FP.do_moving_window_FP = 1
14 changes: 14 additions & 0 deletions Examples/Physics_applications/laser_acceleration/inputs_2d
Original file line number Diff line number Diff line change
Expand Up @@ -87,3 +87,17 @@ diagnostics.diags_names = diag1
diag1.intervals = 200
diag1.diag_type = Full
diag1.fields_to_plot = Ex Ey Ez Bx By Bz jx jy jz rho

# Reduced Diagnostics
warpx.reduced_diags_names = FP

FP.type = FieldProbe
FP.intervals = 10
FP.integrate = 0
FP.probe_geometry = Line
FP.x_probe = 0
FP.z_probe = -56e-6
FP.x1_probe = 0
FP.z1_probe = 12e-6
FP.resolution = 300
FP.do_moving_window_FP = 1
16 changes: 16 additions & 0 deletions Examples/Physics_applications/laser_acceleration/inputs_3d
Original file line number Diff line number Diff line change
Expand Up @@ -77,3 +77,19 @@ diagnostics.diags_names = diag1
diag1.intervals = 100
diag1.diag_type = Full
diag1.fields_to_plot = Ex Ey Ez Bx By Bz jx jy jz rho

# Reduced Diagnostics
warpx.reduced_diags_names = FP

FP.type = FieldProbe
FP.intervals = 10
FP.integrate = 0
FP.probe_geometry = Line
FP.x_probe = 0
FP.y_probe = 0
FP.z_probe = -56e-6
FP.x1_probe = 0
FP.y1_probe = 0
FP.z1_probe = 12e-6
FP.resolution = 300
FP.do_moving_window_FP = 1
8 changes: 6 additions & 2 deletions Examples/Physics_applications/laser_ion/inputs
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ warpx.numprocs = 1 2 # 2 MPI ranks
# The grid & block parameters above are needed for load balancing:
# an average of ~10 grids per MPI rank (and device) are a good granularity
# to allow efficient load-balancing as the simulation evolves
algo.load_balance_intervals = 10
algo.load_balance_intervals = 100
algo.load_balance_costs_update = Heuristic

# particle bin-sorting on GPU (ideal defaults not investigated in 2D)
Expand Down Expand Up @@ -231,7 +231,7 @@ openPMDbw.hydrogen.plot_filter_function(t,x,y,z,ux,uy,uz) = (uz<0)
# histograms with 2.0 degree acceptance angle in fw direction
# 2 deg * pi / 180 : 0.03490658503 rad
# half-angle +/- : 0.017453292515 rad
warpx.reduced_diags_names = histuH histue histuzAll FieldProbe_Z FieldProbe_ScatPoint FieldProbe_ScatLine
warpx.reduced_diags_names = histuH histue histuzAll FieldProbe_Z FieldProbe_ScatPoint FieldProbe_ScatLine LBC

histuH.type = ParticleHistogram
histuH.intervals = 100
Expand Down Expand Up @@ -291,6 +291,10 @@ FieldProbe_ScatLine.x1_probe = 2.5e-6
FieldProbe_ScatLine.z1_probe = 15e-6
FieldProbe_ScatLine.resolution = 201

# check computational load per box
LBC.type = LoadBalanceCosts
LBC.intervals = 100

#################################
# Physical Background
#
Expand Down
28 changes: 16 additions & 12 deletions Examples/Tests/Langmuir/analysis_langmuir_multi.py
Original file line number Diff line number Diff line change
Expand Up @@ -118,20 +118,22 @@ def get_theoretical_field( field, t ):

# Plot the last field from the loop (Ez at iteration 40)
fig, (ax1, ax2) = plt.subplots(1, 2, dpi = 100)
vmin = min(E_sim.min(), E_th.min())
vmax = max(E_sim.max(), E_th.max())
# First plot
# First plot (slice at y=0)
E_plot = E_sim[:,Ncell[1]//2+1,:]
vmin = E_plot.min()
vmax = E_plot.max()
cax1 = make_axes_locatable(ax1).append_axes('right', size = '5%', pad = '5%')
# Plot slice at y=0
im1 = ax1.imshow(E_sim[:,Ncell[1]//2+1,:], origin = 'lower', extent = edge, vmin = vmin, vmax = vmax)
im1 = ax1.imshow(E_plot, origin = 'lower', extent = edge, vmin = vmin, vmax = vmax)
cb1 = fig.colorbar(im1, cax = cax1)
ax1.set_xlabel(r'$z$')
ax1.set_ylabel(r'$x$')
ax1.set_title(r'$E_z$ (sim)')
# Second plot
# Second plot (slice at y=0)
E_plot = E_th[:,Ncell[1]//2+1,:]
vmin = E_plot.min()
vmax = E_plot.max()
cax2 = make_axes_locatable(ax2).append_axes('right', size = '5%', pad = '5%')
# Plot slice at y=0
im2 = ax2.imshow(E_th[:,Ncell[1]//2+1,:], origin = 'lower', extent = edge, vmin = vmin, vmax = vmax)
im2 = ax2.imshow(E_plot, origin = 'lower', extent = edge, vmin = vmin, vmax = vmax)
cb2 = fig.colorbar(im2, cax = cax2)
ax2.set_xlabel(r'$z$')
ax2.set_ylabel(r'$x$')
Expand All @@ -147,14 +149,16 @@ def get_theoretical_field( field, t ):

assert( error_rel < tolerance_rel )

# Check relative L-infinity spatial norm of rho/epsilon_0 - div(E) when
# current correction (psatd.do_current_correction=1) is applied or when
# Vay current deposition (algo.current_deposition=vay) is used
# Check relative L-infinity spatial norm of rho/epsilon_0 - div(E)
# with current correction (and periodic single box option) or with Vay current deposition
if current_correction:
tolerance = 1e-9
elif vay_deposition:
tolerance = 1e-3
if current_correction or vay_deposition:
rho = data[('boxlib','rho')].to_ndarray()
divE = data[('boxlib','divE')].to_ndarray()
error_rel = np.amax( np.abs( divE - rho/epsilon_0 ) ) / np.amax( np.abs( rho/epsilon_0 ) )
tolerance = 1.e-9
print("Check charge conservation:")
print("error_rel = {}".format(error_rel))
print("tolerance = {}".format(tolerance))
Expand Down
16 changes: 10 additions & 6 deletions Examples/Tests/Langmuir/analysis_langmuir_multi_2d.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,16 +92,18 @@ def get_theoretical_field( field, t ):

# Plot the last field from the loop (Ez at iteration 40)
fig, (ax1, ax2) = plt.subplots(1, 2, dpi = 100)
vmin = min(E_sim.min(), E_th.min())
vmax = max(E_sim.max(), E_th.max())
# First plot
vmin = E_sim.min()
vmax = E_sim.max()
cax1 = make_axes_locatable(ax1).append_axes('right', size = '5%', pad = '5%')
im1 = ax1.imshow(E_sim, origin = 'lower', extent = edge, vmin = vmin, vmax = vmax)
cb1 = fig.colorbar(im1, cax = cax1)
ax1.set_xlabel(r'$z$')
ax1.set_ylabel(r'$x$')
ax1.set_title(r'$E_z$ (sim)')
# Second plot
vmin = E_th.min()
vmax = E_th.max()
cax2 = make_axes_locatable(ax2).append_axes('right', size = '5%', pad = '5%')
im2 = ax2.imshow(E_th, origin = 'lower', extent = edge, vmin = vmin, vmax = vmax)
cb2 = fig.colorbar(im2, cax = cax2)
Expand All @@ -119,14 +121,16 @@ def get_theoretical_field( field, t ):

assert( error_rel < tolerance_rel )

# Check relative L-infinity spatial norm of rho/epsilon_0 - div(E) when
# current correction (psatd.do_current_correction=1) is applied or when
# Vay current deposition (algo.current_deposition=vay) is used
# Check relative L-infinity spatial norm of rho/epsilon_0 - div(E)
# with current correction (and periodic single box option) or with Vay current deposition
if current_correction:
tolerance = 1e-9
elif vay_deposition:
tolerance = 1e-3
if current_correction or vay_deposition:
rho = data[('boxlib','rho')].to_ndarray()
divE = data[('boxlib','divE')].to_ndarray()
error_rel = np.amax( np.abs( divE - rho/epsilon_0 ) ) / np.amax( np.abs( rho/epsilon_0 ) )
tolerance = 1.e-9
print("Check charge conservation:")
print("error_rel = {}".format(error_rel))
print("tolerance = {}".format(tolerance))
Expand Down
Loading

0 comments on commit c562208

Please sign in to comment.