Merge pull request #29 from ParticulateFlow/feature/cherry_pick_PUBLIC

Feature/cherry pick public
This commit is contained in:
Daniel
2017-08-31 16:19:05 +02:00
committed by GitHub
44 changed files with 370 additions and 369 deletions

View File

@ -81,6 +81,7 @@ cfdemCloud::cfdemCloud
solveFlow_(true), solveFlow_(true),
verbose_(false), verbose_(false),
ignore_(false), ignore_(false),
allowCFDsubTimestep_(true),
limitDEMForces_(false), limitDEMForces_(false),
modelType_(couplingProperties_.lookup("modelType")), modelType_(couplingProperties_.lookup("modelType")),
positions_(NULL), positions_(NULL),
@ -251,17 +252,6 @@ cfdemCloud::cfdemCloud
else else
Info << "ignoring ddt(voidfraction)" << endl; Info << "ignoring ddt(voidfraction)" << endl;
forceModel_ = new autoPtr<forceModel>[nrForceModels()];
for (int i=0;i<nrForceModels();i++)
{
forceModel_[i] = forceModel::New
(
couplingProperties_,
*this,
forceModels_[i]
);
}
momCoupleModel_ = new autoPtr<momCoupleModel>[momCoupleModels_.size()]; momCoupleModel_ = new autoPtr<momCoupleModel>[momCoupleModels_.size()];
for (int i=0;i<momCoupleModels_.size();i++) for (int i=0;i<momCoupleModels_.size();i++)
{ {
@ -273,6 +263,17 @@ cfdemCloud::cfdemCloud
); );
} }
forceModel_ = new autoPtr<forceModel>[nrForceModels()];
for (int i=0;i<nrForceModels();i++)
{
forceModel_[i] = forceModel::New
(
couplingProperties_,
*this,
forceModels_[i]
);
}
// run liggghts commands from cfdem // run liggghts commands from cfdem
liggghtsCommand_ = new autoPtr<liggghtsCommandModel>[liggghtsCommandModelList_.size()]; liggghtsCommand_ = new autoPtr<liggghtsCommandModel>[liggghtsCommandModelList_.size()];
for (int i=0;i<liggghtsCommandModelList_.size();i++) for (int i=0;i<liggghtsCommandModelList_.size();i++)
@ -324,7 +325,14 @@ cfdemCloud::cfdemCloud
{ {
checkPeriodicCells_ = true; checkPeriodicCells_ = true;
} }
else if (nPatchesCyclic > 0 && nPatchesNonCyclic > 0)
//hard set checkperiodic cells if wished
if(this->couplingProperties().found("checkPeriodicCells"))
{
checkPeriodicCells_ = couplingProperties().lookupOrDefault<Switch>("checkPeriodicCells", checkPeriodicCells_);
}
if (nPatchesCyclic > 0 && nPatchesNonCyclic > 0)
{ {
if (verbose_) Info << "nPatchesNonCyclic=" << nPatchesNonCyclic << ", nPatchesCyclic=" << nPatchesCyclic << endl; if (verbose_) Info << "nPatchesNonCyclic=" << nPatchesNonCyclic << ", nPatchesCyclic=" << nPatchesCyclic << endl;
Warning << "Periodic handing is disabled because the domain is not fully periodic!\n" << endl; Warning << "Periodic handing is disabled because the domain is not fully periodic!\n" << endl;
@ -612,6 +620,10 @@ bool cfdemCloud::evolve
// IMPLICIT FORCE CONTRIBUTION AND SOLVER USE EXACTLY THE SAME AVERAGED // IMPLICIT FORCE CONTRIBUTION AND SOLVER USE EXACTLY THE SAME AVERAGED
// QUANTITIES AT THE GRID! // QUANTITIES AT THE GRID!
Info << "\n timeStepFraction() = " << dataExchangeM().timeStepFraction() << endl; Info << "\n timeStepFraction() = " << dataExchangeM().timeStepFraction() << endl;
if(dataExchangeM().timeStepFraction() > 1.0000001)
{
FatalError << "cfdemCloud::dataExchangeM().timeStepFraction()>1: Do not do this, since dangerous. This might be due to the fact that you used a adjustable CFD time step. Please use a fixed CFD time step." << abort(FatalError);
}
clockM().start(24,"interpolateEulerFields"); clockM().start(24,"interpolateEulerFields");
// update voidFractionField // update voidFractionField

View File

@ -92,6 +92,8 @@ protected:
bool ignore_; bool ignore_;
bool allowCFDsubTimestep_;
bool limitDEMForces_; bool limitDEMForces_;
scalar maxDEMForce_; scalar maxDEMForce_;
@ -226,6 +228,10 @@ public:
// public Member Functions // public Member Functions
// Access // Access
bool allowCFDsubTimestep() { return allowCFDsubTimestep_; }
void setAllowCFDsubTimestep(bool b) { allowCFDsubTimestep_ = b; }
void checkCG(bool); void checkCG(bool);
void setPos(double **&); void setPos(double **&);

View File

@ -328,21 +328,13 @@ void averagingModel::undoWeightFields(double**const& mask) const
tmp<volVectorField> averagingModel::UsInterp() const tmp<volVectorField> averagingModel::UsInterp() const
{ {
if (particleCloud_.dataExchangeM().couplingStep() > 1) const scalar tsf = particleCloud_.dataExchangeM().timeStepFraction();
{
return tmp<volVectorField> return tmp<volVectorField>
( (
new volVectorField("Us_averagingModel", (1. - particleCloud_.dataExchangeM().timeStepFraction()) * UsPrev_ + particleCloud_.dataExchangeM().timeStepFraction() * UsNext_) new volVectorField("Us_averagingModel", (1. - tsf) * UsPrev_ + tsf * UsNext_)
); );
} }
else
{
return tmp<volVectorField>
(
new volVectorField("Us_averagingModel", UsNext_)
);
}
}
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //

View File

@ -209,12 +209,7 @@ bool dataExchangeModel::couple(int i) const
scalar dataExchangeModel::timeStepFraction() const scalar dataExchangeModel::timeStepFraction() const
{ {
//return fraction between previous coupling TS and actual TS //return fraction between previous coupling TS and actual TS
//scalar DEMtime = DEMts_ * couplingInterval_; return ( particleCloud_.mesh().time().value()-particleCloud_.mesh().time().startTime().value() - (couplingStep_-1) * couplingTime() ) / couplingTime();
//scalar frac = ( ( particleCloud_.mesh().time().value()-particleCloud_.mesh().time().startTime().value() ) - (couplingStep_) * DEMtime) / DEMtime; //Chr 05.03.2013
scalar frac = ( particleCloud_.mesh().time().value()-particleCloud_.mesh().time().startTime().value() - couplingStep_ * couplingTime() ) / couplingTime();
if (frac < 1e-4) frac = 1.;
return frac;
} }
int dataExchangeModel::getNumberOfParticles() const int dataExchangeModel::getNumberOfParticles() const

View File

@ -203,16 +203,23 @@ public:
Info << "particleCloud_.mesh().time().deltaT().value() = " << particleCloud_.mesh().time().deltaT().value() << endl; Info << "particleCloud_.mesh().time().deltaT().value() = " << particleCloud_.mesh().time().deltaT().value() << endl;
Info << "couplingInterval_ = " << couplingInterval_ << endl; Info << "couplingInterval_ = " << couplingInterval_ << endl;
Info << "DEMts_ = " << DEMts_ << endl; Info << "DEMts_ = " << DEMts_ << endl;
FatalError<<"\nError - TS bigger than coupling interval!\n"<< abort(FatalError); FatalError << "\nError - CFD time-step bigger than coupling time (= DEM time step * coupling interval)!\n" << abort(FatalError);
} }
} if (std::fabs((round(couplingTime()/particleCloud_.mesh().time().deltaT().value())*particleCloud_.mesh().time().deltaT().value())-couplingTime()) > SMALL)
/*inline bool checkExactTiming() const
{ {
return false; Info << "particleCloud_.mesh().time().deltaT().value() = " << particleCloud_.mesh().time().deltaT().value() << endl;
}*/ Info << "couplingInterval_ = " << couplingInterval_ << endl;
Info << "DEMts_ = " << DEMts_ << endl;
Warning << "\nWarning - Coupling time (= DEM time step * coupling interval) is not a multiple of CFD time-step!\n" << endl;
}
if (!particleCloud_.allowCFDsubTimestep())
if (particleCloud_.mesh().time().deltaT().value() < couplingInterval_ * DEMts_ + SMALL)
FatalError << "\nYour models require: CFD time-step = coupling interval (= DEM time step * coupling interval)! \n" << abort(FatalError);
//void checkNClumpTypes() const {}; // warn if sub-TS
if (particleCloud_.mesh().time().deltaT().value() < couplingTime() - SMALL)
Warning << "You are using sub-time-steps (i.e. CFD TS < coupling time)! Check your settings properly." << endl;
}
inline void readDEMtsfromDict(dictionary& propsDict) inline void readDEMtsfromDict(dictionary& propsDict)
{ {
@ -222,10 +229,8 @@ public:
inline bool doCoupleNow() const inline bool doCoupleNow() const
{ {
if (particleCloud_.mesh().time().value()-particleCloud_.mesh().time().startTime().value() if (particleCloud_.mesh().time().value()-particleCloud_.mesh().time().startTime().value()-SMALL
- ((1+couplingStep_)*(DEMts_*couplingInterval_)) > couplingStep_*DEMts_*couplingInterval_)
+ 1e-10 > 0) // Chr 27.03.2013 : first coupling after DEMts_*couplingInterval_
// > particleCloud_.mesh().time().deltaT().value()/2) // Chr 27.03.2013
{ {
return true; return true;
} }

View File

@ -104,6 +104,13 @@ void liggghtsCommandModel::checkTimeMode(dictionary& propsDict)
} }
} }
} }
if(verbose_){
Info << "runFirst = " << runFirst_ << endl;
Info << "runLast = " << runLast_ << endl;
Info << "runEveryCouplingStep = " << runEveryCouplingStep_ << endl;
Info << "runEveryWriteStep = " << runEveryWriteStep_ << endl;
}
} }
void liggghtsCommandModel::checkTimeSettings(const dictionary& propsDict) void liggghtsCommandModel::checkTimeSettings(const dictionary& propsDict)
@ -112,11 +119,12 @@ void liggghtsCommandModel::checkTimeSettings(const dictionary& propsDict)
{ {
scalar DEMts = particleCloud_.dataExchangeM().DEMts(); scalar DEMts = particleCloud_.dataExchangeM().DEMts();
scalar couplingInterval = particleCloud_.dataExchangeM().couplingInterval(); scalar couplingInterval = particleCloud_.dataExchangeM().couplingInterval();
scalar simStartTime = particleCloud_.mesh().time().startTime().value();
if(runLast_) // last run if(runLast_) // last run
{ {
// read time options from subdict // read time options from subdict
endTime_ = particleCloud_.mesh().time().endTime().value()-particleCloud_.mesh().time().startTime().value(); endTime_ = particleCloud_.mesh().time().endTime().value()-simStartTime;
startTime_ = endTime_; startTime_ = endTime_;
timeInterval_ = -1; timeInterval_ = -1;
@ -136,9 +144,9 @@ void liggghtsCommandModel::checkTimeSettings(const dictionary& propsDict)
// calculate coupling times // calculate coupling times
// if this makes troubles try floor((startTime_+SMALL)/.. as above // if this makes troubles try floor((startTime_+SMALL)/.. as above
firstCouplingStep_ = floor(startTime_/DEMts/couplingInterval)+1; firstCouplingStep_ = floor((startTime_+SMALL-simStartTime)/DEMts/couplingInterval);
lastCouplingStep_ = floor(endTime_/DEMts/couplingInterval)+1; lastCouplingStep_ = floor((endTime_+SMALL-simStartTime)/DEMts/couplingInterval);
couplingStepInterval_ = floor(timeInterval_/DEMts/couplingInterval)+1; couplingStepInterval_ = floor(timeInterval_+SMALL/DEMts/couplingInterval);
} }
else //runEveryCouplingStep or writeStep else //runEveryCouplingStep or writeStep
{ {

View File

@ -108,9 +108,13 @@ explicitCouple::~explicitCouple()
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
tmp<volVectorField> explicitCouple::expMomSource() const tmp<volVectorField> explicitCouple::expMomSource() const
{ {
scalar tsf = particleCloud_.dataExchangeM().timeStepFraction(); const scalar tsf = particleCloud_.dataExchangeM().timeStepFraction();
if (1. - tsf < 1e-4) //tsf==1 // calc Ksl
// update KslNext in first subTS
// NOTE: without following if we could update f every subTS (based on current values) and use this value
if(tsf < particleCloud_.mesh().time().deltaT().value()/particleCloud_.dataExchangeM().couplingTime() + 0.000001 )
{ {
// calc fNext // calc fNext
forAll(fNext_,cellI) forAll(fNext_,cellI)
@ -124,19 +128,13 @@ tmp<volVectorField> explicitCouple::expMomSource() const
if (magF > fLimit_[i]) fNext_[cellI][i] *= fLimit_[i]/magF; if (magF > fLimit_[i]) fNext_[cellI][i] *= fLimit_[i]/magF;
} }
} }
return tmp<volVectorField>
(
new volVectorField("f_explicitCouple", fPrev_)
);
} }
else
{
return tmp<volVectorField> return tmp<volVectorField>
( (
new volVectorField("f_explicitCouple", (1. - tsf) * fPrev_ + tsf * fNext_) new volVectorField("f_explicitCouple", (1. - tsf) * fPrev_ + tsf * fNext_)
); );
} }
}
void explicitCouple::resetMomSourceField() const void explicitCouple::resetMomSourceField() const
{ {

View File

@ -122,11 +122,13 @@ implicitCouple::~implicitCouple()
tmp<volScalarField> implicitCouple::impMomSource() const tmp<volScalarField> implicitCouple::impMomSource() const
{ {
scalar tsf = particleCloud_.dataExchangeM().timeStepFraction(); const scalar tsf = particleCloud_.dataExchangeM().timeStepFraction();
// calc Ksl // calc Ksl
if (1. - tsf < 1e-4) //tsf==1 // update KslNext in first subTS
// NOTE: without following if we could update Ksl every subTS (based on current values) and use this value
if(tsf < particleCloud_.mesh().time().deltaT().value()/particleCloud_.dataExchangeM().couplingTime() + 0.000001 )
{ {
scalar Ur; scalar Ur;
@ -136,6 +138,8 @@ tmp<volScalarField> implicitCouple::impMomSource() const
if (Ur > SMALL && alpha_[cellI] < maxAlpha_) //momentum exchange switched off if alpha too big if (Ur > SMALL && alpha_[cellI] < maxAlpha_) //momentum exchange switched off if alpha too big
{ {
// NOTE: impParticleForces() are calculated at coupling step based on current values
// therefore the use of Next fields in forceM and here is recommended
KslNext_[cellI] = mag(particleCloud_.forceM(0).impParticleForces()[cellI]) KslNext_[cellI] = mag(particleCloud_.forceM(0).impParticleForces()[cellI])
/ Ur / Ur
/ particleCloud_.mesh().V()[cellI]; / particleCloud_.mesh().V()[cellI];
@ -145,19 +149,13 @@ tmp<volScalarField> implicitCouple::impMomSource() const
// limiter // limiter
if (KslNext_[cellI] > KslLimit_) KslNext_[cellI] = KslLimit_; if (KslNext_[cellI] > KslLimit_) KslNext_[cellI] = KslLimit_;
} }
return tmp<volScalarField>
(
new volScalarField("Ksl_implicitCouple", KslPrev_)
);
} }
else
{
return tmp<volScalarField> return tmp<volScalarField>
( (
new volScalarField("Ksl_implicitCouple", (1. - tsf) * KslPrev_ + tsf * KslNext_) new volScalarField("Ksl_implicitCouple", (1. - tsf) * KslPrev_ + tsf * KslNext_)
); );
} }
}
void implicitCouple::resetMomSourceField() const void implicitCouple::resetMomSourceField() const
{ {

View File

@ -103,9 +103,10 @@ tmp<volScalarField> SyamlalThermCond::thermCond() const
dimensionedScalar("zero", dimensionSet(1,1,-3,-1,0,0,0), 0.0) dimensionedScalar("zero", dimensionSet(1,1,-3,-1,0,0,0), 0.0)
) )
); );
volScalarField& svf = tvf.ref(); volScalarField& svf = tvf.ref();
svf = (1-sqrt(1-voidfraction_)) / (voidfraction_) * kf0_; svf = (1-sqrt(1-voidfraction_+SMALL)) / (voidfraction_) * kf0_;
// if a wallQFactor field is present, use it to scale heat transport through a patch // if a wallQFactor field is present, use it to scale heat transport through a patch
if (hasWallQFactor_) if (hasWallQFactor_)

View File

@ -102,23 +102,13 @@ voidFractionModel::~voidFractionModel()
// * * * * * * * * * * * * * * public Member Functions * * * * * * * * * * * * * // // * * * * * * * * * * * * * * public Member Functions * * * * * * * * * * * * * //
tmp<volScalarField> voidFractionModel::voidFractionInterp() const tmp<volScalarField> voidFractionModel::voidFractionInterp() const
{ {
scalar tsf = particleCloud_.dataExchangeM().timeStepFraction(); const scalar tsf = particleCloud_.dataExchangeM().timeStepFraction();
if (1. - tsf < 1e-4 && particleCloud_.dataExchangeM().couplingStep() > 1) //tsf==1
{
return tmp<volScalarField>
(
new volScalarField("alpha_voidFractionModel", voidfractionPrev_)
);
}
else
{
return tmp<volScalarField> return tmp<volScalarField>
( (
new volScalarField("alpha_voidFractionModel", (1. - tsf) * voidfractionPrev_ + tsf * voidfractionNext_) new volScalarField("alpha_voidFractionModel", (1. - tsf) * voidfractionPrev_ + tsf * voidfractionNext_)
); );
} }
}
void voidFractionModel::resetVoidFractions() const void voidFractionModel::resetVoidFractions() const
{ {

View File

@ -1,4 +1,4 @@
# Pour granular particles into chute container, then induce flow # Fill granular particles into a cylinder
echo both echo both
atom_style granular atom_style granular
atom_modify map array atom_modify map array
@ -16,7 +16,7 @@ neighbor 0.001 bin
neigh_modify delay 0 neigh_modify delay 0
#Material properties required for new pair styles #material properties required for granular pair styles
fix m1 all property/global youngsModulus peratomtype 5.e6 fix m1 all property/global youngsModulus peratomtype 5.e6
fix m2 all property/global poissonsRatio peratomtype 0.45 fix m2 all property/global poissonsRatio peratomtype 0.45
@ -51,15 +51,14 @@ fix integr all nve/sphere
#screen output #screen output
compute 1 all erotate/sphere compute rke all erotate/sphere
thermo_style custom step atoms ke c_1 vol thermo_style custom step atoms ke c_rke vol
thermo 1000 thermo 1000
thermo_modify lost ignore norm no thermo_modify lost ignore norm no
compute_modify thermo_temp dynamic yes compute_modify thermo_temp dynamic yes
#insert the first particles so that dump is not empty #insert the first particles so that dump is not empty
run 1 run 1
dump dmp all custom 1000 post/dump.liggghts_init id type type x y z ix iy iz vx vy vz fx fy fz omegax omegay omegaz radius dump dmp all custom 1000 post/dump.liggghts_init id type x y z vx vy vz fx fy fz omegax omegay omegaz radius
run 3000 upto run 3000 upto
#write_restart liggghts.restart

View File

@ -73,8 +73,8 @@ functions
fields ( particleForces ); fields ( particleForces );
// Write at same frequency as fields // Write at same frequency as fields
outputControl timeStep;//outputTime; writeControl timeStep;//outputTime;
outputInterval 1; writeInterval 1;
} }
} }

View File

@ -73,8 +73,8 @@ functions
fields ( particleForces ); fields ( particleForces );
// Write at same frequency as fields // Write at same frequency as fields
outputControl timeStep;//outputTime; writeControl timeStep;//outputTime;
outputInterval 1; writeInterval 1;
} }
} }

View File

@ -19,8 +19,7 @@ neighbor 0.3 bin
neigh_modify delay 0 binsize 0.01 neigh_modify delay 0 binsize 0.01
# Material properties required for new pair styles # Material properties required for granular pair styles
fix m1 all property/global youngsModulus peratomtype 5.e7 fix m1 all property/global youngsModulus peratomtype 5.e7
fix m2 all property/global poissonsRatio peratomtype 0.45 fix m2 all property/global poissonsRatio peratomtype 0.45
fix m3 all property/global coefficientRestitution peratomtypepair 1 0.9 fix m3 all property/global coefficientRestitution peratomtypepair 1 0.9
@ -49,8 +48,8 @@ fix cfd2 all couple/cfd/force
# create single partciles # create single partciles
create_atoms 1 single .5 .5 3.5 units box create_atoms 1 single 0.5 0.5 3.5 units box
create_atoms 1 single .5 .5 3.16 units box create_atoms 1 single 0.5 0.5 3.16 units box
set atom 1 diameter 0.167 density 1.5 vx 0 vy 0 vz 0 set atom 1 diameter 0.167 density 1.5 vx 0 vy 0 vz 0
set atom 2 diameter 0.167 density 1.5 vx 0 vy 0 vz 0 set atom 2 diameter 0.167 density 1.5 vx 0 vy 0 vz 0
@ -85,7 +84,7 @@ thermo_modify lost ignore norm no
compute_modify thermo_temp dynamic yes compute_modify thermo_temp dynamic yes
# insert the first particles so that dump is not empty # insert the first particles so that dump is not empty
dump dmp all custom 100 ../DEM/post/dump.liggghts_run id type x y z ix iy iz vx vy vz fx fy fz omegax omegay omegaz radius dump dmp all custom 100 ../DEM/post/dump.liggghts_run id type x y z vx vy vz fx fy fz omegax omegay omegaz radius
#force : f_couple_cfd[0] f_couple_cfd[1] f_couple_cfd[2] #force : f_couple_cfd[0] f_couple_cfd[1] f_couple_cfd[2]
#node : f_couple_cfd[6] #node : f_couple_cfd[6]

View File

@ -90,8 +90,8 @@ functions
fields ( p U voidfraction volAverage_voidfraction voidfractionNext voidfractionPrev); fields ( p U voidfraction volAverage_voidfraction voidfractionNext voidfractionPrev);
// Write at same frequency as fields // Write at same frequency as fields
outputControl timeStep;//outputTime; writeControl timeStep;//outputTime;
outputInterval 1; writeInterval 1;
} }
} }
// ************************************************************************* // // ************************************************************************* //

View File

@ -90,8 +90,8 @@ functions
fields ( p U voidfraction volAverage_voidfraction); fields ( p U voidfraction volAverage_voidfraction);
// Write at same frequency as fields // Write at same frequency as fields
outputControl timeStep;//outputTime; writeControl timeStep;//outputTime;
outputInterval 1; writeInterval 1;
} }
/*pressureDrop /*pressureDrop

View File

@ -31,7 +31,7 @@ neighbor 0.001 bin
neigh_modify delay 0 neigh_modify delay 0
#Material properties required for new pair styles #Material properties required for granular pair styles
fix m1 all property/global youngsModulus peratomtype 5.e6 fix m1 all property/global youngsModulus peratomtype 5.e6
fix m2 all property/global poissonsRatio peratomtype 0.45 fix m2 all property/global poissonsRatio peratomtype 0.45
@ -39,7 +39,7 @@ fix m3 all property/global coefficientRestitution peratomtypepair 1 0.3
fix m4 all property/global coefficientFriction peratomtypepair 1 0.5 fix m4 all property/global coefficientFriction peratomtypepair 1 0.5
#pair style #pair style
pair_style gran model hertz tangential history #Hertzian without cohesion pair_style gran model hertz tangential history
pair_coeff * * pair_coeff * *
#timestep, gravity #timestep, gravity
@ -54,7 +54,7 @@ fix cylwalls all wall/gran model hertz tangential history primitive type 1 zcyli
#particle distributions and insertion #particle distributions and insertion
region bc cylinder z 0.0 0.0 0.012 0. 0.055 units box region bc cylinder z 0.0 0.0 0.012 0. 0.055 units box
fix pts1 all particletemplate/sphere 1 atom_type 1 density constant 7000 radius constant ${r0} fix pts1 all particletemplate/sphere 1 atom_type 1 density constant 7000 radius constant ${r0}
fix pdd1 all particledistribution/discrete 1. 1 pts1 1.0 fix pdd1 all particledistribution/discrete 1 1 pts1 1.0
fix ins all insert/pack seed 100001 distributiontemplate pdd1 vel constant 0. 0. -1. insert_every once overlapcheck yes all_in yes particles_in_region ${nPscal} region bc fix ins all insert/pack seed 100001 distributiontemplate pdd1 vel constant 0. 0. -1. insert_every once overlapcheck yes all_in yes particles_in_region ${nPscal} region bc
@ -62,15 +62,15 @@ fix ins all insert/pack seed 100001 distributiontemplate pdd1 vel constant 0. 0
fix integr all nve/sphere fix integr all nve/sphere
#screen output #screen output
compute 1 all erotate/sphere compute rke all erotate/sphere
thermo_style custom step atoms ke c_1 vol thermo_style custom step atoms ke c_rke vol
thermo 1000 thermo 1000
thermo_modify lost ignore norm no thermo_modify lost ignore norm no
compute_modify thermo_temp dynamic yes compute_modify thermo_temp dynamic yes
#insert the first particles so that dump is not empty #insert the first particles so that dump is not empty
run 1 run 1
dump dmp all custom 5000 post/dump.liggghts_init id type type x y z ix iy iz vx vy vz fx fy fz omegax omegay omegaz radius dump dmp all custom 5000 post/dump.liggghts_init id type x y z vx vy vz fx fy fz omegax omegay omegaz radius
#force : f_couple_cfd[0] f_couple_cfd[1] f_couple_cfd[2] #force : f_couple_cfd[0] f_couple_cfd[1] f_couple_cfd[2]
#node : f_couple_cfd[6] #node : f_couple_cfd[6]
#cell id : f_couple_cfd[7] #cell id : f_couple_cfd[7]

View File

@ -33,7 +33,7 @@ neighbor 0.001 bin
neigh_modify delay 0 neigh_modify delay 0
#Material properties required for new pair styles #Material properties required for granular pair styles
fix m1 all property/global youngsModulus peratomtype 5.e6 fix m1 all property/global youngsModulus peratomtype 5.e6
fix m2 all property/global poissonsRatio peratomtype 0.45 fix m2 all property/global poissonsRatio peratomtype 0.45
@ -68,16 +68,15 @@ compute centerOfMass all com
#compute dragtotal all reduce sum f_dragforce[1] f_dragforce[2] f_dragforce[3] #compute dragtotal all reduce sum f_dragforce[1] f_dragforce[2] f_dragforce[3]
#screen output #screen output
compute 1 all erotate/sphere compute rke all erotate/sphere
thermo_style custom step atoms ke c_1 vol c_centerOfMass[3] #c_dragtotal[1] c_dragtotal[2] c_dragtotal[3] thermo_style custom step atoms ke c_rke vol c_centerOfMass[3] #c_dragtotal[1] c_dragtotal[2] c_dragtotal[3]
thermo 10 thermo 10
thermo_modify lost ignore norm no thermo_modify lost ignore norm no
compute_modify thermo_temp dynamic yes compute_modify thermo_temp dynamic yes
#insert the first particles so that dump is not empty #insert the first particles so that dump is not empty
dump myDump all stl 1 post/dump_*.stl dump myDump all stl 1 post/dump_*.stl
#run 1 dump dmp all custom 1000 ../DEM/post/dump*.liggghts_restart id type x y z vx vy vz fx fy fz radius
dump dmp all custom 1000 ../DEM/post/dump*.liggghts_restart id type type x y z vx vy vz fx fy fz radius #f_dragforce[1] f_dragforce[2] f_dragforce[3]
undump myDump undump myDump
run 1 run 1

View File

@ -89,8 +89,8 @@ functions
fields ( p U voidfraction volAverage_voidfraction voidfractionNext voidfractionPrev); fields ( p U voidfraction volAverage_voidfraction voidfractionNext voidfractionPrev);
// Write at same frequency as fields // Write at same frequency as fields
outputControl timeStep;//outputTime; writeControl timeStep;//outputTime;
outputInterval 1; writeInterval 1;
} }
} }

View File

@ -90,8 +90,8 @@ functions
fields ( p U voidfraction volAverage_voidfraction); fields ( p U voidfraction volAverage_voidfraction);
// Write at same frequency as fields // Write at same frequency as fields
outputControl timeStep;//outputTime; writeControl timeStep;//outputTime;
outputInterval 1; writeInterval 1;
} }
/*pressureDrop /*pressureDrop

View File

@ -1,4 +1,4 @@
# Pour granular particles into chute container, then induce flow # Pour granular particles into a cylinder, then induce flow
echo both echo both
atom_style granular atom_style granular
atom_modify map array atom_modify map array
@ -24,7 +24,7 @@ fix m3 all property/global coefficientRestitution peratomtypepair 1 0.3
fix m4 all property/global coefficientFriction peratomtypepair 1 0.5 fix m4 all property/global coefficientFriction peratomtypepair 1 0.5
# pair style # pair style
pair_style gran model hertz tangential history # Hertzian without cohesion pair_style gran model hertz tangential history
pair_coeff * * pair_coeff * *
# timestep, gravity # timestep, gravity
@ -55,7 +55,7 @@ compute_modify thermo_temp dynamic yes
# insert the first particles so that dump is not empty # insert the first particles so that dump is not empty
run 1 run 1
dump dmp all custom 5000 post/dump.liggghts_init id type x y z ix iy iz vx vy vz fx fy fz omegax omegay omegaz radius dump dmp all custom 5000 post/dump.liggghts_init id type x y z vx vy vz fx fy fz omegax omegay omegaz radius
#force : f_couple_cfd[0] f_couple_cfd[1] f_couple_cfd[2] #force : f_couple_cfd[0] f_couple_cfd[1] f_couple_cfd[2]
#node : f_couple_cfd[6] #node : f_couple_cfd[6]
#cell id : f_couple_cfd[7] #cell id : f_couple_cfd[7]

View File

@ -1,4 +1,4 @@
# Pour granular particles into chute container, then induce flow # Pour granular particles into a cylinder, then induce flow
log ../DEM/log.liggghts log ../DEM/log.liggghts
thermo_log ../DEM/post/thermo.txt thermo_log ../DEM/post/thermo.txt
@ -26,7 +26,7 @@ fix m3 all property/global coefficientRestitution peratomtypepair 1 0.3
fix m4 all property/global coefficientFriction peratomtypepair 1 0.5 fix m4 all property/global coefficientFriction peratomtypepair 1 0.5
# pair style # pair style
pair_style gran model hertz tangential history # Hertzian without cohesion pair_style gran model hertz tangential history
pair_coeff * * pair_coeff * *
# timestep, gravity # timestep, gravity

View File

@ -186,8 +186,8 @@ functions
fields ( p U voidfraction volAverage_voidfraction); fields ( p U voidfraction volAverage_voidfraction);
// Write at same frequency as fields // Write at same frequency as fields
outputControl timeStep;//outputTime; writeControl timeStep;//outputTime;
outputInterval 1; writeInterval 1;
} }
} }
// ************************************************************************* // // ************************************************************************* //

View File

@ -90,8 +90,8 @@ functions
fields ( p U voidfraction volAverage_voidfraction); fields ( p U voidfraction volAverage_voidfraction);
// Write at same frequency as fields // Write at same frequency as fields
outputControl timeStep;//outputTime; writeControl timeStep;//outputTime;
outputInterval 1; writeInterval 1;
} }
/*pressureDrop /*pressureDrop

View File

@ -1,4 +1,4 @@
# Pour granular particles into chute container, then induce flow # Pour granular particles into a cylinder, then induce flow
echo both echo both
atom_style granular atom_style granular
atom_modify map array atom_modify map array
@ -24,7 +24,7 @@ fix m3 all property/global coefficientRestitution peratomtypepair 1 0.3
fix m4 all property/global coefficientFriction peratomtypepair 1 0.5 fix m4 all property/global coefficientFriction peratomtypepair 1 0.5
# pair style # pair style
pair_style gran model hertz tangential history # Hertzian without cohesion pair_style gran model hertz tangential history
pair_coeff * * pair_coeff * *
# timestep, gravity # timestep, gravity
@ -55,7 +55,7 @@ compute_modify thermo_temp dynamic yes
# insert the first particles so that dump is not empty # insert the first particles so that dump is not empty
run 1 run 1
dump dmp all custom 5000 post/dump.liggghts_init id type x y z ix iy iz vx vy vz fx fy fz omegax omegay omegaz radius dump dmp all custom 5000 post/dump.liggghts_init id type x y z vx vy vz fx fy fz omegax omegay omegaz radius
#force : f_couple_cfd[0] f_couple_cfd[1] f_couple_cfd[2] #force : f_couple_cfd[0] f_couple_cfd[1] f_couple_cfd[2]
#node : f_couple_cfd[6] #node : f_couple_cfd[6]
#cell id : f_couple_cfd[7] #cell id : f_couple_cfd[7]

View File

@ -1,4 +1,4 @@
# Pour granular particles into chute container, then induce flow # Pour granular particles into a cylinder, then induce flow
log ../DEM/log.liggghts log ../DEM/log.liggghts
thermo_log ../DEM/post/thermo.txt thermo_log ../DEM/post/thermo.txt
@ -26,7 +26,7 @@ fix m3 all property/global coefficientRestitution peratomtypepair 1 0.3
fix m4 all property/global coefficientFriction peratomtypepair 1 0.5 fix m4 all property/global coefficientFriction peratomtypepair 1 0.5
# pair style # pair style
pair_style gran model hertz tangential history # Hertzian without cohesion pair_style gran model hertz tangential history
pair_coeff * * pair_coeff * *
# timestep, gravity # timestep, gravity

View File

@ -89,8 +89,8 @@ functions
fields ( p U voidfraction volAverage_voidfraction voidfractionNext voidfractionPrev); fields ( p U voidfraction volAverage_voidfraction voidfractionNext voidfractionPrev);
// Write at same frequency as fields // Write at same frequency as fields
outputControl timeStep;//outputTime; writeControl timeStep;//outputTime;
outputInterval 1; writeInterval 1;
} }
/*pressureDrop /*pressureDrop

View File

@ -90,8 +90,8 @@ functions
fields ( p U voidfraction volAverage_voidfraction); fields ( p U voidfraction volAverage_voidfraction);
// Write at same frequency as fields // Write at same frequency as fields
outputControl timeStep;//outputTime; writeControl timeStep;//outputTime;
outputInterval 1; writeInterval 1;
} }
/*pressureDrop /*pressureDrop

View File

@ -89,8 +89,8 @@ functions
fields ( p U voidfraction volAverage_voidfraction voidfractionNext voidfractionPrev); fields ( p U voidfraction volAverage_voidfraction voidfractionNext voidfractionPrev);
// Write at same frequency as fields // Write at same frequency as fields
outputControl timeStep;//outputTime; writeControl timeStep;//outputTime;
outputInterval 1; writeInterval 1;
} }
/*pressureDrop /*pressureDrop

View File

@ -89,8 +89,8 @@ functions
fields ( p U voidfraction volAverage_voidfraction voidfractionNext voidfractionPrev); fields ( p U voidfraction volAverage_voidfraction voidfractionNext voidfractionPrev);
// Write at same frequency as fields // Write at same frequency as fields
outputControl timeStep;//outputTime; writeControl timeStep;//outputTime;
outputInterval 1; writeInterval 1;
} }
/*pressureDrop /*pressureDrop

View File

@ -1,4 +1,4 @@
# Pour granular particles into chute container, then induce flow # Pour granular particles into a cylinder, then induce flow
echo both echo both
atom_style granular atom_style granular
atom_modify map array atom_modify map array
@ -24,7 +24,7 @@ fix m3 all property/global coefficientRestitution peratomtypepair 1 0.3
fix m4 all property/global coefficientFriction peratomtypepair 1 0.5 fix m4 all property/global coefficientFriction peratomtypepair 1 0.5
# pair style # pair style
pair_style gran model hertz tangential history # Hertzian without cohesion pair_style gran model hertz tangential history
pair_coeff * * pair_coeff * *
# timestep, gravity # timestep, gravity
@ -55,7 +55,7 @@ compute_modify thermo_temp dynamic yes
# insert the first particles so that dump is not empty # insert the first particles so that dump is not empty
run 1 run 1
dump dmp all custom 5000 post/dump.liggghts_init id type x y z ix iy iz vx vy vz fx fy fz omegax omegay omegaz radius dump dmp all custom 5000 post/dump.liggghts_init id type x y z vx vy vz fx fy fz omegax omegay omegaz radius
#force : f_couple_cfd[0] f_couple_cfd[1] f_couple_cfd[2] #force : f_couple_cfd[0] f_couple_cfd[1] f_couple_cfd[2]
#node : f_couple_cfd[6] #node : f_couple_cfd[6]
#cell id : f_couple_cfd[7] #cell id : f_couple_cfd[7]

View File

@ -1,4 +1,4 @@
# Pour granular particles into chute container, then induce flow # Pour granular particles into a cylinder, then induce flow
log ../DEM/log.liggghts log ../DEM/log.liggghts
thermo_log ../DEM/post/thermo.txt thermo_log ../DEM/post/thermo.txt
@ -26,7 +26,7 @@ fix m3 all property/global coefficientRestitution peratomtypepair 1 0.3
fix m4 all property/global coefficientFriction peratomtypepair 1 0.5 fix m4 all property/global coefficientFriction peratomtypepair 1 0.5
# pair style # pair style
pair_style gran model hertz tangential history # Hertzian without cohesion pair_style gran model hertz tangential history
pair_coeff * * pair_coeff * *
# timestep, gravity # timestep, gravity

View File

@ -1,4 +1,4 @@
# Pour granular particles into chute container, then induce flow # Pour granular particles into a cylinder, then induce flow
log ../DEM/log.liggghts log ../DEM/log.liggghts
thermo_log ../DEM/post/thermo.txt thermo_log ../DEM/post/thermo.txt
@ -26,7 +26,7 @@ fix m3 all property/global coefficientRestitution peratomtypepair 1 0.3
fix m4 all property/global coefficientFriction peratomtypepair 1 0.5 fix m4 all property/global coefficientFriction peratomtypepair 1 0.5
# pair style # pair style
pair_style gran model hertz tangential history # Hertzian without cohesion pair_style gran model hertz tangential history
pair_coeff * * pair_coeff * *
# timestep, gravity # timestep, gravity

View File

@ -27,7 +27,7 @@ fix m4 all property/global coefficientFriction peratomtypepair 1 0.5
#fix m5 all property/global characteristicVelocity scalar 2.0 #fix m5 all property/global characteristicVelocity scalar 2.0
# pair style # pair style
pair_style gran model hertz tangential history # hertz without cohesion pair_style gran model hertz tangential history
pair_coeff * * pair_coeff * *
# timestep, gravity # timestep, gravity
@ -68,6 +68,6 @@ compute_modify thermo_temp dynamic yes
# insert the first particles so that dump is not empty # insert the first particles so that dump is not empty
run 1 run 1
dump dmp all custom 1000 ../DEM/post/dump.liggghts_run id type x y z ix iy iz vx vy vz fx fy fz omegax omegay omegaz radius dump dmp all custom 1000 ../DEM/post/dump.liggghts_run id type x y z vx vy vz fx fy fz omegax omegay omegaz radius
run 1 upto run 1 upto

View File

@ -89,8 +89,8 @@ functions
fields ( p U voidfraction volAverage_voidfraction); fields ( p U voidfraction volAverage_voidfraction);
// Write at same frequency as fields // Write at same frequency as fields
outputControl timeStep;//outputTime; writeControl timeStep;//outputTime;
outputInterval 1; writeInterval 1;
} }
} }
// ************************************************************************* // // ************************************************************************* //

View File

@ -90,8 +90,8 @@ functions
fields ( p U voidfraction volAverage_voidfraction); fields ( p U voidfraction volAverage_voidfraction);
// Write at same frequency as fields // Write at same frequency as fields
outputControl timeStep;//outputTime; writeControl timeStep;//outputTime;
outputInterval 1; writeInterval 1;
} }
/*pressureDrop /*pressureDrop

View File

@ -72,8 +72,8 @@ functions
fields ( p T); fields ( p T);
// Write at same frequency as fields // Write at same frequency as fields
outputControl timeStep;//outputTime; writeControl timeStep;//outputTime;
outputInterval 1; writeInterval 1;
} }
} }
// ************************************************************************* // // ************************************************************************* //

View File

@ -1,4 +1,4 @@
# Particle packing by insertion and successive growing of particles # heattransfer in packed bed
atom_style granular atom_style granular
atom_modify map array atom_modify map array
@ -26,7 +26,7 @@ fix m3 all property/global coefficientRestitution peratomtypepair 1 0.3
fix m4 all property/global coefficientFriction peratomtypepair 1 0.5 fix m4 all property/global coefficientFriction peratomtypepair 1 0.5
# pair style # pair style
pair_style gran model hertz tangential history #Hertzian without cohesion pair_style gran model hertz tangential history
pair_coeff * * pair_coeff * *
timestep 0.00001 timestep 0.00001
@ -65,7 +65,7 @@ compute_modify thermo_temp dynamic yes
#insert the first particles #insert the first particles
run 1 run 1
dump dmp all custom 1000 post/dump.liggghts_init id type x y z ix iy iz vx vy vz fx fy fz omegax omegay omegaz radius f_heattransfer[0] f_heatFlux[0] dump dmp all custom 1000 post/dump.liggghts_init id type x y z vx vy vz fx fy fz omegax omegay omegaz radius f_heattransfer[0] f_heatFlux[0]
run 150000 run 150000

View File

@ -70,6 +70,6 @@ thermo 1000
thermo_modify lost ignore norm no thermo_modify lost ignore norm no
compute_modify thermo_temp dynamic yes compute_modify thermo_temp dynamic yes
dump dmp all custom 100 ../DEM/post/dump.liggghts_run id type x y z ix iy iz vx vy vz fx fy fz omegax omegay omegaz radius f_Temp[0] f_heatFlux[0] dump dmp all custom 100 ../DEM/post/dump.liggghts_run id type x y z vx vy vz fx fy fz omegax omegay omegaz radius f_Temp[0] f_heatFlux[0]
run 1 run 1

View File

@ -89,8 +89,8 @@ functions
fields ( p U T voidfraction volAverage_voidfraction); fields ( p U T voidfraction volAverage_voidfraction);
// Write at same frequency as fields // Write at same frequency as fields
outputControl timeStep;//outputTime; writeControl timeStep;//outputTime;
outputInterval 1; writeInterval 1;
} }
} }

View File

@ -1,4 +1,4 @@
# Pour granular particles into chute container, then induce flow # Pour granular particles into a cylinder, then induce flow
echo both echo both
atom_style granular atom_style granular
atom_modify map array atom_modify map array
@ -24,7 +24,7 @@ fix m3 all property/global coefficientRestitution peratomtypepair 1 0.3
fix m4 all property/global coefficientFriction peratomtypepair 1 0.5 fix m4 all property/global coefficientFriction peratomtypepair 1 0.5
# pair style # pair style
pair_style gran model hertz tangential history # Hertzian without cohesion pair_style gran model hertz tangential history
pair_coeff * * pair_coeff * *
# timestep, gravity # timestep, gravity
@ -55,7 +55,7 @@ compute_modify thermo_temp dynamic yes
# insert the first particles so that dump is not empty # insert the first particles so that dump is not empty
run 1 run 1
dump dmp all custom 5000 post/dump.liggghts_init id type x y z ix iy iz vx vy vz fx fy fz omegax omegay omegaz radius dump dmp all custom 5000 post/dump.liggghts_init id type x y z vx vy vz fx fy fz omegax omegay omegaz radius
#force : f_couple_cfd[0] f_couple_cfd[1] f_couple_cfd[2] #force : f_couple_cfd[0] f_couple_cfd[1] f_couple_cfd[2]
#node : f_couple_cfd[6] #node : f_couple_cfd[6]
#cell id : f_couple_cfd[7] #cell id : f_couple_cfd[7]

View File

@ -1,4 +1,4 @@
# Pour granular particles into chute container, then induce flow # Pour granular particles into a cylinder, then induce flow
log ../DEM/log.liggghts log ../DEM/log.liggghts
thermo_log ../DEM/post/thermo.txt thermo_log ../DEM/post/thermo.txt

View File

@ -1,4 +1,4 @@
# Pour granular particles into chute container, then induce flow # Pour granular particles into a cylinder, then induce flow
############################################### ###############################################
#variables #variables
@ -48,7 +48,7 @@ create_box 1 reg
neighbor 0.001 bin neighbor 0.001 bin
neigh_modify delay 0 neigh_modify delay 0
#Material properties required for new pair styles #Material properties required for granular pair styles
fix m1 all property/global youngsModulus peratomtype ${yM} fix m1 all property/global youngsModulus peratomtype ${yM}
fix m2 all property/global poissonsRatio peratomtype ${pR} fix m2 all property/global poissonsRatio peratomtype ${pR}
@ -82,8 +82,8 @@ fix integr all nve/sphere
fix ts_check all check/timestep/gran 10000 0.1 0.1 fix ts_check all check/timestep/gran 10000 0.1 0.1
#screen output #screen output
compute 1 all erotate/sphere compute rke all erotate/sphere
thermo_style custom step atoms ke c_1 vol thermo_style custom step atoms ke c_rke vol
thermo 10000 thermo 10000
thermo_modify lost ignore norm no thermo_modify lost ignore norm no
compute_modify thermo_temp dynamic yes compute_modify thermo_temp dynamic yes
@ -98,7 +98,7 @@ variable vcmz equal vcm(all,z)
variable vave equal sqrt(v_vcmx*v_vcmx+v_vcmy*v_vcmy+v_vcmz*v_vcmz) variable vave equal sqrt(v_vcmx*v_vcmx+v_vcmy*v_vcmy+v_vcmz*v_vcmz)
print ${vave} print ${vave}
dump dmp1 all custom/vtk 20000 ../DEM/post/dump*.liggghts_filling.vtk id type type x y z vx vy vz fx fy fz radius dump dmp1 all custom/vtk 20000 ../DEM/post/dump*.liggghts_filling.vtk id type x y z vx vy vz fx fy fz radius
run 200000 run 200000

View File

@ -1,4 +1,4 @@
# Pour granular particles into chute container, then induce flow # Pour granular particles into a cylinder, then induce flow
#variables #variables
@ -39,7 +39,7 @@ reset_timestep 0
neighbor 0.01 bin neighbor 0.01 bin
neigh_modify delay 0 neigh_modify delay 0
#Material properties required for new pair styles #Material properties required for granular pair styles
fix m1 all property/global youngsModulus peratomtype ${yM} fix m1 all property/global youngsModulus peratomtype ${yM}
fix m2 all property/global poissonsRatio peratomtype ${pR} fix m2 all property/global poissonsRatio peratomtype ${pR}
fix m3 all property/global coefficientRestitution peratomtypepair 1 ${rest} fix m3 all property/global coefficientRestitution peratomtypepair 1 ${rest}
@ -69,7 +69,6 @@ fix cylwalls all wall/gran model hertz tangential history primitive type 1 zcyli
# set group all density ${partDens} # set group all density ${partDens}
fix lb all balance 1000 xyz 10 1.05 out tmp.balance fix lb all balance 1000 xyz 10 1.05 out tmp.balance
@ -84,8 +83,8 @@ fix cfd3 all couple/cfd/convection T0 ${Tpart}
#screen output #screen output
variable totmass equal mass(all) variable totmass equal mass(all)
compute 1 all erotate/sphere compute rke all erotate/sphere
thermo_style custom step atoms ke c_1 vol v_totmass thermo_style custom step atoms ke c_rke vol v_totmass
thermo 1000 thermo 1000
thermo_modify lost ignore norm no thermo_modify lost ignore norm no
compute_modify thermo_temp dynamic yes compute_modify thermo_temp dynamic yes