diff --git a/.github/workflows/cuda.yml b/.github/workflows/cuda.yml index 7e1cf7ae63f..e6ba115925a 100644 --- a/.github/workflows/cuda.yml +++ b/.github/workflows/cuda.yml @@ -115,7 +115,7 @@ jobs: which nvcc || echo "nvcc not in PATH!" git clone https://github.com/AMReX-Codes/amrex.git ../amrex - cd ../amrex && git checkout --detach 259db7cfb99e7d1d2ab4bec9b1587fdf624a138a && cd - + cd ../amrex && git checkout --detach dcb9cc0383dcc71e38dee9070574e325a812f8bf && cd - make COMP=gcc QED=FALSE USE_MPI=TRUE USE_GPU=TRUE USE_OMP=FALSE USE_FFT=TRUE USE_CCACHE=TRUE -j 4 ccache -s diff --git a/CMakeLists.txt b/CMakeLists.txt index 5e2d1ebba9c..9c81a057131 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ # Preamble #################################################################### # cmake_minimum_required(VERSION 3.20.0) -project(WarpX VERSION 24.06) +project(WarpX VERSION 24.07) include(${WarpX_SOURCE_DIR}/cmake/WarpXFunctions.cmake) @@ -146,10 +146,19 @@ set_default_build_type("Release") # Option to enable interprocedural optimization # (also know as "link-time optimization" or "whole program optimization") -option(WarpX_IPO "Compile WarpX with interprocedural optimization (will take more time)" OFF) +set(_WarpX_IPO_DEFAULT OFF) +set(_WarpX_PYTHON_IPO_DEFAULT ON) +if(DEFINED CMAKE_INTERPROCEDURAL_OPTIMIZATION) + set(_WarpX_IPO_DEFAULT ${CMAKE_INTERPROCEDURAL_OPTIMIZATION}) + set(_WarpX_PYTHON_IPO_DEFAULT ${CMAKE_INTERPROCEDURAL_OPTIMIZATION}) +endif() +option(WarpX_IPO + "Compile WarpX with interprocedural optimization (will take more time)" + ${_WarpX_IPO_DEFAULT} +) option(WarpX_PYTHON_IPO "Compile Python bindings with interprocedural optimization (IPO) / link-time optimization (LTO)" - ON + ${_WarpX_PYTHON_IPO_DEFAULT} ) set(pyWarpX_VERSION_INFO "" CACHE STRING @@ -455,7 +464,7 @@ endif() # Interprocedural optimization (IPO) / Link-Time Optimization (LTO) if(WarpX_IPO) - enable_IPO("${_ALL_TARGETS}") + warpx_enable_IPO("${_ALL_TARGETS}") endif() # link dependencies @@ -488,7 +497,13 @@ foreach(D IN LISTS WarpX_DIMS) if(WarpX_PYTHON) target_link_libraries(pyWarpX_${SD} PRIVATE pybind11::module pybind11::windows_extras) if(WarpX_PYTHON_IPO) - target_link_libraries(pyWarpX_${SD} PRIVATE pybind11::lto) + if(DEFINED CMAKE_INTERPROCEDURAL_OPTIMIZATION) + warpx_enable_IPO(pyWarpX_${SD}) + else() + # conditionally defined target in pybind11 + # https://github.com/pybind/pybind11/blob/v2.12.0/tools/pybind11Common.cmake#L397-L403 + target_link_libraries(pyWarpX_${SD} PRIVATE pybind11::lto) + endif() endif() endif() diff --git a/Docs/requirements.txt b/Docs/requirements.txt index b16bf161144..1ce1ee6c1a0 100644 --- a/Docs/requirements.txt +++ b/Docs/requirements.txt @@ -13,7 +13,7 @@ openpmd-viewer # for checksumAPI # PICMI API docs # note: keep in sync with version in ../requirements.txt -picmistandard==0.28.0 +picmistandard==0.29.0 # for development against an unreleased PICMI version, use: # picmistandard @ git+https://github.com/picmi-standard/picmi.git#subdirectory=PICMI_Python diff --git a/Docs/source/conf.py b/Docs/source/conf.py index 18ca8370e80..7997b1e338c 100644 --- a/Docs/source/conf.py +++ b/Docs/source/conf.py @@ -103,9 +103,9 @@ def __init__(self, *args, **kwargs): # built documents. # # The short X.Y version. -version = u'24.06' +version = u'24.07' # The full version, including alpha/beta/rc tags. -release = u'24.06' +release = u'24.07' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/Docs/source/usage/parameters.rst b/Docs/source/usage/parameters.rst index 35b21599b42..d66fdd65fab 100644 --- a/Docs/source/usage/parameters.rst +++ b/Docs/source/usage/parameters.rst @@ -86,7 +86,7 @@ Overall simulation parameters * ``explicit``: Use an explicit solver, such as the standard FDTD or PSATD - * ``theta_implicit_em``: Use a fully implicit electromagnetic solver with a time-biasing parameter theta bound between 0.5 and 1.0. Exact energy conservation is achieved using theta = 0.5. Maximal damping of high-k modes is obtained using theta = 1.0. Choices for the nonlinear solver include a Picard iteration scheme and particle-suppressed (PS) JNFK. + * ``theta_implicit_em``: Use a fully implicit electromagnetic solver with a time-biasing parameter theta bound between 0.5 and 1.0. Exact energy conservation is achieved using theta = 0.5. Maximal damping of high-k modes is obtained using theta = 1.0. Choices for the nonlinear solver include a Picard iteration scheme and particle-suppressed (PS) JFNK. The algorithm itself is numerical stable for large time steps. That is, it does not require time steps that resolve the plasma period or the CFL condition for light waves. However, the practicality of using a large time step depends on the nonlinear solver. Note that the Picard solver is for demonstration only. It is inefficient and will most like not converge when :math:`\omega_{pe} \Delta t` is close to or greater than one or when the CFL condition for light waves is violated. The PS-JFNK method must be used in order to use large time steps. However, the current implementation of PS-JFNK is still inefficient because the JFNK solver is not preconditioned and there is no use of the mass matrices to minimize the cost of a linear iteration. The time step is limited by how many cells a particle can cross in a time step (MPI-related) and by the need to resolve the relevant physics. The Picard method is described in `Angus et al., On numerical energy conservation for an implicit particle-in-cell method coupled with a binary Monte-Carlo algorithm for Coulomb collisions `__. @@ -500,7 +500,7 @@ Domain Boundary Conditions * ``open``: For the electrostatic Poisson solver based on a Integrated Green Function method. * ``boundary.potential_lo_x/y/z`` and ``boundary.potential_hi_x/y/z`` (default `0`) - Gives the value of the electric potential at the boundaries, for ``pec`` boundaries. With electrostatic solvers + Gives the value of the electric potential, in Volts, at the boundaries, for ``pec`` boundaries. With electrostatic solvers (i.e., with ``warpx.do_electrostatic = ...``), this is used in order to compute the potential in the simulation volume at each timestep. When using other solvers (e.g. Maxwell solver), setting these variables will trigger an electrostatic solve at ``t=0``, to compute the initial @@ -603,7 +603,7 @@ Whether the embedded boundary is defined with an analytical function or an STL f additionally define the electric potential at the embedded boundary with an analytical function: * ``warpx.eb_potential(x,y,z,t)`` (`string`) - Gives the value of the electric potential at the surface of the embedded boundary, + Gives the value of the electric potential, in Volts, at the surface of the embedded boundary, as a function of `x`, `y`, `z` and `t`. With electrostatic solvers (i.e., with ``warpx.do_electrostatic = ...``), this is used in order to compute the potential in the simulation volume at each timestep. When using other solvers (e.g. Maxwell solver), @@ -1163,8 +1163,8 @@ Particle initialization * ``gaussian_parse_momentum_function``: Gaussian momentum distribution where the mean and the standard deviation are given by functions of position in the input file. Both are assumed to be non-relativistic. The mean is the normalized momentum, :math:`u_m = \gamma v_m/c`. - The standard deviation is normalized, :math:`u_th = v_th/c`. - For example, this might be `u_th = sqrt(T*q_e/mass)/clight` given the temperature (in eV) and mass. + The standard deviation is normalized, :math:`u_{th} = v_{th}/c`. + For example, this might be ``u_th = sqrt(T*q_e/mass)/clight`` given the temperature (in eV) and mass. It requires the following arguments: * ``.momentum_function_ux_m(x,y,z)``: mean :math:`u_{x}` @@ -1754,8 +1754,8 @@ are applied to the grid directly. In particular, these fields can be seen in the One can refer to input files in ``Examples/Tests/LoadExternalField`` for more information. Regarding how to prepare the openPMD data file, one can refer to the `openPMD-example-datasets `__. - Note that if both `B_ext_grid_init_style` and `E_ext_grid_init_style` are set to - `read_from_file`, the openPMD file specified by `warpx.read_fields_from_path` + Note that if both ``B_ext_grid_init_style`` and ``E_ext_grid_init_style`` are set to + ``read_from_file``, the openPMD file specified by ``warpx.read_fields_from_path`` should contain both B and E external fields data. * ``warpx.E_external_grid`` & ``warpx.B_external_grid`` (list of `3 floats`) @@ -1811,6 +1811,21 @@ are applied to the particles directly, at each timestep. As a results, these fie Note that the position is defined in Cartesian coordinates, as a function of (x,y,z), even for RZ. + * ``read_from_file``: load the external field from an openPMD file. + An additional parameter, indicating the path of an openPMD data file, ``particles.read_fields_from_path`` + must be specified, from which the external E field data can be loaded into WarpX. + One can refer to input files in ``Examples/Tests/LoadExternalField`` for more information. + Regarding how to prepare the openPMD data file, one can refer to + the `openPMD-example-datasets `__. + Note that if both ``B_ext_particle_init_style`` and ``E_ext_particle_init_style`` are set to + ``read_from_file``, the openPMD file specified by ``particles.read_fields_from_path`` + should contain both B and E external fields data. + + .. note:: + + When using ``read_from_file``, the fields loaded from the file will be interpolated + to the resolution of the grid used for the simulation. + * ``repeated_plasma_lens``: apply a series of plasma lenses. The properties of the lenses are defined in the lab frame by the input parameters: @@ -2453,7 +2468,7 @@ Grid types (collocated, staggered, hybrid) For example, :math:`E_z` is gathered using ``algo.particle_shape`` along :math:`(x,y)` and ``algo.particle_shape - 1`` along :math:`z`. See equations (21)-(23) of :cite:t:`param-Godfrey2013` and associated references for details. - Default: ``interpolation.galerkin_scheme = 0`` with collocated grids and/or momentum-conserving field gathering, ``interpolation.galerkin_scheme = 1`` otherwise. + Default: ``interpolation.galerkin_scheme = 0`` with collocated grids, or momentum-conserving field gathering, or when ``algo.current_deposition = direct`` ; ``interpolation.galerkin_scheme = 1`` otherwise. .. warning:: diff --git a/Examples/Tests/LoadExternalField/PICMI_inputs_3d.py b/Examples/Tests/LoadExternalField/PICMI_inputs_3d_grid_fields.py similarity index 96% rename from Examples/Tests/LoadExternalField/PICMI_inputs_3d.py rename to Examples/Tests/LoadExternalField/PICMI_inputs_3d_grid_fields.py index 849d4d2be08..d128d9c10e0 100644 --- a/Examples/Tests/LoadExternalField/PICMI_inputs_3d.py +++ b/Examples/Tests/LoadExternalField/PICMI_inputs_3d_grid_fields.py @@ -93,7 +93,7 @@ species=[ions], data_list = ['ux', 'uy', 'uz', 'x', 'y', 'z', 'weighting'], write_dir='.', - warpx_file_prefix='Python_LoadExternalField3D_plt' + warpx_file_prefix='Python_LoadExternalGridField3D_plt' ) field_diag = picmi.FieldDiagnostic( name='diag1', @@ -101,7 +101,7 @@ period=300, data_list = ['Bx', 'By', 'Bz', 'Ex', 'Ey', 'Ez', 'Jx', 'Jy', 'Jz'], write_dir='.', - warpx_file_prefix='Python_LoadExternalField3D_plt' + warpx_file_prefix='Python_LoadExternalGridField3D_plt' ) ################################# diff --git a/Examples/Tests/LoadExternalField/PICMI_inputs_3d_particle_fields.py b/Examples/Tests/LoadExternalField/PICMI_inputs_3d_particle_fields.py new file mode 100644 index 00000000000..7bf7c5a084c --- /dev/null +++ b/Examples/Tests/LoadExternalField/PICMI_inputs_3d_particle_fields.py @@ -0,0 +1,140 @@ +#!/usr/bin/env python3 +# +# --- Input file for loading initial field from openPMD file. + +from pywarpx import picmi + +constants = picmi.constants + +################################# +####### GENERAL PARAMETERS ###### +################################# + +max_steps = 300 + +max_grid_size = 40 +nx = max_grid_size +ny = max_grid_size +nz = max_grid_size + +xmin = -1 +xmax = 1 +ymin = xmin +ymax = xmax +zmin = 0 +zmax = 5 + +number_per_cell = 200 + +################################# +############ NUMERICS ########### +################################# + +verbose = 1 +dt = 4.4e-7 +use_filter = 0 + +# Order of particle shape factors +particle_shape = 1 + +################################# +############ PLASMA ############# +################################# + +ion_dist = picmi.ParticleListDistribution( + x=0.0, + y=0.2, + z=2.5, + ux=9.5e-05*constants.c, + uy=0.0*constants.c, + uz=1.34e-4*constants.c, + weight=1.0 + ) + +ions = picmi.Species( + particle_type='H', + name='proton', charge='q_e',mass="m_p", + warpx_do_not_deposit=1, + initial_distribution=ion_dist + ) + +################################# +######## INITIAL FIELD ########## +################################# + +applied_field = picmi.LoadAppliedField( + read_fields_from_path="../../../../openPMD-example-datasets/example-femm-3d.h5", + load_E=False + ) + +################################# +###### GRID AND SOLVER ########## +################################# + +grid = picmi.Cartesian3DGrid( + number_of_cells=[nx, ny, nz], + warpx_max_grid_size=max_grid_size, + lower_bound=[xmin, ymin, zmin], + upper_bound=[xmax, ymax, zmax], + lower_boundary_conditions=['dirichlet', 'dirichlet', 'dirichlet'], + upper_boundary_conditions=['dirichlet', 'dirichlet', 'dirichlet'], + lower_boundary_conditions_particles=['absorbing', 'absorbing', 'absorbing'], + upper_boundary_conditions_particles=['absorbing', 'absorbing', 'absorbing'] + ) +solver = picmi.ElectrostaticSolver(grid=grid) + +################################# +######### DIAGNOSTICS ########### +################################# + +particle_diag = picmi.ParticleDiagnostic( + name='diag1', + period=300, + species=[ions], + data_list = ['ux', 'uy', 'uz', 'x', 'y', 'z', 'weighting'], + write_dir='.', + warpx_file_prefix='Python_LoadExternalParticleField3D_plt' + ) +field_diag = picmi.FieldDiagnostic( + name='diag1', + grid=grid, + period=300, + data_list = ['Bx', 'By', 'Bz', 'Ex', 'Ey', 'Ez', 'Jx', 'Jy', 'Jz'], + write_dir='.', + warpx_file_prefix='Python_LoadExternalParticleField3D_plt' + ) + +################################# +####### SIMULATION SETUP ######## +################################# + +sim = picmi.Simulation( + solver=solver, + max_steps=max_steps, + verbose=verbose, + warpx_serialize_initial_conditions=False, + warpx_grid_type='collocated', + warpx_do_dynamic_scheduling=False, + warpx_use_filter=use_filter, + time_step_size=dt, + particle_shape=particle_shape + ) + +sim.add_applied_field(applied_field) + +sim.add_species( + ions, + layout=picmi.PseudoRandomLayout( + n_macroparticles_per_cell=number_per_cell, grid=grid + ) + ) + +sim.add_diagnostic(field_diag) +sim.add_diagnostic(particle_diag) + +################################# +##### SIMULATION EXECUTION ###### +################################# + +#sim.write_input_file('PICMI_inputs_3d') +sim.step(max_steps) diff --git a/Examples/Tests/LoadExternalField/inputs_rz b/Examples/Tests/LoadExternalField/inputs_rz_grid_fields similarity index 100% rename from Examples/Tests/LoadExternalField/inputs_rz rename to Examples/Tests/LoadExternalField/inputs_rz_grid_fields diff --git a/Examples/Tests/LoadExternalField/inputs_rz_particle_fields b/Examples/Tests/LoadExternalField/inputs_rz_particle_fields new file mode 100644 index 00000000000..b76d4cb7efc --- /dev/null +++ b/Examples/Tests/LoadExternalField/inputs_rz_particle_fields @@ -0,0 +1,65 @@ +warpx.serialize_initial_conditions = 0 +warpx.do_dynamic_scheduling = 0 +particles.do_tiling = 0 + +particles.B_ext_particle_init_style = "read_from_file" +particles.read_fields_from_path = "../../../../openPMD-example-datasets/example-femm-thetaMode.h5" + +warpx.grid_type = collocated +warpx.do_electrostatic = labframe + +################################# +####### GENERAL PARAMETERS ###### +################################# +max_step = 300 +amr.n_cell = 40 40 +warpx.numprocs = 1 1 +amr.max_level = 0 +geometry.dims = RZ + +geometry.prob_lo = 0.0 0.0 +geometry.prob_hi = 1.0 5.0 + +################################# +###### Boundary Condition ####### +################################# +boundary.field_lo = none pec +boundary.field_hi = pec pec +boundary.potential_lo_x = 0 +boundary.potential_hi_x = 0 +boundary.potential_lo_y = 0 +boundary.potential_hi_y = 0 +boundary.potential_lo_z = 0 +boundary.potential_hi_z = 0 + +################################# +############ NUMERICS ########### +################################# +warpx.serialize_initial_conditions = 1 +warpx.verbose = 1 +warpx.const_dt = 4.40917904849092e-7 +warpx.use_filter = 0 + +# Order of particle shape factors +algo.particle_shape = 1 + +################################# +############ PLASMA ############# +################################# +particles.species_names = proton +proton.injection_style = "SingleParticle" +proton.single_particle_pos = 0.0 0.2 2.5 +proton.single_particle_u = 9.506735958279367e-05 0.0 0.00013435537232359165 +proton.single_particle_weight = 1.0 +proton.do_not_deposit = 1 +proton.mass = m_p +proton.charge = q_e + +# Diagnostics +diagnostics.diags_names = diag1 chk +diag1.intervals = 300 +diag1.diag_type = Full + +chk.intervals = 150 +chk.diag_type = Full +chk.format = checkpoint diff --git a/Examples/Tests/collision/analysis_collision_3d.py b/Examples/Tests/collision/analysis_collision_3d.py index ee0c81d8f75..86a434caab2 100755 --- a/Examples/Tests/collision/analysis_collision_3d.py +++ b/Examples/Tests/collision/analysis_collision_3d.py @@ -111,4 +111,4 @@ dim, species_name) test_name = os.path.split(os.getcwd())[1] -checksumAPI.evaluate_checksum(test_name, fn, do_particles=False) +checksumAPI.evaluate_checksum(test_name, fn) diff --git a/Examples/Tests/nuclear_fusion/analysis_deuterium_deuterium_3d_intraspecies.py b/Examples/Tests/nuclear_fusion/analysis_deuterium_deuterium_3d_intraspecies.py index 70178fe97a6..858df0b26a6 100755 --- a/Examples/Tests/nuclear_fusion/analysis_deuterium_deuterium_3d_intraspecies.py +++ b/Examples/Tests/nuclear_fusion/analysis_deuterium_deuterium_3d_intraspecies.py @@ -47,7 +47,9 @@ sigma_th = 2.603e-18 error = np.abs(sigma-sigma_th)/sigma_th -tolerance = 1e-2 +tolerance = 2e-2 +print('error = ', error) +print('tolerance = ', tolerance) assert error < tolerance # Compare checksums with benchmark diff --git a/Examples/Tests/nuclear_fusion/inputs_deuterium_deuterium_3d_intraspecies b/Examples/Tests/nuclear_fusion/inputs_deuterium_deuterium_3d_intraspecies index 985cc2d7612..0030ca9b945 100644 --- a/Examples/Tests/nuclear_fusion/inputs_deuterium_deuterium_3d_intraspecies +++ b/Examples/Tests/nuclear_fusion/inputs_deuterium_deuterium_3d_intraspecies @@ -8,6 +8,8 @@ # plasma simulations. Journal of Computational Physics, 388, pp.439-453. # DOI: https://doi.org/10.1016/j.jcp.2019.03.020 +warpx.random_seed = 1034958209 + # algo algo.particle_shape = 3 diff --git a/Python/pywarpx/picmi.py b/Python/pywarpx/picmi.py index b098df0bbec..60dc81ea00c 100644 --- a/Python/pywarpx/picmi.py +++ b/Python/pywarpx/picmi.py @@ -1491,6 +1491,13 @@ def applied_field_initialize_inputs(self): expression = pywarpx.my_constants.mangle_expression(expression, self.mangle_dict) pywarpx.warpx.__setattr__(f'B{sdir}_external_grid_function(x,y,z)', expression) +class LoadAppliedField(picmistandard.PICMI_LoadAppliedField): + def applied_field_initialize_inputs(self): + pywarpx.particles.read_fields_from_path = self.read_fields_from_path + if self.load_E: + pywarpx.particles.E_ext_particle_init_style = 'read_from_file' + if self.load_B: + pywarpx.particles.B_ext_particle_init_style = 'read_from_file' class ConstantAppliedField(picmistandard.PICMI_ConstantAppliedField): def applied_field_initialize_inputs(self): diff --git a/Python/setup.py b/Python/setup.py index 9f9c8d7d736..31f35eeceac 100644 --- a/Python/setup.py +++ b/Python/setup.py @@ -54,12 +54,12 @@ package_data = {} setup(name = 'pywarpx', - version = '24.06', + version = '24.07', packages = ['pywarpx'], package_dir = {'pywarpx': 'pywarpx'}, description = """Wrapper of WarpX""", package_data = package_data, - install_requires = ['numpy', 'picmistandard==0.28.0', 'periodictable'], + install_requires = ['numpy', 'picmistandard==0.29.0', 'periodictable'], python_requires = '>=3.8', zip_safe=False ) diff --git a/Regression/Checksum/benchmarks_json/Deuterium_Deuterium_Fusion_3D_intraspecies.json b/Regression/Checksum/benchmarks_json/Deuterium_Deuterium_Fusion_3D_intraspecies.json index 59818f62826..45e29874cda 100644 --- a/Regression/Checksum/benchmarks_json/Deuterium_Deuterium_Fusion_3D_intraspecies.json +++ b/Regression/Checksum/benchmarks_json/Deuterium_Deuterium_Fusion_3D_intraspecies.json @@ -1,34 +1,34 @@ { "lev=0": { "rho": 0.0, - "rho_deuterium": 8203144355.71195, - "rho_helium3": 10.368009592276463 + "rho_deuterium": 8203144355.767546, + "rho_helium3": 10.312416024595505 }, "neutron": { - "particle_momentum_x": 2.2543499835759282e-15, - "particle_momentum_y": 2.2526527390783875e-15, - "particle_momentum_z": 2.2619641737859965e-15, - "particle_position_x": 61.961041864660686, - "particle_position_y": 61.78141653674165, - "particle_position_z": 61.741022731492514, - "particle_weight": 505562702.7678892 + "particle_momentum_x": 2.260586487910896e-15, + "particle_momentum_y": 2.2564723094408887e-15, + "particle_momentum_z": 2.263164930227645e-15, + "particle_position_x": 62.03084683414219, + "particle_position_y": 61.95011296352698, + "particle_position_z": 62.02404756675538, + "particle_weight": 502851860.91505826 }, "deuterium": { - "particle_momentum_x": 1.3370046499332103e-14, - "particle_momentum_y": 1.3364310231320824e-14, - "particle_momentum_z": 1.3372728873714894e-14, - "particle_position_x": 2560.1613417364665, - "particle_position_y": 2560.082464065988, - "particle_position_z": 2560.0018477161034, - "particle_weight": 7.999999989888742e+17 + "particle_momentum_x": 1.3380470537895298e-14, + "particle_momentum_y": 1.3367685546044215e-14, + "particle_momentum_z": 1.3372922616599391e-14, + "particle_position_x": 2559.782513518522, + "particle_position_y": 2559.8747993471684, + "particle_position_z": 2560.2864832238383, + "particle_weight": 7.999999989942968e+17 }, "helium3": { - "particle_momentum_x": 2.2749239620327265e-15, - "particle_momentum_y": 2.268697031603961e-15, - "particle_momentum_z": 2.278045756364995e-15, - "particle_position_x": 61.961041864660686, - "particle_position_y": 61.78141653674165, - "particle_position_z": 61.741022731492514, - "particle_weight": 505562702.7678892 + "particle_momentum_x": 2.278275200450756e-15, + "particle_momentum_y": 2.2738610200497133e-15, + "particle_momentum_z": 2.2792408973056887e-15, + "particle_position_x": 62.03084683414219, + "particle_position_y": 61.95011296352698, + "particle_position_z": 62.02404756675538, + "particle_weight": 502851860.91505826 } -} \ No newline at end of file +} diff --git a/Regression/Checksum/benchmarks_json/Langmuir_multi_2d_MR_psatd.json b/Regression/Checksum/benchmarks_json/Langmuir_multi_2d_MR_psatd.json index 378b7691898..07c990b3997 100644 --- a/Regression/Checksum/benchmarks_json/Langmuir_multi_2d_MR_psatd.json +++ b/Regression/Checksum/benchmarks_json/Langmuir_multi_2d_MR_psatd.json @@ -1,40 +1,40 @@ { - "electrons": { - "particle_momentum_x": 4.2387000553111037e-20, - "particle_momentum_y": 0.0, - "particle_momentum_z": 4.238700039223283e-20, - "particle_position_x": 0.6553599659707846, - "particle_position_y": 0.6553599659699976, - "particle_weight": 3200000000000000.5 - }, "lev=0": { "Bx": 0.0, - "By": 46.86760020196344, + "By": 46.65494014556924, "Bz": 0.0, - "Ex": 7589330186947.288, + "Ex": 7596470155558.35, "Ey": 0.0, - "Ez": 7589330198843.742, - "jx": 7283102663077210.0, + "Ez": 7596470167219.471, + "jx": 7277974695617658.0, "jy": 0.0, - "jz": 7283102630279985.0 + "jz": 7277974664068728.0 }, "lev=1": { "Bx": 0.0, - "By": 369.2209081024592, + "By": 371.2497742366917, "Bz": 0.0, - "Ex": 7593801203430.788, + "Ex": 7596619292118.433, "Ey": 0.0, - "Ez": 7593800988021.711, - "jx": 6597471633118175.0, + "Ez": 7596619076137.7295, + "jx": 6592788899529852.0, "jy": 0.0, - "jz": 6597471447306984.0 + "jz": 6592788734672843.0 + }, + "electrons": { + "particle_momentum_x": 4.2314133085678375e-20, + "particle_momentum_y": 0.0, + "particle_momentum_z": 4.2314132920088513e-20, + "particle_position_x": 0.6553599899254421, + "particle_position_y": 0.6553599899246253, + "particle_weight": 3200000000000000.5 }, "positrons": { - "particle_momentum_x": 4.238670783273887e-20, + "particle_momentum_x": 4.2314444192249906e-20, "particle_momentum_y": 0.0, - "particle_momentum_z": 4.238670762294589e-20, - "particle_position_x": 0.6553596917214832, - "particle_position_y": 0.6553596917221793, + "particle_momentum_z": 4.231444401040395e-20, + "particle_position_x": 0.655359770013864, + "particle_position_y": 0.6553597700144888, "particle_weight": 3200000000000000.5 } } \ No newline at end of file diff --git a/Regression/Checksum/benchmarks_json/Langmuir_multi_2d_psatd.json b/Regression/Checksum/benchmarks_json/Langmuir_multi_2d_psatd.json index 85a09296e38..c59a09cc616 100644 --- a/Regression/Checksum/benchmarks_json/Langmuir_multi_2d_psatd.json +++ b/Regression/Checksum/benchmarks_json/Langmuir_multi_2d_psatd.json @@ -1,27 +1,27 @@ { - "electrons": { - "particle_momentum_x": 5.663705661977914e-20, - "particle_momentum_y": 0.0, - "particle_momentum_z": 5.663705661977915e-20, - "particle_position_x": 0.65536, - "particle_position_y": 0.6553599999999999, - "particle_weight": 3200000000000000.5 - }, "lev=0": { - "Ex": 3771082811318.298, + "Ex": 3751590727260.198, "Ey": 0.0, - "Ez": 3771082811318.301, - "jx": 1.009365330460902e+16, + "Ez": 3751590727260.1885, + "jx": 1.0100623838390416e+16, "jy": 0.0, - "jz": 1.009365330460902e+16, + "jz": 1.0100623838390416e+16, "part_per_cell": 131072.0 }, "positrons": { - "particle_momentum_x": 5.663705661977916e-20, + "particle_momentum_x": 5.668407775012392e-20, "particle_momentum_y": 0.0, - "particle_momentum_z": 5.663705661977916e-20, + "particle_momentum_z": 5.668407775012392e-20, "particle_position_x": 0.65536, "particle_position_y": 0.65536, "particle_weight": 3200000000000000.5 + }, + "electrons": { + "particle_momentum_x": 5.668407775012391e-20, + "particle_momentum_y": 0.0, + "particle_momentum_z": 5.668407775012391e-20, + "particle_position_x": 0.65536, + "particle_position_y": 0.6553600000000002, + "particle_weight": 3200000000000000.5 } } \ No newline at end of file diff --git a/Regression/Checksum/benchmarks_json/Langmuir_multi_2d_psatd_multiJ.json b/Regression/Checksum/benchmarks_json/Langmuir_multi_2d_psatd_multiJ.json index c342d9dcaeb..ddf519913bd 100644 --- a/Regression/Checksum/benchmarks_json/Langmuir_multi_2d_psatd_multiJ.json +++ b/Regression/Checksum/benchmarks_json/Langmuir_multi_2d_psatd_multiJ.json @@ -1,29 +1,29 @@ { - "electrons": { - "particle_momentum_x": 5.663705657675969e-20, - "particle_momentum_y": 0.0, - "particle_momentum_z": 5.663705657675969e-20, - "particle_position_x": 0.65536, - "particle_position_y": 0.65536, - "particle_weight": 3200000000000000.5 - }, "lev=0": { "Bx": 0.0, - "By": 3.4892704618136277, + "By": 5.710236645367475, "Bz": 0.0, - "Ex": 3771082786646.7104, + "Ex": 3751590785149.1333, "Ey": 0.0, - "Ez": 3771082786646.702, - "jx": 1.0093631772735916e+16, + "Ez": 3751590785149.124, + "jx": 1.0100602372860838e+16, "jy": 0.0, - "jz": 1.0093631772735912e+16 + "jz": 1.0100602372860836e+16 }, "positrons": { - "particle_momentum_x": 5.663705657675971e-20, + "particle_momentum_x": 5.668407759026453e-20, "particle_momentum_y": 0.0, - "particle_momentum_z": 5.663705657675969e-20, - "particle_position_x": 0.65536, + "particle_momentum_z": 5.668407759026454e-20, + "particle_position_x": 0.6553599999999999, "particle_position_y": 0.65536, "particle_weight": 3200000000000000.5 + }, + "electrons": { + "particle_momentum_x": 5.668407759026452e-20, + "particle_momentum_y": 0.0, + "particle_momentum_z": 5.668407759026452e-20, + "particle_position_x": 0.65536, + "particle_position_y": 0.6553600000000002, + "particle_weight": 3200000000000000.5 } } \ No newline at end of file diff --git a/Regression/Checksum/benchmarks_json/Langmuir_multi_psatd_div_cleaning.json b/Regression/Checksum/benchmarks_json/Langmuir_multi_psatd_div_cleaning.json index c9339aeb1aa..7098b83dbac 100644 --- a/Regression/Checksum/benchmarks_json/Langmuir_multi_psatd_div_cleaning.json +++ b/Regression/Checksum/benchmarks_json/Langmuir_multi_psatd_div_cleaning.json @@ -1,30 +1,30 @@ { - "electrons": { - "particle_momentum_x": 9.520485222844096e-20, - "particle_position_x": 2.6214400000233367, - "particle_position_y": 2.6214400000233367, - "particle_position_z": 2.6214400000000007, - "particle_weight": 128000000000.00002 - }, "lev=0": { - "Bx": 78.90261993791012, - "By": 78.90261993794903, - "Bz": 78.9041393998435, - "Ex": 84580428018688.97, - "Ey": 84580428018688.73, - "Ez": 84580441923246.2, - "F": 685.6927382678912, - "divE": 7.94184911020468e+19, - "jx": 6.007457695701311e+16, - "jy": 6.007457695701312e+16, - "jz": 6.007453636158103e+16, + "Bx": 86.03228226677659, + "By": 86.03228226679013, + "Bz": 86.033798606458, + "Ex": 84659309211473.42, + "Ey": 84659309211473.42, + "Ez": 84659323064827.52, + "F": 700.2020613746595, + "divE": 7.94984970149747e+19, + "jx": 5.999100369888243e+16, + "jy": 5.999100369888247e+16, + "jz": 5.999096310379822e+16, "part_per_cell": 524288.0, - "rho": 705198439.2596256 + "rho": 705877712.4251474 }, "positrons": { - "particle_momentum_z": 9.520479438980041e-20, - "particle_position_x": 2.6214400000233367, - "particle_position_y": 2.6214400000233358, + "particle_momentum_z": 9.508931687286131e-20, + "particle_position_x": 2.621440000034161, + "particle_position_y": 2.6214400000341618, "particle_position_z": 2.62144 + }, + "electrons": { + "particle_momentum_x": 9.508937471997448e-20, + "particle_position_x": 2.6214400000341604, + "particle_position_y": 2.621440000034161, + "particle_position_z": 2.6214399999999993, + "particle_weight": 128000000000.00002 } -} +} \ No newline at end of file diff --git a/Regression/Checksum/benchmarks_json/Langmuir_multi_psatd_multiJ.json b/Regression/Checksum/benchmarks_json/Langmuir_multi_psatd_multiJ.json index 487d4a89828..e1785dcce4d 100644 --- a/Regression/Checksum/benchmarks_json/Langmuir_multi_psatd_multiJ.json +++ b/Regression/Checksum/benchmarks_json/Langmuir_multi_psatd_multiJ.json @@ -1,28 +1,28 @@ { - "electrons": { - "particle_momentum_x": 9.633869745818886e-20, - "particle_position_x": 2.621440000001177, - "particle_position_y": 2.6214400000011784, - "particle_position_z": 2.6214400000000007, - "particle_weight": 128000000000.00002 - }, "lev=0": { - "Bx": 80.96035538655111, - "By": 80.96035538657691, - "Bz": 80.96271445263956, - "Ex": 84777489275096.88, - "Ey": 84777489275096.88, - "Ez": 84777485856239.4, - "jx": 6.08447015360442e+16, - "jy": 6.084470153604425e+16, - "jz": 6.084470085554113e+16, + "Bx": 88.73949682623977, + "By": 88.73949682627456, + "Bz": 88.74185838578241, + "Ex": 84851140116479.64, + "Ey": 84851140116479.62, + "Ez": 84851136696893.72, + "jx": 6.075773528102969e+16, + "jy": 6.0757735281029736e+16, + "jz": 6.075773460167053e+16, "part_per_cell": 524288.0, - "rho": 703546536.8089281 + "rho": 704298346.5173542 }, "positrons": { - "particle_momentum_z": 9.63386961193585e-20, - "particle_position_x": 2.621440000001177, - "particle_position_y": 2.621440000001179, - "particle_position_z": 2.6214400000000007 + "particle_momentum_z": 9.621748455552108e-20, + "particle_position_x": 2.621440000001309, + "particle_position_y": 2.6214400000013076, + "particle_position_z": 2.6214399999999998 + }, + "electrons": { + "particle_momentum_x": 9.621748589257923e-20, + "particle_position_x": 2.621440000001309, + "particle_position_y": 2.6214400000013076, + "particle_position_z": 2.6214399999999998, + "particle_weight": 128000000000.00002 } } \ No newline at end of file diff --git a/Regression/Checksum/benchmarks_json/LoadExternalFieldRZ.json b/Regression/Checksum/benchmarks_json/LoadExternalFieldRZGrid.json similarity index 100% rename from Regression/Checksum/benchmarks_json/LoadExternalFieldRZ.json rename to Regression/Checksum/benchmarks_json/LoadExternalFieldRZGrid.json diff --git a/Regression/Checksum/benchmarks_json/LoadExternalFieldRZParticles.json b/Regression/Checksum/benchmarks_json/LoadExternalFieldRZParticles.json new file mode 100644 index 00000000000..dc4ffa3beb2 --- /dev/null +++ b/Regression/Checksum/benchmarks_json/LoadExternalFieldRZParticles.json @@ -0,0 +1,22 @@ +{ + "lev=0": { + "Br": 0.6380326770459374, + "Bt": 0.0, + "Bz": 4.850698699951099, + "Er": 0.0, + "Et": 0.0, + "Ez": 0.0, + "jr": 0.0, + "jt": 0.0, + "jz": 0.0 + }, + "proton": { + "particle_momentum_x": 1.2945379007125463e-23, + "particle_momentum_y": 7.901629565307941e-23, + "particle_momentum_z": 2.0004592432172922e-23, + "particle_position_x": 0.12402004585603355, + "particle_position_y": 4.363249204658946, + "particle_theta": 0.22200801011337173, + "particle_weight": 1.0 + } +} \ No newline at end of file diff --git a/Regression/Checksum/benchmarks_json/Python_Langmuir.json b/Regression/Checksum/benchmarks_json/Python_Langmuir.json index 950d7f9194a..46867790cb4 100644 --- a/Regression/Checksum/benchmarks_json/Python_Langmuir.json +++ b/Regression/Checksum/benchmarks_json/Python_Langmuir.json @@ -1,13 +1,13 @@ { + "lev=0": { + "Ex": 3047094224871324.5, + "jx": 3.294250379355652e+18 + }, "electrons": { - "particle_momentum_x": 1.7507165884671642e-17, - "particle_position_x": 10.350911572498216, - "particle_position_y": 10.485760000000003, - "particle_position_z": 10.485760000000003, + "particle_momentum_x": 1.740964347107983e-17, + "particle_position_x": 10.351045542291539, + "particle_position_y": 10.485759999999997, + "particle_position_z": 10.48576, "particle_weight": 320000000000.00006 - }, - "lev=0": { - "Ex": 3091324128949712.5, - "jx": 3.3015975627803766e+18 } } \ No newline at end of file diff --git a/Regression/Checksum/benchmarks_json/Python_Langmuir_2d.json b/Regression/Checksum/benchmarks_json/Python_Langmuir_2d.json index 2d1ca2f23c5..d152ff41998 100644 --- a/Regression/Checksum/benchmarks_json/Python_Langmuir_2d.json +++ b/Regression/Checksum/benchmarks_json/Python_Langmuir_2d.json @@ -1,12 +1,12 @@ { + "lev=0": { + "Ex": 53556162492188.62, + "jx": 5.722548841990386e+16 + }, "electrons": { - "particle_momentum_x": 1.0449418710231497e-19, - "particle_position_x": 0.0831205701527011, - "particle_position_y": 0.08192, + "particle_momentum_x": 1.0581442023547547e-19, + "particle_position_x": 0.0831038802568349, + "particle_position_y": 0.08191999999999999, "particle_weight": 8000000000000001.0 - }, - "lev=0": { - "Ex": 54311177004701.516, - "jx": 5.639670983525456e+16 } } \ No newline at end of file diff --git a/Regression/Checksum/benchmarks_json/Python_LoadExternalField3D.json b/Regression/Checksum/benchmarks_json/Python_LoadExternalGridField3D.json similarity index 100% rename from Regression/Checksum/benchmarks_json/Python_LoadExternalField3D.json rename to Regression/Checksum/benchmarks_json/Python_LoadExternalGridField3D.json diff --git a/Regression/Checksum/benchmarks_json/Python_LoadExternalParticleField3D.json b/Regression/Checksum/benchmarks_json/Python_LoadExternalParticleField3D.json new file mode 100644 index 00000000000..a34b2f136a6 --- /dev/null +++ b/Regression/Checksum/benchmarks_json/Python_LoadExternalParticleField3D.json @@ -0,0 +1,22 @@ +{ + "lev=0": { + "Bx": 29.8448958859583, + "By": 29.844895885958305, + "Bz": 197.55124310523018, + "Ex": 0.0, + "Ey": 0.0, + "Ez": 0.0, + "jx": 0.0, + "jy": 0.0, + "jz": 0.0 + }, + "proton": { + "particle_momentum_x": 1.2118953253556959e-23, + "particle_momentum_y": 7.822512598009088e-23, + "particle_momentum_z": 2.2761898274347412e-23, + "particle_position_x": 0.12238072371983327, + "particle_position_y": 0.009653941154598592, + "particle_position_z": 4.317544769595657, + "particle_weight": 1.0 + } +} \ No newline at end of file diff --git a/Regression/Checksum/benchmarks_json/Python_gaussian_beam.json b/Regression/Checksum/benchmarks_json/Python_gaussian_beam.json index 2129e8af565..2b4297e3627 100644 --- a/Regression/Checksum/benchmarks_json/Python_gaussian_beam.json +++ b/Regression/Checksum/benchmarks_json/Python_gaussian_beam.json @@ -1,32 +1,32 @@ { - "electrons": { - "particle_momentum_x": 6.808479576836945e-20, - "particle_momentum_y": 6.876934757849776e-20, - "particle_momentum_z": 6.802215755177324e-20, - "particle_position_x": 6339.279719574188, - "particle_position_y": 6400.519522256783, - "particle_position_z": 6332.552838182088, - "particle_weight": 4999999954710.04 - }, "lev=0": { - "Bx": 2.18760546171463e-05, - "By": 1.777427672926153e-05, - "Bz": 1.798431779205324e-05, - "Ex": 262735.3418998487, - "Ey": 264285.9081716973, - "Ez": 262283.0576561827, - "jx": 930.8363498458478, - "jy": 940.577756171662, - "jz": 929.9701516370898, + "Bx": 2.1885709623428054e-05, + "By": 1.7781538740987698e-05, + "Bz": 1.798374460438725e-05, + "Ex": 262814.04898035893, + "Ey": 264360.66474815976, + "Ez": 262360.8533027486, + "jx": 931.6306925490601, + "jy": 941.3279496407436, + "jz": 930.7478072804985, "part_per_cell": 65536.0 }, + "electrons": { + "particle_momentum_x": 6.823819887231586e-20, + "particle_momentum_y": 6.891558962132863e-20, + "particle_momentum_z": 6.817050175691089e-20, + "particle_position_x": 6339.113170504729, + "particle_position_y": 6400.3586668158905, + "particle_position_z": 6332.387112999683, + "particle_weight": 4999999954710.04 + }, "protons": { - "particle_momentum_x": 3.177356695273816e-21, - "particle_momentum_y": 3.165603704977051e-21, - "particle_momentum_z": 3.157786057110636e-21, - "particle_position_x": 6550.923797287247, - "particle_position_y": 6537.195882086984, - "particle_position_z": 6523.379262220709, + "particle_momentum_x": 2.9968929267374238e-21, + "particle_momentum_y": 2.984482330834465e-21, + "particle_momentum_z": 2.9781449297861096e-21, + "particle_position_x": 6550.923883255297, + "particle_position_y": 6537.195968516041, + "particle_position_z": 6523.379347813018, "particle_weight": 4999999954710.04 } } \ No newline at end of file diff --git a/Regression/Checksum/benchmarks_json/collisionISO.json b/Regression/Checksum/benchmarks_json/collisionISO.json index 5146837be6f..a2fd6116cb8 100644 --- a/Regression/Checksum/benchmarks_json/collisionISO.json +++ b/Regression/Checksum/benchmarks_json/collisionISO.json @@ -11,12 +11,12 @@ "jz": 0.0 }, "electron": { - "particle_momentum_x": 3.579130200773753e-19, - "particle_momentum_y": 3.5788119408700804e-19, - "particle_momentum_z": 3.584163522201744e-19, - "particle_position_x": 1.024188253213835, - "particle_position_y": 1.0238795904737117, - "particle_position_z": 1.02399735048655, + "particle_momentum_x": 3.579989064013309e-19, + "particle_momentum_y": 3.5822945977746767e-19, + "particle_momentum_z": 3.579753452653627e-19, + "particle_position_x": 1.0241322532163375, + "particle_position_y": 1.0238995904625479, + "particle_position_z": 1.02402135051502, "particle_weight": 714240000000.0 } } diff --git a/Regression/Checksum/benchmarks_json/collisionXYZ.json b/Regression/Checksum/benchmarks_json/collisionXYZ.json index 7436302a99e..39df1b9eee1 100644 --- a/Regression/Checksum/benchmarks_json/collisionXYZ.json +++ b/Regression/Checksum/benchmarks_json/collisionXYZ.json @@ -6,7 +6,25 @@ "Ex": 0.0, "Ey": 0.0, "Ez": 0.0, - "T_electron": 351570.64632548566, - "T_ion": 350085.3998917431 + "T_electron": 353604.6247926339, + "T_ion": 347976.6168136309 + }, + "electron": { + "particle_momentum_x": 8.370755929299189e-19, + "particle_momentum_y": 8.228112213603589e-19, + "particle_momentum_z": 8.204295817378347e-19, + "particle_position_x": 21284971.94721422, + "particle_position_y": 21212829.42991966, + "particle_position_z": 21214774.536558084, + "particle_weight": 7.168263344048695e+28 + }, + "ion": { + "particle_momentum_x": 2.0074097598289766e-18, + "particle_momentum_y": 1.8203553942782305e-18, + "particle_momentum_z": 1.823420185235695e-18, + "particle_position_x": 21227192.857240494, + "particle_position_y": 21286501.692027714, + "particle_position_z": 21245587.6706009, + "particle_weight": 7.168263344048695e+28 } } diff --git a/Regression/Checksum/benchmarks_json/restart_psatd.json b/Regression/Checksum/benchmarks_json/restart_psatd.json index d22fb5b57e7..fd31e7057f4 100644 --- a/Regression/Checksum/benchmarks_json/restart_psatd.json +++ b/Regression/Checksum/benchmarks_json/restart_psatd.json @@ -1,15 +1,33 @@ { "lev=0": { - "Bx": 116102.13010406512, - "By": 245467.5412026496, - "Bz": 65305.35287114741, - "Ex": 118565481099326.73, - "Ey": 18640100573642.96, - "Ez": 51777969821120.38, - "jx": 2.1177246490642464e+16, - "jy": 351544815339900.3, - "jz": 4573466562652713.0, - "rho": 22294533.587530266 + "Bx": 116097.15119490701, + "By": 245135.43138545044, + "Bz": 65087.42714316293, + "Ex": 118461420042835.34, + "Ey": 18622845483678.824, + "Ez": 51793144992361.125, + "jx": 2.1162465965376624e+16, + "jy": 349487178458066.6, + "jz": 4563460427657682.0, + "rho": 22252333.818822004 + }, + "driverback": { + "particle_momentum_x": 4.813131349021332e+21, + "particle_momentum_y": 5.16548074090123e+21, + "particle_momentum_z": 3.005830430844926e+25, + "particle_position_x": 0.001649481123084974, + "particle_position_y": 0.0016172218745428432, + "particle_position_z": 0.4899808854005956, + "particle_weight": 6241509074.460762 + }, + "plasma_e": { + "particle_momentum_x": 2.084066965693142e-19, + "particle_momentum_y": 1.330336553422521e-20, + "particle_momentum_z": 2.6335518561017005e-17, + "particle_position_x": 0.4991724057788647, + "particle_position_y": 0.49919697481183745, + "particle_position_z": 0.4562433914656611, + "particle_weight": 33067341227104.625 }, "beam": { "particle_momentum_x": 4.178482505909375e-19, @@ -20,6 +38,15 @@ "particle_position_z": 1.901942694291968, "particle_weight": 3120754537.230381 }, + "plasma_p": { + "particle_momentum_x": 2.097709570232301e-19, + "particle_momentum_y": 3.402465268604418e-21, + "particle_momentum_z": 4.82960000875208e-14, + "particle_position_x": 0.49912500313484137, + "particle_position_y": 0.4991249983460674, + "particle_position_z": 0.4563845471150555, + "particle_weight": 33067341227104.625 + }, "driver": { "particle_momentum_x": 4.700436405078562e+21, "particle_momentum_y": 4.6785862113093076e+21, @@ -28,32 +55,5 @@ "particle_position_y": 0.0016212373149699414, "particle_position_z": 0.30417779498653386, "particle_weight": 6241509074.460762 - }, - "driverback": { - "particle_momentum_x": 4.813131349021332e+21, - "particle_momentum_y": 5.16548074090123e+21, - "particle_momentum_z": 3.005830430844926e+25, - "particle_position_x": 0.001649481123084974, - "particle_position_y": 0.0016172218745428432, - "particle_position_z": 0.4899808854005956, - "particle_weight": 6241509074.460762 - }, - "plasma_e": { - "particle_momentum_x": 2.0912364079892767e-19, - "particle_momentum_y": 1.3510804924903876e-20, - "particle_momentum_z": 2.6336070297356917e-17, - "particle_position_x": 0.49917333523960167, - "particle_position_y": 0.49919828074154127, - "particle_position_z": 0.45624167532314724, - "particle_weight": 33067341227104.625 - }, - "plasma_p": { - "particle_momentum_x": 2.1053025446547977e-19, - "particle_momentum_y": 3.3272838305044046e-21, - "particle_momentum_z": 4.829599953646669e-14, - "particle_position_x": 0.49912500297599893, - "particle_position_y": 0.49912499825258866, - "particle_position_z": 0.45638454709795806, - "particle_weight": 33067341227104.625 } } \ No newline at end of file diff --git a/Regression/Checksum/benchmarks_json/restart_psatd_time_avg.json b/Regression/Checksum/benchmarks_json/restart_psatd_time_avg.json index 50971f0d45e..cfd031d6e33 100644 --- a/Regression/Checksum/benchmarks_json/restart_psatd_time_avg.json +++ b/Regression/Checksum/benchmarks_json/restart_psatd_time_avg.json @@ -1,24 +1,15 @@ { "lev=0": { - "Bx": 115622.1878941125, - "By": 243403.66715242947, - "Bz": 63602.66529020351, - "Ex": 117118934931289.56, - "Ey": 18448377440588.27, - "Ez": 50821967818817.24, - "jx": 2.1044522674691452e+16, - "jy": 329314843111847.94, - "jz": 4524787623275627.0, - "rho": 22128883.53068064 - }, - "driverback": { - "particle_momentum_x": 4.813131349021332e+21, - "particle_momentum_y": 5.16548074090123e+21, - "particle_momentum_z": 3.005830430844926e+25, - "particle_position_x": 0.001649481123084974, - "particle_position_y": 0.0016172218745428432, - "particle_position_z": 0.4899808854005956, - "particle_weight": 6241509074.460762 + "Bx": 115610.21497814235, + "By": 243019.564489834, + "Bz": 63397.3416561916, + "Ex": 117012138466922.22, + "Ey": 18429606525820.12, + "Ez": 50835997822445.34, + "jx": 2.1028213761477244e+16, + "jy": 326844980054897.7, + "jz": 4514643615865121.0, + "rho": 22084564.546177678 }, "beam": { "particle_momentum_x": 4.178482505909375e-19, @@ -29,24 +20,33 @@ "particle_position_z": 1.901942694291968, "particle_weight": 3120754537.230381 }, - "plasma_e": { - "particle_momentum_x": 1.9905288525315664e-19, - "particle_momentum_y": 1.2685401564810352e-20, - "particle_momentum_z": 2.6334746597885943e-17, - "particle_position_x": 0.4991702885212871, - "particle_position_y": 0.4991949978513417, - "particle_position_z": 0.4562491611716817, + "plasma_p": { + "particle_momentum_x": 1.9959818202810056e-19, + "particle_momentum_y": 2.9455107653405726e-21, + "particle_momentum_z": 4.82960013792663e-14, + "particle_position_x": 0.4991250027534606, + "particle_position_y": 0.49912499804419774, + "particle_position_z": 0.4563845471451087, "particle_weight": 33067341227104.625 }, - "plasma_p": { - "particle_momentum_x": 2.002897995377179e-19, - "particle_momentum_y": 2.87423099731012e-21, - "particle_momentum_z": 4.8296000849128737e-14, - "particle_position_x": 0.49912500259846493, - "particle_position_y": 0.4991249979476612, - "particle_position_z": 0.45638454712861487, + "plasma_e": { + "particle_momentum_x": 1.9841122555955512e-19, + "particle_momentum_y": 1.2475587913571367e-20, + "particle_momentum_z": 2.6334235362474606e-17, + "particle_position_x": 0.49916947686056645, + "particle_position_y": 0.49919374997004357, + "particle_position_z": 0.4562507922838501, "particle_weight": 33067341227104.625 }, + "driverback": { + "particle_momentum_x": 4.813131349021332e+21, + "particle_momentum_y": 5.16548074090123e+21, + "particle_momentum_z": 3.005830430844926e+25, + "particle_position_x": 0.001649481123084974, + "particle_position_y": 0.0016172218745428432, + "particle_position_z": 0.4899808854005956, + "particle_weight": 6241509074.460762 + }, "driver": { "particle_momentum_x": 4.700436405078562e+21, "particle_momentum_y": 4.6785862113093076e+21, diff --git a/Regression/WarpX-GPU-tests.ini b/Regression/WarpX-GPU-tests.ini index e4e5d7b8678..b32ca61c709 100644 --- a/Regression/WarpX-GPU-tests.ini +++ b/Regression/WarpX-GPU-tests.ini @@ -60,7 +60,7 @@ emailBody = Check https://ccse.lbl.gov/pub/GpuRegressionTesting/WarpX/ for more [AMReX] dir = /home/regtester/git/amrex/ -branch = 259db7cfb99e7d1d2ab4bec9b1587fdf624a138a +branch = dcb9cc0383dcc71e38dee9070574e325a812f8bf [source] dir = /home/regtester/git/WarpX diff --git a/Regression/WarpX-tests.ini b/Regression/WarpX-tests.ini index 35fd23e36f8..e2b72ca88e3 100644 --- a/Regression/WarpX-tests.ini +++ b/Regression/WarpX-tests.ini @@ -59,7 +59,7 @@ emailBody = Check https://ccse.lbl.gov/pub/RegressionTesting/WarpX/ for more det [AMReX] dir = /home/regtester/AMReX_RegTesting/amrex/ -branch = 259db7cfb99e7d1d2ab4bec9b1587fdf624a138a +branch = dcb9cc0383dcc71e38dee9070574e325a812f8bf [source] dir = /home/regtester/AMReX_RegTesting/warpx @@ -81,10 +81,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons ions analysisRoutine = Examples/Tests/nci_psatd_stability/analysis_galilean.py [averaged_galilean_2d_psatd_hybrid] @@ -99,10 +95,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons ions analysisRoutine = Examples/Tests/nci_psatd_stability/analysis_galilean.py [averaged_galilean_3d_psatd] @@ -117,10 +109,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons ions analysisRoutine = Examples/Tests/nci_psatd_stability/analysis_galilean.py [averaged_galilean_3d_psatd_hybrid] @@ -135,10 +123,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons ions analysisRoutine = Examples/Tests/nci_psatd_stability/analysis_galilean.py [background_mcc] @@ -153,10 +137,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons he_ions analysisRoutine = Examples/analysis_default_regression.py [background_mcc_dp_psp] @@ -171,10 +151,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons he_ions analysisRoutine = Examples/analysis_default_regression.py [bilinear_filter] @@ -189,8 +165,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/Tests/single_particle/analysis_bilinear_filter.py [BTD_rz] @@ -205,8 +179,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/Tests/btd_rz/analysis_BTD_laser_antenna.py [collider_diagnostics] @@ -221,8 +193,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/Tests/collider_relevant_diags/analysis_multiple_particles.py [collisionISO] @@ -237,8 +207,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/Tests/collision/analysis_collision_3d_isotropization.py aux1File = Regression/PostProcessingUtils/post_processing_utils.py @@ -254,9 +222,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/collision/analysis_collision_rz.py aux1File = Regression/PostProcessingUtils/post_processing_utils.py @@ -272,9 +237,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/collision/analysis_collision_3d.py aux1File = Regression/PostProcessingUtils/post_processing_utils.py @@ -290,9 +252,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/collision/analysis_collision_2d.py aux1File = Regression/PostProcessingUtils/post_processing_utils.py @@ -308,10 +267,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons ions beam analysisRoutine = Examples/analysis_default_regression.py [Deuterium_Deuterium_Fusion_3D] @@ -326,8 +281,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/Tests/nuclear_fusion/analysis_two_product_fusion.py [Deuterium_Deuterium_Fusion_3D_intraspecies] @@ -342,8 +295,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/Tests/nuclear_fusion/analysis_deuterium_deuterium_3d_intraspecies.py [Deuterium_Tritium_Fusion_3D] @@ -358,8 +309,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/Tests/nuclear_fusion/analysis_two_product_fusion.py [Deuterium_Tritium_Fusion_RZ] @@ -374,8 +323,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/Tests/nuclear_fusion/analysis_two_product_fusion.py [dirichletbc] @@ -390,9 +337,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/electrostatic_dirichlet_bc/analysis.py [divb_cleaning_3d] @@ -407,9 +351,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/divb_cleaning/analysis.py [dive_cleaning_2d] @@ -423,9 +364,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 runtime_params = geometry.dims=2 analysisRoutine = Examples/Tests/dive_cleaning/analysis.py analysisOutputImage = Comparison.png @@ -441,9 +379,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 runtime_params = analysisRoutine = Examples/Tests/dive_cleaning/analysis.py analysisOutputImage = Comparison.png @@ -460,9 +395,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/electrostatic_sphere/analysis_electrostatic_sphere.py [ElectrostaticSphereLabFrame_MR_emass_10] @@ -477,9 +409,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/electrostatic_sphere/analysis_electrostatic_sphere.py [ElectrostaticSphereEB] @@ -494,9 +423,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/electrostatic_sphere_eb/analysis.py [ElectrostaticSphereEB_mixedBCs] @@ -511,9 +437,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/analysis_default_regression.py [EmbeddedBoundaryDiffraction] @@ -528,9 +451,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 outputFile = EmbeddedBoundaryDiffraction_plt analysisRoutine = Examples/Tests/embedded_boundary_diffraction/analysis_fields.py @@ -546,9 +466,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/electrostatic_sphere_eb/analysis_rz.py [ElectrostaticSphereEB_RZ_MR] @@ -563,9 +480,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/electrostatic_sphere_eb/analysis_rz.py [ElectrostaticSphereLabFrame] @@ -580,9 +494,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/electrostatic_sphere/analysis_electrostatic_sphere.py [ElectrostaticSphereRZ] @@ -597,9 +508,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/electrostatic_sphere/analysis_electrostatic_sphere.py [ElectrostaticSphereRelNodal] @@ -614,9 +522,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/electrostatic_sphere/analysis_electrostatic_sphere.py [ElectrostaticSphereRZUniformWeighting] @@ -648,9 +553,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/embedded_boundary_cube/analysis_fields.py [embedded_boundary_cube_2d] @@ -665,9 +567,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/embedded_boundary_cube/analysis_fields_2d.py [embedded_boundary_cube_macroscopic] @@ -682,9 +581,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/embedded_boundary_cube/analysis_fields.py [embedded_boundary_python_API] @@ -701,9 +597,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/embedded_boundary_python_api/analysis.py [embedded_boundary_rotated_cube] @@ -718,9 +611,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/embedded_boundary_rotated_cube/analysis_fields.py [embedded_boundary_rotated_cube_2d] @@ -735,9 +625,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/embedded_boundary_rotated_cube/analysis_fields_2d.py [embedded_circle] @@ -752,10 +639,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons ar_ions analysisRoutine = Examples/Tests/embedded_circle/analysis.py [FieldProbe] @@ -770,9 +653,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/field_probe/analysis_field_probe.py [FluxInjection] @@ -787,10 +667,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electron analysisRoutine = Examples/Tests/flux_injection/analysis_flux_injection_rz.py [FluxInjection3D] @@ -805,9 +681,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 analysisRoutine = Examples/Tests/flux_injection/analysis_flux_injection_3d.py [galilean_2d_psatd] @@ -822,10 +695,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons ions analysisRoutine = Examples/Tests/nci_psatd_stability/analysis_galilean.py [galilean_2d_psatd_current_correction] @@ -840,10 +709,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons ions analysisRoutine = Examples/Tests/nci_psatd_stability/analysis_galilean.py [galilean_2d_psatd_current_correction_psb] @@ -858,10 +723,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons ions analysisRoutine = Examples/Tests/nci_psatd_stability/analysis_galilean.py [galilean_2d_psatd_hybrid] @@ -876,10 +737,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons ions beam analysisRoutine = Examples/analysis_default_regression.py [galilean_3d_psatd] @@ -894,10 +751,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons ions analysisRoutine = Examples/Tests/nci_psatd_stability/analysis_galilean.py [galilean_3d_psatd_current_correction] @@ -912,10 +765,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons ions analysisRoutine = Examples/Tests/nci_psatd_stability/analysis_galilean.py [galilean_3d_psatd_current_correction_psb] @@ -930,10 +779,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons ions analysisRoutine = Examples/Tests/nci_psatd_stability/analysis_galilean.py [galilean_rz_psatd] @@ -948,10 +793,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons ions analysisRoutine = Examples/Tests/nci_psatd_stability/analysis_galilean.py [galilean_rz_psatd_current_correction_psb] @@ -966,10 +807,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons ions analysisRoutine = Examples/Tests/nci_psatd_stability/analysis_galilean.py [galilean_rz_psatd_current_correction] @@ -984,10 +821,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons ions analysisRoutine = Examples/Tests/nci_psatd_stability/analysis_galilean.py [hard_edged_plasma_lens] @@ -1002,10 +835,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons analysisRoutine = Examples/Tests/plasma_lens/analysis.py [hard_edged_quadrupoles] @@ -1020,10 +849,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electron analysisRoutine = Examples/Tests/AcceleratorLattice/analysis.py [hard_edged_quadrupoles_boosted] @@ -1038,10 +863,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electron analysisRoutine = Examples/Tests/AcceleratorLattice/analysis.py [hard_edged_quadrupoles_moving] @@ -1056,10 +877,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electron analysisRoutine = Examples/Tests/AcceleratorLattice/analysis.py [initial_distribution] @@ -1074,9 +891,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/initial_distribution/analysis_distribution.py aux1File = Tools/PostProcessing/read_raw_data.py @@ -1092,8 +906,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/Tests/ionization/analysis_ionization.py [ionization_lab] @@ -1108,8 +920,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/Tests/ionization/analysis_ionization.py [ion_stopping] @@ -1124,9 +934,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 analysisRoutine = Examples/Tests/ion_stopping/analysis_ion_stopping.py [Langmuir_multi] @@ -1141,10 +948,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons positrons analysisRoutine = Examples/Tests/langmuir/analysis_3d.py analysisOutputImage = langmuir_multi_analysis.png @@ -1160,9 +963,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/langmuir_fluids/analysis_1d.py analysisOutputImage = langmuir_fluid_multi_1d_analysis.png @@ -1178,9 +978,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/langmuir_fluids/analysis_rz.py analysisOutputImage = langmuir_fluid_rz_analysis.png @@ -1190,15 +987,12 @@ inputFile = Examples/Tests/langmuir_fluids/inputs_2d runtime_params = dim = 2 addToCompileString = -cmakeSetupOpts = -DWarpX_DIMS=2 -DCMAKE_BUILD_TYPE=Debug +cmakeSetupOpts = -DWarpX_DIMS=2 restartTest = 0 useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/langmuir_fluids/analysis_2d.py analysisOutputImage = langmuir_fluid_multi_2d_analysis.png @@ -1214,9 +1008,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/langmuir_fluids/analysis_3d.py analysisOutputImage = langmuir_fluid_multi_analysis.png @@ -1232,10 +1023,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons positrons analysisRoutine = Examples/Tests/langmuir/analysis_1d.py analysisOutputImage = langmuir_multi_1d_analysis.png @@ -1251,10 +1038,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons positrons analysisRoutine = Examples/Tests/langmuir/analysis_2d.py analysisOutputImage = Langmuir_multi_2d_MR.png @@ -1270,10 +1053,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons positrons analysisRoutine = Examples/Tests/langmuir/analysis_2d.py analysisOutputImage = Langmuir_multi_2d_MR.png @@ -1289,10 +1068,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons positrons analysisRoutine = Examples/Tests/langmuir/analysis_2d.py analysisOutputImage = Langmuir_multi_2d_MR_momentum_conserving.png @@ -1308,10 +1083,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons positrons analysisRoutine = Examples/Tests/langmuir/analysis_2d.py analysisOutputImage = Langmuir_multi_2d_MR_psatd.png @@ -1327,10 +1098,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons positrons analysisRoutine = Examples/Tests/langmuir/analysis_2d.py analysisOutputImage = langmuir_multi_2d_analysis.png @@ -1346,10 +1113,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons positrons analysisRoutine = Examples/Tests/langmuir/analysis_2d.py analysisOutputImage = langmuir_multi_2d_analysis.png @@ -1365,10 +1128,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons positrons analysisRoutine = Examples/Tests/langmuir/analysis_2d.py analysisOutputImage = langmuir_multi_2d_analysis.png @@ -1384,10 +1143,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons positrons analysisRoutine = Examples/Tests/langmuir/analysis_2d.py analysisOutputImage = langmuir_multi_2d_analysis.png @@ -1403,10 +1158,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons positrons analysisRoutine = Examples/Tests/langmuir/analysis_2d.py analysisOutputImage = langmuir_multi_2d_analysis.png @@ -1422,10 +1173,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons positrons analysisRoutine = Examples/Tests/langmuir/analysis_2d.py analysisOutputImage = Langmuir_multi_2d_psatd_multiJ.png @@ -1441,10 +1188,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons positrons analysisRoutine = Examples/Tests/langmuir/analysis_2d.py analysisOutputImage = Langmuir_multi_2d_psatd_multiJ_nodal.png @@ -1460,10 +1203,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons positrons analysisRoutine = Examples/Tests/langmuir/analysis_2d.py analysisOutputImage = langmuir_multi_2d_analysis.png @@ -1479,10 +1218,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons positrons analysisRoutine = Examples/Tests/langmuir/analysis_2d.py analysisOutputImage = langmuir_multi_2d_analysis.png @@ -1498,10 +1233,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons positrons analysisRoutine = Examples/Tests/langmuir/analysis_2d.py analysisOutputImage = langmuir_multi_2d_analysis.png @@ -1517,16 +1248,12 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons positrons analysisRoutine = Examples/Tests/langmuir/analysis_2d.py analysisOutputImage = langmuir_multi_2d_analysis.png [Langmuir_multi_nodal] buildDir = . -inputFile = +inputFile = Examples/Tests/langmuir/inputs_3d runtime_params = warpx.grid_type=collocated algo.current_deposition=direct dim = 3 addToCompileString = @@ -1536,10 +1263,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons positrons analysisRoutine = Examples/Tests/langmuir/analysis_3d.py analysisOutputImage = langmuir_multi_analysis.png @@ -1555,10 +1278,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons positrons analysisRoutine = Examples/Tests/langmuir/analysis_3d.py analysisOutputImage = langmuir_multi_analysis.png @@ -1574,10 +1293,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons positrons analysisRoutine = Examples/Tests/langmuir/analysis_3d.py analysisOutputImage = langmuir_multi_analysis.png @@ -1593,10 +1308,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons positrons analysisRoutine = Examples/Tests/langmuir/analysis_3d.py analysisOutputImage = langmuir_multi_analysis.png @@ -1612,10 +1323,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons positrons analysisRoutine = Examples/Tests/langmuir/analysis_3d.py analysisOutputImage = langmuir_multi_analysis.png @@ -1631,10 +1338,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons positrons analysisRoutine = Examples/Tests/langmuir/analysis_3d.py analysisOutputImage = langmuir_multi_analysis.png @@ -1650,10 +1353,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons positrons analysisRoutine = Examples/Tests/langmuir/analysis_3d.py analysisOutputImage = Langmuir_multi_psatd_multiJ.png @@ -1669,10 +1368,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons positrons analysisRoutine = Examples/Tests/langmuir/analysis_3d.py analysisOutputImage = Langmuir_multi_psatd_multiJ_nodal.png @@ -1688,10 +1383,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons positrons analysisRoutine = Examples/Tests/langmuir/analysis_3d.py analysisOutputImage = langmuir_multi_analysis.png @@ -1707,10 +1398,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons positrons analysisRoutine = Examples/Tests/langmuir/analysis_3d.py analysisOutputImage = langmuir_multi_analysis.png @@ -1726,10 +1413,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons positrons analysisRoutine = Examples/Tests/langmuir/analysis_3d.py analysisOutputImage = langmuir_multi_analysis.png @@ -1745,10 +1428,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons positrons analysisRoutine = Examples/Tests/langmuir/analysis_3d.py analysisOutputImage = langmuir_multi_analysis.png @@ -1764,10 +1443,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons ions analysisRoutine = Examples/Tests/langmuir/analysis_rz.py analysisOutputImage = Langmuir_multi_rz_analysis.png aux1File = Regression/PostProcessingUtils/post_processing_utils.py @@ -1784,10 +1459,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons ions analysisRoutine = Examples/Tests/langmuir/analysis_rz.py analysisOutputImage = Langmuir_multi_rz_psatd_analysis.png aux1File = Regression/PostProcessingUtils/post_processing_utils.py @@ -1804,10 +1475,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons ions analysisRoutine = Examples/Tests/langmuir/analysis_rz.py analysisOutputImage = Langmuir_multi_rz_psatd_analysis.png aux1File = Regression/PostProcessingUtils/post_processing_utils.py @@ -1824,10 +1491,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons ions analysisRoutine = Examples/Tests/langmuir/analysis_rz.py analysisOutputImage = Langmuir_multi_rz_psatd_multiJ_analysis.png aux1File = Regression/PostProcessingUtils/post_processing_utils.py @@ -1844,10 +1507,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons positrons analysisRoutine = Examples/Tests/langmuir/analysis_3d.py analysisOutputImage = langmuir_multi_analysis.png @@ -1863,8 +1522,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/analysis_default_regression.py [LaserAcceleration] @@ -1879,10 +1536,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons outputFile = LaserAcceleration_plt analysisRoutine = Examples/analysis_default_openpmd_regression.py @@ -1898,10 +1551,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons analysisRoutine = Examples/analysis_default_regression.py [LaserAcceleration_1d_fluid] @@ -1916,10 +1565,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons ions analysisRoutine = Examples/Physics_applications/laser_acceleration/analysis_1d_fluids.py [LaserAcceleration_1d_fluid_boosted] @@ -1934,10 +1579,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons ions analysisRoutine = Examples/Physics_applications/laser_acceleration/analysis_1d_fluids_boosted.py [LaserAccelerationBoost] @@ -1952,8 +1593,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/analysis_default_regression.py [LaserAcceleration_BTD] @@ -1968,10 +1607,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 -doComparison = 0 analysisRoutine = Examples/Tests/boosted_diags/analysis.py [LaserAccelerationMR] @@ -1986,10 +1621,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons beam analysisRoutine = Examples/analysis_default_regression.py [LaserAccelerationRZ] @@ -2004,10 +1635,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons beam analysisRoutine = Examples/analysis_default_regression.py [LaserAccelerationRZ_opmd] @@ -2022,10 +1649,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 -particleTypes = electrons beam outputFile = LaserAccelerationRZ_opmd_plt analysisRoutine = Examples/Tests/openpmd_rz/analysis_openpmd_rz.py @@ -2041,10 +1664,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons outputFile = LaserAcceleration_single_precision_comms_plt analysisRoutine = Examples/analysis_default_openpmd_regression.py @@ -2060,9 +1679,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/laser_injection/analysis_laser.py analysisOutputImage = laser_analysis.png @@ -2078,9 +1694,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/laser_injection/analysis_1d.py [LaserInjection_2d] @@ -2095,9 +1708,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/laser_injection/analysis_2d.py [LaserInjectionFromBINARYFile] @@ -2114,10 +1724,8 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 selfTest = 1 stSuccessString = Passed -doVis = 0 [LaserInjectionFromLASYFile] buildDir = . @@ -2133,10 +1741,8 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 selfTest = 1 stSuccessString = Passed -doVis = 0 [LaserInjectionFromLASYFile_1d] buildDir = . @@ -2152,10 +1758,8 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 selfTest = 1 stSuccessString = Passed -doVis = 0 [LaserInjectionFromLASYFile_1d_boost] buildDir = . @@ -2171,10 +1775,8 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 selfTest = 1 stSuccessString = Passed -doVis = 0 [LaserInjectionFromLASYFile_2d] buildDir = . @@ -2190,10 +1792,8 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 selfTest = 1 stSuccessString = Passed -doVis = 0 [LaserInjectionFromLASYFile_RZ] buildDir = . @@ -2209,10 +1809,8 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 selfTest = 1 stSuccessString = Passed -doVis = 0 [LaserInjectionFromRZLASYFile] buildDir = . @@ -2228,10 +1826,8 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 selfTest = 1 stSuccessString = Passed -doVis = 0 [LaserIonAcc2d] buildDir = . @@ -2246,8 +1842,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/analysis_default_openpmd_regression.py [LaserOnFine] @@ -2262,8 +1856,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/analysis_default_regression.py [leveling_thinning] @@ -2278,15 +1870,27 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/resampling/analysis_leveling_thinning.py -[LoadExternalFieldRZ] +[LoadExternalFieldRZGrid] buildDir = . -inputFile = Examples/Tests/LoadExternalField/inputs_rz -runtime_params = warpx.abort_on_warning_threshold=medium chk.file_prefix=LoadExternalFieldRZ_chk chk.file_min_digits=5 +inputFile = Examples/Tests/LoadExternalField/inputs_rz_grid_fields +runtime_params = warpx.abort_on_warning_threshold=medium chk.file_prefix=LoadExternalFieldRZGrid_chk chk.file_min_digits=5 +dim = 2 +addToCompileString = USE_RZ=TRUE +cmakeSetupOpts = -DWarpX_DIMS=RZ -DWarpX_OPENPMD=ON +restartTest = 1 +restartFileNum = 150 +useMPI = 1 +numprocs = 1 +useOMP = 1 +numthreads = 1 +analysisRoutine = Examples/Tests/LoadExternalField/analysis_rz.py + +[LoadExternalFieldRZParticles] +buildDir = . +inputFile = Examples/Tests/LoadExternalField/inputs_rz_particle_fields +runtime_params = warpx.abort_on_warning_threshold=medium chk.file_prefix=LoadExternalFieldRZParticles_chk chk.file_min_digits=5 dim = 2 addToCompileString = USE_RZ=TRUE cmakeSetupOpts = -DWarpX_DIMS=RZ -DWarpX_OPENPMD=ON @@ -2296,10 +1900,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = proton analysisRoutine = Examples/Tests/LoadExternalField/analysis_rz.py [magnetostatic_eb_3d] @@ -2314,9 +1914,6 @@ useMPI = 1 numprocs = 1 useOMP = 2 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/analysis_default_regression.py [Maxwell_Hybrid_QED_solver] @@ -2331,8 +1928,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/Tests/maxwell_hybrid_qed/analysis_Maxwell_QED_Hybrid.py [momentum-conserving-gather] @@ -2347,10 +1942,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = beam driver plasma_e analysisRoutine = Examples/analysis_default_regression.py [multi_J_rz_psatd] @@ -2365,10 +1956,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = driver plasma_e plasma_p analysisRoutine = Examples/analysis_default_regression.py [nci_corrector] @@ -2383,9 +1970,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -doComparison = 0 analysisRoutine = Examples/Tests/nci_fdtd_stability/analysis_ncicorr.py [nci_correctorMR] @@ -2400,9 +1984,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -doComparison = 0 analysisRoutine = Examples/Tests/nci_fdtd_stability/analysis_ncicorr.py [parabolic_channel_initialization_2d_single_precision] @@ -2416,9 +1997,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 runtime_params = analysisRoutine = Examples/Tests/initial_plasma_profile/analysis.py @@ -2434,10 +2012,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons analysisRoutine = Examples/Tests/particle_boundary_process/analysis_absorption.py [particle_boundaries_3d] @@ -2452,9 +2026,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 analysisRoutine = Examples/Tests/boundaries/analysis.py [particle_fields_diags] @@ -2470,9 +2041,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/particle_fields_diags/analysis_particle_diags.py [particle_fields_diags_single_precision] @@ -2488,9 +2056,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/particle_fields_diags/analysis_particle_diags_single.py [particle_pusher] @@ -2505,9 +2070,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/particle_pusher/analysis_pusher.py [particle_scrape] @@ -2522,10 +2084,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons analysisRoutine = Examples/Tests/particle_boundary_scrape/analysis_scrape.py [particles_in_pml] @@ -2540,9 +2098,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/particles_in_pml/analysis_particles_in_pml.py [particles_in_pml_2d] @@ -2557,9 +2112,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/particles_in_pml/analysis_particles_in_pml.py [particles_in_pml_2d_MR] @@ -2574,9 +2126,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/particles_in_pml/analysis_particles_in_pml.py [particles_in_pml_3d_MR] @@ -2591,9 +2140,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/particles_in_pml/analysis_particles_in_pml.py [PEC_field] @@ -2608,9 +2154,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/pec/analysis_pec.py [PEC_field_mr] @@ -2625,9 +2168,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/pec/analysis_pec_mr.py [PEC_particle] @@ -2642,10 +2182,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electron proton analysisRoutine = Examples/analysis_default_regression.py [Performance_works_1_uniform_rest_32ppc] @@ -2660,10 +2196,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons ions analysisRoutine = [Performance_works_2_uniform_rest_1ppc] @@ -2678,10 +2210,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons analysisRoutine = [Performance_works_3_uniform_drift_4ppc] @@ -2696,10 +2224,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons ions analysisRoutine = [Performance_works_4_labdiags_2ppc] @@ -2714,10 +2238,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons ions analysisRoutine = [Performance_works_5_loadimbalance] @@ -2732,10 +2252,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons ions analysisRoutine = [Performance_works_6_output_2ppc] @@ -2750,10 +2266,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons ions analysisRoutine = [photon_pusher] @@ -2768,9 +2280,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/photon_pusher/analysis_photon_pusher.py [PlasmaAccelerationBoost2d] @@ -2785,8 +2294,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/analysis_default_regression.py [PlasmaAccelerationBoost3d] @@ -2801,8 +2308,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/analysis_default_regression.py [PlasmaAccelerationBoost3d_hybrid] @@ -2816,8 +2321,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/analysis_default_regression.py [PlasmaAccelerationMR] @@ -2832,10 +2335,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = beam driver plasma_e analysisRoutine = Examples/analysis_default_regression.py [Plasma_lens] @@ -2850,10 +2349,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons analysisRoutine = Examples/Tests/plasma_lens/analysis.py [Plasma_lens_boosted] @@ -2868,10 +2363,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons analysisRoutine = Examples/Tests/plasma_lens/analysis.py [Plasma_lens_short] @@ -2886,10 +2377,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons analysisRoutine = Examples/Tests/plasma_lens/analysis.py [PlasmaMirror] @@ -2904,8 +2391,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/analysis_default_regression.py [pml_psatd_dive_divb_cleaning] @@ -2920,8 +2405,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/analysis_default_regression.py [pml_psatd_rz] @@ -2936,8 +2419,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/Tests/pml/analysis_pml_psatd_rz.py [pml_x_ckc] @@ -2952,8 +2433,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/Tests/pml/analysis_pml_ckc.py [pml_x_galilean] @@ -2968,8 +2447,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/Tests/pml/analysis_pml_psatd.py [pml_x_psatd] @@ -2985,8 +2462,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/Tests/pml/analysis_pml_psatd.py [pml_x_yee] @@ -3002,8 +2477,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/Tests/pml/analysis_pml_yee.py [pml_x_yee_eb] @@ -3019,8 +2492,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/Tests/pml/analysis_pml_yee.py [Proton_Boron_Fusion_2D] @@ -3035,8 +2506,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/Tests/nuclear_fusion/analysis_proton_boron_fusion.py [Proton_Boron_Fusion_3D] @@ -3051,8 +2520,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/Tests/nuclear_fusion/analysis_proton_boron_fusion.py [Python_background_mcc] @@ -3069,9 +2536,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Physics_applications/capacitive_discharge/analysis_2d.py [Python_background_mcc_1d] @@ -3088,9 +2552,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Physics_applications/capacitive_discharge/analysis_1d.py [Python_background_mcc_1d_tridiag] @@ -3107,9 +2568,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Physics_applications/capacitive_discharge/analysis_1d.py [Python_collisionXZ] @@ -3126,9 +2584,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/collision/analysis_collision_2d.py aux1File = Regression/PostProcessingUtils/post_processing_utils.py @@ -3146,9 +2601,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/electrostatic_dirichlet_bc/analysis.py [Python_dsmc_1d] @@ -3165,9 +2617,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Physics_applications/capacitive_discharge/analysis_dsmc.py [Python_ElectrostaticSphereEB] @@ -3184,9 +2633,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/electrostatic_sphere_eb/analysis.py [Python_gaussian_beam] @@ -3203,10 +2649,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons analysisRoutine = Examples/analysis_default_regression.py [Python_gaussian_beam_no_field_output] @@ -3223,10 +2665,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons analysisRoutine = [Python_gaussian_beam_opmd] @@ -3243,10 +2681,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons analysisRoutine = [Python_gaussian_beam_opmd_no_field_output] @@ -3263,10 +2697,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons analysisRoutine = [Python_id_cpu_read] @@ -3283,10 +2713,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 -particleTypes = electrons [Python_ionization] buildDir = . @@ -3302,8 +2728,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/Tests/ionization/analysis_ionization.py [Python_Langmuir] @@ -3320,10 +2744,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons analysisRoutine = Examples/analysis_default_regression.py [Python_Langmuir_2d] @@ -3340,10 +2760,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons analysisRoutine = Examples/analysis_default_regression.py [Python_Langmuir_rz_multimode] @@ -3360,10 +2776,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons protons analysisRoutine = Examples/analysis_default_regression.py [Python_LaserAcceleration] @@ -3380,10 +2792,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons analysisRoutine = Examples/analysis_default_regression.py [Python_LaserAcceleration_1d] @@ -3400,10 +2808,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons analysisRoutine = Examples/analysis_default_regression.py [Python_LaserAccelerationMR] @@ -3420,10 +2824,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons beam analysisRoutine = Examples/analysis_default_regression.py [Python_LaserAccelerationRZ] @@ -3440,10 +2840,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons beam analysisRoutine = Examples/analysis_default_regression.py [Python_LaserIonAcc2d] @@ -3461,15 +2857,29 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/analysis_default_openpmd_regression.py -[Python_LoadExternalField3D] +[Python_LoadExternalGridField3D] buildDir = . -inputFile = Examples/Tests/LoadExternalField/PICMI_inputs_3d.py +inputFile = Examples/Tests/LoadExternalField/PICMI_inputs_3d_grid_fields.py runtime_params = -customRunCmd = python3 PICMI_inputs_3d.py +customRunCmd = python3 PICMI_inputs_3d_grid_fields.py +dim = 3 +addToCompileString = USE_PYTHON_MAIN=TRUE +cmakeSetupOpts = -DWarpX_DIMS=3 -DWarpX_APP=OFF -DWarpX_PYTHON=ON -DWarpX_OPENPMD=ON +target = pip_install +restartTest = 0 +useMPI = 1 +numprocs = 1 +useOMP = 1 +numthreads = 1 +analysisRoutine = Examples/Tests/LoadExternalField/analysis_3d.py + +[Python_LoadExternalParticleField3D] +buildDir = . +inputFile = Examples/Tests/LoadExternalField/PICMI_inputs_3d_particle_fields.py +runtime_params = +customRunCmd = python3 PICMI_inputs_3d_particle_fields.py dim = 3 addToCompileString = USE_PYTHON_MAIN=TRUE cmakeSetupOpts = -DWarpX_DIMS=3 -DWarpX_APP=OFF -DWarpX_PYTHON=ON -DWarpX_OPENPMD=ON @@ -3479,10 +2889,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = proton analysisRoutine = Examples/Tests/LoadExternalField/analysis_3d.py [Python_magnetostatic_eb_3d] @@ -3499,10 +2905,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 2 -compileTest = 0 -doVis = 0 -compareParticles = 0 -particleTypes = electrons analysisRoutine = Examples/analysis_default_regression.py [Python_magnetostatic_eb_rz] @@ -3519,10 +2921,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 2 -compileTest = 0 -doVis = 0 -compareParticles = 0 -particleTypes = electrons analysisRoutine = Examples/Tests/magnetostatic_eb/analysis_rz.py [Python_ohms_law_solver_EM_modes_1d] @@ -3539,9 +2937,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 analysisRoutine = Examples/Tests/ohm_solver_EM_modes/analysis.py [Python_ohms_law_solver_EM_modes_rz] @@ -3549,7 +2944,7 @@ buildDir = . inputFile = Examples/Tests/ohm_solver_EM_modes/PICMI_inputs_rz.py runtime_params = warpx.abort_on_warning_threshold = medium customRunCmd = python3 PICMI_inputs_rz.py --test -dim = 1 +dim = 2 addToCompileString = USE_PYTHON_MAIN=TRUE USE_OPENPMD=TRUE QED=FALSE USE_RZ=TRUE cmakeSetupOpts = -DWarpX_DIMS=RZ -DWarpX_APP=OFF -DWarpX_QED=OFF -DWarpX_PYTHON=ON target = pip_install @@ -3558,9 +2953,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 analysisRoutine = Examples/Tests/ohm_solver_EM_modes/analysis_rz.py [Python_ohms_law_solver_ion_beam_1d] @@ -3577,9 +2969,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 analysisRoutine = Examples/Tests/ohm_solver_ion_beam_instability/analysis.py [Python_ohms_law_solver_landau_damping_2d] @@ -3596,9 +2985,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 analysisRoutine = Examples/Tests/ohm_solver_ion_Landau_damping/analysis.py [Python_ohms_law_solver_magnetic_reconnection_2d] @@ -3615,9 +3001,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 analysisRoutine = Examples/Tests/ohm_solver_magnetic_reconnection/analysis.py [Python_particle_attr_access] @@ -3634,8 +3017,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/Tests/particle_data_python/analysis.py [Python_particle_attr_access_unique] @@ -3652,8 +3033,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/Tests/particle_data_python/analysis.py [Python_particle_reflection] @@ -3670,8 +3049,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/Tests/particle_boundary_process/analysis_reflection.py [Python_particle_scrape] @@ -3688,10 +3065,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons analysisRoutine = Examples/Tests/particle_boundary_scrape/analysis_scrape.py # TODO: Enable in pyAMReX, then enable lines in PICMI_inputs_2d.py again @@ -3710,10 +3083,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons # TODO: comment in again once enabled #analysisRoutine = Examples/Tests/pass_mpi_communicator/analysis.py @@ -3731,10 +3100,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = beam analysisRoutine = Examples/analysis_default_regression.py [Python_PlasmaAcceleration1d] @@ -3751,10 +3116,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = beam analysisRoutine = Examples/analysis_default_regression.py [Python_PlasmaAccelerationMR] @@ -3771,10 +3132,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = beam analysisRoutine = Examples/analysis_default_regression.py [Python_plasma_lens] @@ -3791,10 +3148,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons analysisRoutine = Examples/Tests/plasma_lens/analysis.py [Python_prev_positions] @@ -3811,9 +3164,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 analysisRoutine = Examples/analysis_default_regression.py [Python_reduced_diags_loadbalancecosts_timers] @@ -3830,9 +3180,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/reduced_diags/analysis_reduced_diags_loadbalancecosts.py [Python_restart_eb] @@ -3850,10 +3197,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons analysisRoutine = Examples/Tests/restart/analysis_restart.py [Python_restart_runtime_components] @@ -3871,10 +3214,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 -particleTypes = electrons [Python_wrappers] buildDir = . @@ -3890,9 +3229,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/analysis_default_regression.py [qed_breit_wheeler_2d] @@ -3908,9 +3244,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/qed/breit_wheeler/analysis_yt.py [qed_breit_wheeler_2d_opmd] @@ -3926,9 +3259,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 outputFile = qed_breit_wheeler_2d_opmd_plt analysisRoutine = Examples/Tests/qed/breit_wheeler/analysis_opmd.py @@ -3945,9 +3275,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/qed/breit_wheeler/analysis_yt.py [qed_breit_wheeler_3d_opmd] @@ -3963,9 +3290,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 outputFile = qed_breit_wheeler_3d_opmd_plt analysisRoutine = Examples/Tests/qed/breit_wheeler/analysis_opmd.py @@ -3981,9 +3305,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/qed/quantum_synchrotron/analysis.py [qed_quantum_sync_3d] @@ -3998,9 +3319,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/qed/quantum_synchrotron/analysis.py [qed_schwinger1] @@ -4015,8 +3333,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/Tests/qed/schwinger/analysis_schwinger.py [qed_schwinger2] @@ -4031,8 +3347,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/Tests/qed/schwinger/analysis_schwinger.py [qed_schwinger3] @@ -4047,8 +3361,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/Tests/qed/schwinger/analysis_schwinger.py [qed_schwinger4] @@ -4063,8 +3375,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/Tests/qed/schwinger/analysis_schwinger.py [radiation_reaction] @@ -4079,9 +3389,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/radiation_reaction/test_const_B_analytical/analysis_classicalRR.py [reduced_diags] @@ -4097,9 +3404,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/reduced_diags/analysis_reduced_diags.py [reduced_diags_loadbalancecosts_heuristic] @@ -4114,9 +3418,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/reduced_diags/analysis_reduced_diags_loadbalancecosts.py [reduced_diags_loadbalancecosts_timers] @@ -4131,9 +3432,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/reduced_diags/analysis_reduced_diags_loadbalancecosts.py [reduced_diags_loadbalancecosts_timers_psatd] @@ -4148,9 +3446,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/reduced_diags/analysis_reduced_diags_loadbalancecosts.py [reduced_diags_single_precision] @@ -4166,9 +3461,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/reduced_diags/analysis_reduced_diags_single.py [RefinedInjection] @@ -4183,10 +3475,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons beam analysisRoutine = Examples/Physics_applications/laser_acceleration/analysis_refined_injection.py [relativistic_space_charge_initialization] @@ -4200,9 +3488,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 runtime_params = analysisRoutine = Examples/Tests/relativistic_space_charge_initialization/analysis.py analysisOutputImage = Comparison.png @@ -4219,8 +3504,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/Tests/repelling_particles/analysis_repelling.py [resample_velocity_coincidence_thinning] @@ -4235,9 +3518,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/analysis_default_regression.py [resample_velocity_coincidence_thinning_cartesian] @@ -4252,9 +3532,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/analysis_default_regression.py [restart] @@ -4270,10 +3547,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 -particleTypes = beam analysisRoutine = Examples/Tests/restart/analysis_restart.py [restart_psatd] @@ -4289,10 +3562,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 -particleTypes = beam analysisRoutine = Examples/Tests/restart/analysis_restart.py [restart_psatd_time_avg] @@ -4308,10 +3577,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 -particleTypes = beam analysisRoutine = Examples/Tests/restart/analysis_restart.py [RigidInjection_BTD] @@ -4326,10 +3591,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 -doComparison = 0 analysisRoutine = Examples/Tests/rigid_injection/analysis_rigid_injection_BoostedFrame.py [RigidInjection_lab] @@ -4344,9 +3605,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/rigid_injection/analysis_rigid_injection_LabFrame.py [scraping] @@ -4361,9 +3619,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/scraping/analysis_rz.py [scraping_filter] @@ -4378,9 +3633,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/scraping/analysis_rz_filter.py [silver_mueller_1d] @@ -4395,8 +3647,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/Tests/silver_mueller/analysis_silver_mueller.py [silver_mueller_2d_x] @@ -4411,8 +3661,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/Tests/silver_mueller/analysis_silver_mueller.py [silver_mueller_2d_z] @@ -4427,8 +3675,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/Tests/silver_mueller/analysis_silver_mueller.py [silver_mueller_rz_z] @@ -4443,8 +3689,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/Tests/silver_mueller/analysis_silver_mueller.py [space_charge_initialization] @@ -4458,9 +3702,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 runtime_params = analysisRoutine = Examples/Tests/space_charge_initialization/analysis.py analysisOutputImage = Comparison.png @@ -4476,9 +3717,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 runtime_params = geometry.dims=2 analysisRoutine = Examples/Tests/space_charge_initialization/analysis.py analysisOutputImage = Comparison.png @@ -4495,9 +3733,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/analysis_default_regression.py [Uniform_2d] @@ -4512,8 +3747,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 analysisRoutine = Examples/analysis_default_regression.py [uniform_plasma_restart] @@ -4529,10 +3762,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 -particleTypes = electrons analysisRoutine = Examples/Tests/restart/analysis_restart.py [uniform_plasma_multiJ] @@ -4547,10 +3776,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons ions analysisRoutine = Examples/Tests/nci_psatd_stability/analysis_multiJ.py [VayDeposition2D] @@ -4565,10 +3790,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electron ion analysisRoutine = Examples/Tests/vay_deposition/analysis.py [VayDeposition3D] @@ -4583,10 +3804,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electron ion analysisRoutine = Examples/Tests/vay_deposition/analysis.py [NodalElectrostaticSolver] @@ -4601,9 +3818,6 @@ useMPI = 1 numprocs = 1 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/nodal_electrostatic/analysis_3d.py [BeamBeamCollision] @@ -4618,8 +3832,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 outputFile = BeamBeamCollision_plt analysisRoutine = Examples/analysis_default_openpmd_regression.py @@ -4637,10 +3849,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons protons outputFile = spacecraft_charging_plt analysisRoutine = Examples/Physics_applications/spacecraft_charging/analysis.py analysisOutputImage = min_phi_analysis.png @@ -4657,10 +3865,6 @@ useMPI = 1 numprocs = 2 useOMP = 0 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 -particleTypes = electrons outputFile = Point_of_contact_EB_3d_plt analysisRoutine = Examples/Tests/point_of_contact_EB/analysis.py @@ -4676,10 +3880,6 @@ useMPI = 1 numprocs = 2 useOMP = 0 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 -particleTypes = electrons outputFile = Point_of_contact_EB_rz_plt analysisRoutine = Examples/Tests/point_of_contact_EB/analysis.py @@ -4695,9 +3895,6 @@ useMPI = 1 numprocs = 2 useOMP = 0 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 analysisRoutine = Examples/Tests/Implicit/analysis_1d.py [ThetaImplicitJFNK_VandB_2d] @@ -4712,9 +3909,6 @@ useMPI = 1 numprocs = 2 useOMP = 0 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 analysisRoutine = Examples/Tests/Implicit/analysis_vandb_jfnk_2d.py [SemiImplicitPicard_1d] @@ -4729,9 +3923,6 @@ useMPI = 1 numprocs = 2 useOMP = 0 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 analysisRoutine = Examples/Tests/Implicit/analysis_1d.py [EnergyConservingThermalPlasma] @@ -4745,9 +3936,6 @@ useMPI = 1 numprocs = 2 useOMP = 0 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 analysisRoutine = Examples/Tests/energy_conserving_thermal_plasma/analysis.py [focusing_gaussian_beam] @@ -4762,10 +3950,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 -doComparison = 0 analysisRoutine = Examples/Tests/gaussian_beam/analysis_focusing_beam.py [particle_boundary_interaction] @@ -4782,10 +3966,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 1 -particleTypes = electrons outputFile = particle_boundary_interaction_plt analysisRoutine = Examples/Tests/particle_boundary_interaction/analysis.py @@ -4801,9 +3981,6 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 analysisRoutine = Examples/Tests/particle_thermal_boundary/analysis_2d.py [openbc_poisson_solver] @@ -4818,8 +3995,4 @@ useMPI = 1 numprocs = 2 useOMP = 1 numthreads = 1 -compileTest = 0 -doVis = 0 -compareParticles = 0 -doComparison = 0 analysisRoutine = Examples/Tests/openbc_poisson_solver/analysis.py diff --git a/Source/Diagnostics/ReducedDiags/FieldReduction.H b/Source/Diagnostics/ReducedDiags/FieldReduction.H index a15d6489e2c..f467499ad56 100644 --- a/Source/Diagnostics/ReducedDiags/FieldReduction.H +++ b/Source/Diagnostics/ReducedDiags/FieldReduction.H @@ -212,15 +212,15 @@ public: amrex::Real reduce_value = amrex::get<0>(reduce_data.value()); // MPI reduce - if (std::is_same::value) + if (std::is_same_v) { amrex::ParallelDescriptor::ReduceRealMax(reduce_value); } - if (std::is_same::value) + if (std::is_same_v) { amrex::ParallelDescriptor::ReduceRealMin(reduce_value); } - if (std::is_same::value) + if (std::is_same_v) { amrex::ParallelDescriptor::ReduceRealSum(reduce_value); // If reduction operation is a sum, multiply the value by the cell volume so that the diff --git a/Source/Diagnostics/SliceDiagnostic.cpp b/Source/Diagnostics/SliceDiagnostic.cpp index 14a2d633a0c..97af967f2be 100644 --- a/Source/Diagnostics/SliceDiagnostic.cpp +++ b/Source/Diagnostics/SliceDiagnostic.cpp @@ -153,7 +153,7 @@ CreateSlice( const MultiFab& mf, const Vector &dom_geom, ablastr::utils::communication::ParallelCopy(*smf, mf, 0, 0, ncomp, nghost_vect, nghost_vect, WarpX::do_single_precision_comms); // interpolate if required on refined slice // - if (interpolate == 1 ) { + if (interpolate) { InterpolateSliceValues( *smf, interp_lo, slice_cc_nd_box, dom_geom, ncomp, nghost, slice_lo, slice_hi, SliceType, real_box); } diff --git a/Source/Evolve/WarpXEvolve.cpp b/Source/Evolve/WarpXEvolve.cpp index 8b2cc2c33f1..7bdba64dc4e 100644 --- a/Source/Evolve/WarpXEvolve.cpp +++ b/Source/Evolve/WarpXEvolve.cpp @@ -142,7 +142,7 @@ WarpX::Evolve (int numsteps) OneStep_multiJ(cur_time); } // Electromagnetic case: no subcycling or no mesh refinement - else if (do_subcycling == 0 || finest_level == 0) + else if ( !do_subcycling || (finest_level == 0)) { OneStep_nosub(cur_time); // E: guard cells are up-to-date @@ -150,7 +150,7 @@ WarpX::Evolve (int numsteps) // F: guard cells are NOT up-to-date } // Electromagnetic case: subcycling with one level of mesh refinement - else if (do_subcycling == 1 && finest_level == 1) + else if (do_subcycling && (finest_level == 1)) { OneStep_sub1(cur_time); } diff --git a/Source/Initialization/ExternalField.cpp b/Source/Initialization/ExternalField.cpp index e7a272e2e95..69120c0ae3c 100644 --- a/Source/Initialization/ExternalField.cpp +++ b/Source/Initialization/ExternalField.cpp @@ -172,7 +172,6 @@ ExternalFieldParams::ExternalFieldParams(const amrex::ParmParse& pp_warpx) // // External fields from file // - if (E_ext_grid_type == ExternalFieldType::read_from_file || B_ext_grid_type == ExternalFieldType::read_from_file){ const std::string read_fields_from_path="./"; diff --git a/Source/Initialization/VelocityProperties.cpp b/Source/Initialization/VelocityProperties.cpp index 14b48c79524..b6986970e31 100644 --- a/Source/Initialization/VelocityProperties.cpp +++ b/Source/Initialization/VelocityProperties.cpp @@ -18,26 +18,25 @@ VelocityProperties::VelocityProperties (const amrex::ParmParse& pp, std::string std::string vel_dir_s = "x"; utils::parser::query(pp, source_name, "bulk_vel_dir", vel_dir_s); - if(vel_dir_s[0] == '-'){ - m_sign_dir = -1; - } - else { - m_sign_dir = 1; + + if(vel_dir_s.empty()){ + WARPX_ABORT_WITH_MESSAGE("'.bulk_vel_dir input ' can't be empty."); } - if ((vel_dir_s == "x" || vel_dir_s[1] == 'x') || - (vel_dir_s == "X" || vel_dir_s[1] == 'X')){ + m_sign_dir = (vel_dir_s[0] == '-') ? -1 : 1; + + const auto dir = std::tolower(vel_dir_s.back()); + + if (dir == 'x'){ m_dir = 0; } - else if ((vel_dir_s == "y" || vel_dir_s[1] == 'y') || - (vel_dir_s == "Y" || vel_dir_s[1] == 'Y')){ + else if (dir == 'y'){ m_dir = 1; } - else if ((vel_dir_s == "z" || vel_dir_s[1] == 'z') || - (vel_dir_s == "Z" || vel_dir_s[1] == 'Z')) { + else if (dir == 'z'){ m_dir = 2; } - else { + else{ WARPX_ABORT_WITH_MESSAGE( "Cannot interpret .bulk_vel_dir input '" + vel_dir_s + "'. Please enter +/- x, y, or z with no whitespace between the sign and"+ diff --git a/Source/Initialization/WarpXInitData.cpp b/Source/Initialization/WarpXInitData.cpp index 68b38153f8d..8af0ce23ce8 100644 --- a/Source/Initialization/WarpXInitData.cpp +++ b/Source/Initialization/WarpXInitData.cpp @@ -155,13 +155,13 @@ WarpX::PrintMainPICparameters () amrex::Print() << "-------------------------------------------------------------------------------\n"; // print warpx build information - if constexpr (std::is_same::value) { + if constexpr (std::is_same_v) { amrex::Print() << "Precision: | SINGLE" << "\n"; } else { amrex::Print() << "Precision: | DOUBLE" << "\n"; } - if constexpr (std::is_same::value) { + if constexpr (std::is_same_v) { amrex::Print() << "Particle precision: | SINGLE" << "\n"; } else { @@ -294,19 +294,19 @@ WarpX::PrintMainPICparameters () " | - v_comoving = (" << m_v_comoving[0] << "," << m_v_comoving[1] << "," << m_v_comoving[2] << ")\n"; } - if (WarpX::update_with_rho==1) { + if (WarpX::update_with_rho) { amrex::Print() << " | - update with rho is ON \n"; } - if (current_correction==1) { + if (current_correction) { amrex::Print() << " | - current correction is ON \n"; } - if (WarpX::do_dive_cleaning==1) { + if (WarpX::do_dive_cleaning) { amrex::Print() << " | - div(E) cleaning is ON \n"; } - if (WarpX::do_divb_cleaning==1) { + if (WarpX::do_divb_cleaning) { amrex::Print() << " | - div(B) cleaning is ON \n"; } - if (do_multi_J == 1){ + if (do_multi_J){ amrex::Print() << " | - multi-J deposition is ON \n"; amrex::Print() << " | - do_multi_J_n_depositions = " << WarpX::do_multi_J_n_depositions << "\n"; @@ -323,7 +323,7 @@ WarpX::PrintMainPICparameters () amrex::Print() << " | - rho_in_time = constant \n"; } } - if (fft_do_time_averaging == 1){ + if (fft_do_time_averaging){ amrex::Print()<<" | - time-averaged is ON \n"; } #endif // WARPX_USE_FFT @@ -1359,6 +1359,21 @@ void WarpX::CheckKnownIssues() void WarpX::LoadExternalFieldsFromFile (int const lev) { + // External fields from file are currently not compatible with the moving window + // In order to support the moving window, the MultiFab containing the external + // fields should be updated every time the window moves. + if ( (m_p_ext_field_params->B_ext_grid_type == ExternalFieldType::read_from_file) || + (m_p_ext_field_params->E_ext_grid_type == ExternalFieldType::read_from_file) || + (mypc->m_B_ext_particle_s == "read_from_file") || + (mypc->m_E_ext_particle_s == "read_from_file") ) { + + WARPX_ALWAYS_ASSERT_WITH_MESSAGE( + WarpX::do_moving_window == 0, + "External fields from file are not compatible with the moving window." ); + } + + // External grid fields + if (m_p_ext_field_params->B_ext_grid_type == ExternalFieldType::read_from_file) { #if defined(WARPX_DIM_RZ) WARPX_ALWAYS_ASSERT_WITH_MESSAGE(n_rz_azimuthal_modes == 1, @@ -1383,6 +1398,41 @@ WarpX::LoadExternalFieldsFromFile (int const lev) ReadExternalFieldFromFile(m_p_ext_field_params->external_fields_path, Efield_fp_external[lev][0].get(), "E", "x"); ReadExternalFieldFromFile(m_p_ext_field_params->external_fields_path, Efield_fp_external[lev][1].get(), "E", "y"); ReadExternalFieldFromFile(m_p_ext_field_params->external_fields_path, Efield_fp_external[lev][2].get(), "E", "z"); +#endif + } + + // External particle fields + + if (mypc->m_B_ext_particle_s == "read_from_file") { + std::string external_fields_path; + const amrex::ParmParse pp_particles("particles"); + pp_particles.get("read_fields_from_path", external_fields_path ); +#if defined(WARPX_DIM_RZ) + WARPX_ALWAYS_ASSERT_WITH_MESSAGE(n_rz_azimuthal_modes == 1, + "External field reading is not implemented for more than one RZ mode (see #3829)"); + ReadExternalFieldFromFile(external_fields_path, B_external_particle_field[lev][0].get(), "B", "r"); + ReadExternalFieldFromFile(external_fields_path, B_external_particle_field[lev][1].get(), "B", "t"); + ReadExternalFieldFromFile(external_fields_path, B_external_particle_field[lev][2].get(), "B", "z"); +#else + ReadExternalFieldFromFile(external_fields_path, B_external_particle_field[lev][0].get(), "B", "x"); + ReadExternalFieldFromFile(external_fields_path, B_external_particle_field[lev][1].get(), "B", "y"); + ReadExternalFieldFromFile(external_fields_path, B_external_particle_field[lev][2].get(), "B", "z"); +#endif + } + if (mypc->m_E_ext_particle_s == "read_from_file") { + std::string external_fields_path; + const amrex::ParmParse pp_particles("particles"); + pp_particles.get("read_fields_from_path", external_fields_path ); +#if defined(WARPX_DIM_RZ) + WARPX_ALWAYS_ASSERT_WITH_MESSAGE(n_rz_azimuthal_modes == 1, + "External field reading is not implemented for more than one RZ mode (see #3829)"); + ReadExternalFieldFromFile(external_fields_path, E_external_particle_field[lev][0].get(), "E", "r"); + ReadExternalFieldFromFile(external_fields_path, E_external_particle_field[lev][1].get(), "E", "t"); + ReadExternalFieldFromFile(external_fields_path, E_external_particle_field[lev][2].get(), "E", "z"); +#else + ReadExternalFieldFromFile(external_fields_path, E_external_particle_field[lev][0].get(), "E", "x"); + ReadExternalFieldFromFile(external_fields_path, E_external_particle_field[lev][1].get(), "E", "y"); + ReadExternalFieldFromFile(external_fields_path, E_external_particle_field[lev][2].get(), "E", "z"); #endif } } diff --git a/Source/Parallelization/GuardCellManager.cpp b/Source/Parallelization/GuardCellManager.cpp index 321be15df7e..bf010736853 100644 --- a/Source/Parallelization/GuardCellManager.cpp +++ b/Source/Parallelization/GuardCellManager.cpp @@ -59,9 +59,9 @@ guardCellManager::Init ( // When using subcycling, the particles on the fine level perform two pushes // before being redistributed ; therefore, we need one extra guard cell // (the particles may move by 2*c*dt) - int ngx_tmp = (max_level > 0 && do_subcycling == 1) ? nox+1 : nox; - int ngy_tmp = (max_level > 0 && do_subcycling == 1) ? nox+1 : nox; - int ngz_tmp = (max_level > 0 && do_subcycling == 1) ? nox+1 : nox; + int ngx_tmp = (max_level > 0 && do_subcycling) ? nox+1 : nox; + int ngy_tmp = (max_level > 0 && do_subcycling) ? nox+1 : nox; + int ngz_tmp = (max_level > 0 && do_subcycling) ? nox+1 : nox; const bool galilean = (v_galilean[0] != 0. || v_galilean[1] != 0. || v_galilean[2] != 0.); const bool comoving = (v_comoving[0] != 0. || v_comoving[1] != 0. || v_comoving[2] != 0.); diff --git a/Source/Parallelization/WarpXComm.cpp b/Source/Parallelization/WarpXComm.cpp index dcf5fbe5621..e7df489236e 100644 --- a/Source/Parallelization/WarpXComm.cpp +++ b/Source/Parallelization/WarpXComm.cpp @@ -18,6 +18,7 @@ #include "Utils/WarpXProfilerWrapper.H" #include "WarpXComm_K.H" #include "WarpXSumGuardCells.H" +#include "Particles/MultiParticleContainer.H" #include #include @@ -59,6 +60,21 @@ WarpX::UpdateAuxilaryData () } else { UpdateAuxilaryDataStagToNodal(); } + + // When loading particle fields from file: add the external fields: + for (int lev = 0; lev <= finest_level; ++lev) { + if (mypc->m_E_ext_particle_s == "read_from_file") { + amrex::MultiFab::Add(*Efield_aux[lev][0], *E_external_particle_field[lev][0], 0, 0, E_external_particle_field[lev][0]->nComp(), guard_cells.ng_FieldGather); + amrex::MultiFab::Add(*Efield_aux[lev][1], *E_external_particle_field[lev][1], 0, 0, E_external_particle_field[lev][1]->nComp(), guard_cells.ng_FieldGather); + amrex::MultiFab::Add(*Efield_aux[lev][2], *E_external_particle_field[lev][2], 0, 0, E_external_particle_field[lev][2]->nComp(), guard_cells.ng_FieldGather); + } + if (mypc->m_B_ext_particle_s == "read_from_file") { + amrex::MultiFab::Add(*Bfield_aux[lev][0], *B_external_particle_field[lev][0], 0, 0, B_external_particle_field[lev][0]->nComp(), guard_cells.ng_FieldGather); + amrex::MultiFab::Add(*Bfield_aux[lev][1], *B_external_particle_field[lev][1], 0, 0, B_external_particle_field[lev][0]->nComp(), guard_cells.ng_FieldGather); + amrex::MultiFab::Add(*Bfield_aux[lev][2], *B_external_particle_field[lev][2], 0, 0, B_external_particle_field[lev][0]->nComp(), guard_cells.ng_FieldGather); + } + } + } void @@ -293,6 +309,30 @@ WarpX::UpdateAuxilaryDataStagToNodal () void WarpX::UpdateAuxilaryDataSameType () { + // Update aux field, including guard cells, up to ng_FieldGather + const amrex::IntVect& ng_src = guard_cells.ng_FieldGather; + + // Level 0: Copy from fine to aux + // Note: in some configurations, Efield_aux/Bfield_aux and Efield_fp/Bfield_fp are simply aliases to the + // same MultiFab object. MultiFab::Copy operation automatically detects this and does nothing in this case. + if (WarpX::fft_do_time_averaging) + { + MultiFab::Copy(*Efield_aux[0][0], *Efield_avg_fp[0][0], 0, 0, Efield_aux[0][0]->nComp(), ng_src); + MultiFab::Copy(*Efield_aux[0][1], *Efield_avg_fp[0][1], 0, 0, Efield_aux[0][1]->nComp(), ng_src); + MultiFab::Copy(*Efield_aux[0][2], *Efield_avg_fp[0][2], 0, 0, Efield_aux[0][2]->nComp(), ng_src); + MultiFab::Copy(*Bfield_aux[0][0], *Bfield_avg_fp[0][0], 0, 0, Bfield_aux[0][0]->nComp(), ng_src); + MultiFab::Copy(*Bfield_aux[0][1], *Bfield_avg_fp[0][1], 0, 0, Bfield_aux[0][1]->nComp(), ng_src); + MultiFab::Copy(*Bfield_aux[0][2], *Bfield_avg_fp[0][2], 0, 0, Bfield_aux[0][2]->nComp(), ng_src); + } + else + { + MultiFab::Copy(*Efield_aux[0][0], *Efield_fp[0][0], 0, 0, Efield_aux[0][0]->nComp(), ng_src); + MultiFab::Copy(*Efield_aux[0][1], *Efield_fp[0][1], 0, 0, Efield_aux[0][1]->nComp(), ng_src); + MultiFab::Copy(*Efield_aux[0][2], *Efield_fp[0][2], 0, 0, Efield_aux[0][2]->nComp(), ng_src); + MultiFab::Copy(*Bfield_aux[0][0], *Bfield_fp[0][0], 0, 0, Bfield_aux[0][0]->nComp(), ng_src); + MultiFab::Copy(*Bfield_aux[0][1], *Bfield_fp[0][1], 0, 0, Bfield_aux[0][1]->nComp(), ng_src); + MultiFab::Copy(*Bfield_aux[0][2], *Bfield_fp[0][2], 0, 0, Bfield_aux[0][2]->nComp(), ng_src); + } for (int lev = 1; lev <= finest_level; ++lev) { const amrex::Periodicity& crse_period = Geom(lev-1).periodicity(); @@ -308,8 +348,6 @@ WarpX::UpdateAuxilaryDataSameType () dBy.setVal(0.0); dBz.setVal(0.0); - // Guard cells may not be up to date beyond ng_FieldGather - const amrex::IntVect& ng_src = guard_cells.ng_FieldGather; // Copy Bfield_aux to the dB MultiFabs, using up to ng_src (=ng_FieldGather) guard // cells from Bfield_aux and filling up to ng (=nGrow) guard cells in the dB MultiFabs @@ -379,8 +417,6 @@ WarpX::UpdateAuxilaryDataSameType () dEy.setVal(0.0); dEz.setVal(0.0); - // Guard cells may not be up to date beyond ng_FieldGather - const amrex::IntVect& ng_src = guard_cells.ng_FieldGather; // Copy Efield_aux to the dE MultiFabs, using up to ng_src (=ng_FieldGather) guard // cells from Efield_aux and filling up to ng (=nGrow) guard cells in the dE MultiFabs ablastr::utils::communication::ParallelCopy(dEx, *Efield_aux[lev - 1][0], 0, 0, diff --git a/Source/Parallelization/WarpXRegrid.cpp b/Source/Parallelization/WarpXRegrid.cpp index 52586a5c88c..d33bd17ccdd 100644 --- a/Source/Parallelization/WarpXRegrid.cpp +++ b/Source/Parallelization/WarpXRegrid.cpp @@ -192,6 +192,12 @@ WarpX::RemakeLevel (int lev, Real /*time*/, const BoxArray& ba, const Distributi if (m_p_ext_field_params->E_ext_grid_type == ExternalFieldType::read_from_file) { RemakeMultiFab(Efield_fp_external[lev][idim], true); } + if (mypc->m_B_ext_particle_s == "read_from_file") { + RemakeMultiFab(B_external_particle_field[lev][idim], true); + } + if (mypc->m_E_ext_particle_s == "read_from_file") { + RemakeMultiFab(E_external_particle_field[lev][idim], true); + } RemakeMultiFab(current_fp[lev][idim], false); RemakeMultiFab(current_store[lev][idim], false); if (current_deposition_algo == CurrentDepositionAlgo::Vay) { diff --git a/Source/Particles/Collision/BinaryCollision/BinaryCollision.H b/Source/Particles/Collision/BinaryCollision/BinaryCollision.H index b3d39a9c581..84e0fef8c9c 100644 --- a/Source/Particles/Collision/BinaryCollision/BinaryCollision.H +++ b/Source/Particles/Collision/BinaryCollision/BinaryCollision.H @@ -108,7 +108,7 @@ public: } m_have_product_species = !m_product_species.empty(); - if ((std::is_same::value) && (m_have_product_species)) { + if ((std::is_same_v) && (m_have_product_species)) { WARPX_ABORT_WITH_MESSAGE( "Binary collision " + collision_name + " does not produce species. Thus, `product_species` should not be specified in the input script." ); } @@ -368,14 +368,12 @@ public: // given by the `indices_1[cell_start_1:cell_stop_1]` index_type const cell_start_1 = cell_offsets_1[i_cell]; index_type const cell_stop_1 = cell_offsets_1[i_cell+1]; - index_type const cell_half_1 = (cell_start_1+cell_stop_1)/2; // Do not collide if there is only one particle in the cell if ( cell_stop_1 - cell_start_1 <= 1 ) { return; } // shuffle - ShuffleFisherYates( - indices_1, cell_start_1, cell_half_1, engine ); + ShuffleFisherYates(indices_1, cell_start_1, cell_stop_1, engine); } ); diff --git a/Source/Particles/Collision/BinaryCollision/Coulomb/ComputeTemperature.H b/Source/Particles/Collision/BinaryCollision/Coulomb/ComputeTemperature.H index 04440288ba3..6d0b48615a4 100644 --- a/Source/Particles/Collision/BinaryCollision/Coulomb/ComputeTemperature.H +++ b/Source/Particles/Collision/BinaryCollision/Coulomb/ComputeTemperature.H @@ -14,6 +14,7 @@ template AMREX_GPU_HOST_DEVICE T_R ComputeTemperature ( T_index const Is, T_index const Ie, T_index const * AMREX_RESTRICT I, + T_R const * AMREX_RESTRICT w, T_R const * AMREX_RESTRICT ux, T_R const * AMREX_RESTRICT uy, T_R const * AMREX_RESTRICT uz, T_R const m ) { @@ -26,6 +27,7 @@ T_R ComputeTemperature ( T_R vx = T_R(0.0); T_R vy = T_R(0.0); T_R vz = T_R(0.0); T_R vs = T_R(0.0); T_R gm = T_R(0.0); T_R us = T_R(0.0); + T_R wtot = T_R(0.0); for (int i = Is; i < static_cast(Ie); ++i) { @@ -33,14 +35,15 @@ T_R ComputeTemperature ( uy[ I[i] ] * uy[ I[i] ] + uz[ I[i] ] * uz[ I[i] ] ); gm = std::sqrt( T_R(1.0) + us*inv_c2 ); - vx += ux[ I[i] ] / gm; - vy += uy[ I[i] ] / gm; - vz += uz[ I[i] ] / gm; - vs += us / gm / gm; + wtot += w[ I[i] ]; + vx += w[ I[i] ] * ux[ I[i] ] / gm; + vy += w[ I[i] ] * uy[ I[i] ] / gm; + vz += w[ I[i] ] * uz[ I[i] ] / gm; + vs += w[ I[i] ] * us / gm / gm; } - vx = vx / N; vy = vy / N; - vz = vz / N; vs = vs / N; + vx = vx / wtot; vy = vy / wtot; + vz = vz / wtot; vs = vs / wtot; return m/T_R(3.0)*(vs-(vx*vx+vy*vy+vz*vz)); } diff --git a/Source/Particles/Collision/BinaryCollision/Coulomb/ElasticCollisionPerez.H b/Source/Particles/Collision/BinaryCollision/Coulomb/ElasticCollisionPerez.H index af4e6ba38c9..a782fac5f6e 100644 --- a/Source/Particles/Collision/BinaryCollision/Coulomb/ElasticCollisionPerez.H +++ b/Source/Particles/Collision/BinaryCollision/Coulomb/ElasticCollisionPerez.H @@ -74,12 +74,12 @@ void ElasticCollisionPerez ( T_PR T1t; T_PR T2t; if ( T1 <= T_PR(0.0) && L <= T_PR(0.0) ) { - T1t = ComputeTemperature(I1s,I1e,I1,u1x,u1y,u1z,m1); + T1t = ComputeTemperature(I1s,I1e,I1,w1,u1x,u1y,u1z,m1); } else { T1t = T1; } if ( T2 <= T_PR(0.0) && L <= T_PR(0.0) ) { - T2t = ComputeTemperature(I2s,I2e,I2,u2x,u2y,u2z,m2); + T2t = ComputeTemperature(I2s,I2e,I2,w2,u2x,u2y,u2z,m2); } else { T2t = T2; } diff --git a/Source/Particles/Gather/GetExternalFields.cpp b/Source/Particles/Gather/GetExternalFields.cpp index 8e3c679aa3a..bb55f79f394 100644 --- a/Source/Particles/Gather/GetExternalFields.cpp +++ b/Source/Particles/Gather/GetExternalFields.cpp @@ -83,6 +83,18 @@ GetExternalEBField::GetExternalEBField (const WarpXParIter& a_pti, long a_offset m_repeated_plasma_lens_strengths_B = mypc.d_repeated_plasma_lens_strengths_B.data(); } + // When the external particle fields are read from file, + // the external fields are not added directly inside the gather kernel. + // (Hence of `None`, which ensures that the gather kernel is compiled without support + // for external fields.) Instead, the external fields are added to the MultiFab + // Efield_aux and Bfield_aux before the particles gather from these MultiFab. + if (mypc.m_E_ext_particle_s == "read_from_file") { + m_Etype = ExternalFieldInitType::None; + } + if (mypc.m_B_ext_particle_s == "read_from_file") { + m_Btype = ExternalFieldInitType::None; + } + WARPX_ALWAYS_ASSERT_WITH_MESSAGE(m_Etype != Unknown, "Unknown E_ext_particle_init_style"); WARPX_ALWAYS_ASSERT_WITH_MESSAGE(m_Btype != Unknown, "Unknown B_ext_particle_init_style"); diff --git a/Source/Particles/LaserParticleContainer.cpp b/Source/Particles/LaserParticleContainer.cpp index 0693a13c1f9..bd266ab368a 100644 --- a/Source/Particles/LaserParticleContainer.cpp +++ b/Source/Particles/LaserParticleContainer.cpp @@ -719,7 +719,7 @@ LaserParticleContainer::ComputeSpacing (int lev, Real& Sx, Real& Sy) const #if !defined(WARPX_DIM_RZ) constexpr float small_float_coeff = 1.e-25f; constexpr double small_double_coeff = 1.e-50; - constexpr Real small_coeff = std::is_same::value ? + constexpr Real small_coeff = std::is_same_v ? static_cast(small_float_coeff) : static_cast(small_double_coeff); const auto eps = static_cast(dx[0]*small_coeff); diff --git a/Source/Particles/ParticleBoundaryBuffer.cpp b/Source/Particles/ParticleBoundaryBuffer.cpp index 784c27816da..25068b2e65c 100644 --- a/Source/Particles/ParticleBoundaryBuffer.cpp +++ b/Source/Particles/ParticleBoundaryBuffer.cpp @@ -390,7 +390,15 @@ void ParticleBoundaryBuffer::gatherParticlesFromDomainBoundaries (MultiParticleC buffer[i].AddRealComp("ny", false); buffer[i].AddRealComp("nz", false); } + auto& species_buffer = buffer[i]; + for (int lev = 0; lev < pc.numLevels(); ++lev){ + for(PIter pti(pc, lev); pti.isValid(); ++pti){ + species_buffer.DefineAndReturnParticleTile( + lev, pti.index(), pti.LocalTileIndex()); + } + } + for (int lev = 0; lev < pc.numLevels(); ++lev) { const auto& plevel = pc.GetParticles(lev); @@ -474,7 +482,15 @@ void ParticleBoundaryBuffer::gatherParticlesFromEmbeddedBoundaries ( buffer[i].AddRealComp("nz", false); } + auto& species_buffer = buffer[i]; + for (int lev = 0; lev < pc.numLevels(); ++lev){ + for(PIter pti(pc, lev); pti.isValid(); ++pti){ + species_buffer.DefineAndReturnParticleTile( + lev, pti.index(), pti.LocalTileIndex()); + } + } + for (int lev = 0; lev < pc.numLevels(); ++lev) { const auto& plevel = pc.GetParticles(lev); diff --git a/Source/Particles/PhysicalParticleContainer.cpp b/Source/Particles/PhysicalParticleContainer.cpp index 2c77ebe62e7..e02f0bb6f74 100644 --- a/Source/Particles/PhysicalParticleContainer.cpp +++ b/Source/Particles/PhysicalParticleContainer.cpp @@ -1064,7 +1064,7 @@ PhysicalParticleContainer::AddPlasma (PlasmaInjector const& plasma_injector, int static_cast(std::round((overlap_realbox.lo(dir)-problo[dir])/dx[dir])); // shifted is exact in non-moving-window direction. That's all we care. } - if (no_overlap == 1) { + if (no_overlap) { continue; // Go to the next tile } @@ -1643,7 +1643,7 @@ PhysicalParticleContainer::AddPlasmaFlux (PlasmaInjector const& plasma_injector, // shifted is exact in non-moving-window direction. That's all we care. } } - if (no_overlap == 1) { + if (no_overlap) { continue; // Go to the next tile } diff --git a/Source/Utils/Parser/ParserUtils.H b/Source/Utils/Parser/ParserUtils.H index dbc4845d1bf..96937abdbbe 100644 --- a/Source/Utils/Parser/ParserUtils.H +++ b/Source/Utils/Parser/ParserUtils.H @@ -147,7 +147,7 @@ namespace utils::parser auto parser = makeParser(str_val, {}); - if constexpr (std::is_same::value) { + if constexpr (std::is_same_v) { val = safeCastToInt( static_cast(std::round(parser.compileHost<0>()())), str); @@ -174,7 +174,7 @@ namespace utils::parser val.resize(n); for (int i=0 ; i < n ; i++) { auto parser = makeParser(tmp_str_arr[i], {}); - if constexpr (std::is_same::value) { + if constexpr (std::is_same_v) { val[i] = safeCastToInt( static_cast(std::round(parser.compileHost<0>()())), str); } @@ -217,7 +217,7 @@ namespace utils::parser val.resize(n); for (int i=0 ; i < n ; i++) { auto parser = makeParser(tmp_str_arr[i], {}); - if constexpr (std::is_same::value) { + if constexpr (std::is_same_v) { val[i] = safeCastToInt( static_cast(std::round(parser.compileHost<0>()())), str); } @@ -250,7 +250,7 @@ namespace utils::parser Store_parserString(a_pp, str, str_val); auto parser = makeParser(str_val, {}); - if constexpr (std::is_same::value) { + if constexpr (std::is_same_v) { val = safeCastToInt( static_cast(std::round(parser.compileHost<0>()())), str); } @@ -270,7 +270,7 @@ namespace utils::parser val.resize(n); for (int i=0 ; i < n ; i++) { auto parser = makeParser(tmp_str_arr[i], {}); - if constexpr (std::is_same::value) { + if constexpr (std::is_same_v) { val[i] = safeCastToInt( static_cast(std::round(parser.compileHost<0>()())), str); } @@ -308,7 +308,7 @@ namespace utils::parser val.resize(n); for (int i=0 ; i < n ; i++) { auto parser = makeParser(tmp_str_arr[i], {}); - if constexpr (std::is_same::value) { + if constexpr (std::is_same_v) { val[i] = safeCastToInt( static_cast(std::round(parser.compileHost<0>()())), str); } diff --git a/Source/Utils/WarpXTagging.cpp b/Source/Utils/WarpXTagging.cpp index f88380e2589..b6eb2fda5d2 100644 --- a/Source/Utils/WarpXTagging.cpp +++ b/Source/Utils/WarpXTagging.cpp @@ -61,7 +61,7 @@ WarpX::ErrorEst (int lev, TagBoxArray& tags, Real /*time*/, int /*ngrow*/) } else { tag_val = (pos > ftlo && pos < fthi); } - if ( tag_val == 1) { + if (tag_val) { fab(i,j,k) = TagBox::SET; } }); diff --git a/Source/WarpX.H b/Source/WarpX.H index 768f2d486dc..3372dd869cc 100644 --- a/Source/WarpX.H +++ b/Source/WarpX.H @@ -1512,6 +1512,8 @@ private: // Same as Bfield_fp/Efield_fp for reading external field data amrex::Vector, 3 > > Efield_fp_external; amrex::Vector, 3 > > Bfield_fp_external; + amrex::Vector, 3 > > E_external_particle_field; + amrex::Vector, 3 > > B_external_particle_field; //! EB: Lengths of the mesh edges amrex::Vector, 3 > > m_edge_lengths; diff --git a/Source/WarpX.cpp b/Source/WarpX.cpp index d1f9eb16f47..fcd10418b23 100644 --- a/Source/WarpX.cpp +++ b/Source/WarpX.cpp @@ -343,6 +343,8 @@ WarpX::WarpX () // Same as Bfield_fp/Efield_fp for reading external field data Bfield_fp_external.resize(1); Efield_fp_external.resize(1); + B_external_particle_field.resize(1); + E_external_particle_field.resize(1); m_edge_lengths.resize(nlevs_max); m_face_areas.resize(nlevs_max); @@ -1284,8 +1286,16 @@ WarpX::ReadParameters () } } - // Use same shape factors in all directions, for gathering - if (field_gathering_algo == GatheringAlgo::MomentumConserving) { galerkin_interpolation = false; } + // Use same shape factors in all directions + // - with momentum-conserving field gathering + if (field_gathering_algo == GatheringAlgo::MomentumConserving) {galerkin_interpolation = false;} + // - with direct current deposition and the EM solver + if( electromagnetic_solver_id != ElectromagneticSolverAlgo::None && + electromagnetic_solver_id != ElectromagneticSolverAlgo::HybridPIC ) { + if (current_deposition_algo == CurrentDepositionAlgo::Direct) { + galerkin_interpolation = false; + } + } { const ParmParse pp_interpolation("interpolation"); @@ -2307,18 +2317,6 @@ WarpX::AllocLevelMFs (int lev, const BoxArray& ba, const DistributionMapping& dm AllocInitMultiFab(current_fp[lev][1], amrex::convert(ba, jy_nodal_flag), dm, ncomps, ngJ, lev, "current_fp[y]", 0.0_rt); AllocInitMultiFab(current_fp[lev][2], amrex::convert(ba, jz_nodal_flag), dm, ncomps, ngJ, lev, "current_fp[z]", 0.0_rt); - // Match external field MultiFabs to fine patch - if (m_p_ext_field_params->B_ext_grid_type == ExternalFieldType::read_from_file) { - AllocInitMultiFab(Bfield_fp_external[lev][0], amrex::convert(ba, Bx_nodal_flag), dm, ncomps, ngEB, lev, "Bfield_fp_external[x]", 0.0_rt); - AllocInitMultiFab(Bfield_fp_external[lev][1], amrex::convert(ba, By_nodal_flag), dm, ncomps, ngEB, lev, "Bfield_fp_external[y]", 0.0_rt); - AllocInitMultiFab(Bfield_fp_external[lev][2], amrex::convert(ba, Bz_nodal_flag), dm, ncomps, ngEB, lev, "Bfield_fp_external[z]", 0.0_rt); - } - if (m_p_ext_field_params->E_ext_grid_type == ExternalFieldType::read_from_file) { - AllocInitMultiFab(Efield_fp_external[lev][0], amrex::convert(ba, Ex_nodal_flag), dm, ncomps, ngEB, lev, "Efield_fp_external[x]", 0.0_rt); - AllocInitMultiFab(Efield_fp_external[lev][1], amrex::convert(ba, Ey_nodal_flag), dm, ncomps, ngEB, lev, "Efield_fp_external[y]", 0.0_rt); - AllocInitMultiFab(Efield_fp_external[lev][2], amrex::convert(ba, Ez_nodal_flag), dm, ncomps, ngEB, lev, "Efield_fp_external[z]", 0.0_rt); - } - if (do_current_centering) { amrex::BoxArray const& nodal_ba = amrex::convert(ba, amrex::IntVect::TheNodeVector()); @@ -2459,7 +2457,7 @@ WarpX::AllocLevelMFs (int lev, const BoxArray& ba, const DistributionMapping& dm AllocInitMultiFab(phi_fp[lev], amrex::convert(ba, phi_nodal_flag), dm, ncomps, ngPhi, lev, "phi_fp", 0.0_rt); } - if (do_subcycling == 1 && lev == 0) + if (do_subcycling && lev == 0) { AllocInitMultiFab(current_store[lev][0], amrex::convert(ba,jx_nodal_flag),dm,ncomps,ngJ,lev, "current_store[x]"); AllocInitMultiFab(current_store[lev][1], amrex::convert(ba,jy_nodal_flag),dm,ncomps,ngJ,lev, "current_store[y]"); @@ -2550,32 +2548,82 @@ WarpX::AllocLevelMFs (int lev, const BoxArray& ba, const DistributionMapping& dm AllocInitMultiFab(Efield_aux[lev][1], nba, dm, ncomps, ngEB, lev, "Efield_aux[y]", 0.0_rt); AllocInitMultiFab(Efield_aux[lev][2], nba, dm, ncomps, ngEB, lev, "Efield_aux[z]", 0.0_rt); } else if (lev == 0) { - if (!WarpX::fft_do_time_averaging) { - // In this case, the aux grid is simply an alias of the fp grid - AliasInitMultiFab(Efield_aux[lev][0], *Efield_fp[lev][0], 0, ncomps, lev, "Efield_aux[x]", 0.0_rt); - AliasInitMultiFab(Efield_aux[lev][1], *Efield_fp[lev][1], 0, ncomps, lev, "Efield_aux[y]", 0.0_rt); - AliasInitMultiFab(Efield_aux[lev][2], *Efield_fp[lev][2], 0, ncomps, lev, "Efield_aux[z]", 0.0_rt); - - AliasInitMultiFab(Bfield_aux[lev][0], *Bfield_fp[lev][0], 0, ncomps, lev, "Bfield_aux[x]", 0.0_rt); - AliasInitMultiFab(Bfield_aux[lev][1], *Bfield_fp[lev][1], 0, ncomps, lev, "Bfield_aux[y]", 0.0_rt); - AliasInitMultiFab(Bfield_aux[lev][2], *Bfield_fp[lev][2], 0, ncomps, lev, "Bfield_aux[z]", 0.0_rt); - } else { - AliasInitMultiFab(Efield_aux[lev][0], *Efield_avg_fp[lev][0], 0, ncomps, lev, "Efield_aux[x]", 0.0_rt); - AliasInitMultiFab(Efield_aux[lev][1], *Efield_avg_fp[lev][1], 0, ncomps, lev, "Efield_aux[y]", 0.0_rt); - AliasInitMultiFab(Efield_aux[lev][2], *Efield_avg_fp[lev][2], 0, ncomps, lev, "Efield_aux[z]", 0.0_rt); - + if (WarpX::fft_do_time_averaging) { AliasInitMultiFab(Bfield_aux[lev][0], *Bfield_avg_fp[lev][0], 0, ncomps, lev, "Bfield_aux[x]", 0.0_rt); AliasInitMultiFab(Bfield_aux[lev][1], *Bfield_avg_fp[lev][1], 0, ncomps, lev, "Bfield_aux[y]", 0.0_rt); AliasInitMultiFab(Bfield_aux[lev][2], *Bfield_avg_fp[lev][2], 0, ncomps, lev, "Bfield_aux[z]", 0.0_rt); + + AliasInitMultiFab(Efield_aux[lev][0], *Efield_avg_fp[lev][0], 0, ncomps, lev, "Efield_aux[x]", 0.0_rt); + AliasInitMultiFab(Efield_aux[lev][1], *Efield_avg_fp[lev][1], 0, ncomps, lev, "Efield_aux[y]", 0.0_rt); + AliasInitMultiFab(Efield_aux[lev][2], *Efield_avg_fp[lev][2], 0, ncomps, lev, "Efield_aux[z]", 0.0_rt); + } else { + if (mypc->m_B_ext_particle_s == "read_from_file") { + AllocInitMultiFab(Bfield_aux[lev][0], amrex::convert(ba, Bx_nodal_flag), dm, ncomps, ngEB, lev, "Bfield_aux[x]"); + AllocInitMultiFab(Bfield_aux[lev][1], amrex::convert(ba, By_nodal_flag), dm, ncomps, ngEB, lev, "Bfield_aux[y]"); + AllocInitMultiFab(Bfield_aux[lev][2], amrex::convert(ba, Bz_nodal_flag), dm, ncomps, ngEB, lev, "Bfield_aux[z]"); + } else { + // In this case, the aux grid is simply an alias of the fp grid (most common case in WarpX) + AliasInitMultiFab(Bfield_aux[lev][0], *Bfield_fp[lev][0], 0, ncomps, lev, "Bfield_aux[x]", 0.0_rt); + AliasInitMultiFab(Bfield_aux[lev][1], *Bfield_fp[lev][1], 0, ncomps, lev, "Bfield_aux[y]", 0.0_rt); + AliasInitMultiFab(Bfield_aux[lev][2], *Bfield_fp[lev][2], 0, ncomps, lev, "Bfield_aux[z]", 0.0_rt); + } + if (mypc->m_E_ext_particle_s == "read_from_file") { + AllocInitMultiFab(Efield_aux[lev][0], amrex::convert(ba, Ex_nodal_flag), dm, ncomps, ngEB, lev, "Efield_aux[x]"); + AllocInitMultiFab(Efield_aux[lev][1], amrex::convert(ba, Ey_nodal_flag), dm, ncomps, ngEB, lev, "Efield_aux[y]"); + AllocInitMultiFab(Efield_aux[lev][2], amrex::convert(ba, Ez_nodal_flag), dm, ncomps, ngEB, lev, "Efield_aux[z]"); + } else { + // In this case, the aux grid is simply an alias of the fp grid (most common case in WarpX) + AliasInitMultiFab(Efield_aux[lev][0], *Efield_fp[lev][0], 0, ncomps, lev, "Efield_aux[x]", 0.0_rt); + AliasInitMultiFab(Efield_aux[lev][1], *Efield_fp[lev][1], 0, ncomps, lev, "Efield_aux[y]", 0.0_rt); + AliasInitMultiFab(Efield_aux[lev][2], *Efield_fp[lev][2], 0, ncomps, lev, "Efield_aux[z]", 0.0_rt); + } } } else { - AllocInitMultiFab(Bfield_aux[lev][0], amrex::convert(ba, Bx_nodal_flag), dm, ncomps, ngEB, lev, "Bfield_aux[x]"); - AllocInitMultiFab(Bfield_aux[lev][1], amrex::convert(ba, By_nodal_flag), dm, ncomps, ngEB, lev, "Bfield_aux[y]"); - AllocInitMultiFab(Bfield_aux[lev][2], amrex::convert(ba, Bz_nodal_flag), dm, ncomps, ngEB, lev, "Bfield_aux[z]"); + AllocInitMultiFab(Bfield_aux[lev][0], amrex::convert(ba, Bx_nodal_flag), dm, ncomps, ngEB, lev, "Bfield_aux[x]", 0.0_rt); + AllocInitMultiFab(Bfield_aux[lev][1], amrex::convert(ba, By_nodal_flag), dm, ncomps, ngEB, lev, "Bfield_aux[y]", 0.0_rt); + AllocInitMultiFab(Bfield_aux[lev][2], amrex::convert(ba, Bz_nodal_flag), dm, ncomps, ngEB, lev, "Bfield_aux[z]", 0.0_rt); + + AllocInitMultiFab(Efield_aux[lev][0], amrex::convert(ba, Ex_nodal_flag), dm, ncomps, ngEB, lev, "Efield_aux[x]", 0.0_rt); + AllocInitMultiFab(Efield_aux[lev][1], amrex::convert(ba, Ey_nodal_flag), dm, ncomps, ngEB, lev, "Efield_aux[y]", 0.0_rt); + AllocInitMultiFab(Efield_aux[lev][2], amrex::convert(ba, Ez_nodal_flag), dm, ncomps, ngEB, lev, "Efield_aux[z]", 0.0_rt); + } - AllocInitMultiFab(Efield_aux[lev][0], amrex::convert(ba, Ex_nodal_flag), dm, ncomps, ngEB, lev, "Efield_aux[x]"); - AllocInitMultiFab(Efield_aux[lev][1], amrex::convert(ba, Ey_nodal_flag), dm, ncomps, ngEB, lev, "Efield_aux[y]"); - AllocInitMultiFab(Efield_aux[lev][2], amrex::convert(ba, Ez_nodal_flag), dm, ncomps, ngEB, lev, "Efield_aux[z]"); + // The external fields that are read from file + if (m_p_ext_field_params->B_ext_grid_type == ExternalFieldType::read_from_file) { + // These fields will be added directly to the grid, i.e. to fp, and need to match the index type + AllocInitMultiFab(Bfield_fp_external[lev][0], amrex::convert(ba, Bfield_fp[lev][0]->ixType()), + dm, ncomps, ngEB, lev, "Bfield_fp_external[x]", 0.0_rt); + AllocInitMultiFab(Bfield_fp_external[lev][1], amrex::convert(ba, Bfield_fp[lev][1]->ixType()), + dm, ncomps, ngEB, lev, "Bfield_fp_external[y]", 0.0_rt); + AllocInitMultiFab(Bfield_fp_external[lev][2], amrex::convert(ba, Bfield_fp[lev][2]->ixType()), + dm, ncomps, ngEB, lev, "Bfield_fp_external[z]", 0.0_rt); + } + if (mypc->m_B_ext_particle_s == "read_from_file") { + // These fields will be added to the fields that the particles see, and need to match the index type + AllocInitMultiFab(B_external_particle_field[lev][0], amrex::convert(ba, Bfield_aux[lev][0]->ixType()), + dm, ncomps, ngEB, lev, "B_external_particle_field[x]", 0.0_rt); + AllocInitMultiFab(B_external_particle_field[lev][1], amrex::convert(ba, Bfield_aux[lev][1]->ixType()), + dm, ncomps, ngEB, lev, "B_external_particle_field[y]", 0.0_rt); + AllocInitMultiFab(B_external_particle_field[lev][2], amrex::convert(ba, Bfield_aux[lev][2]->ixType()), + dm, ncomps, ngEB, lev, "B_external_particle_field[z]", 0.0_rt); + } + if (m_p_ext_field_params->E_ext_grid_type == ExternalFieldType::read_from_file) { + // These fields will be added directly to the grid, i.e. to fp, and need to match the index type + AllocInitMultiFab(Efield_fp_external[lev][0], amrex::convert(ba, Efield_fp[lev][0]->ixType()), + dm, ncomps, ngEB, lev, "Efield_fp_external[x]", 0.0_rt); + AllocInitMultiFab(Efield_fp_external[lev][1], amrex::convert(ba, Efield_fp[lev][1]->ixType()), + dm, ncomps, ngEB, lev, "Efield_fp_external[y]", 0.0_rt); + AllocInitMultiFab(Efield_fp_external[lev][2], amrex::convert(ba, Efield_fp[lev][2]->ixType()), + dm, ncomps, ngEB, lev, "Efield_fp_external[z]", 0.0_rt); + } + if (mypc->m_E_ext_particle_s == "read_from_file") { + // These fields will be added to the fields that the particles see, and need to match the index type + AllocInitMultiFab(E_external_particle_field[lev][0], amrex::convert(ba, Efield_aux[lev][0]->ixType()), + dm, ncomps, ngEB, lev, "E_external_particle_field[x]", 0.0_rt); + AllocInitMultiFab(E_external_particle_field[lev][1], amrex::convert(ba, Efield_aux[lev][1]->ixType()), + dm, ncomps, ngEB, lev, "E_external_particle_field[y]", 0.0_rt); + AllocInitMultiFab(E_external_particle_field[lev][2], amrex::convert(ba, Efield_aux[lev][2]->ixType()), + dm, ncomps, ngEB, lev, "E_external_particle_field[z]", 0.0_rt); } // @@ -2688,22 +2736,22 @@ WarpX::AllocLevelMFs (int lev, const BoxArray& ba, const DistributionMapping& dm if (n_field_gather_buffer > 0 || mypc->nSpeciesGatherFromMainGrid() > 0) { if (aux_is_nodal) { BoxArray const& cnba = amrex::convert(cba,IntVect::TheNodeVector()); - AllocInitMultiFab(Bfield_cax[lev][0], cnba,dm,ncomps,ngEB,lev, "Bfield_cax[x]"); - AllocInitMultiFab(Bfield_cax[lev][1], cnba,dm,ncomps,ngEB,lev, "Bfield_cax[y]"); - AllocInitMultiFab(Bfield_cax[lev][2], cnba,dm,ncomps,ngEB,lev, "Bfield_cax[z]"); - AllocInitMultiFab(Efield_cax[lev][0], cnba,dm,ncomps,ngEB,lev, "Efield_cax[x]"); - AllocInitMultiFab(Efield_cax[lev][1], cnba,dm,ncomps,ngEB,lev, "Efield_cax[y]"); - AllocInitMultiFab(Efield_cax[lev][2], cnba,dm,ncomps,ngEB,lev, "Efield_cax[z]"); + AllocInitMultiFab(Bfield_cax[lev][0], cnba,dm,ncomps,ngEB,lev, "Bfield_cax[x]", 0.0_rt); + AllocInitMultiFab(Bfield_cax[lev][1], cnba,dm,ncomps,ngEB,lev, "Bfield_cax[y]", 0.0_rt); + AllocInitMultiFab(Bfield_cax[lev][2], cnba,dm,ncomps,ngEB,lev, "Bfield_cax[z]", 0.0_rt); + AllocInitMultiFab(Efield_cax[lev][0], cnba,dm,ncomps,ngEB,lev, "Efield_cax[x]", 0.0_rt); + AllocInitMultiFab(Efield_cax[lev][1], cnba,dm,ncomps,ngEB,lev, "Efield_cax[y]", 0.0_rt); + AllocInitMultiFab(Efield_cax[lev][2], cnba,dm,ncomps,ngEB,lev, "Efield_cax[z]", 0.0_rt); } else { // Create the MultiFabs for B - AllocInitMultiFab(Bfield_cax[lev][0], amrex::convert(cba,Bx_nodal_flag),dm,ncomps,ngEB,lev, "Bfield_cax[x]"); - AllocInitMultiFab(Bfield_cax[lev][1], amrex::convert(cba,By_nodal_flag),dm,ncomps,ngEB,lev, "Bfield_cax[y]"); - AllocInitMultiFab(Bfield_cax[lev][2], amrex::convert(cba,Bz_nodal_flag),dm,ncomps,ngEB,lev, "Bfield_cax[z]"); + AllocInitMultiFab(Bfield_cax[lev][0], amrex::convert(cba,Bx_nodal_flag),dm,ncomps,ngEB,lev, "Bfield_cax[x]", 0.0_rt); + AllocInitMultiFab(Bfield_cax[lev][1], amrex::convert(cba,By_nodal_flag),dm,ncomps,ngEB,lev, "Bfield_cax[y]", 0.0_rt); + AllocInitMultiFab(Bfield_cax[lev][2], amrex::convert(cba,Bz_nodal_flag),dm,ncomps,ngEB,lev, "Bfield_cax[z]", 0.0_rt); // Create the MultiFabs for E - AllocInitMultiFab(Efield_cax[lev][0], amrex::convert(cba,Ex_nodal_flag),dm,ncomps,ngEB,lev, "Efield_cax[x]"); - AllocInitMultiFab(Efield_cax[lev][1], amrex::convert(cba,Ey_nodal_flag),dm,ncomps,ngEB,lev, "Efield_cax[y]"); - AllocInitMultiFab(Efield_cax[lev][2], amrex::convert(cba,Ez_nodal_flag),dm,ncomps,ngEB,lev, "Efield_cax[z]"); + AllocInitMultiFab(Efield_cax[lev][0], amrex::convert(cba,Ex_nodal_flag),dm,ncomps,ngEB,lev, "Efield_cax[x]", 0.0_rt); + AllocInitMultiFab(Efield_cax[lev][1], amrex::convert(cba,Ey_nodal_flag),dm,ncomps,ngEB,lev, "Efield_cax[y]", 0.0_rt); + AllocInitMultiFab(Efield_cax[lev][2], amrex::convert(cba,Ez_nodal_flag),dm,ncomps,ngEB,lev, "Efield_cax[z]", 0.0_rt); } AllocInitMultiFab(gather_buffer_masks[lev], ba, dm, ncomps, amrex::IntVect(1), lev, "gather_buffer_masks"); diff --git a/Source/ablastr/fields/CMakeLists.txt b/Source/ablastr/fields/CMakeLists.txt index 158e623ebaf..56acc678217 100644 --- a/Source/ablastr/fields/CMakeLists.txt +++ b/Source/ablastr/fields/CMakeLists.txt @@ -1,6 +1,6 @@ foreach(D IN LISTS WarpX_DIMS) warpx_set_suffix_dims(SD ${D}) - if(WarpX_FFT AND D EQUAL 3) + if(ABLASTR_FFT AND D EQUAL 3) target_sources(ablastr_${SD} PRIVATE IntegratedGreenFunctionSolver.cpp diff --git a/Source/ablastr/fields/PoissonSolver.H b/Source/ablastr/fields/PoissonSolver.H index e5340e825c9..ca262981010 100644 --- a/Source/ablastr/fields/PoissonSolver.H +++ b/Source/ablastr/fields/PoissonSolver.H @@ -15,7 +15,7 @@ #include #include -#if defined(WARPX_USE_FFT) && defined(WARPX_DIM_3D) +#if defined(ABLASTR_USE_FFT) && defined(WARPX_DIM_3D) #include #endif @@ -160,9 +160,9 @@ computePhi (amrex::Vector const & rho, {{ beta[0], beta[1], beta[2] }}; #endif -#if !defined(WARPX_USE_FFT) +#if !defined(ABLASTR_USE_FFT) ABLASTR_ALWAYS_ASSERT_WITH_MESSAGE( !is_solver_igf_on_lev0, - "Must compile with -DWarpX_FFT=ON to use the FFT solver!"); + "Must compile with FFT support to use the IGF solver!"); #endif #if !defined(WARPX_DIM_3D) @@ -170,7 +170,7 @@ computePhi (amrex::Vector const & rho, "The FFT Poisson solver is currently only implemented for 3D!"); #endif -#if (defined(WARPX_USE_FFT) && defined(WARPX_DIM_3D)) +#if (defined(ABLASTR_USE_FFT) && defined(WARPX_DIM_3D)) // Use the Integrated Green Function solver (FFT) on the coarsest level if it was selected if(is_solver_igf_on_lev0 && lev==0){ amrex::Array const dx_igf @@ -315,7 +315,7 @@ computePhi (amrex::Vector const & rho, } // Run additional operations, such as calculation of the E field for embedded boundaries - if constexpr (!std::is_same::value) { + if constexpr (!std::is_same_v) { if (post_phi_calculation.has_value()) { post_phi_calculation.value()(mlmg, lev); } diff --git a/Source/ablastr/fields/VectorPoissonSolver.H b/Source/ablastr/fields/VectorPoissonSolver.H index d49335723d8..3ef96c30c84 100644 --- a/Source/ablastr/fields/VectorPoissonSolver.H +++ b/Source/ablastr/fields/VectorPoissonSolver.H @@ -241,7 +241,7 @@ computeVectorPotential ( amrex::Vector > co curr[lev][adim]->mult(-1._rt/ablastr::constant::SI::mu0); } // Loop over adim // Run additional operations, such as calculation of the B fields for embedded boundaries - if constexpr (!std::is_same::value) { + if constexpr (!std::is_same_v) { if (post_A_calculation.has_value()) { post_A_calculation.value()(mlmg, lev); } diff --git a/Source/ablastr/math/fft/CMakeLists.txt b/Source/ablastr/math/fft/CMakeLists.txt index 2b9fc3d37f9..913a912e1ee 100644 --- a/Source/ablastr/math/fft/CMakeLists.txt +++ b/Source/ablastr/math/fft/CMakeLists.txt @@ -1,6 +1,6 @@ foreach(D IN LISTS WarpX_DIMS) warpx_set_suffix_dims(SD ${D}) - if(WarpX_FFT STREQUAL ON) + if(ABLASTR_FFT STREQUAL ON) if(WarpX_COMPUTE STREQUAL CUDA) target_sources(ablastr_${SD} PRIVATE WrapCuFFT.cpp) elseif(WarpX_COMPUTE STREQUAL HIP) diff --git a/Tools/QedTablesUtils/Source/QedTableGenerator.cpp b/Tools/QedTablesUtils/Source/QedTableGenerator.cpp index dfbde1df050..1ea62b5c6ed 100644 --- a/Tools/QedTablesUtils/Source/QedTableGenerator.cpp +++ b/Tools/QedTablesUtils/Source/QedTableGenerator.cpp @@ -106,7 +106,7 @@ template void GenerateTableBW (const ParsedArgs& args, const string& outfile_name) { cout << " Generating BW table " << - (is_same::value ? "(double "s : "(single "s) << " precision)\n"s; + (is_same_v ? "(double "s : "(single "s) << " precision)\n"s; if (!Contains(args, "--dndt_chi_min") || !Contains(args, "--dndt_chi_max") || !Contains(args, "--dndt_how_many") || !Contains(args, "--pair_chi_min") || @@ -173,7 +173,7 @@ template void GenerateTableQS (const ParsedArgs& args, const string& outfile_name) { cout << " Generating QS table " << - (is_same::value ? "(double "s : "(single "s) << " precision)\n"s; + (is_same_v ? "(double "s : "(single "s) << " precision)\n"s; if (!Contains(args, "--dndt_chi_min") || !Contains(args, "--dndt_chi_max") || !Contains(args, "--dndt_how_many") || !Contains(args, "--em_chi_min") || diff --git a/Tools/QedTablesUtils/Source/QedTableReader.cpp b/Tools/QedTablesUtils/Source/QedTableReader.cpp index ae689a87643..ba9d58775f2 100644 --- a/Tools/QedTablesUtils/Source/QedTableReader.cpp +++ b/Tools/QedTablesUtils/Source/QedTableReader.cpp @@ -117,7 +117,7 @@ template void ReadTableBW (const string& input_file, const string& outfile_name) { cout << " Reading BW table " << - (is_same::value ? "(double "s : "(single "s) << " precision)\n"s; + (is_same_v ? "(double "s : "(single "s) << " precision)\n"s; auto ifs = ifstream(input_file, std::ios::binary); auto raw_data = vector(istreambuf_iterator(ifs), {}); @@ -161,7 +161,7 @@ void ReadTableQS ( const string& input_file, const string& outfile_name) { cout << " Reading QS table " << - (is_same::value ? "(double "s : "(single "s) << " precision)\n"s; + (is_same_v ? "(double "s : "(single "s) << " precision)\n"s; auto ifs = ifstream(input_file, std::ios::binary); auto raw_data = vector(istreambuf_iterator(ifs), {}); diff --git a/Tools/machines/karolina-it4i/install_dependencies.sh b/Tools/machines/karolina-it4i/install_dependencies.sh index 0435b5e2926..cba455f3d29 100755 --- a/Tools/machines/karolina-it4i/install_dependencies.sh +++ b/Tools/machines/karolina-it4i/install_dependencies.sh @@ -53,7 +53,7 @@ python -m pip install --user --upgrade matplotlib #python -m pip install --user --upgrade yt # install or update WarpX dependencies -python -m pip install --user --upgrade picmistandard==0.28.0 +python -m pip install --user --upgrade picmistandard==0.29.0 python -m pip install --user --upgrade lasy # optional: for optimas (based on libEnsemble & ax->botorch->gpytorch->pytorch) diff --git a/Tools/machines/lassen-llnl/install_v100_dependencies.sh b/Tools/machines/lassen-llnl/install_v100_dependencies.sh index 6368010ab7b..48668efcc2a 100755 --- a/Tools/machines/lassen-llnl/install_v100_dependencies.sh +++ b/Tools/machines/lassen-llnl/install_v100_dependencies.sh @@ -119,7 +119,7 @@ python3 -m pip install --upgrade build python3 -m pip install --upgrade packaging python3 -m pip install --upgrade wheel python3 -m pip install --upgrade setuptools -# Older version for h4py +# Older version for h5py # https://github.com/h5py/h5py/issues/2268 python3 -m pip install --upgrade "cython<3" python3 -m pip install --upgrade numpy diff --git a/Tools/machines/lassen-llnl/install_v100_dependencies_toss3.sh b/Tools/machines/lassen-llnl/install_v100_dependencies_toss3.sh index 916986ee119..a6d5aad32fb 100644 --- a/Tools/machines/lassen-llnl/install_v100_dependencies_toss3.sh +++ b/Tools/machines/lassen-llnl/install_v100_dependencies_toss3.sh @@ -82,13 +82,12 @@ if [ -d ${SRC_DIR}/blaspp ] then cd ${SRC_DIR}/blaspp git fetch --prune - git checkout master - git pull + git checkout v2024.05.31 cd - else - git clone https://github.com/icl-utk-edu/blaspp.git ${SRC_DIR}/blaspp + git clone -b v2024.05.31 https://github.com/icl-utk-edu/blaspp.git ${SRC_DIR}/blaspp fi -cmake -S ${SRC_DIR}/blaspp -B ${build_dir}/blaspp-lassen-build -Duse_openmp=ON -Dgpu_backend=cuda -Duse_cmake_find_blas=ON -DCMAKE_CXX_STANDARD=17 -DCMAKE_INSTALL_PREFIX=${SW_DIR}/blaspp-master +cmake -S ${SRC_DIR}/blaspp -B ${build_dir}/blaspp-lassen-build -Duse_openmp=ON -Dgpu_backend=cuda -Duse_cmake_find_blas=ON -DCMAKE_CXX_STANDARD=17 -DCMAKE_INSTALL_PREFIX=${SW_DIR}/blaspp-2024.05.31 cmake --build ${build_dir}/blaspp-lassen-build --target install --parallel 10 # LAPACK++ (for PSATD+RZ) @@ -96,13 +95,12 @@ if [ -d ${SRC_DIR}/lapackpp ] then cd ${SRC_DIR}/lapackpp git fetch --prune - git checkout master - git pull + git checkout v2024.05.31 cd - else - git clone https://github.com/icl-utk-edu/lapackpp.git ${SRC_DIR}/lapackpp + git clone -b v2024.05.31 https://github.com/icl-utk-edu/lapackpp.git ${SRC_DIR}/lapackpp fi -CXXFLAGS="-DLAPACK_FORTRAN_ADD_" cmake -S ${SRC_DIR}/lapackpp -B ${build_dir}/lapackpp-lassen-build -Duse_cmake_find_lapack=ON -DCMAKE_CXX_STANDARD=17 -Dbuild_tests=OFF -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON -DCMAKE_INSTALL_PREFIX=${SW_DIR}/lapackpp-master -DLAPACK_LIBRARIES=/usr/lib64/liblapack.so +CXXFLAGS="-DLAPACK_FORTRAN_ADD_" cmake -S ${SRC_DIR}/lapackpp -B ${build_dir}/lapackpp-lassen-build -Duse_cmake_find_lapack=ON -DCMAKE_CXX_STANDARD=17 -Dbuild_tests=OFF -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON -DCMAKE_INSTALL_PREFIX=${SW_DIR}/lapackpp-2024.05.31 -DLAPACK_LIBRARIES=/usr/lib64/liblapack.so cmake --build ${build_dir}/lapackpp-lassen-build --target install --parallel 10 @@ -121,7 +119,7 @@ python3 -m pip install --upgrade build python3 -m pip install --upgrade packaging python3 -m pip install --upgrade wheel python3 -m pip install --upgrade setuptools -# Older version for h4py +# Older version for h5py # https://github.com/h5py/h5py/issues/2268 python3 -m pip install --upgrade "cython<3" python3 -m pip install --upgrade numpy diff --git a/cmake/WarpXFunctions.cmake b/cmake/WarpXFunctions.cmake index c12cedca3b2..e05b4c3afc4 100644 --- a/cmake/WarpXFunctions.cmake +++ b/cmake/WarpXFunctions.cmake @@ -209,7 +209,7 @@ endmacro() # Enables interprocedural optimization for a list of targets # -function(enable_IPO all_targets_list) +function(warpx_enable_IPO all_targets_list) include(CheckIPOSupported) check_ipo_supported(RESULT is_IPO_available) if(is_IPO_available) diff --git a/cmake/dependencies/AMReX.cmake b/cmake/dependencies/AMReX.cmake index 632b9edd4f4..8acbd974779 100644 --- a/cmake/dependencies/AMReX.cmake +++ b/cmake/dependencies/AMReX.cmake @@ -250,7 +250,7 @@ macro(find_amrex) endif() set(COMPONENT_PRECISION ${WarpX_PRECISION} P${WarpX_PARTICLE_PRECISION}) - find_package(AMReX 24.06 CONFIG REQUIRED COMPONENTS ${COMPONENT_ASCENT} ${COMPONENT_DIMS} ${COMPONENT_EB} PARTICLES ${COMPONENT_PIC} ${COMPONENT_PRECISION} ${COMPONENT_SENSEI} LSOLVERS) + find_package(AMReX 24.07 CONFIG REQUIRED COMPONENTS ${COMPONENT_ASCENT} ${COMPONENT_DIMS} ${COMPONENT_EB} PARTICLES ${COMPONENT_PIC} ${COMPONENT_PRECISION} ${COMPONENT_SENSEI} LSOLVERS) # note: TINYP skipped because user-configured and optional # AMReX CMake helper scripts @@ -273,7 +273,7 @@ set(WarpX_amrex_src "" set(WarpX_amrex_repo "https://github.com/AMReX-Codes/amrex.git" CACHE STRING "Repository URI to pull and build AMReX from if(WarpX_amrex_internal)") -set(WarpX_amrex_branch "259db7cfb99e7d1d2ab4bec9b1587fdf624a138a" +set(WarpX_amrex_branch "dcb9cc0383dcc71e38dee9070574e325a812f8bf" CACHE STRING "Repository branch for WarpX_amrex_repo if(WarpX_amrex_internal)") diff --git a/cmake/dependencies/pyAMReX.cmake b/cmake/dependencies/pyAMReX.cmake index 90aee6cb930..a2fbd0ddee8 100644 --- a/cmake/dependencies/pyAMReX.cmake +++ b/cmake/dependencies/pyAMReX.cmake @@ -64,7 +64,7 @@ function(find_pyamrex) endif() elseif(NOT WarpX_pyamrex_internal) # TODO: MPI control - find_package(pyAMReX 24.06 CONFIG REQUIRED) + find_package(pyAMReX 24.07 CONFIG REQUIRED) message(STATUS "pyAMReX: Found version '${pyAMReX_VERSION}'") endif() endfunction() @@ -79,7 +79,7 @@ option(WarpX_pyamrex_internal "Download & build pyAMReX" ON) set(WarpX_pyamrex_repo "https://github.com/AMReX-Codes/pyamrex.git" CACHE STRING "Repository URI to pull and build pyamrex from if(WarpX_pyamrex_internal)") -set(WarpX_pyamrex_branch "fd7126cb907be7e3c8570930b79209db5cd7c492" +set(WarpX_pyamrex_branch "18f0026b1dd9b2aa4869c96f74e4b77262a067d0" CACHE STRING "Repository branch for WarpX_pyamrex_repo if(WarpX_pyamrex_internal)") diff --git a/requirements.txt b/requirements.txt index 60f14e1282d..bb0d8ebb704 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,7 +4,7 @@ periodictable~=1.5 # PICMI # note: don't forget to update the version in Docs/requirements.txt, too -picmistandard==0.28.0 +picmistandard==0.29.0 # for development against an unreleased PICMI version, use: #picmistandard @ git+https://github.com/picmi-standard/picmi.git#subdirectory=PICMI_Python diff --git a/run_test.sh b/run_test.sh index 6ac22466ef0..c01c3fb1176 100755 --- a/run_test.sh +++ b/run_test.sh @@ -68,7 +68,7 @@ python3 -m pip install --upgrade -r warpx/Regression/requirements.txt # Clone AMReX and warpx-data git clone https://github.com/AMReX-Codes/amrex.git -cd amrex && git checkout --detach 259db7cfb99e7d1d2ab4bec9b1587fdf624a138a && cd - +cd amrex && git checkout --detach dcb9cc0383dcc71e38dee9070574e325a812f8bf && cd - # warpx-data contains various required data sets git clone --depth 1 https://github.com/ECP-WarpX/warpx-data.git # openPMD-example-datasets contains various required data sets @@ -80,8 +80,6 @@ cd - # Clone the AMReX regression test utility git clone https://github.com/AMReX-Codes/regression_testing.git -# FIXME: https://github.com/AMReX-Codes/regression_testing/issues/136 -cd regression_testing && git checkout 93ddfb11456f47d6555c39388ba1a4ead61fbf4e && cd - # Prepare regression tests mkdir -p rt-WarpX/WarpX-benchmarks @@ -96,10 +94,10 @@ cd ../../regression_testing/ echo "cd $PWD" # run only tests specified in variable tests_arg (single test or multiple tests) if [[ ! -z "${tests_arg}" ]]; then - python3 regtest.py ../rt-WarpX/ci-tests.ini --no_update all "${tests_run}" + python3 regtest.py ../rt-WarpX/ci-tests.ini --skip_comparison --no_update all "${tests_run}" # run all tests (variables tests_arg and tests_run are empty) else - python3 regtest.py ../rt-WarpX/ci-tests.ini --no_update all + python3 regtest.py ../rt-WarpX/ci-tests.ini --skip_comparison --no_update all fi # clean up python virtual environment diff --git a/setup.py b/setup.py index 6ad6fd81960..f05d5a71899 100644 --- a/setup.py +++ b/setup.py @@ -280,7 +280,7 @@ def build_extension(self, ext): setup( name='pywarpx', # note PEP-440 syntax: x.y.zaN but x.y.z.devN - version = '24.06', + version = '24.07', packages = ['pywarpx'], package_dir = {'pywarpx': 'Python/pywarpx'}, author='Jean-Luc Vay, David P. Grote, Maxence Thévenet, Rémi Lehe, Andrew Myers, Weiqun Zhang, Axel Huebl, et al.',