Skip to content

Commit 9e92b49

Browse files
committed
store progeny energy in SourceSite E_last
1 parent fd47401 commit 9e92b49

File tree

8 files changed

+20
-13
lines changed

8 files changed

+20
-13
lines changed

include/openmc/particle_data.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ struct SourceSite {
4444
Position r;
4545
Direction u;
4646
double E;
47+
double E_last;
4748
double time {0.0};
4849
double wgt {1.0};
4950
int delayed_group {0};

openmc/lib/core.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ class _SourceSite(Structure):
2222
_fields_ = [('r', c_double*3),
2323
('u', c_double*3),
2424
('E', c_double),
25+
('E_last', c_double),
2526
('time', c_double),
2627
('wgt', c_double),
2728
('delayed_group', c_int),

src/initialize.cpp

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -157,26 +157,27 @@ void initialize_mpi(MPI_Comm intracomm)
157157

158158
// Create bank datatype
159159
SourceSite b;
160-
MPI_Aint disp[11];
160+
MPI_Aint disp[12];
161161
MPI_Get_address(&b.r, &disp[0]);
162162
MPI_Get_address(&b.u, &disp[1]);
163163
MPI_Get_address(&b.E, &disp[2]);
164-
MPI_Get_address(&b.time, &disp[3]);
165-
MPI_Get_address(&b.wgt, &disp[4]);
166-
MPI_Get_address(&b.delayed_group, &disp[5]);
167-
MPI_Get_address(&b.surf_id, &disp[6]);
168-
MPI_Get_address(&b.particle, &disp[7]);
169-
MPI_Get_address(&b.parent_nuclide, &disp[8]);
170-
MPI_Get_address(&b.parent_id, &disp[9]);
171-
MPI_Get_address(&b.progeny_id, &disp[10]);
172-
for (int i = 10; i >= 0; --i) {
164+
MPI_Get_address(&b.E_last, &disp[3]);
165+
MPI_Get_address(&b.time, &disp[4]);
166+
MPI_Get_address(&b.wgt, &disp[5]);
167+
MPI_Get_address(&b.delayed_group, &disp[6]);
168+
MPI_Get_address(&b.surf_id, &disp[7]);
169+
MPI_Get_address(&b.particle, &disp[8]);
170+
MPI_Get_address(&b.parent_nuclide, &disp[9]);
171+
MPI_Get_address(&b.parent_id, &disp[10]);
172+
MPI_Get_address(&b.progeny_id, &disp[11]);
173+
for (int i = 11; i >= 0; --i) {
173174
disp[i] -= disp[0];
174175
}
175176

176-
int blocks[] {3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1};
177+
int blocks[] {3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
177178
MPI_Datatype types[] {MPI_DOUBLE, MPI_DOUBLE, MPI_DOUBLE, MPI_DOUBLE,
178179
MPI_DOUBLE, MPI_INT, MPI_INT, MPI_INT, MPI_INT, MPI_LONG, MPI_LONG};
179-
MPI_Type_create_struct(11, blocks, disp, types, &mpi::source_site);
180+
MPI_Type_create_struct(12, blocks, disp, types, &mpi::source_site);
180181
MPI_Type_commit(&mpi::source_site);
181182
}
182183
#endif // OPENMC_MPI

src/mesh.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,7 @@ void Mesh::material_volumes(int nx, int ny, int nz, int table_size,
321321

322322
SourceSite site;
323323
site.E = 1.0;
324+
site.E_last = 1.0;
324325
site.particle = ParticleType::neutron;
325326

326327
for (int axis = 0; axis < 3; ++axis) {

src/particle.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ void Particle::from_source(const SourceSite* src, ParticleType particle)
132132
r_last_current() = src->r;
133133
r_last() = src->r;
134134
u_last() = src->u;
135+
E_last() = src->E_last();
135136
if (settings::run_CE) {
136137
E() = src->E;
137138
g() = 0;
@@ -140,7 +141,6 @@ void Particle::from_source(const SourceSite* src, ParticleType particle)
140141
g_last() = static_cast<int>(src->E);
141142
E() = data::mg.energy_bin_avg_[g()];
142143
}
143-
E_last() = E();
144144
type_last() = particle;
145145
time() = src->time;
146146
time_last() = src->time;

src/physics.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,7 @@ void create_fission_sites(Particle& p, int i_nuclide, const Reaction& rx)
209209
site.r = p.r();
210210
site.particle = ParticleType::neutron;
211211
site.time = p.time();
212+
site.E_last = p.E();
212213
site.wgt = 1. / weight;
213214
site.parent_id = p.id();
214215
site.progeny_id = p.n_progeny()++;

src/physics_mg.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ void create_fission_sites(Particle& p)
138138
site.r = p.r();
139139
site.particle = ParticleType::neutron;
140140
site.time = p.time();
141+
site.E_last = p.E();
141142
site.wgt = 1. / weight;
142143
site.parent_id = p.id();
143144
site.progeny_id = p.n_progeny()++;

src/random_ray/random_ray.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -796,6 +796,7 @@ void RandomRay::initialize_ray(uint64_t ray_id, FlatSourceDomain* domain)
796796
}
797797

798798
site.E = 0.0;
799+
site.E_last = 0.0;
799800
this->from_source(&site, site.particle);
800801

801802
// Locate ray

0 commit comments

Comments
 (0)