Skip to content

Commit

Permalink
More efficient PML BoxArray (#2631)
Browse files Browse the repository at this point in the history
* More efficient PML BoxArray

If the union of the grids is a single rectangular domain, we can simplify
the process and generate more efficient PML BoxArray.

* Update Source/BoundaryConditions/PML.cpp

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

* Apply suggestions from code review

* reset Python_wrappers benchmark

* fix the computation of sigmas for the new BoxArray

* Revert "reset Python_wrappers benchmark"

This reverts commit 2999304.

* fix warning

* fix 1d

* initialize to quiet NaN

* Reset Benchmark: pml_x_psatd

- maximum relative error: 2.50e-06
- new implementation: 10 PML grids
- old implementation: 24 PML grids

* Reset Benchmark: LaserAccelerationMR

- maximum relative error: 2.73e-04
- new implementation: (18,8,8) PML grids
- old implementation: (48,18,18) PML grids

* Reset Benchmark: LaserOnFine

- maximum relative error: 6.44e-05
- new implementation: (2,6,6) PML grids
- old implementation: (2,12,12) PML grids

* Reset Benchmark: PlasmaAccelerationMR

- maximum relative error: 6.84e-04
- new implementation: (10,6,6) PML grids
- old implementation: (24,12,12) PML grids

* Reset Benchmark: RefinedInjection

- maximum relative error: 2.55e-04
- new implementation: (18,8,8) PML grids
- old implementation: (48,18,18) PML grids

* Reset Benchmark: momentum-conserving-gather

- maximum relative error: 7.43e-04
- new implementation: (10,6,6) PML grids
- old implementation: (24,12,12) PML grids

* Reset Benchmark: subcyclingMR

- maximum relative error: 2.41e-05
- new implementation: (6,6,6) PML grids
- old implementation: (12,12,12) PML grids

* Reset Benchmark: Langmuir_multi_2d_MR

- maximum relative error: 1.32e-01 (B numerical artifact)
- new implementation: (0,20,20) PML grids
- old implementation: (0,52,40) PML grids

* Reset Benchmark: Langmuir_multi_2d_MR_psatd

- maximum relative error: 1.05e-01 (B numerical artifact)
- new implementation: (0,20,20) PML grids
- old implementation: (0,52,40) PML grids

* Reset Benchmark: Python_LaserAccelerationMR

- maximum relative error: 2.73e-04
- new implementation: (18,8,8) PML grids
- old implementation: (48,18,18) PML grids

* Reset Benchmark: Python_wrappers

- maximum relative error: 1.07e-08
- new implementation: 8 PML grids
- old implementation: 16 PML grids

* Reset Benchmark: pml_psatd_dive_divb_cleaning

- maximum relative error: 4.91e-03
- new implementation: 24 PML grids
- old implementation: 98 PML grids

* Remove an assertion.  We will fix it later

* Reset Benchmark: Langmuir_multi_2d_MR_anisotropic

- maximum relative error: 1.07e-01 (B numerical artifact)
- new implementation: (0,16,16) PML grids
- old implementation: (0,40,34) PML grids

* Reset Benchmark: PEC_field_mr

- maximum relative error: 3.98e-02
- new implementation: (0,2,2) PML grids
- old implementation: (0,2,2) PML grids
  (different number of ghost cells on coarse PML patch)

Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
Co-authored-by: Edoardo Zoni <ezoni@lbl.gov>
  • Loading branch information
3 people authored Jan 11, 2022
1 parent 61e5cff commit daa5154
Show file tree
Hide file tree
Showing 17 changed files with 364 additions and 232 deletions.
16 changes: 8 additions & 8 deletions Examples/Tests/PythonWrappers/PICMI_inputs_2d.py
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,7 @@ def check_values(benchmark, data, rtol, atol):

# E
check_values(1013263608.6369569, Ex[:,:], rtol, atol)
check_values(717278253.4505507 , Ey[:,:], rtol, atol)
check_values(717278256.7957529 , Ey[:,:], rtol, atol)
check_values(717866566.5718911 , Ez[:,:], rtol, atol)
# B
check_values(3.0214509313437636, Bx[:,:], rtol, atol)
Expand All @@ -267,22 +267,22 @@ def check_values(benchmark, data, rtol, atol):
check_values(1013672631.8764204, G[:,:], rtol, atol)
# E in PML
check_values(364287936.1526477 , Expml[:,:,0], rtol, atol)
check_values(183582351.3212558 , Expml[:,:,1], rtol, atol)
check_values(183582352.20753333, Expml[:,:,1], rtol, atol)
check_values(190065766.41491824, Expml[:,:,2], rtol, atol)
check_values(440581905.9336025 , Eypml[:,:,0], rtol, atol)
check_values(178117293.6629357 , Eypml[:,:,1], rtol, atol)
check_values(440581907.0828975 , Eypml[:,:,0], rtol, atol)
check_values(178117294.05871135, Eypml[:,:,1], rtol, atol)
check_values(0.0 , Eypml[:,:,2], rtol, atol)
check_values(430277101.26568377, Ezpml[:,:,0], rtol, atol)
check_values(0.0 , Ezpml[:,:,1], rtol, atol)
check_values(190919663.2167449 , Ezpml[:,:,2], rtol, atol)
# B in PML
check_values(1.0565189315366146 , Bxpml[:,:,0], rtol, atol)
check_values(0.4618191395098556 , Bxpml[:,:,1], rtol, atol)
check_values(0.6849858273929585 , Bxpml[:,:,2], rtol, atol)
check_values(0.46181913800643065, Bxpml[:,:,1], rtol, atol)
check_values(0.6849858305343736 , Bxpml[:,:,2], rtol, atol)
check_values(1.7228584190213505 , Bypml[:,:,0], rtol, atol)
check_values(0.47697331996765685, Bypml[:,:,1], rtol, atol)
check_values(0.47697332248020935, Bypml[:,:,1], rtol, atol)
check_values(0.0 , Bypml[:,:,2], rtol, atol)
check_values(1.5183380774611628 , Bzpml[:,:,0], rtol, atol)
check_values(1.518338068658267 , Bzpml[:,:,0], rtol, atol)
check_values(0.0 , Bzpml[:,:,1], rtol, atol)
check_values(0.6849858291863835 , Bzpml[:,:,2], rtol, atol)
# F and G in PML
Expand Down
36 changes: 18 additions & 18 deletions Regression/Checksum/benchmarks_json/Langmuir_multi_2d_MR.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,43 +2,43 @@
"electrons": {
"particle_cpu": 32768.0,
"particle_id": 1123057664.0,
"particle_momentum_x": 4.241495334522421e-20,
"particle_momentum_x": 4.245553180462133e-20,
"particle_momentum_y": 0.0,
"particle_momentum_z": 4.241495334522413e-20,
"particle_position_x": 0.6553605577217855,
"particle_position_y": 0.6553605577217853,
"particle_momentum_z": 4.245553180462118e-20,
"particle_position_x": 0.6553607116882387,
"particle_position_y": 0.6553607116882386,
"particle_weight": 3200000000000000.5
},
"lev=0": {
"Bx": 0.0,
"By": 32.88376813880145,
"By": 35.447497788711175,
"Bz": 0.0,
"Ex": 7572926260078.977,
"Ex": 7569456532381.726,
"Ey": 0.0,
"Ez": 7572926260078.995,
"jx": 7298077411371068.0,
"Ez": 7569456532381.752,
"jx": 7305055873426885.0,
"jy": 0.0,
"jz": 7298077411371252.0
"jz": 7305055873426942.0
},
"lev=1": {
"Bx": 0.0,
"By": 565.8504447463731,
"By": 640.5385076158955,
"Bz": 0.0,
"Ex": 7546287967911.542,
"Ex": 7591603030109.285,
"Ey": 0.0,
"Ez": 7546287967911.541,
"jx": 7199765368042636.0,
"Ez": 7591603030109.295,
"jx": 7225962509586529.0,
"jy": 0.0,
"jz": 7199765368042662.0
"jz": 7225962509586578.0
},
"positrons": {
"particle_cpu": 32768.0,
"particle_id": 3371204608.0,
"particle_momentum_x": 4.2413987484133116e-20,
"particle_momentum_x": 4.2453138721853093e-20,
"particle_momentum_y": 0.0,
"particle_momentum_z": 4.241398748413304e-20,
"particle_position_x": 0.6553600696643818,
"particle_position_y": 0.6553600696643818,
"particle_momentum_z": 4.245313872185295e-20,
"particle_position_x": 0.6553599057578553,
"particle_position_y": 0.6553599057578553,
"particle_weight": 3200000000000000.5
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,43 +2,43 @@
"electrons": {
"particle_cpu": 32768.0,
"particle_id": 1123057664.0,
"particle_momentum_x": 4.2409233886523047e-20,
"particle_momentum_x": 4.2441494210115385e-20,
"particle_momentum_y": 0.0,
"particle_momentum_z": 4.239636641708783e-20,
"particle_position_x": 0.6553604498033957,
"particle_position_y": 0.6553602617123965,
"particle_momentum_z": 4.2429971697106366e-20,
"particle_position_x": 0.6553605498557016,
"particle_position_y": 0.655360420612517,
"particle_weight": 3200000000000000.5
},
"lev=0": {
"Bx": 0.0,
"By": 29.033843714475076,
"By": 32.13899895667297,
"Bz": 0.0,
"Ex": 7575734617759.523,
"Ex": 7573285869190.605,
"Ey": 0.0,
"Ez": 7575399948801.469,
"jx": 7296519320465208.0,
"Ez": 7572536902181.709,
"jx": 7302040020242814.0,
"jy": 0.0,
"jz": 7297090426947096.0
"jz": 7302892615117250.0
},
"lev=1": {
"Bx": 0.0,
"By": 71.46369739075365,
"By": 74.04987113513879,
"Bz": 0.0,
"Ex": 4602033610493.496,
"Ex": 4601660582425.954,
"Ey": 0.0,
"Ez": 7017735833493.598,
"jx": 4492590664379721.0,
"Ez": 7012131128423.561,
"jx": 4495212217937750.0,
"jy": 0.0,
"jz": 6825856952745953.0
"jz": 6848672875762947.0
},
"positrons": {
"particle_cpu": 32768.0,
"particle_id": 3371204608.0,
"particle_momentum_x": 4.240515207391037e-20,
"particle_momentum_x": 4.2436090244998326e-20,
"particle_momentum_y": 0.0,
"particle_momentum_z": 4.2396984750798293e-20,
"particle_position_x": 0.6553601899702647,
"particle_position_y": 0.6553597467035968,
"particle_momentum_z": 4.2430343380944015e-20,
"particle_position_x": 0.6553600813503462,
"particle_position_y": 0.6553595861949815,
"particle_weight": 3200000000000000.5
}
}
36 changes: 18 additions & 18 deletions Regression/Checksum/benchmarks_json/Langmuir_multi_2d_MR_psatd.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,43 +2,43 @@
"electrons": {
"particle_cpu": 32768.0,
"particle_id": 1123057664.0,
"particle_momentum_x": 4.2362974799075715e-20,
"particle_momentum_x": 4.237978127636407e-20,
"particle_momentum_y": 0.0,
"particle_momentum_z": 4.2362974818601834e-20,
"particle_position_x": 0.6553603056279188,
"particle_position_y": 0.6553603056279399,
"particle_momentum_z": 4.2379781109485186e-20,
"particle_position_x": 0.655360346626376,
"particle_position_y": 0.655360346625584,
"particle_weight": 3200000000000000.5
},
"lev=0": {
"Bx": 0.0,
"By": 49.400846503194956,
"By": 49.13289051610905,
"Bz": 0.0,
"Ex": 7590421951518.164,
"Ex": 7589572073848.546,
"Ey": 0.0,
"Ez": 7590421950277.463,
"jx": 7279591576517866.0,
"Ez": 7589572085733.721,
"jx": 7282449902618536.0,
"jy": 0.0,
"jz": 7279591579334755.0
"jz": 7282449869844108.0
},
"lev=1": {
"Bx": 0.0,
"By": 564.3980303336011,
"By": 623.630930990979,
"Bz": 0.0,
"Ex": 7563548313704.213,
"Ex": 7590754010944.117,
"Ey": 0.0,
"Ez": 7563548287845.812,
"jx": 6584893500547710.0,
"Ez": 7590753791450.942,
"jx": 6596452748155826.0,
"jy": 0.0,
"jz": 6584893531174318.0
"jz": 6596452562357128.0
},
"positrons": {
"particle_cpu": 32768.0,
"particle_id": 3371204608.0,
"particle_momentum_x": 4.236433706251501e-20,
"particle_momentum_x": 4.2381117997129824e-20,
"particle_momentum_y": 0.0,
"particle_momentum_z": 4.23643370757891e-20,
"particle_position_x": 0.6553599973488732,
"particle_position_y": 0.6553599973488947,
"particle_momentum_z": 4.23811177887596e-20,
"particle_position_x": 0.6553599570597749,
"particle_position_y": 0.6553599570604656,
"particle_weight": 3200000000000000.5
}
}
8 changes: 4 additions & 4 deletions Regression/Checksum/benchmarks_json/LaserAccelerationMR.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,14 @@
},
"lev=1": {
"Bx": 53303280.78531405,
"By": 213761.8564937196,
"By": 213820.3084522391,
"Bz": 1321618.978929098,
"Ex": 47856565901964.84,
"Ex": 47846019388623.05,
"Ey": 1.455101409934242e+16,
"Ez": 65304559419893.03,
"Ez": 65304502775874.59,
"jx": 46169274324016.0,
"jy": 9.274837523569297e+18,
"jz": 1.926277235505425e+16,
"rho": 67304284.98422323
}
}
}
8 changes: 4 additions & 4 deletions Regression/Checksum/benchmarks_json/LaserOnFine.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,15 @@
},
"lev=1": {
"Bx": 0.0,
"By": 1234346.3811825265,
"By": 1234425.838348821,
"Bz": 0.0,
"Ex": 369321181489775.1,
"Ex": 369306119506292.0,
"Ey": 0.0,
"Ez": 17591468778544.74,
"Ez": 17592228452124.82,
"divB": 0.0,
"jx": 2.4549619817062897e+18,
"jy": 0.0,
"jz": 0.0,
"part_per_cell": 102.0
}
}
}
6 changes: 3 additions & 3 deletions Regression/Checksum/benchmarks_json/PEC_field_mr.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"Ey": 1052208601.7204809
},
"lev=1": {
"Bx": 0.36174107941906025,
"Ey": 94466060.63059175
"Bx": 0.3714838555919295,
"Ey": 98224588.87142882
}
}
}
14 changes: 7 additions & 7 deletions Regression/Checksum/benchmarks_json/PlasmaAccelerationMR.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,12 @@
"jz": 4235811839330752.0
},
"lev=1": {
"Bx": 4.147877077278406,
"By": 142707.7156173306,
"Bz": 2.536603360961009,
"Ex": 49284312088805.66,
"Ey": 1421188611.560146,
"Ez": 52701506458469.23,
"Bx": 4.150715838073591,
"By": 142753.1342940014,
"Bz": 2.536506757005651,
"Ex": 49292890789333.12,
"Ey": 1422005008.958596,
"Ez": 52701928262289.76,
"jx": 3029834005553842.0,
"jy": 92336633890.84117,
"jz": 4286789664067064.0
Expand All @@ -51,4 +51,4 @@
"particle_position_y": 0.1035059304082606,
"particle_weight": 823974609374999.9
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,14 @@
},
"lev=1": {
"Bx": 53303280.78531405,
"By": 213761.8564937196,
"By": 213820.3084522391,
"Bz": 1321618.978929098,
"Ex": 47856565901964.84,
"Ex": 47846019388623.05,
"Ey": 1.455101409934242e+16,
"Ez": 65304559419893.03,
"Ez": 65304502775874.59,
"jx": 46169274324016.0,
"jy": 9.274837523569297e+18,
"jz": 1.926277235505425e+16,
"rho": 67304284.98422323
}
}
}
10 changes: 5 additions & 5 deletions Regression/Checksum/benchmarks_json/Python_wrappers.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
"lev=0": {
"Bx": 1.3641435093370002,
"By": 2.064187020248739,
"Bz": 1.3641435106886308,
"Ex": 424983256.20110655,
"Ey": 159848272.83698195,
"Ez": 321466524.9277822
"Bz": 1.364143507950999,
"Ex": 424983254.6320197,
"Ey": 159848274.5435922,
"Ez": 321466522.8953871
}
}
}
8 changes: 4 additions & 4 deletions Regression/Checksum/benchmarks_json/RefinedInjection.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,14 @@
},
"lev=1": {
"Bx": 53303352.85256407,
"By": 229340.2527555132,
"By": 229398.7047140327,
"Bz": 1321676.328125808,
"Ex": 52873151117961.77,
"Ex": 52862604604619.98,
"Ey": 1.455090881912273e+16,
"Ez": 67855870768719.61,
"Ez": 67855814124701.18,
"jx": 121460903131204.2,
"jy": 9.274942706868505e+18,
"jz": 1.927066428524446e+16,
"rho": 76242140.83674599
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,12 @@
"jz": 4304296344908232.0
},
"lev=1": {
"Bx": 4.06321359891687,
"By": 137867.46535533897,
"Bz": 2.398740968267233,
"Ex": 44258985973031.625,
"Ey": 1433041921.7273414,
"Ez": 51834767989855.24,
"Bx": 4.066233386167275,
"By": 137914.0920350435,
"Bz": 2.398664210322969,
"Ex": 44268789869454.29,
"Ey": 1433858315.947112,
"Ez": 51835208819539.50,
"jx": 2880554704671068.0,
"jy": 93913414121.91959,
"jz": 4418516923648772.0
Expand All @@ -51,4 +51,4 @@
"particle_position_y": 0.1035024179589788,
"particle_weight": 823974609375002.8
}
}
}
Loading

0 comments on commit daa5154

Please sign in to comment.