/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: v1606+ | | \\ / A nd | Web: www.OpenFOAM.com | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; location "constant"; object particleProperties; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // /* Few references: [1]German OpenFOAM User meeting 2017 (GOFUN 2017), Particle Simulation with OpenFOAM: Introduction, Fundamentals and Applications by ROBERT KASPER, Chair of Modeling and Simulation, University of Rostock [2] LPT for erosion modeling in OpenFOAM: Differences between solidParticle and kinematicParcel, and how to add erosion modeling by Alejandro Lopez */ solution { active true; //Activate or deactivate the particle cloud coupled true; //Enable or disable phase coupling transient yes; //Transient or steady-state solution maxCo 0.3; //Maximum Courant (CFL) Number //Enable/disable correction of momentum transferred to the Eulerian phase cellValueSourceCorrection off; //Interpolation/integration schemes for the Lagrangian Particle Tracking and //treatment of source terms interpolationSchemes { rho.air cell; U.air cellPoint; mu.air cell; /*Available schemes are: cell, cellPatchConstrained, cellPoint cellPointFace, cellPointWallModified, pointMVC */ } integrationSchemes { U Euler; } sourceTerms { schemes { U semiImplicit 1; //explicit or semiImplicit, relaxCoeff for each of the fields } } } constantProperties // Properties of the particles (discrete phase) { parcelTypeId 1; rhoMin 1e-15; minParcelMass 1e-15; rho0 2526; youngsModulus 1e8; poissonsRatio 0.35; constantVolume false; alphaMax 0.99; //MPPCIFoam needs only rho0 and alphaMax } // Specify applicable forces on the particles subModels { particleForces { //sphereDrag; ErgunWenYuDrag { alphac alpha.air; } gravity; pressureGradient { U U; } /* paramagnetic { magneticSusceptibility -6.3e-9; //m^3/kg for graphite HdotGradH U; } */ /* virtualMass { Cvm 0.5; } */ /* nonInertialFrame { linearAccelerationName linearAc; linearAcceleration 10; angularVelocityName angVelo; angularVelocity 5; angularAccelerationName angAcc; angularAcceleration 5; } */ } injectionModels { model1 { /*type - options are: patchFlowRateInjection; patchInjection; cellZoneInjection; coneInjection, coneNozzleInjection, fieldActivatedInjection, inflationInjection, injectionModel, kinematicLookupTableInjection, manualInjection, noInjection manualInjection can be used for instant injections; PatchInjection allows time-dependent injection */ // type manualInjection; positionsFile "kinematicCloudPositions"; // If type = patchFlowRateInjection; or patchInjection; /* patchName inlet; duration 2; //Total duration of particle injection concentration 0.6; parcelsPerSecond 500; //Injected parcels/particles per second meanParticleDiameter 0.003; flowRateProfile constant 1; */ //--------------------------------------------------------------------- // options to represent particles. 'fixed', 'number' or 'mass' parcelBasisType fixed; massTotal 0; //Total mass to be injected (kg), unused when parcelBasisType=fixed. nParticle 1; //Number of particles per parcel SOI 0; //start of injection (time in [s]) U0 (0 0 0); //Initial parcel/particle velocity (U0) // Particle size variation - normal distribution or specified sizes sizeDistribution { type fixedValue; fixedValueDistribution { value 0.0025; } /* type normal; normalDistribution { expectation 650e-6; variance 25e-6; minValue 500e-6; maxValue 800e-6; } */ /* type RosinRammler; RosinRammlerDistribution { minValue 200e-6; maxValue 300e-6; d 250e-6; n 3; } */ } } } //Sub-models for particle behaviour //Turbulent dispersion models (Discrete Random Walk, Gradient Dispersion) dispersionModel none; patchInteractionModel localInteraction; //standardWallInteraction; localInteractionCoeffs { patches ( top { type rebound; //rebound, stick or escape e 0.97; mu 0.09; } bottom { type rebound; e 0.97; mu 0.09; } walls { type rebound; e 0.97; mu 0.09; } frontAndBack { type rebound; e 0.97; mu 0.09; } ); } StandardWallInteractionCoeffs { type rebound; e 0.97; mu 0.09; } heatTransferModel none; // Surface film model for dripping and film interaction surfaceFilmModel none; //absorb, bounce, splash collisionModel pairCollision; pairCollisionCoeffs { // Maximum possible particle diameter expected at any time maxInteractionDistance 0.0025; writeReferredParticleCloud no; pairModel pairSpringSliderDashpot; pairSpringSliderDashpotCoeffs { useEquivalentSize no; alpha 0.02; //function of coefficient of restitution b 1.50; //Spring power: b = 1 (linear) or b = 3/2 (Hertzian theory) mu 0.10; //Coefficient of friction cohesionEnergyDensity 0.0; collisionResolutionSteps 12; }; wallModel wallSpringSliderDashpot; wallSpringSliderDashpotCoeffs { useEquivalentSize no; collisionResolutionSteps 12; youngsModulus 1e8; poissonsRatio 0.23; alpha 0.01; b 1.5; mu 0.09; cohesionEnergyDensity 0; }; UName U.air; } stochasticCollisionModel none; //Particle collision: spring, slider+dash-pot radiation off; } // Use cloudFunctions to record particle tracks, calculate particle erosion ... cloudFunctions { /* particleErosion { functionObjectLibs ("libcloudFunctionObjects.so"); enabled true; outputControl outputTime; log true; valueOutput true; //yield stress for aluminium = 11000000 Pa or 11 MPa p 11000000; //Ratio of the depth of contact to the depth of cut (default value = 2 ) psi 2; //Ratio of vertical to horizontal force components (2 for angular abrassive grains) K 2; patches ( moving-wall ); } */ } // ************************************************************************* //