diff --git a/src/lagrangian/cfdemParticle/subModels/energyModel/heatTransferGunn/heatTransferGunn.C b/src/lagrangian/cfdemParticle/subModels/energyModel/heatTransferGunn/heatTransferGunn.C index 5520b8f1..ece81a57 100644 --- a/src/lagrangian/cfdemParticle/subModels/energyModel/heatTransferGunn/heatTransferGunn.C +++ b/src/lagrangian/cfdemParticle/subModels/energyModel/heatTransferGunn/heatTransferGunn.C @@ -150,7 +150,8 @@ heatTransferGunn::heatTransferGunn partRe_(NULL), partNu_(NULL), scaleDia_(1.), - typeCG_(propsDict_.lookupOrDefault("coarseGrainingFactors",scalarList(1,1.0))) + typeCG_(propsDict_.lookupOrDefault("coarseGrainingFactors",scalarList(1,1.0))), + maxTypeCG_(typeCG_.size()) { allocateMyArrays(); @@ -209,7 +210,10 @@ heatTransferGunn::heatTransferGunn scaleDia_=scalar(readScalar(propsDict_.lookup("scale"))); typeCG_[0] = scaleDia_; } - else if (typeCG_.size()>1) multiTypes_ = true; + else if (typeCG_.size()>1) + { + multiTypes_ = true; + } if (initPartTemp_ && !partTempField_.headerOk()) { @@ -340,6 +344,10 @@ void heatTransferGunn::calcEnergyContribution() if (multiTypes_) { partType = particleCloud_.particleType(index); + if (partType > maxTypeCG_) + { + FatalError<< "Too few coarse-graining factors provided." << abort(FatalError); + } cg = typeCG_[partType - 1]; scaleDia3 = cg*cg*cg; } diff --git a/src/lagrangian/cfdemParticle/subModels/energyModel/heatTransferGunn/heatTransferGunn.H b/src/lagrangian/cfdemParticle/subModels/energyModel/heatTransferGunn/heatTransferGunn.H index bc808c4c..06b9a5ac 100644 --- a/src/lagrangian/cfdemParticle/subModels/energyModel/heatTransferGunn/heatTransferGunn.H +++ b/src/lagrangian/cfdemParticle/subModels/energyModel/heatTransferGunn/heatTransferGunn.H @@ -126,6 +126,8 @@ protected: scalarList typeCG_; + const label maxTypeCG_; + void allocateMyArrays() const; void partTempField(); diff --git a/src/lagrangian/cfdemParticle/subModels/energyModel/heatTransferRanzMarshall/heatTransferRanzMarshall.C b/src/lagrangian/cfdemParticle/subModels/energyModel/heatTransferRanzMarshall/heatTransferRanzMarshall.C index c3dcdf5c..fdfabc13 100644 --- a/src/lagrangian/cfdemParticle/subModels/energyModel/heatTransferRanzMarshall/heatTransferRanzMarshall.C +++ b/src/lagrangian/cfdemParticle/subModels/energyModel/heatTransferRanzMarshall/heatTransferRanzMarshall.C @@ -149,7 +149,8 @@ heatTransferRanzMarshall::heatTransferRanzMarshall partRe_(NULL), partNu_(NULL), scaleDia_(1.), - typeCG_(propsDict_.lookupOrDefault("coarseGrainingFactors",scalarList(1,1.0))) + typeCG_(propsDict_.lookupOrDefault("coarseGrainingFactors",scalarList(1,1.0))), + maxTypeCG_(typeCG_.size()) { allocateMyArrays(); @@ -208,7 +209,10 @@ heatTransferRanzMarshall::heatTransferRanzMarshall scaleDia_=scalar(readScalar(propsDict_.lookup("scale"))); typeCG_[0] = scaleDia_; } - else if (typeCG_.size()>1) multiTypes_ = true; + else if (typeCG_.size()>1) + { + multiTypes_ = true; + } if (initPartTemp_ && !partTempField_.headerOk()) { @@ -340,6 +344,10 @@ void heatTransferRanzMarshall::calcEnergyContribution() if (multiTypes_) { partType = particleCloud_.particleType(index); + if (partType > maxTypeCG_) + { + FatalError<< "Too few coarse-graining factors provided." << abort(FatalError); + } cg = typeCG_[partType - 1]; scaleDia3 = cg*cg*cg; } diff --git a/src/lagrangian/cfdemParticle/subModels/energyModel/heatTransferRanzMarshall/heatTransferRanzMarshall.H b/src/lagrangian/cfdemParticle/subModels/energyModel/heatTransferRanzMarshall/heatTransferRanzMarshall.H index db30ffb6..17baedb8 100644 --- a/src/lagrangian/cfdemParticle/subModels/energyModel/heatTransferRanzMarshall/heatTransferRanzMarshall.H +++ b/src/lagrangian/cfdemParticle/subModels/energyModel/heatTransferRanzMarshall/heatTransferRanzMarshall.H @@ -125,6 +125,8 @@ protected: scalarList typeCG_; + const label maxTypeCG_; + void allocateMyArrays() const; void partTempField(); diff --git a/src/lagrangian/cfdemParticle/subModels/forceModel/BeetstraDrag/BeetstraDrag.C b/src/lagrangian/cfdemParticle/subModels/forceModel/BeetstraDrag/BeetstraDrag.C index 18381aa3..3e5e2ac3 100644 --- a/src/lagrangian/cfdemParticle/subModels/forceModel/BeetstraDrag/BeetstraDrag.C +++ b/src/lagrangian/cfdemParticle/subModels/forceModel/BeetstraDrag/BeetstraDrag.C @@ -58,8 +58,9 @@ BeetstraDrag::BeetstraDrag minVoidfraction_(propsDict_.lookupOrDefault("minVoidfraction",0.1)), UsFieldName_(propsDict_.lookup("granVelFieldName")), UsField_(sm.mesh().lookupObject (UsFieldName_)), - scaleDia_(1.), + maxTypeCG_(1), typeCG_(propsDict_.lookupOrDefault("coarseGrainingFactors",scalarList(1,1.0))), + scaleDia_(1.), scaleDrag_(1.), rhoP_(0.), rho_(0.), @@ -102,7 +103,11 @@ BeetstraDrag::BeetstraDrag scaleDrag_=scalar(readScalar(propsDict_.lookup("scaleDrag"))); } - if (typeCG_.size()>1) multiTypes_ = true; + if (typeCG_.size()>1) + { + multiTypes_ = true; + maxTypeCG_ = typeCG_.size(); + } if (propsDict_.found("useFilteredDragModel")) { @@ -219,6 +224,10 @@ void BeetstraDrag::setForce() const if (multiTypes_) { partType = particleCloud_.particleType(index); + if (partType > maxTypeCG_) + { + FatalError<< "Too few coarse-graining factors provided." << abort(FatalError); + } cg = typeCG_[partType - 1]; scaleDia3 = cg*cg*cg; } diff --git a/src/lagrangian/cfdemParticle/subModels/forceModel/BeetstraDrag/BeetstraDrag.H b/src/lagrangian/cfdemParticle/subModels/forceModel/BeetstraDrag/BeetstraDrag.H index cfeeea39..eb466cc2 100644 --- a/src/lagrangian/cfdemParticle/subModels/forceModel/BeetstraDrag/BeetstraDrag.H +++ b/src/lagrangian/cfdemParticle/subModels/forceModel/BeetstraDrag/BeetstraDrag.H @@ -64,9 +64,11 @@ protected: const volVectorField& UsField_; - mutable scalar scaleDia_; + mutable label maxTypeCG_; - mutable scalarList typeCG_; + scalarList typeCG_; + + mutable scalar scaleDia_; mutable scalar scaleDrag_; diff --git a/src/lagrangian/cfdemParticle/subModels/forceModel/dSauter/dSauter.C b/src/lagrangian/cfdemParticle/subModels/forceModel/dSauter/dSauter.C index 9f1a555b..88fed5d4 100644 --- a/src/lagrangian/cfdemParticle/subModels/forceModel/dSauter/dSauter.C +++ b/src/lagrangian/cfdemParticle/subModels/forceModel/dSauter/dSauter.C @@ -56,6 +56,7 @@ dSauter::dSauter multiTypes_(false), d2_(NULL), d3_(NULL), + maxTypeCG_(1), typeCG_(propsDict_.lookupOrDefault("coarseGrainingFactors",scalarList(1,1.0))), d2Field_ ( IOobject @@ -95,7 +96,11 @@ dSauter::dSauter "zeroGradient" ) { - if (typeCG_.size()>1) multiTypes_ = true; + if (typeCG_.size()>1) + { + multiTypes_ = true; + maxTypeCG_ = typeCG_.size(); + } allocateMyArrays(); dSauter_.write(); @@ -153,6 +158,10 @@ void dSauter::setForce() const if (multiTypes_) { partType = particleCloud_.particleType(index); + if (partType > maxTypeCG_) + { + FatalError<< "Too few coarse-graining factors provided." << abort(FatalError); + } cg = typeCG_[partType - 1]; } ds = particleCloud_.d(index); diff --git a/src/lagrangian/cfdemParticle/subModels/forceModel/dSauter/dSauter.H b/src/lagrangian/cfdemParticle/subModels/forceModel/dSauter/dSauter.H index f1e1ca6e..eb875ca5 100644 --- a/src/lagrangian/cfdemParticle/subModels/forceModel/dSauter/dSauter.H +++ b/src/lagrangian/cfdemParticle/subModels/forceModel/dSauter/dSauter.H @@ -49,6 +49,8 @@ private: mutable double **d3_; + label maxTypeCG_; + scalarList typeCG_; mutable volScalarField d2Field_; diff --git a/src/lagrangian/cfdemParticle/subModels/forceModel/pdCorrelation/pdCorrelation.C b/src/lagrangian/cfdemParticle/subModels/forceModel/pdCorrelation/pdCorrelation.C index ff0de5d0..d79f03d2 100644 --- a/src/lagrangian/cfdemParticle/subModels/forceModel/pdCorrelation/pdCorrelation.C +++ b/src/lagrangian/cfdemParticle/subModels/forceModel/pdCorrelation/pdCorrelation.C @@ -122,14 +122,6 @@ pdCorrelation::pdCorrelation sm.mesh(), dimensionedScalar("zero", dimless, 0) ), - typeCG_ - ( - propsDict_.lookupOrDefault - ( - "coarseGrainingFactors", - scalarList(1, sm.cg()) - ) - ), particleDensities_ ( propsDict_.lookupOrDefault @@ -138,6 +130,15 @@ pdCorrelation::pdCorrelation scalarList(1, -1.) ) ), + typeCG_ + ( + propsDict_.lookupOrDefault + ( + "coarseGrainingFactors", + scalarList(1, sm.cg()) + ) + ), + maxTypeCG_(typeCG_.size()), constantCG_(typeCG_.size() < 2), CG_(!constantCG_ || typeCG_[0] > 1. + SMALL), runOnWriteOnly_(propsDict_.lookupOrDefault("runOnWriteOnly", false)) @@ -222,6 +223,10 @@ void pdCorrelation::setForce() const typei = particleCloud_.particleTypes()[pi][0] - 1; rhop = densityFromList ? particleDensities_[typei] : particleCloud_.particleDensity(pi); + if (!constantCG_ && typei >= maxTypeCG_) + { + FatalError<< "Too few coarse-graining factors provided." << abort(FatalError); + } cg = constantCG_ ? typeCG_[0] : typeCG_[typei]; } diff --git a/src/lagrangian/cfdemParticle/subModels/forceModel/pdCorrelation/pdCorrelation.H b/src/lagrangian/cfdemParticle/subModels/forceModel/pdCorrelation/pdCorrelation.H index 7ea99050..04fb2bf0 100644 --- a/src/lagrangian/cfdemParticle/subModels/forceModel/pdCorrelation/pdCorrelation.H +++ b/src/lagrangian/cfdemParticle/subModels/forceModel/pdCorrelation/pdCorrelation.H @@ -58,8 +58,9 @@ private: mutable volScalarField cg3Field_; - const scalarList typeCG_; const scalarList particleDensities_; + const scalarList typeCG_; + const label maxTypeCG_; const Switch constantCG_; const Switch CG_; const Switch runOnWriteOnly_;