Skip to content

Commit 035e6dc

Browse files
committed
change to instance from pointer and cleanup lazy mistakes
1 parent 60c3f2a commit 035e6dc

4 files changed

Lines changed: 22 additions & 14 deletions

File tree

‎include/openmc/distribution.h‎

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,15 @@ UPtrDist distribution_from_xml(pugi::xml_node node);
3737

3838
class DiscreteIndex {
3939
public:
40-
explicit Discrete(pugi::xml_node node);
41-
Discrete(const double* p, int n);
40+
explicit DiscreteIndex(pugi::xml_node node);
41+
DiscreteIndex(const double* p, int n);
42+
43+
void assign(const double* p, int n);
4244

4345
//! Sample a value from the distribution
4446
//! \param seed Pseudorandom number seed pointer
4547
//! \return Sampled value
46-
size_t sample(uint64_t* seed) const override;
48+
size_t sample(uint64_t* seed) const;
4749

4850
// Properties
4951
const vector<double>& prob() const { return prob_; }
@@ -81,9 +83,9 @@ class Discrete : public Distribution {
8183
const vector<size_t>& alias() const { return di_->alias(); }
8284

8385
private:
84-
vector<double> x_; //!< Possible outcomes
85-
unique_ptr<DiscreteIndex> di_; //!< discrete probability distribution of
86-
//!< outcome indices
86+
vector<double> x_; //!< Possible outcomes
87+
DiscreteIndex di_; //!< discrete probability distribution of
88+
//!< outcome indices
8789
};
8890

8991
//==============================================================================

‎include/openmc/distribution_spatial.h‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,8 @@ class MeshSpatial : public SpatialDistribution {
114114

115115
private:
116116
int32_t mesh_idx_ {C_NONE};
117-
unique_ptr<DiscreteIndex> elem_idx_dist_; //!< Distribution of
118-
//!< mesh element indices
117+
DiscreteIndex elem_idx_dist_; //!< Distribution of
118+
//!< mesh element indices
119119
};
120120

121121
//==============================================================================

‎src/distribution.cpp‎

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,9 @@ namespace openmc {
2525
DiscreteIndex::DiscreteIndex(pugi::xml_node node)
2626
{
2727
auto params = get_node_array<double>(node, "parameters");
28+
std::size_t n = params.size() / 2;
2829

29-
prob_.assign(params.begin(), params.end());
30+
prob_.assign(params.begin() + n, params.end());
3031

3132
this->init_alias();
3233
}
@@ -38,6 +39,13 @@ DiscreteIndex::DiscreteIndex(const double* p, int n)
3839
this->init_alias();
3940
}
4041

42+
void DiscreteIndex::assign(const double* p, int n)
43+
{
44+
prob_.assign(p, p + n);
45+
46+
this->init_alias();
47+
}
48+
4149
void DiscreteIndex::init_alias()
4250
{
4351
normalize();
@@ -111,21 +119,19 @@ void DiscreteIndex::normalize()
111119
// Discrete implementation
112120
//==============================================================================
113121

114-
Discrete::Discrete(pugi::xml_node node)
122+
Discrete::Discrete(pugi::xml_node node) : di_(node)
115123
{
116124
auto params = get_node_array<double>(node, "parameters");
117125

118126
std::size_t n = params.size() / 2;
119127

120128
x_.assign(params.begin(), params.begin() + n);
121-
di_ = new DiscreteIndex(params.begin() + n, n)
122129
}
123130

124-
Discrete::Discrete(const double* x, const double* p, int n)
131+
Discrete::Discrete(const double* x, const double* p, int n) : di_(p, n)
125132
{
126133

127134
x_.assign(x, x + n);
128-
di_ = new DiscreteIndex(params.begin() + n, n)
129135
}
130136

131137
double Discrete::sample(uint64_t* seed) const

‎src/distribution_spatial.cpp‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ MeshSpatial::MeshSpatial(pugi::xml_node node)
231231
}
232232
}
233233

234-
elem_idx_dist_ = make_unique<DiscreteIndex>(strengths.data(), n_bins);
234+
elem_idx_dist_.assign(strengths.data(), n_bins);
235235
}
236236

237237
Position MeshSpatial::sample(uint64_t* seed) const

0 commit comments

Comments
 (0)