|
OPALX (Object Oriented Parallel Accelerator Library for Exascal) MINIorX
OPALX
|
A particle generation method following multivariate Gaussian distribution. More...
#include <MultiVariateGaussian.h>
Public Member Functions | |
| MultiVariateGaussian (std::shared_ptr< ParticleContainer_t > &pc, std::shared_ptr< FieldContainer_t > &fc, std::shared_ptr< Distribution_t > &opalDist) | |
| Constructor for MultiVariateGaussian. | |
| MultiVariateGaussian (std::shared_ptr< ParticleContainer_t > pc, const Vector_t< double, 3 > &meanR, const Vector_t< double, 3 > &meanP, const Vector_t< double, 3 > &sigmaR, const Vector_t< double, 3 > &sigmaP, const Vector_t< double, 3 > &cutoffR, const Vector_t< double, 3 > &cutoffP, bool fixMeanR=true, bool fixMeanP=true) | |
| Constructor for MultiVariateGaussian with specified parameters. | |
| MultiVariateGaussian (std::shared_ptr< ParticleContainer_t > pc, const Vector_t< double, 3 > &meanR, const Vector_t< double, 3 > &meanP, const Matrix_t &cov, const Vector_t< double, 3 > &cutoffR, const Vector_t< double, 3 > &cutoffP, bool fixMeanR=true, bool fixMeanP=true) | |
| Constructs the MultiVariateGaussian class. | |
| void | ComputeCholeskyFactorization () |
| Computes the Cholesky factorization of the covariance matrix. | |
| void | ComputeCenteredBounds () |
| Computes centered bounds for the particle distribution. | |
| void | generateParticles (size_t &numberOfParticles, Vector_t< double, 3 > nr) override |
| Generates particles based on the defined Gaussian distribution. | |
| void | setMeanR (const Vector_t< double, 3 > &meanR) |
| void | setMeanP (const Vector_t< double, 3 > &meanP) |
| void | setCutoffR (const Vector_t< double, 3 > &cutoffR) |
| void | setCutoffP (const Vector_t< double, 3 > &cutoffP) |
| void | setFixMeanR (bool fixMeanR) |
| void | setFixMeanP (bool fixMeanP) |
| void | setSigmaR (const Vector_t< double, 3 > &sigmaR) |
| void | setSigmaP (const Vector_t< double, 3 > &sigmaP) |
| void | setCovarianceMatrix (const Matrix_t &cov) |
| void | setL (const Matrix_t &L) |
| virtual void | emitParticles (double t, double dt) |
| virtual void | testNumEmitParticles (size_t nsteps, double dt) |
| virtual void | testEmitParticles (size_t nsteps, double dt) |
| virtual void | initDomainDecomp (double BoxIncr) |
| virtual void | setWithDomainDecomp (bool withDomainDecomp) |
Public Attributes | |
| IpplTimings::TimerRef | samplerTimer_m |
| Timer for performance profiling. | |
Protected Attributes | |
| std::shared_ptr< ParticleContainer_t > | pc_m |
| std::shared_ptr< FieldContainer_t > | fc_m |
| std::shared_ptr< Distribution_t > | opalDist_m |
| std::string | samplingMethod_m |
Private Member Functions | |
| void | initRandomPool () |
| Initializes the random number generator pool. | |
Private Attributes | |
| Vector_t< double, 3 > | meanR_m |
| Vector_t< double, 3 > | meanP_m |
| Matrix_t | cov_m |
| Matrix_t | L_m |
| Vector_t< double, 3 > | rmin_m |
| Vector_t< double, 3 > | rmax_m |
| Vector_t< double, 3 > | pmin_m |
| Vector_t< double, 3 > | pmax_m |
| Vector_t< double, 3 > | normRmin_m |
| Vector_t< double, 3 > | normRmax_m |
| Vector_t< double, 3 > | normPmin_m |
| Vector_t< double, 3 > | normPmax_m |
| Vector_t< double, 6 > | min_m |
| Min and Max bounds for all 6 dimensions (R0,P0,R1,P1,R2,P2). | |
| Vector_t< double, 6 > | max_m |
| Vector_t< double, 6 > | normMin_m |
| Vector_t< double, 6 > | normMax_m |
| Vector_t< double, 3 > | cutoffR_m |
| Cutoff multipliers for position and momentum distributions. | |
| Vector_t< double, 3 > | cutoffP_m |
| GeneratorPool | randPool_m |
| Pool of random number generators for parallel sampling. | |
| Vector_t< double, 3 > | sigmaR_m |
| Standard deviations for position and momentum distributions. | |
| Vector_t< double, 3 > | sigmaP_m |
| bool | fixMeanR_m |
| Flag to exactly fix the mean R and P of particles after sampling. | |
| bool | fixMeanP_m |
A particle generation method following multivariate Gaussian distribution.
This class generates particles following a multivariate Gaussian distribution using Cholesky factorization and inverse transformation sampling.
Given covariance matrix cov_m = [ Cov(R0,R0), Cov(R0,P0), Cov(R0,R1), Cov(R0,P1), ...] whose values are read from opalDist_m->correlationMatrix_m. First, the Cholesky factorization is computed cov_m = L_m * L_m^T Then, normally distribution particles R=P~N(0,I) are transformed to multivariate using L_m.
Definition at line 32 of file MultiVariateGaussian.h.
| MultiVariateGaussian::MultiVariateGaussian | ( | std::shared_ptr< ParticleContainer_t > & | pc, |
| std::shared_ptr< FieldContainer_t > & | fc, | ||
| std::shared_ptr< Distribution_t > & | opalDist ) |
Constructor for MultiVariateGaussian.
Constructs the MultiVariateGaussian class.
| pc | Shared pointer to the particle container. |
| fc | Shared pointer to the field container. |
| opalDist | Shared pointer to the distribution. |
Definition at line 13 of file MultiVariateGaussian.cpp.
References cov_m, initRandomPool(), meanP_m, meanR_m, SamplingBase::opalDist_m, samplerTimer_m, SamplingBase::SamplingBase(), setCutoffP(), setCutoffR(), setSigmaP(), and setSigmaR().
| MultiVariateGaussian::MultiVariateGaussian | ( | std::shared_ptr< ParticleContainer_t > | pc, |
| const Vector_t< double, 3 > & | meanR, | ||
| const Vector_t< double, 3 > & | meanP, | ||
| const Vector_t< double, 3 > & | sigmaR, | ||
| const Vector_t< double, 3 > & | sigmaP, | ||
| const Vector_t< double, 3 > & | cutoffR, | ||
| const Vector_t< double, 3 > & | cutoffP, | ||
| bool | fixMeanR = true, | ||
| bool | fixMeanP = true ) |
Constructor for MultiVariateGaussian with specified parameters.
| meanR | Mean position vector. |
| meanP | Mean momentum vector. |
| sigmaR | Standard deviation for position distribution. |
| sigmaP | Standard deviation for momentum distribution. |
| cutoffR | Cutoff position vector. |
| cutoffP | Cutoff momentum vector. |
| fixMeanR | Boolean flag to fix mean position. |
| fixMeanP | Boolean flag to fix mean momentum. |
Definition at line 38 of file MultiVariateGaussian.cpp.
References cov_m, initRandomPool(), samplerTimer_m, SamplingBase::SamplingBase(), setCutoffP(), setCutoffR(), setFixMeanP(), setFixMeanR(), setMeanP(), setMeanR(), setSigmaP(), and setSigmaR().
| MultiVariateGaussian::MultiVariateGaussian | ( | std::shared_ptr< ParticleContainer_t > | pc, |
| const Vector_t< double, 3 > & | meanR, | ||
| const Vector_t< double, 3 > & | meanP, | ||
| const Matrix_t & | cov, | ||
| const Vector_t< double, 3 > & | cutoffR, | ||
| const Vector_t< double, 3 > & | cutoffP, | ||
| bool | fixMeanR = true, | ||
| bool | fixMeanP = true ) |
Constructs the MultiVariateGaussian class.
| pc | Shared pointer to the particle container. |
| meanR | Mean position vector. |
| meanP | Mean momentum vector. |
| cov | Covariance matrix. |
| cutoffR | Cutoff position vector. |
| cutoffP | Cutoff momentum vector. |
| fixMeanR | Boolean flag to fix mean position. |
| fixMeanP | Boolean flag to fix mean momentum. |
Definition at line 74 of file MultiVariateGaussian.cpp.
References cov_m, initRandomPool(), samplerTimer_m, SamplingBase::SamplingBase(), setCutoffP(), setCutoffR(), setFixMeanR(), setMeanP(), setMeanR(), setSigmaP(), and setSigmaR().
| void MultiVariateGaussian::ComputeCenteredBounds | ( | ) |
Computes centered bounds for the particle distribution.
Computes normalized boundaries for the multivariate Gaussian sampling.
Definition at line 150 of file MultiVariateGaussian.cpp.
References cutoffP_m, cutoffR_m, L_m, max_m, min_m, normMax_m, normMin_m, normPmax_m, normPmin_m, normRmax_m, normRmin_m, pmax_m, pmin_m, rmax_m, rmin_m, sigmaP_m, and sigmaR_m.
Referenced by generateParticles().
| void MultiVariateGaussian::ComputeCholeskyFactorization | ( | ) |
Computes the Cholesky factorization of the covariance matrix.
Computes the Cholesky decomposition of the covariance matrix.
Definition at line 125 of file MultiVariateGaussian.cpp.
Referenced by generateParticles().
|
inlinevirtualinherited |
Reimplemented in FlatTop.
Definition at line 31 of file SamplingBase.hpp.
|
overridevirtual |
Generates particles based on the defined Gaussian distribution.
Generates particles following a multivariate Gaussian distribution.
| numberOfParticles | Number of particles to generate. |
| nr | Vector specifying additional sampling parameters. |
Reimplemented from SamplingBase.
Definition at line 198 of file MultiVariateGaussian.cpp.
References ComputeCenteredBounds(), ComputeCholeskyFactorization(), fixMeanP_m, fixMeanR_m, L_m, meanP_m, meanR_m, normPmax_m, normPmin_m, normRmax_m, normRmin_m, nr, SamplingBase::pc_m, randPool_m, and samplerTimer_m.
|
inlinevirtualinherited |
Reimplemented in FlatTop.
Definition at line 39 of file SamplingBase.hpp.
|
private |
Initializes the random number generator pool.
Definition at line 106 of file MultiVariateGaussian.cpp.
References gmsg, randPool_m, and Options::seed.
Referenced by MultiVariateGaussian(), MultiVariateGaussian(), and MultiVariateGaussian().
|
inline |
Definition at line 139 of file MultiVariateGaussian.h.
References cov_m.
|
inline |
Definition at line 120 of file MultiVariateGaussian.h.
References cutoffP_m.
Referenced by MultiVariateGaussian(), MultiVariateGaussian(), and MultiVariateGaussian().
|
inline |
Definition at line 116 of file MultiVariateGaussian.h.
References cutoffR_m.
Referenced by MultiVariateGaussian(), MultiVariateGaussian(), and MultiVariateGaussian().
|
inline |
Definition at line 128 of file MultiVariateGaussian.h.
References fixMeanP_m.
Referenced by MultiVariateGaussian().
|
inline |
Definition at line 124 of file MultiVariateGaussian.h.
References fixMeanR_m.
Referenced by MultiVariateGaussian(), and MultiVariateGaussian().
|
inline |
Definition at line 143 of file MultiVariateGaussian.h.
References L_m.
|
inline |
Definition at line 112 of file MultiVariateGaussian.h.
References meanP_m.
Referenced by MultiVariateGaussian(), and MultiVariateGaussian().
|
inline |
Definition at line 108 of file MultiVariateGaussian.h.
References meanR_m.
Referenced by MultiVariateGaussian(), and MultiVariateGaussian().
|
inline |
Definition at line 135 of file MultiVariateGaussian.h.
References sigmaP_m.
Referenced by MultiVariateGaussian(), MultiVariateGaussian(), and MultiVariateGaussian().
|
inline |
Definition at line 132 of file MultiVariateGaussian.h.
References sigmaR_m.
Referenced by MultiVariateGaussian(), MultiVariateGaussian(), and MultiVariateGaussian().
|
inlinevirtualinherited |
Reimplemented in FlatTop.
Definition at line 41 of file SamplingBase.hpp.
|
inlinevirtualinherited |
Definition at line 37 of file SamplingBase.hpp.
|
inlinevirtualinherited |
Definition at line 34 of file SamplingBase.hpp.
|
private |
Definition at line 156 of file MultiVariateGaussian.h.
Referenced by ComputeCholeskyFactorization(), MultiVariateGaussian(), MultiVariateGaussian(), MultiVariateGaussian(), and setCovarianceMatrix().
|
private |
Definition at line 182 of file MultiVariateGaussian.h.
Referenced by ComputeCenteredBounds(), and setCutoffP().
|
private |
Cutoff multipliers for position and momentum distributions.
Definition at line 181 of file MultiVariateGaussian.h.
Referenced by ComputeCenteredBounds(), and setCutoffR().
|
protectedinherited |
Definition at line 14 of file SamplingBase.hpp.
Referenced by FlatTop::initDomainDecomp(), SamplingBase(), and FlatTop::setParameters().
|
private |
Definition at line 204 of file MultiVariateGaussian.h.
Referenced by generateParticles(), and setFixMeanP().
|
private |
Flag to exactly fix the mean R and P of particles after sampling.
Definition at line 203 of file MultiVariateGaussian.h.
Referenced by generateParticles(), and setFixMeanR().
|
private |
Definition at line 161 of file MultiVariateGaussian.h.
Referenced by ComputeCenteredBounds(), ComputeCholeskyFactorization(), generateParticles(), and setL().
|
private |
Definition at line 176 of file MultiVariateGaussian.h.
Referenced by ComputeCenteredBounds().
|
private |
Definition at line 151 of file MultiVariateGaussian.h.
Referenced by generateParticles(), MultiVariateGaussian(), and setMeanP().
|
private |
Definition at line 151 of file MultiVariateGaussian.h.
Referenced by generateParticles(), MultiVariateGaussian(), and setMeanR().
|
private |
Min and Max bounds for all 6 dimensions (R0,P0,R1,P1,R2,P2).
Definition at line 176 of file MultiVariateGaussian.h.
Referenced by ComputeCenteredBounds().
|
private |
Definition at line 176 of file MultiVariateGaussian.h.
Referenced by ComputeCenteredBounds().
|
private |
Definition at line 176 of file MultiVariateGaussian.h.
Referenced by ComputeCenteredBounds().
|
private |
Definition at line 171 of file MultiVariateGaussian.h.
Referenced by ComputeCenteredBounds(), and generateParticles().
|
private |
Definition at line 171 of file MultiVariateGaussian.h.
Referenced by ComputeCenteredBounds(), and generateParticles().
|
private |
Definition at line 171 of file MultiVariateGaussian.h.
Referenced by ComputeCenteredBounds(), and generateParticles().
|
private |
Definition at line 171 of file MultiVariateGaussian.h.
Referenced by ComputeCenteredBounds(), and generateParticles().
|
protectedinherited |
Definition at line 15 of file SamplingBase.hpp.
Referenced by FlatTop::countEnteringParticlesPerRank(), FlatTop::generateUniformDisk(), FlatTop::initDomainDecomp(), MultiVariateGaussian::MultiVariateGaussian(), SamplingBase(), and FlatTop::setParameters().
|
protectedinherited |
Definition at line 13 of file SamplingBase.hpp.
Referenced by FlatTop::allocateParticles(), FlatTop::countEnteringParticlesPerRank(), FlatTop::emitParticles(), FlatTop::generateParticles(), Gaussian::generateParticles(), MultiVariateGaussian::generateParticles(), FlatTop::generateUniformDisk(), FlatTop::initDomainDecomp(), SamplingBase(), SamplingBase(), and FlatTop::testNumEmitParticles().
|
private |
Definition at line 166 of file MultiVariateGaussian.h.
Referenced by ComputeCenteredBounds().
|
private |
Definition at line 166 of file MultiVariateGaussian.h.
Referenced by ComputeCenteredBounds().
|
private |
Pool of random number generators for parallel sampling.
Definition at line 192 of file MultiVariateGaussian.h.
Referenced by generateParticles(), and initRandomPool().
|
private |
Definition at line 166 of file MultiVariateGaussian.h.
Referenced by ComputeCenteredBounds().
|
private |
Definition at line 166 of file MultiVariateGaussian.h.
Referenced by ComputeCenteredBounds().
| IpplTimings::TimerRef MultiVariateGaussian::samplerTimer_m |
Timer for performance profiling.
Definition at line 106 of file MultiVariateGaussian.h.
Referenced by generateParticles(), MultiVariateGaussian(), MultiVariateGaussian(), and MultiVariateGaussian().
|
protectedinherited |
Definition at line 16 of file SamplingBase.hpp.
|
private |
Definition at line 198 of file MultiVariateGaussian.h.
Referenced by ComputeCenteredBounds(), and setSigmaP().
|
private |
Standard deviations for position and momentum distributions.
Definition at line 197 of file MultiVariateGaussian.h.
Referenced by ComputeCenteredBounds(), and setSigmaR().