5 #ifndef MERCURYDPM_PSDCONTINUOUS_H
6 #define MERCURYDPM_PSDCONTINUOUS_H
46 static void print (std::vector<PSDContinuous>& psd);
68 static void interpolateCSD (std::vector<PSDContinuous>& psd,
unsigned n);
77 static std::vector<PSDContinuous>
cutoffCumulativeNumber (std::vector<PSDContinuous> psd,
double quantileMin,
double quantileMax,
double minPolydispersity = 0.1) {
81 double radiusMinCut =
std::min(radiusMin*(1+minPolydispersity),radiusMax);
85 while (psd.front().radius<=radiusMinCut) psd.erase(psd.begin());
86 psd.insert(psd.begin(),
PSDContinuous{radiusMinCut,quantileMin});
89 while (psd.back().radius>=radiusMax) psd.pop_back();
98 static std::vector<PSDContinuous>
cutoffAndSqueezeCumulativeNumber (std::vector<PSDContinuous> psd,
double quantileMin,
double quantileMax,
double squeeze,
double minPolydispersity = 0.1) {
105 for (
auto&
p : psd) {
106 p.radius = r50+(
p.radius-r50)*squeeze;
125 static double getD0 (
const std::vector<PSDContinuous>& psd){
129 static double getD10 (
const std::vector<PSDContinuous>& psd){
133 static double getD50 (
const std::vector<PSDContinuous>& psd){
137 static double getD90 (
const std::vector<PSDContinuous>& psd){
141 static double getD100 (
const std::vector<PSDContinuous>& psd){
147 static double getQuantile(std::vector<PSDContinuous> psd,
double quantile);
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
const PSD convertPSD2ToPSD(const std::vector< PSDContinuous > &psd2)
Definition: PSDContinuous.cc:188
float * p
Definition: Tutorial_Map_using.cpp:9
Contains a vector with radii and probabilities of a user defined particle size distribution (PSD)
Definition: PSD.h:47
#define min(a, b)
Definition: datatypes.h:22
Definition: PSDContinuous.h:30
static void convertSubtractiveToCumulative(std::vector< PSDContinuous > &psd)
Definition: PSDContinuous.cc:65
friend std::ostream & operator<<(std::ostream &os, const PSDContinuous &psd)
Writes to output stream.
Definition: PSDContinuous.h:168
bool operator<(const double probability) const
Definition: PSDContinuous.h:160
static double getD0(const std::vector< PSDContinuous > &psd)
Definition: PSDContinuous.h:125
static void convertSubtractiveVolumeToNumber(std::vector< PSDContinuous > &psd)
Definition: PSDContinuous.cc:89
static std::vector< PSDContinuous > getCumulativeNumberFromVolume(std::vector< PSDContinuous > psd)
Definition: PSDContinuous.h:71
static double getD90(const std::vector< PSDContinuous > &psd)
Definition: PSDContinuous.h:137
static void convertCumulativeVolumeToNumber(std::vector< PSDContinuous > &psd)
Definition: PSDContinuous.cc:107
static void convertSubtractiveNumberToVolume(std::vector< PSDContinuous > &psd)
Definition: PSDContinuous.cc:130
static void validateCumulativeDistribution(std::vector< PSDContinuous > &psd)
Definition: PSDContinuous.cc:28
static void convertCumulativeNumberToVolume(std::vector< PSDContinuous > &psd)
Definition: PSDContinuous.cc:148
static std::vector< PSDContinuous > cutoffCumulativeNumber(std::vector< PSDContinuous > psd, double quantileMin, double quantileMax, double minPolydispersity=0.1)
Definition: PSDContinuous.h:77
static double getVolumetricMean(std::vector< PSDContinuous > psd)
Definition: PSDContinuous.cc:179
static std::vector< PSDContinuous > cutoffAndSqueezeCumulativeNumber(std::vector< PSDContinuous > psd, double quantileMin, double quantileMax, double squeeze, double minPolydispersity=0.1)
Definition: PSDContinuous.h:98
static double getD10(const std::vector< PSDContinuous > &psd)
Definition: PSDContinuous.h:129
static void convertCumulativeToSubtractive(std::vector< PSDContinuous > &psd)
Definition: PSDContinuous.cc:77
static double getQuantile(std::vector< PSDContinuous > psd, double quantile)
Definition: PSDContinuous.cc:167
double probability
Definition: PSDContinuous.h:182
static void interpolateCSD(std::vector< PSDContinuous > &psd, unsigned n)
Definition: PSDContinuous.cc:113
double radius
Definition: PSDContinuous.h:181
static double getD100(const std::vector< PSDContinuous > &psd)
Definition: PSDContinuous.h:141
static double getD50(const std::vector< PSDContinuous > &psd)
Definition: PSDContinuous.h:133
static void print(std::vector< PSDContinuous > &psd)
Definition: PSDContinuous.cc:11
friend std::istream & operator>>(std::istream &is, PSDContinuous &psd)
Reads from input stream.
Definition: PSDContinuous.h:176
static std::vector< PSDContinuous > createPSDFromRadiiAndProbabilities(const std::vector< double > &radius, const std::vector< double > &probability)
Definition: PSDContinuous.cc:47