Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
Fix a LGTM warning on unused imports in our PEC analysis scripts.
|
|
Fix compile issue on Conda-Forge (Windows with Clang).
|
|
* 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.
|
|
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
|
|
|
|
* AMReX/PICSAR: 21.08
* WarpX: 21.08
|
|
|
|
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 <axel.huebl@plasma.ninja>
* fix typo
* added a test with unique_particles=False
* Apply suggestions from code review
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
* updated docstring and comments
Co-authored-by: atmyers <atmyers2@gmail.com>
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
|
|
By accident, the 2nd test did not use plotfile output.
|
|
|
|
The `groupBased` iteration encoding (input: `g`) was not parsed.
|
|
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.
|
|
|
|
|
|
* CI: Add Missing Python Analysis for EB Test
* Use 1 MPI Process for Azure
|
|
Did not intent to commit that into mainline.
|
|
This is renaming the runtime added optical depth scalars for QED
physics just to create the same names in plotfile and openPMD output.
|
|
|
|
* RZ PSATD: Implement Multi-J Algorithm
* Implement J_linear_in_time Option
* Reduce Style Changes
* Move Copy/Zero/Scale Functions to SpectralFieldDataRZ
* Remove Unused Member m_n_rz_azimuthal_modes from SpectralSolverRZ
* Fix CI -Werror Warnings
* Implement Same Changes of #2116, Cleaning
* Fix Bug: Pass Correct dt to SpectralSolverRZ
* Add CI Test
* CI Test: Set random_theta = 0, Update Benchmark
* Remove random_theta from Inputs
* Update Benchmark of multi_J_rz_psatd
|
|
* generalize_runtime_comps_io
* fix OpenPMD
* fix OpenPMD
* fix plot flags in WritePlotFile
* fix offset and comment
* fix regression
|
|
Update AMReX to AMReX-Codes/amrex@3181f76910e6ac28ec5e099cba3e192bfdbf9076
No changes im PICSAR since last update.
```
./Tools/Release/updatePICSAR.py
./Tools/Release/updateAMReX.py
```
|
|
Update CUDA from 11.0 (default) to 11.3.
|
|
Update modules to latest CMake and CUDA. Make sure MPI is compatible and recommended. Link docs (https://docs-dev.nersc.gov/cgpu/).
|
|
Use latest CMake and latest C++17 capable CUDA.
|
|
Fix #2099. This location for the abort message seemed appropriate to me, please feel free to suggest other locations, if necessary.
|
|
|
|
* added functionality to picmi.py to initialize MCC collisions from python runscripts
* bug fix and copyright declaration change
* add Boltzmann's constant to picmi.py
* added test for picmi MCC setup
* set diagnostic output name for test and cleaned up analysis.py
* fixed style issue with EOL white space after merge
|
|
Seen with CUDA 11.2.0 in C++17 build:
```
nvcc_internal_extended_lambda_implementation: In instantiation of ‘struct __nv_hdl_helper_trait_outer<false, false, const amrex::GpuArray<double, 3>, const amrex::GpuArray<double, 3>, const amrex::Dim3>::__nv_hdl_helper_trait<__nv_dl_tag<amrex::DenseBins<amrex::Particle<0, 0> > (*)(int, const amrex::MFIter&, const amrex::ParticleTile<0, 0, 4, 0, amrex::ArenaAllocator>&), ParticleUtils::findParticlesInEachCell, 1>, amrex::IntVect (ParticleUtils::findParticlesInEachCell(int, const amrex::MFIter&, const ParticleTileType&)::<lambda(const ParticleType&)>::*)(const amrex::Particle<0, 0>&) const noexcept>’:
nvcc_internal_extended_lambda_implementation:677:8: required from ‘struct __nv_hdl_helper_trait_outer<false, false, const amrex::GpuArray<double, 3>, const amrex::GpuArray<double, 3>, const amrex::Dim3>::__nv_hdl_helper_trait<__nv_dl_tag<amrex::DenseBins<amrex::Particle<0, 0> > (*)(int, const amrex::MFIter&, const amrex::ParticleTile<0, 0, 4, 0, amrex::ArenaAllocator>&), ParticleUtils::findParticlesInEachCell, 1>, ParticleUtils::findParticlesInEachCell(int, const amrex::MFIter&, const ParticleTileType&)::<lambda(const ParticleType&)> >’
nvcc_internal_extended_lambda_implementation:696:204: required by substitution of ‘template<class Lambda> static decltype (__nv_hdl_helper_trait_outer<false, false, const amrex::GpuArray<double, 3>, const amrex::GpuArray<double, 3>, const amrex::Dim3>::__nv_hdl_helper_trait<__nv_dl_tag<amrex::DenseBins<amrex::Particle<0, 0> > (*)(int, const amrex::MFIter&, const amrex::ParticleTile<0, 0, 4, 0, amrex::ArenaAllocator>&), ParticleUtils::findParticlesInEachCell, 1>, Lambda>::get(lam, args#0, args#1, args#2)) __nv_hdl_create_wrapper_t<false, false, __nv_dl_tag<amrex::DenseBins<amrex::Particle<0, 0> > (*)(int, const amrex::MFIter&, const amrex::ParticleTile<0, 0, 4, 0, amrex::ArenaAllocator>&), ParticleUtils::findParticlesInEachCell, 1>, const amrex::GpuArray<double, 3>, const amrex::GpuArray<double, 3>, const amrex::Dim3>::__nv_hdl_create_wrapper<Lambda>(Lambda&&, amrex::GpuArray<double, 3>, amrex::GpuArray<double, 3>, amrex::Dim3) [with Lambda = ParticleUtils::findParticlesInEachCell(int, const amrex::MFIter&, const ParticleTileType&)::<lambda(const ParticleType&)>]’
/home/axel/src/warpx/Source/Utils/ParticleUtils.cpp:62:17: required from here
nvcc_internal_extended_lambda_implementation:677:77: error: ‘operator()’ is not a member of ‘amrex::IntVect (ParticleUtils::findParticlesInEachCell(int, const amrex::MFIter&, const ParticleTileType&)::<lambda(const ParticleType&)>::*)(const amrex::Particle<0, 0>&) const noexcept’
/home/axel/src/warpx/Source/Utils/ParticleUtils.cpp: In function ‘ParticleUtils::ParticleBins ParticleUtils::findParticlesInEachCell(int, const amrex::MFIter&, const ParticleTileType&)’:
/home/axel/src/warpx/Source/Utils/ParticleUtils.cpp:62:17: error: no matching function for call to ‘__nv_hdl_create_wrapper_t<false, false, __nv_dl_tag<amrex::DenseBins<amrex::Particle<0, 0> > (*)(int, const amrex::MFIter&, const amrex::ParticleTile<0, 0, 4, 0, amrex::ArenaAllocator>&), ParticleUtils::findParticlesInEachCell, 1>, const amrex::GpuArray<double, 3>, const amrex::GpuArray<double, 3>, const amrex::Dim3>::__nv_hdl_create_wrapper(ParticleUtils::findParticlesInEachCell(int, const amrex::MFIter&, const ParticleTileType&)::<lambda(const ParticleType&)>, const amrex::GpuArray<double, 3>&, const amrex::GpuArray<double, 3>&, const amrex::Dim3&)’
62 | });
| ^
nvcc_internal_extended_lambda_implementation:696:13: note: candidate: ‘template<class Lambda> static decltype (typename __nv_hdl_helper_trait_outer<IsMutable, HasFuncPtrConv, CaptureArgs ...>::__nv_hdl_helper_trait<Tag, Lambda>::get(lam, __nv_hdl_create_wrapper_t::__nv_hdl_create_wrapper::args ...)) __nv_hdl_create_wrapper_t<IsMutable, HasFuncPtrConv, Tag, CaptureArgs>::__nv_hdl_create_wrapper(Lambda&&, CaptureArgs ...) [with Lambda = Lambda; bool IsMutable = false; bool HasFuncPtrConv = false; Tag = __nv_dl_tag<amrex::DenseBins<amrex::Particle<0, 0> > (*)(int, const amrex::MFIter&, const amrex::ParticleTile<0, 0, 4, 0, amrex::ArenaAllocator>&), ParticleUtils::findParticlesInEachCell, 1>; CaptureArgs = {const amrex::GpuArray<double, 3>, const amrex::GpuArray<double, 3>, const amrex::Dim3}]’
nvcc_internal_extended_lambda_implementation:696:13: note: substitution of deduced template arguments resulted in errors seen above
```
Since this lambda is only needed on device, we can relax the qualifier.
|
|
* clean up documentation
* remove left-over function declaration not used or defined
|
|
|
|
|
|
* added functionality to picmi.py to allow an embedded boundary to be set from a python run script
* added test: embedded sphere run from python (the test is the same as ElectrostaticSphereEB)
* added a line to prepare_file_travis.py so that tests with USE_EB=True are not included in Python CI test list
* fixed import path in analysis.py file for new test
* added WarpX_EB flag to setup.py so that embedded boundary functionality can be included in pip installs of pywarpx
|
|
* Particle injection callback for ElectrostaticSolver
* Move warpx_py_particleinjection to line 162, removed from OneStep_nosub
* Space above particleinjection callback
|
|
|
|
* Multi-J Algo: Make div(E)/div(B) Cleaning Optional
* Remove Unnecessary Newlines
|
|
* AMReX: 91fa2b7e6ff33117bd537635c8c55192359863a2
Include HIP ROCMClang recog. in AMReX:
https://github.com/AMReX-Codes/amrex/pull/2184
* HIP CI: Use clang++ directly
Looks like the C++14 flags are missing
|
|
|
|
|
|
|
|
* ChecksumAPI: yt 4+ ds.force_periodicity()
Mitigate issues of the form
```
RuntimeError: yt attempted to read outside the boundaries of a non-periodic domain along dimension 0.
Region left edge = -7.5e-06 code_length, Region right edge = 7.500000000000002e-06 code_length
Dataset left edge = -7.5e-06 code_length, Dataset right edge = 7.5e-06 code_length
This commonly happens when trying to compute ghost cells up to the domain boundary. Two possible solutions are to select a smaller region that does not border domain edge (see https://yt-project.org/docs/analyzing/objects.html?highlight=region)
or override the periodicity with
ds.force_periodicity()
```
* make yt3 compatible
|
|
Update AMReX to AMReX-Codes/amrex@ee8facf7e09d0b40af1fe680665660c24a19d32a
No changes im PICSAR since last update.
```
./Tools/Release/updatePICSAR.py
./Tools/Release/updateAMReX.py
```
|
|
* 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
* removed unneeded function declaration
|
|
* Implements a periodically repeating plasma lens
* Added documentation for plasma lenses
* Added m_n_lenses to avoid use of size in device code
* Change arrays to device arrays
* Put DeviceVectors in the MultiParticleContainer
* Update Source/Particles/MultiParticleContainer.cpp
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
* Update Source/Particles/Gather/GetExternalFields.cpp
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
* Added CI test
* Updated CI test
* LGTM clean up
* Moved literal namespace inside the routine
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
|
|
* support only new boundary interface. set pml flags to 0 as default
* use new boundary interface in Examples/Modules/
* use new boundary interface in the input for tests in Examples/Physical_applications
* use new boundary interface in the input for tests in Examples/Tests
* use new bc
* fix typo
* fix typo
* Update Examples/Tests/SingleParticle/inputs_2d
* fix bc in input
* specific bc for electrostatic inputs
* resetting benchmark for PEC particle CI test after fixing the default pml flags from 1 to 0
* Update Examples/Physics_applications/laser_acceleration/inputs_2d_rz
* remove documentation on previous boundary input
* Comment to clarify where in the code is_periodic is appended and how it is defined
* add default parameters for BC in doc
|
|
* 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 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
|
|
|
|
- keep openPMD explicitly in the list as long GNUmake
is used for `run_tests.sh` CI
- add more info on BLAS++/LAPACK++ with Brew (manual)
|
|
|
|
|