Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
567b0c9
region profiling of EB MLMG
ajnonaka Nov 14, 2024
1b7e5cf
parameterize inputs for scaling_factor
ajnonaka Nov 14, 2024
ada15ed
max_grid_size_x and _z
ajnonaka Nov 14, 2024
a5f9d34
comment
ajnonaka Nov 14, 2024
e4d6150
scripts, inputs
ajnonaka Nov 14, 2024
256794b
whitespace
ajnonaka Nov 14, 2024
d662dc4
timers
ajnonaka Nov 14, 2024
34d3c7d
Merge branch 'development' into plasma_chamber
ajnonaka Nov 25, 2024
a67835e
Merge branch 'development' into plasma_chamber
ajnonaka Dec 2, 2024
82033f0
inputs
ajnonaka Dec 4, 2024
1063c56
move scripts
ajnonaka Dec 4, 2024
064b472
scripts
ajnonaka Dec 4, 2024
ee2207c
switch to 512^2 grids, and 8 8 ppc
ajnonaka Dec 5, 2024
ad78875
add sin to eb phi function so it converges
ajnonaka Dec 5, 2024
d34862d
demonstration for how to modify MLMG parameters
ajnonaka Dec 6, 2024
f35fa90
more MLMG options
ajnonaka Dec 6, 2024
e3dbd86
lpinfo settings
ajnonaka Dec 6, 2024
d7c5b60
settings
ajnonaka Dec 6, 2024
74181ae
2 gpu test2 gpu test
ajnonaka Dec 6, 2024
37b95a7
initial scaling setup
ajnonaka Dec 9, 2024
b83ae31
scaling setup
ajnonaka Dec 9, 2024
b6cdf20
scaling
ajnonaka Dec 9, 2024
259d42b
fix gpu binding
ajnonaka Dec 9, 2024
634818a
updated scaling tests
ajnonaka Dec 9, 2024
ac88955
cpu
ajnonaka Dec 9, 2024
d2e8410
timers
ajnonaka Dec 10, 2024
31bfcda
MLLinop settings
ajnonaka Dec 11, 2024
449f375
Merge branch 'development' into plasma_chamber
ajnonaka Dec 11, 2024
3ee14e8
Merge branch 'plasma_chamber' of github.com:ajnonaka/WarpX into plasm…
ajnonaka Dec 11, 2024
7f07527
remove old stuff
ajnonaka Dec 11, 2024
76645c4
mp111_g
ajnonaka Dec 11, 2024
b2bdfaa
Merge branch 'plasma_chamber' of github.com:ajnonaka/WarpX into plasm…
ajnonaka Dec 11, 2024
ae8cb99
point to global warpx-data
ajnonaka Dec 11, 2024
3572c13
Merge branch 'development' into plasma_chamber
ajnonaka Dec 16, 2024
1ec8d89
attempt at GMRES
ajnonaka Dec 16, 2024
6f94e1c
attempt at getting gradient of phi
ajnonaka Dec 17, 2024
98584df
gmres fluxes for E calc
ajnonaka Dec 17, 2024
cc9d724
multiply grad(phi) = E fluxes by -1 for the gmres case
ajnonaka Dec 17, 2024
e8a328b
debugging
ajnonaka Dec 17, 2024
13f797e
Merge branch 'development' into plasma_chamber
ajnonaka Dec 20, 2024
5a3eee6
postSolve to zero out EB phi
ajnonaka Dec 20, 2024
da42dc1
256 cpu cases
ajnonaka Dec 20, 2024
f204eb2
linop changes for compilation
ajnonaka Jan 8, 2025
a2bd231
Merge branch 'development' into plasma_chamber
ajnonaka Jan 31, 2025
c7110b8
full scaling tests
ajnonaka Feb 1, 2025
a9ec752
Merge branch 'development' into plasma_chamber
ajnonaka Mar 12, 2025
d4658b7
update postSolve for GMRES for new AMReX interface
ajnonaka Mar 12, 2025
dc50b07
Merge branch 'development' into plasma_chamber
ajnonaka Apr 11, 2025
6a3e33a
need to include WarpX.H in order to use WarpX::GetInstance
ajnonaka Apr 11, 2025
623f0e7
move poisson solve to 1 grid
ajnonaka Apr 11, 2025
12172c0
Merge branch 'development' into plasma_chamber
ajnonaka Apr 15, 2025
bc8bb5e
Merge branch 'plasma_chamber' into plasma_chamber_poissontest
ajnonaka Apr 15, 2025
e3a5bd0
fix potential linop_distributed issues
ajnonaka Apr 16, 2025
8df679a
debugging
ajnonaka Apr 16, 2025
bbfa37f
fix compGrad by caling prepareForSolve()
ajnonaka Apr 21, 2025
61f0448
call compGrad on single GPU and copy resulting E field to distributed E
ajnonaka May 8, 2025
d24715a
Merge branch 'development' into plasma_chamber
ajnonaka May 27, 2025
8fda24c
Merge branch 'plasma_chamber' into plasma_chamber_poissontest
ajnonaka May 27, 2025
bb3384d
Merge branch 'development' into plasma_chamber
ajnonaka Jun 9, 2025
eb800a6
Merge branch 'plasma_chamber' into plasma_chamber_poissontest
ajnonaka Jun 9, 2025
037f7b8
cleanup
ajnonaka Jun 9, 2025
df5f2f6
attempt at combined branches
ajnonaka Jun 10, 2025
91857e6
I think this is working
ajnonaka Jun 10, 2025
3109651
tidy
ajnonaka Jun 10, 2025
f25fb5b
compute grad(phi) distributed - WIP the time-dependent input appears …
ajnonaka Jun 24, 2025
c17fb92
fixed distributed grad(phi)
ajnonaka Jun 24, 2025
15683ae
generalized consolidation/agglomeration pre-solve
ajnonaka Jun 27, 2025
b765490
test inputs file for poisson solver grid reduction
ajnonaka Jul 7, 2025
05761ef
add fillboundary to phi_reduced before parallel copy
ajnonaka Jul 7, 2025
3619c89
fix max_guard
ajnonaka Jul 16, 2025
8c4a182
print out number of boxes on reduced Poisson solve
ajnonaka Jul 30, 2025
1e887ed
Merge branch 'development' into plasma_chamber
ajnonaka Aug 8, 2025
1823992
Merge branch 'development' into plasma_chamber_ultimate
ajnonaka Aug 8, 2025
b702d9a
Merge branch 'development' into plasma_chamber
ajnonaka Aug 11, 2025
6802f24
Merge branch 'development' into plasma_chamber_ultimate
ajnonaka Aug 11, 2025
d584d00
get compiling again
ajnonaka Aug 11, 2025
90e45a0
Merge branch 'development' into plasma_chamber_ultimate
ajnonaka Aug 26, 2025
98d64e0
first crack at 3d setup
ajnonaka Sep 4, 2025
f41df2e
Merge branch 'development' into plasma_chamber_ultimate
ajnonaka Sep 9, 2025
85cc70d
whitespace
ajnonaka Sep 9, 2025
680684d
Merge branch 'development' of https://github.com/ECP-WarpX/WarpX into…
ajnonaka Oct 30, 2025
cc21854
Merge branch 'development' into plasma_chamber
ajnonaka Oct 30, 2025
9e6005b
formatting
ajnonaka Oct 30, 2025
82ca0b3
formatting only
ajnonaka Oct 30, 2025
65d9d22
Merge branch 'development' into plasma_chamber_ultimate
ajnonaka Nov 4, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions Source/FieldSolver/WarpXSolveFieldsES.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
void WarpX::ComputeSpaceChargeField (bool const reset_fields)
{
WARPX_PROFILE("WarpX::ComputeSpaceChargeField");
WARPX_PROFILE_REGION("WarpX::ComputeSpaceChargeField()");

using ablastr::fields::Direction;
using warpx::fields::FieldType;

Expand Down
442 changes: 329 additions & 113 deletions Source/ablastr/fields/PoissonSolver.H

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# please set your project account
export proj="" # change me! GPU projects must end in "..._g"
export proj="mp111_g" # change me! GPU projects must end in "..._g"

# remembers the location of this script
export MY_PROFILE=$(cd $(dirname $BASH_SOURCE) && pwd)"/"$(basename $BASH_SOURCE)
Expand Down
130 changes: 130 additions & 0 deletions run_plasma/CPU/inputs.2d_1024cpu
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
amrex.use_gpu_aware_mpi = 1

mlmg.setPreSmooth = 2
mlmg.setPostSmooth = 2

mlmg.setFinalSmooth = 8
mlmg.setBottomSmooth = 0

mlmg.bottomSolver = 0
mlmg.setBottomTolerance = 1.e-4

lpinfo.setMaxCoarseningLevel = 30

# Argon
# We want to simulate Figs. 4 (b), 5 (a) and (b), and 7 (a) in Rauf et al. 2020.

my_constants.Ngas = 3.22e20 # 100 mTorr # (m^-3)
my_constants.Tgas = 300. # (K)
my_constants.Te = 23212. # (K) see Chen et al. 2024
my_constants.Nplasma = 5.e16 # (m^-3) see Chen et al. 2024
my_constants.freq = 13.56e6 # (Hz)
my_constants.Mion = 6.63e-26 # (kg)
my_constants.voltage = 100. # (V)
my_constants.clight = 3.e8 # speed of light in vacuum
my_constants.m_e = 9.11e-31 # (kg)
my_constants.kb = 1.38e-23 # (J/K)

# amr.restart = ./diags/chk01450000
max_step = 100 # 2000000 # 5000 RF cycles
warpx.verbose = 1
warpx.const_dt = 1.0/(400*freq)
warpx.do_electrostatic = labframe
warpx.self_fields_required_precision = 1.e-7 #
warpx.use_filter = 0
warpx.sort_intervals = -1

amr.n_cell = 4096 2048
amr.max_grid_size_x = 128
amr.max_grid_size_y = 64
amr.blocking_factor = 8
amr.max_level = 0

geometry.dims = 2
geometry.prob_lo = -0.1035 -0.0527 # x z # cover complete chamber (do not exploit symmetry)
geometry.prob_hi = 0.1035 0.0527
boundary.field_lo = pec pec
boundary.field_hi = pec pec
boundary.potential_hi_x = 0.
boundary.potential_lo_z = 0.
boundary.potential_lo_x = 0.
boundary.potential_hi_z = 0.
boundary.particle_lo = reflecting reflecting
boundary.particle_hi = reflecting reflecting

# Order of particle shape factors
algo.particle_shape = 1

# EB
my_constants.te_xmax = 0.0488
my_constants.dx_thick = 0.0032 # dielectric thickness
my_constants.be_xmax = 0.052
my_constants.zhi = 0.0128
my_constants.zlo = -0.0128
warpx.eb_implicit_function = "min(max((zlo-z),(z-zhi)),-max((x+(-be_xmax)),-(x+be_xmax)))" # "if( ((z>zhi) or (z<zlo)) and (x<be_xmax) and (x>-be_xmax) , 1,-1 )" # ??
warpx.eb_potential(x,y,z,t) = " sin(2*pi*freq*t)*(voltage*(z>zhi)*(x<te_xmax)*(x>-te_xmax) + voltage*(z>zhi)*(x>te_xmax)*(x<be_xmax)*(be_xmax-x)/dx_thick + voltage*(z>zhi)*(x<-te_xmax)*(x>-be_xmax)*(x+be_xmax)/dx_thick + 0.*(z<zlo)*(x<be_xmax)*(x>-be_xmax)) "

particles.species_names = electrons ar_ions

electrons.species_type = electron
electrons.injection_style = nuniformpercell
electrons.initialize_self_fields = 0
electrons.num_particles_per_cell_each_dim = 8 8
electrons.profile = constant
electrons.density = Nplasma
electrons.momentum_distribution_type = maxwell_boltzmann
electrons.theta = (kb*Te/(m_e*clight^2))

ar_ions.species_type = argon
ar_ions.charge = q_e
ar_ions.injection_style = nuniformpercell
ar_ions.initialize_self_fields = 0
ar_ions.num_particles_per_cell_each_dim = 8 8
ar_ions.profile = constant
ar_ions.density = Nplasma
ar_ions.momentum_distribution_type = maxwell_boltzmann
ar_ions.theta = (kb*Tgas/(Mion*clight^2))
ar_ions.save_particles_at_eb = 1

#collisions.collision_names = coll_elec coll_ion
coll_ion.type = background_mcc
coll_ion.species = ar_ions
coll_ion.background_density = Ngas
coll_ion.background_temperature = Tgas
coll_ion.scattering_processes = elastic back charge_exchange
coll_ion.elastic_cross_section = /global/cfs/cdirs/mp111/warpx-data/MCC_cross_sections/Ar/ion_scattering.dat
coll_ion.back_cross_section = /global/cfs/cdirs/mp111/warpx-data/MCC_cross_sections/Ar/ion_back_scatter.dat
coll_ion.charge_exchange_cross_section = /global/cfs/cdirs/mp111/warpx-data/MCC_cross_sections/Ar/charge_exchange.dat

coll_elec.type = background_mcc
coll_elec.species = electrons
coll_elec.background_density = Ngas
coll_elec.background_temperature = Tgas
coll_elec.scattering_processes = elastic excitation1 ionization
coll_elec.elastic_cross_section = /global/cfs/cdirs/mp111/warpx-data/MCC_cross_sections/Ar/electron_scattering.dat
coll_elec.excitation1_energy = 11.5
coll_elec.excitation1_cross_section = /global/cfs/cdirs/mp111/warpx-data/MCC_cross_sections/Ar/excitation_1.dat
coll_elec.ionization_energy = 15.7596112
coll_elec.ionization_cross_section = /global/cfs/cdirs/mp111/warpx-data/MCC_cross_sections/Ar/ionization.dat
coll_elec.ionization_species = ar_ions

#diagnostics.diags_names = plt chk #plt_eb
#plt.diag_type = Full
#plt.intervals = 1
#plt.fields_to_plot = phi
#plt.file_min_digits = 8

#plt_eb.diag_type = BoundaryScraping
#plt_eb.format = openpmd
#plt_eb.fields_to_plot = phi
#plt_eb.particle_field_species = ar_ions
#plt_eb.intervals = 190000:200000:1000

#chk.diag_type = Full
#chk.format = checkpoint
#chk.intervals = 1000
#chk.file_min_digits = 8

#warpx.reduced_diags_names = partnum
#partnum.type = ParticleNumber
#partnum.intervals = 1
130 changes: 130 additions & 0 deletions run_plasma/CPU/inputs.2d_16384cpu
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
amrex.use_gpu_aware_mpi = 1

mlmg.setPreSmooth = 2
mlmg.setPostSmooth = 2

mlmg.setFinalSmooth = 8
mlmg.setBottomSmooth = 0

mlmg.bottomSolver = 0
mlmg.setBottomTolerance = 1.e-4

lpinfo.setMaxCoarseningLevel = 30

# Argon
# We want to simulate Figs. 4 (b), 5 (a) and (b), and 7 (a) in Rauf et al. 2020.

my_constants.Ngas = 3.22e20 # 100 mTorr # (m^-3)
my_constants.Tgas = 300. # (K)
my_constants.Te = 23212. # (K) see Chen et al. 2024
my_constants.Nplasma = 5.e16 # (m^-3) see Chen et al. 2024
my_constants.freq = 13.56e6 # (Hz)
my_constants.Mion = 6.63e-26 # (kg)
my_constants.voltage = 100. # (V)
my_constants.clight = 3.e8 # speed of light in vacuum
my_constants.m_e = 9.11e-31 # (kg)
my_constants.kb = 1.38e-23 # (J/K)

# amr.restart = ./diags/chk01450000
max_step = 100 # 2000000 # 5000 RF cycles
warpx.verbose = 1
warpx.const_dt = 1.0/(400*freq)
warpx.do_electrostatic = labframe
warpx.self_fields_required_precision = 1.e-7 #
warpx.use_filter = 0
warpx.sort_intervals = -1

amr.n_cell = 16384 8192
amr.max_grid_size_x = 128
amr.max_grid_size_y = 64
amr.blocking_factor = 8
amr.max_level = 0

geometry.dims = 2
geometry.prob_lo = -0.1035 -0.0527 # x z # cover complete chamber (do not exploit symmetry)
geometry.prob_hi = 0.1035 0.0527
boundary.field_lo = pec pec
boundary.field_hi = pec pec
boundary.potential_hi_x = 0.
boundary.potential_lo_z = 0.
boundary.potential_lo_x = 0.
boundary.potential_hi_z = 0.
boundary.particle_lo = reflecting reflecting
boundary.particle_hi = reflecting reflecting

# Order of particle shape factors
algo.particle_shape = 1

# EB
my_constants.te_xmax = 0.0488
my_constants.dx_thick = 0.0032 # dielectric thickness
my_constants.be_xmax = 0.052
my_constants.zhi = 0.0128
my_constants.zlo = -0.0128
warpx.eb_implicit_function = "min(max((zlo-z),(z-zhi)),-max((x+(-be_xmax)),-(x+be_xmax)))" # "if( ((z>zhi) or (z<zlo)) and (x<be_xmax) and (x>-be_xmax) , 1,-1 )" # ??
warpx.eb_potential(x,y,z,t) = " sin(2*pi*freq*t)*(voltage*(z>zhi)*(x<te_xmax)*(x>-te_xmax) + voltage*(z>zhi)*(x>te_xmax)*(x<be_xmax)*(be_xmax-x)/dx_thick + voltage*(z>zhi)*(x<-te_xmax)*(x>-be_xmax)*(x+be_xmax)/dx_thick + 0.*(z<zlo)*(x<be_xmax)*(x>-be_xmax)) "

particles.species_names = electrons ar_ions

electrons.species_type = electron
electrons.injection_style = nuniformpercell
electrons.initialize_self_fields = 0
electrons.num_particles_per_cell_each_dim = 8 8
electrons.profile = constant
electrons.density = Nplasma
electrons.momentum_distribution_type = maxwell_boltzmann
electrons.theta = (kb*Te/(m_e*clight^2))

ar_ions.species_type = argon
ar_ions.charge = q_e
ar_ions.injection_style = nuniformpercell
ar_ions.initialize_self_fields = 0
ar_ions.num_particles_per_cell_each_dim = 8 8
ar_ions.profile = constant
ar_ions.density = Nplasma
ar_ions.momentum_distribution_type = maxwell_boltzmann
ar_ions.theta = (kb*Tgas/(Mion*clight^2))
ar_ions.save_particles_at_eb = 1

#collisions.collision_names = coll_elec coll_ion
coll_ion.type = background_mcc
coll_ion.species = ar_ions
coll_ion.background_density = Ngas
coll_ion.background_temperature = Tgas
coll_ion.scattering_processes = elastic back charge_exchange
coll_ion.elastic_cross_section = /global/cfs/cdirs/mp111/warpx-data/MCC_cross_sections/Ar/ion_scattering.dat
coll_ion.back_cross_section = /global/cfs/cdirs/mp111/warpx-data/MCC_cross_sections/Ar/ion_back_scatter.dat
coll_ion.charge_exchange_cross_section = /global/cfs/cdirs/mp111/warpx-data/MCC_cross_sections/Ar/charge_exchange.dat

coll_elec.type = background_mcc
coll_elec.species = electrons
coll_elec.background_density = Ngas
coll_elec.background_temperature = Tgas
coll_elec.scattering_processes = elastic excitation1 ionization
coll_elec.elastic_cross_section = /global/cfs/cdirs/mp111/warpx-data/MCC_cross_sections/Ar/electron_scattering.dat
coll_elec.excitation1_energy = 11.5
coll_elec.excitation1_cross_section = /global/cfs/cdirs/mp111/warpx-data/MCC_cross_sections/Ar/excitation_1.dat
coll_elec.ionization_energy = 15.7596112
coll_elec.ionization_cross_section = /global/cfs/cdirs/mp111/warpx-data/MCC_cross_sections/Ar/ionization.dat
coll_elec.ionization_species = ar_ions

#diagnostics.diags_names = plt chk #plt_eb
#plt.diag_type = Full
#plt.intervals = 1
#plt.fields_to_plot = phi
#plt.file_min_digits = 8

#plt_eb.diag_type = BoundaryScraping
#plt_eb.format = openpmd
#plt_eb.fields_to_plot = phi
#plt_eb.particle_field_species = ar_ions
#plt_eb.intervals = 190000:200000:1000

#chk.diag_type = Full
#chk.format = checkpoint
#chk.intervals = 1000
#chk.file_min_digits = 8

#warpx.reduced_diags_names = partnum
#partnum.type = ParticleNumber
#partnum.intervals = 1
Loading
Loading