From a1980cf989c94354e2194d9b6d832c83093c7ff0 Mon Sep 17 00:00:00 2001 From: Remi Lehe Date: Wed, 3 Jul 2024 23:03:07 +0200 Subject: [PATCH] Update default behavior for gathering with direct deposition (#5024) * Update default behavior for gathering with direct deposition * Modify condition under which to use galerkin interpolation * Update condition * Update benchmarks --------- Co-authored-by: Edoardo Zoni --- Docs/source/usage/parameters.rst | 2 +- .../Langmuir_multi_2d_MR_psatd.json | 44 +++++------ .../Langmuir_multi_2d_psatd.json | 28 +++---- .../Langmuir_multi_2d_psatd_multiJ.json | 32 ++++---- .../Langmuir_multi_psatd_div_cleaning.json | 46 ++++++------ .../Langmuir_multi_psatd_multiJ.json | 42 +++++------ .../benchmarks_json/Python_Langmuir.json | 16 ++-- .../benchmarks_json/Python_Langmuir_2d.json | 14 ++-- .../benchmarks_json/Python_gaussian_beam.json | 48 ++++++------ .../benchmarks_json/restart_psatd.json | 74 +++++++++---------- .../restart_psatd_time_avg.json | 66 ++++++++--------- Source/WarpX.cpp | 12 ++- 12 files changed, 216 insertions(+), 208 deletions(-) diff --git a/Docs/source/usage/parameters.rst b/Docs/source/usage/parameters.rst index afa570cca02..4dc888df3d0 100644 --- a/Docs/source/usage/parameters.rst +++ b/Docs/source/usage/parameters.rst @@ -2446,7 +2446,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/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/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_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/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/Source/WarpX.cpp b/Source/WarpX.cpp index d1f9eb16f47..5e3380cc1a6 100644 --- a/Source/WarpX.cpp +++ b/Source/WarpX.cpp @@ -1284,8 +1284,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");