Skip to content

Commit b6144ad

Browse files
authored
Fix restart for rigid injected particles (#2363)
* Activate rigid injected species in restart tests * Fix reading of injection position and velocity * Update checksum * Update Examples/Tests/restart/analysis_restart.py
1 parent 217f301 commit b6144ad

File tree

5 files changed

+106
-100
lines changed

5 files changed

+106
-100
lines changed

Examples/Tests/restart/inputs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ warpx.boost_direction = z
4545
#################################
4646
particles.species_names = driver plasma_e plasma_p beam driverback
4747
particles.use_fdtd_nci_corr = 1
48-
#particles.rigid_injected_species = driver beam
48+
particles.rigid_injected_species = driver beam
4949

5050
driver.charge = -q_e
5151
driver.mass = 1.e10
@@ -65,8 +65,8 @@ driver.uz_m = 200000.
6565
driver.ux_th = 2.
6666
driver.uy_th = 2.
6767
driver.uz_th = 20000.
68-
#driver.zinject_plane = 0.
69-
#driver.rigid_advance = true
68+
driver.zinject_plane = 0.
69+
driver.rigid_advance = true
7070

7171
driverback.charge = q_e
7272
driverback.mass = 1.e10
@@ -142,8 +142,8 @@ beam.uz_m = 2000.
142142
beam.ux_th = 2.
143143
beam.uy_th = 2.
144144
beam.uz_th = 200.
145-
#beam.zinject_plane = .8e-3
146-
#beam.rigid_advance = true
145+
beam.zinject_plane = .8e-3
146+
beam.rigid_advance = true
147147

148148
# Diagnostics
149149
diagnostics.diags_names = diag1 chk

Regression/Checksum/benchmarks_json/restart.json

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,23 @@
22
"beam": {
33
"particle_cpu": 0.0,
44
"particle_id": 1500500.0,
5-
"particle_momentum_x": 4.210792541741028e-19,
6-
"particle_momentum_y": 4.1138261183560033e-19,
7-
"particle_momentum_z": 2.723782366817271e-17,
8-
"particle_position_x": 0.0015091134632009644,
9-
"particle_position_y": 0.001484901544080785,
10-
"particle_position_z": 1.9017767912783692,
5+
"particle_momentum_x": 4.275414307401172e-19,
6+
"particle_momentum_y": 4.1735348940423594e-19,
7+
"particle_momentum_z": 2.7466540338095267e-17,
8+
"particle_position_x": 0.00038227754420858974,
9+
"particle_position_y": 0.0004008480406063961,
10+
"particle_position_z": 1.9017769844040129,
1111
"particle_weight": 3120754537.230381
1212
},
1313
"driver": {
1414
"particle_cpu": 0.0,
1515
"particle_id": 500500.0,
1616
"particle_momentum_x": 4.747251762692475e+21,
17-
"particle_momentum_y": 4.957368621566193e+21,
17+
"particle_momentum_y": 4.957368621566192e+21,
1818
"particle_momentum_z": 2.9967719884827463e+25,
19-
"particle_position_x": 0.0015297460887947526,
20-
"particle_position_y": 0.001602556980708184,
21-
"particle_position_z": 0.3061832080602548,
19+
"particle_position_x": 0.0015291127683050845,
20+
"particle_position_y": 0.001603376452180436,
21+
"particle_position_z": 0.30618320800027976,
2222
"particle_weight": 6241509074.460762
2323
},
2424
"driverback": {
@@ -33,35 +33,35 @@
3333
"particle_weight": 6241509074.460762
3434
},
3535
"lev=0": {
36-
"Bx": 98161.70008968459,
37-
"By": 98172.32439526827,
38-
"Bz": 31.901351990962468,
39-
"Ex": 14057086473507.713,
40-
"Ey": 14054746454266.889,
41-
"Ez": 33308979480924.473,
42-
"jx": 656449539734.6744,
43-
"jy": 646503950937.1055,
44-
"jz": 904276481605925.0
36+
"Bx": 98192.19947145433,
37+
"By": 98202.24044988544,
38+
"Bz": 32.176883437432316,
39+
"Ex": 14065714408245.07,
40+
"Ey": 14064073072398.174,
41+
"Ez": 33307954593489.707,
42+
"jx": 304667056543.9146,
43+
"jy": 180701392073.9691,
44+
"jz": 904275753595636.4
4545
},
4646
"plasma_e": {
4747
"particle_cpu": 4116.0,
4848
"particle_id": 22919946.0,
49-
"particle_momentum_x": 5.4081725205908615e-22,
50-
"particle_momentum_y": 5.385150045424111e-22,
51-
"particle_momentum_z": 1.1184395632328821e-17,
52-
"particle_position_x": 0.13505934672940284,
53-
"particle_position_y": 0.13505932414882538,
54-
"particle_position_z": 0.20362721013846616,
49+
"particle_momentum_x": 5.40817681171179e-22,
50+
"particle_momentum_y": 5.385133314763837e-22,
51+
"particle_momentum_z": 1.1184395632063724e-17,
52+
"particle_position_x": 0.1350593467304257,
53+
"particle_position_y": 0.1350593241232737,
54+
"particle_position_z": 0.20362721013846566,
5555
"particle_weight": 126912632943.3621
5656
},
5757
"plasma_p": {
5858
"particle_cpu": 4116.0,
5959
"particle_id": 25328394.0,
60-
"particle_momentum_x": 5.408306142946863e-22,
61-
"particle_momentum_y": 5.385291148559078e-22,
62-
"particle_momentum_z": 2.0535791481239935e-14,
63-
"particle_position_x": 0.13505624831336888,
64-
"particle_position_y": 0.13505624832566565,
60+
"particle_momentum_x": 5.408310433658191e-22,
61+
"particle_momentum_y": 5.385274435809097e-22,
62+
"particle_momentum_z": 2.0535791481240203e-14,
63+
"particle_position_x": 0.13505624831336835,
64+
"particle_position_y": 0.13505624832567958,
6565
"particle_position_z": 0.2036271949467523,
6666
"particle_weight": 126912632943.3621
6767
}

Regression/Checksum/benchmarks_json/restart_psatd.json

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,23 @@
22
"beam": {
33
"particle_cpu": 0.0,
44
"particle_id": 1500500.0,
5-
"particle_momentum_x": 4.2541507163023845e-19,
6-
"particle_momentum_y": 4.152774664953137e-19,
7-
"particle_momentum_z": 2.7285024671598035e-17,
8-
"particle_position_x": 0.001517617677859585,
9-
"particle_position_y": 0.0014929352020519265,
10-
"particle_position_z": 1.9017771002859827,
5+
"particle_momentum_x": 4.275414307401172e-19,
6+
"particle_momentum_y": 4.17353489404236e-19,
7+
"particle_momentum_z": 2.7466540338095267e-17,
8+
"particle_position_x": 0.00038227754420858974,
9+
"particle_position_y": 0.00040084804060639605,
10+
"particle_position_z": 1.9017769844040127,
1111
"particle_weight": 3120754537.230381
1212
},
1313
"driver": {
1414
"particle_cpu": 0.0,
1515
"particle_id": 500500.0,
16-
"particle_momentum_x": 4.747251762692475e+21,
16+
"particle_momentum_x": 4.747251762692473e+21,
1717
"particle_momentum_y": 4.957368621566193e+21,
1818
"particle_momentum_z": 2.9967719884827463e+25,
19-
"particle_position_x": 0.0015297460887947526,
20-
"particle_position_y": 0.0016025569807081841,
21-
"particle_position_z": 0.30618320806025484,
19+
"particle_position_x": 0.0015291127683050845,
20+
"particle_position_y": 0.001603376452180436,
21+
"particle_position_z": 0.30618320800027976,
2222
"particle_weight": 6241509074.460762
2323
},
2424
"driverback": {
@@ -33,35 +33,35 @@
3333
"particle_weight": 6241509074.460762
3434
},
3535
"lev=0": {
36-
"Bx": 97777.04044826895,
37-
"By": 97787.26556234213,
38-
"Bz": 31.59916720107527,
39-
"Ex": 12868507499248.19,
40-
"Ey": 12867303176821.19,
41-
"Ez": 32449258298200.113,
42-
"jx": 634704212071.4764,
43-
"jy": 611625734809.7017,
44-
"jz": 904274042090495.5
36+
"Bx": 97806.19840108546,
37+
"By": 97815.85756771098,
38+
"Bz": 31.732427701722912,
39+
"Ex": 12877754924119.082,
40+
"Ey": 12876901684280.229,
41+
"Ez": 32448463177834.543,
42+
"jx": 307666015585.9687,
43+
"jy": 182363554739.9786,
44+
"jz": 904274413323325.2
4545
},
4646
"plasma_e": {
4747
"particle_cpu": 4116.0,
4848
"particle_id": 22919946.0,
49-
"particle_momentum_x": 5.685882296125418e-22,
50-
"particle_momentum_y": 5.662977916983953e-22,
51-
"particle_momentum_z": 1.1184398018268609e-17,
52-
"particle_position_x": 0.13505924338837194,
53-
"particle_position_y": 0.13505922196934064,
54-
"particle_position_z": 0.2036272092198746,
49+
"particle_momentum_x": 5.685881126709523e-22,
50+
"particle_momentum_y": 5.6629711844429285e-22,
51+
"particle_momentum_z": 1.1184398018026139e-17,
52+
"particle_position_x": 0.1350592433885383,
53+
"particle_position_y": 0.1350592219411637,
54+
"particle_position_z": 0.20362720921987482,
5555
"particle_weight": 126912632943.36244
5656
},
5757
"plasma_p": {
5858
"particle_cpu": 4116.0,
5959
"particle_id": 25328394.0,
60-
"particle_momentum_x": 5.686073146345258e-22,
61-
"particle_momentum_y": 5.663176459735941e-22,
62-
"particle_momentum_z": 2.0535791478847752e-14,
63-
"particle_position_x": 0.1350562483696602,
64-
"particle_position_y": 0.1350562483813245,
60+
"particle_momentum_x": 5.686071969908394e-22,
61+
"particle_momentum_y": 5.663169754132697e-22,
62+
"particle_momentum_z": 2.0535791478848e-14,
63+
"particle_position_x": 0.13505624836966013,
64+
"particle_position_y": 0.13505624838133984,
6565
"particle_position_z": 0.20362719494726383,
6666
"particle_weight": 126912632943.36244
6767
}

Regression/Checksum/benchmarks_json/restart_psatd_time_avg.json

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,23 @@
22
"beam": {
33
"particle_cpu": 0.0,
44
"particle_id": 1500500.0,
5-
"particle_momentum_x": 4.254691979750989e-19,
6-
"particle_momentum_y": 4.1535435963437147e-19,
7-
"particle_momentum_z": 2.728767021901075e-17,
8-
"particle_position_x": 0.001517680460798969,
9-
"particle_position_y": 0.001493038909816312,
10-
"particle_position_z": 1.9017771013093303,
5+
"particle_momentum_x": 4.275414307401172e-19,
6+
"particle_momentum_y": 4.17353489404236e-19,
7+
"particle_momentum_z": 2.7466540338095267e-17,
8+
"particle_position_x": 0.00038227754420858974,
9+
"particle_position_y": 0.00040084804060639605,
10+
"particle_position_z": 1.9017769844040127,
1111
"particle_weight": 3120754537.230381
1212
},
1313
"driver": {
1414
"particle_cpu": 0.0,
1515
"particle_id": 500500.0,
16-
"particle_momentum_x": 4.747251762692475e+21,
16+
"particle_momentum_x": 4.747251762692473e+21,
1717
"particle_momentum_y": 4.957368621566193e+21,
1818
"particle_momentum_z": 2.9967719884827463e+25,
19-
"particle_position_x": 0.0015297460887947526,
20-
"particle_position_y": 0.0016025569807081841,
21-
"particle_position_z": 0.30618320806025484,
19+
"particle_position_x": 0.0015291127683050845,
20+
"particle_position_y": 0.001603376452180436,
21+
"particle_position_z": 0.30618320800027976,
2222
"particle_weight": 6241509074.460762
2323
},
2424
"driverback": {
@@ -33,35 +33,35 @@
3333
"particle_weight": 6241509074.460762
3434
},
3535
"lev=0": {
36-
"Bx": 97770.61191599404,
37-
"By": 97780.70810712027,
38-
"Bz": 31.008136828149073,
39-
"Ex": 12838801235406.88,
40-
"Ey": 12837507519031.262,
41-
"Ez": 32438660943782.914,
42-
"jx": 635272636369.7802,
43-
"jy": 612269127739.1005,
44-
"jz": 904274462562314.8
36+
"Bx": 97799.68920761721,
37+
"By": 97809.22760976445,
38+
"Bz": 31.138421896287632,
39+
"Ex": 12848024095028.355,
40+
"Ey": 12847124613971.557,
41+
"Ez": 32437971780449.27,
42+
"jx": 308194378521.1045,
43+
"jy": 182890492089.67697,
44+
"jz": 904274843199463.8
4545
},
4646
"plasma_e": {
4747
"particle_cpu": 4116.0,
4848
"particle_id": 22919946.0,
49-
"particle_momentum_x": 5.744114065909579e-22,
50-
"particle_momentum_y": 5.721131408219794e-22,
51-
"particle_momentum_z": 1.1184397774427398e-17,
52-
"particle_position_x": 0.1350592713852672,
53-
"particle_position_y": 0.13505925001090735,
54-
"particle_position_z": 0.20362720922167768,
49+
"particle_momentum_x": 5.744112487812186e-22,
50+
"particle_momentum_y": 5.721125891605127e-22,
51+
"particle_momentum_z": 1.1184397774190402e-17,
52+
"particle_position_x": 0.13505927138536114,
53+
"particle_position_y": 0.13505924998293056,
54+
"particle_position_z": 0.20362720922167785,
5555
"particle_weight": 126912632943.36244
5656
},
5757
"plasma_p": {
5858
"particle_cpu": 4116.0,
5959
"particle_id": 25328394.0,
60-
"particle_momentum_x": 5.7443089782205155e-22,
61-
"particle_momentum_y": 5.721334024352466e-22,
62-
"particle_momentum_z": 2.0535791479091608e-14,
63-
"particle_position_x": 0.1350562483544117,
64-
"particle_position_y": 0.13505624836605168,
60+
"particle_momentum_x": 5.744307393038055e-22,
61+
"particle_momentum_y": 5.721328534468911e-22,
62+
"particle_momentum_z": 2.0535791479091845e-14,
63+
"particle_position_x": 0.13505624835441166,
64+
"particle_position_y": 0.13505624836606694,
6565
"particle_position_z": 0.20362719494726217,
6666
"particle_weight": 126912632943.36244
6767
}

Source/Diagnostics/ParticleIO.cpp

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,10 @@ using namespace amrex;
4141
void
4242
RigidInjectedParticleContainer::ReadHeader (std::istream& is)
4343
{
44-
is >> charge >> mass;
45-
WarpX::GotoNextLine(is);
44+
// Call parent class
45+
WarpXParticleContainer::ReadHeader( is );
4646

47+
// Read quantities that are specific to rigid-injected species
4748
int nlevs;
4849
is >> nlevs;
4950
WarpX::GotoNextLine(is);
@@ -52,24 +53,29 @@ RigidInjectedParticleContainer::ReadHeader (std::istream& is)
5253

5354
for (int i = 0; i < nlevs; ++i)
5455
{
55-
int zinject_plane_tmp;
56+
amrex::Real zinject_plane_tmp;
5657
is >> zinject_plane_tmp;
5758
zinject_plane_levels.push_back(zinject_plane_tmp);
5859
WarpX::GotoNextLine(is);
5960
}
61+
is >> vzbeam_ave_boosted;
62+
WarpX::GotoNextLine(is);
6063
}
6164

6265
void
6366
RigidInjectedParticleContainer::WriteHeader (std::ostream& os) const
6467
{
65-
// no need to write species_id
66-
os << charge << " " << mass << "\n";
68+
// Call parent class
69+
WarpXParticleContainer::WriteHeader( os );
70+
71+
// Write quantities that are specific to the rigid-injected species
6772
int nlevs = zinject_plane_levels.size();
6873
os << nlevs << "\n";
6974
for (int i = 0; i < nlevs; ++i)
7075
{
7176
os << zinject_plane_levels[i] << "\n";
7277
}
78+
os << vzbeam_ave_boosted << "\n";
7379
}
7480

7581
void

0 commit comments

Comments
 (0)