CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Pre-Processing (https://www.cfd-online.com/Forums/openfoam-pre-processing/)
-   -   kinematicCloudProperties details (https://www.cfd-online.com/Forums/openfoam-pre-processing/174534-kinematiccloudproperties-details.html)

cfdopenfoam July 14, 2016 04:33

kinematicCloudProperties details
 
dear, all.

I am happy if u r interested in this question. i started with a very simple solver, icoUncoupledKinematicParcelFoam in OF-2.3.0, and i also coupled it with the pimpleFoam. so i get a euler-lagrangian solver. but i do not think i have a very deep understanding of the lagrangian solution control. i searched a lot in this forum but found little about the kinematicCloudProperties dictionary. so this thread is started to dig into it, and i hope this can be done with you OF experts and can finnally help more people struggling on it.

I would like to invite you who are seeing this thread to post your questions/knowledge about every sub-dictionary/keyword in the kinematicCloudProperties dictionary, just do as this thread.

it looks like

Code:

solution
{
    active          true;
    coupled        false;
    transient      yes;
    cellValueSourceCorrection off;

    interpolationSchemes
    {
        rho            cell;
        U              cellPoint;
        mu              cell;
    }

    integrationSchemes
    {
        U              Euler;
    }
}

constantProperties
{
    rho0            1.2;          // Air + particel load ?
    youngsModulus  6e8;  // not sure about
    poissonsRatio  0.35;    // not sure about
}

subModels
{
    particleForces
    {
        sphereDrag;
        gravity;
    }

    injectionModels
    {
        model1
        {
            type            patchFlowRateInjection;
        patchName        inlet;
        duration        2;
        concentration  0.6;              // parcel concentration in my fluid?     
            parcelsPerSecond 500;
        meanParticleDiameter 0.003;  // for what?
 
        nParticle        1000;            // max particle in domain ?

            massTotal      0.5;          // max mass in the domain ?

            parcelBasisType fixed;    // dont know
            SOI            0;                    // ?
            sizeDistribution
            {
                type        fixedValue;          // particle have fixed sizes
                fixedValueDistribution        // the sizes the particels can have ?
                {
                    value  0.006;           
            value  0.01;
                    value  0.001;
                    value  0.015;
            value  0.004;
            value  0.009;
                }
            }
        }
    }

    dispersionModel none;

    patchInteractionModel none;

    surfaceFilmModel none;

    collisionModel pairCollision;

    pairCollisionCoeffs
    {
        maxInteractionDistance  0.006;

        writeReferredParticleCloud no;

        pairModel pairSpringSliderDashpot;

        pairSpringSliderDashpotCoeffs
        {
            useEquivalentSize  no;
            alpha              0.12;
            b                  1.5;
            mu                  0.52;
            cohesionEnergyDensity 0;
            collisionResolutionSteps 12;
        };

        wallModel    wallLocalSpringSliderDashpot;

        wallLocalSpringSliderDashpotCoeffs
        {
            useEquivalentSize no;
            collisionResolutionSteps 12;
            ".*Wall"
            {
                youngsModulus  1e10;
                poissonsRatio  0.23;
                alpha          0.12;
                b              1.5;
                mu              0.43;
                cohesionEnergyDensity 0;
            }
        };
    }
}

theoretical (mathematic/physical) background and solution control implementation at the programming level are welcome. the more details or reference, the better.

hope more people interested in the OF's lagrangian world could contribute this thread and make it clear. i will also keep this post updated if i make a progress.

best,
/karekle

vonboett April 4, 2017 08:06

Hi, I am not so familiar with this injection model, but SOI is the time where your particles will be injected into the simulation. IcoUncoupledKinematicParcel does not couple the CFD with the particles, the particles are yust passive tracers that take over the velocity field. However, one can use it to get an initial settled particle bed when using particleForces {gravity;}. Good coupling is implemented in DPMFOAM or pimpleLPTbubbleFoam. Good validation is in Franziska Greifzu, Christoph Kratzsch, Thomas Forgber, Friederike Lindner &
Rüdiger Schwarze (2016) Assessment of particle-tracking models for dispersed particle-laden flows
implemented in OpenFOAM and ANSYS FLUENT, Engineering Applications of Computational Fluid
Mechanics, 10:1, 30-43, DOI: 10.1080/19942060.2015.1104266

decah April 7, 2017 13:04

Hi karelke

Here are some of the answers to your questions in red text.

Quote:

Originally Posted by cfdopenfoam (Post 609388)

Code:

solution
{
    active          true;
    coupled        false;
    transient      yes;
    cellValueSourceCorrection off;

    interpolationSchemes
    {
        rho            cell;
        U              cellPoint;
        mu              cell;
    }

    integrationSchemes
    {
        U              Euler;
    }
}

constantProperties
{
    rho0            1.2;          // particle density (kg/m3)
    youngsModulus  6e8;  // constant of proportionality relating the deformation to the applied stress for your particles (N/m2)
    poissonsRatio  0.35;    // ratio of traverse to axial strain for your particles (dimensionless)
}

subModels
{
    particleForces
    {
        sphereDrag;
        gravity;
    }

    injectionModels
    {
        model1
        {
            type            patchFlowRateInjection;
        patchName        inlet;
        duration        2;
        concentration  0.6;              // parcel concentration in my fluid?     
            parcelsPerSecond 500;
        meanParticleDiameter 0.003;  // for what?
 
        nParticle        1000;            // number of particles to be injected

            massTotal      0.5;          //total mass to be injected (kg)

            parcelBasisType fixed;    // options of how to represent your particles. besides 'fixed' they can be represented by 'number' or 'mass'
            SOI            0;                    // start of injection (time)
            sizeDistribution
            {
                type        fixedValue;          // particle have fixed sizes Yes
                fixedValueDistribution        // the sizes the particels can have ? Yes. Instead of specifying each individual size you could use a size distribution profile i.e. type normal;
                {
                    value  0.006;           
            value  0.01;
                    value  0.001;
                    value  0.015;
            value  0.004;
            value  0.009;
                }
            }
        }
    }

    dispersionModel none;

    patchInteractionModel none;

    surfaceFilmModel none;

    collisionModel pairCollision;

    pairCollisionCoeffs
    {
        maxInteractionDistance  0.006;

        writeReferredParticleCloud no;

        pairModel pairSpringSliderDashpot;

        pairSpringSliderDashpotCoeffs
        {
            useEquivalentSize  no;
            alpha              0.12;
            b                  1.5;
            mu                  0.52;
            cohesionEnergyDensity 0;
            collisionResolutionSteps 12;
        };

        wallModel    wallLocalSpringSliderDashpot;

        wallLocalSpringSliderDashpotCoeffs
        {
            useEquivalentSize no;
            collisionResolutionSteps 12;
            ".*Wall"
            {
                youngsModulus  1e10;
                poissonsRatio  0.23;
                alpha          0.12;
                b              1.5;
                mu              0.43;
                cohesionEnergyDensity 0;
            }
        };
    }
}



amod_kumar November 24, 2017 08:01

kinematicCloudProperties details
 
1 Attachment(s)
Hello,
I am also looking for detail description of dictionaries used in LPT simulations. I came across few articles and have tried to write comments in a sample kinematicCloudProperties file.

Hope this helps!
Amod

Zhang PJ December 20, 2018 01:34

Hello,
You can turn to the langragian submodel code in the src folder.
For OpenFOAM-5.0, I have the PatchFlowRateInjection.H in src/lagrangian/intermediate/submodels/Kineamtic/InjectionModel/PatchFlowRateInjection/, as presented below.

...

Description
Patch injection, by using patch flow rate to determine concentration and velocity.

User specifies:
- Total mass to inject
- Name of patch
- Injection duration
- Injection target concentration/carrier volume flow rate

Properties:
- Initial parcel velocity given by local flow velocity
- Parcel diameters obtained by distribution model
- Parcels injected randomly across the patch

SourceFiles
PatchFlowRateInjection.C

\*---------------------------------------------------------------------------*/

#ifndef PatchFlowRateInjection_H
#define PatchFlowRateInjection_H

#include "InjectionModel.H" //Please refer to this header file too
#include "patchInjectionBase.H" //Please refer to this header file too
#include "TimeFunction1.H"

// * * * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * //

namespace Foam
{

class distributionModel;

/*---------------------------------------------------------------------------*\
Class PatchFlowRateInjection Declaration
\*---------------------------------------------------------------------------*/

template<class CloudType>
class PatchFlowRateInjection:
public InjectionModel<CloudType>,
public patchInjectionBase
{
// Private data

//- Name of carrier (mass or volume) flux field
const word phiName_;

//- Name of carrier density field
const word rhoName_;

//- Injection duration [s]
scalar duration_;

//- Concentration profile of particle volume to carrier volume [-]
const TimeFunction1<scalar> concentration_;

//- Parcels to introduce per unit volume flow rate m3 [n/m3]
const scalar parcelConcentration_;

//- Parcel size distribution model
const autoPtr<distributionModel> sizeDistribution_;
...

By refering to those header files, you can know the required properties of a specific submodel. Besides, if you don't now the available choice for a property, just type in "banana" and excute the foam case. Then you will find available choices listed in the terminal.

stamufa June 17, 2019 03:52

Hey,

A quick clarification on what the "Transient" keyword in this case means. The transient nature of the solution is decided by the solver, so if we for instance do a pimpleFoam solution and then switch off the transient keyword in particle properties, what are we to expect?

Best,
Mustafa

Ramkumar21194 December 3, 2019 06:49

Hi guys, i am also solving the same particle tracking problem, i need massless particles which basically should go along the flow. I tried icoUncoupledKinematicParcelFoam but cant achieve the exact massless type.
i saw on a different old thread to increase the drag coefficient for the particle to stick to the flow field, i dont know where to specify that. could someone please help?

granzer October 5, 2021 08:57

Quote:

Originally Posted by stamufa (Post 736455)
Hey,

A quick clarification on what the "Transient" keyword in this case means. The transient nature of the solution is decided by the solver, so if we for instance do a pimpleFoam solution and then switch off the transient keyword in particle properties, what are we to expect?

Best,
Mustafa

Hey Mustafa,
Did you find an answer to what happens when the "transient" switch is set to "no"?

granzer October 5, 2021 09:51

Quote:

Originally Posted by stamufa (Post 736455)
Hey,

A quick clarification on what the "Transient" keyword in this case means. The transient nature of the solution is decided by the solver, so if we for instance do a pimpleFoam solution and then switch off the transient keyword in particle properties, what are we to expect?

Best,
Mustafa

Hey Mustafa,
Did you find an answer to what happens when the "transient" switch is set to "no"?

Ok found the answers here : LPT_for_erosionModelling_report

ErenC January 7, 2022 06:20

Lets say I specified:
constantProperties
{
rho0 3500;

}


InjectionModels
{
model1
{

ParcelerSecond 1e3;
SOI 0.01;
duration 10;
}
}

And my average particle diameter (D) is 1e-4. I can basically calculate:
rho*4/3*pi*(D/2)^3*(parcelPerSecond)*(duration-SOI)

This should gave me the total mass injected to the system. So why do we have massTotal? I don't really see the point of the entry. It is confusing.

Shah Akib Sarwar February 11, 2022 21:19

I am a beginner to this, but I believe massTotal is unused when parcelBasisType is set to "fixed".


All times are GMT -4. The time now is 08:26.