Skip to content

Commit

Permalink
shuffling the full list of particles for intra-species binary collisi…
Browse files Browse the repository at this point in the history
…ons (ECP-WarpX#5045)

* shuffling the full list of particles for intra-species binary collisions

* fixing merge issue with collision json files.

* moved checksum to before error assert for intraspecies DD fusion regression test analysis script.

* updating benchmark values for DD_fusion_3D_intraspecies.

* adding fixed random seed to DD_3D_intraspecies fusion regression test.

* putting checksum back after assert.

* adjusting json.

* updating json.
  • Loading branch information
JustinRayAngus authored Jul 12, 2024
1 parent 63bedff commit dc087bf
Show file tree
Hide file tree
Showing 6 changed files with 51 additions and 49 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
Original file line number Diff line number Diff line change
@@ -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
}
}
}
12 changes: 6 additions & 6 deletions Regression/Checksum/benchmarks_json/collisionISO.json
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
}
30 changes: 15 additions & 15 deletions Regression/Checksum/benchmarks_json/collisionXYZ.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,25 +6,25 @@
"Ex": 0.0,
"Ey": 0.0,
"Ez": 0.0,
"T_electron": 353384.4616461907,
"T_ion": 348277.2774202612
"T_electron": 353604.6247926339,
"T_ion": 347976.6168136309
},
"electron": {
"particle_momentum_x": 8.378820415249081e-19,
"particle_momentum_y": 8.238482720534644e-19,
"particle_momentum_z": 8.189221038447925e-19,
"particle_position_x": 21268719.554914076,
"particle_position_y": 21282437.437205918,
"particle_position_z": 21231947.47401523,
"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.013855005436386e-18,
"particle_momentum_y": 1.8231305152698165e-18,
"particle_momentum_z": 1.8194149390229157e-18,
"particle_position_x": 21217737.157987915,
"particle_position_y": 21263096.30516862,
"particle_position_z": 21261343.069983635,
"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
}
}
}
4 changes: 1 addition & 3 deletions Source/Particles/Collision/BinaryCollision/BinaryCollision.H
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
);

Expand Down

0 comments on commit dc087bf

Please sign in to comment.