CFD Online Discussion Forums

CFD Online Discussion Forums (http://www.cfd-online.com/Forums/)
-   OpenFOAM Running, Solving & CFD (http://www.cfd-online.com/Forums/openfoam-solving/)
-   -   Centripetal forces on particles in incompressible fluid (http://www.cfd-online.com/Forums/openfoam-solving/110533-centripetal-forces-particles-incompressible-fluid.html)

sam1984_b December 13, 2012 11:15

Centripetal forces on particles in incompressible fluid
 
Hi all,

I am trying to simulate very small oil droplets in water, in a rotating reference frame. I would like to use icoUncoupledKinematicParcelFoam, as the problem is an incompressible one and I would like to uncouple the particles from the flow. However, I am struggling to implement the centripetal/Coriolis forces on the particle.

As far as I can see, my options for particle forces include NonInertialFrame and SRF, neither of which seem to work.

When I put in a NonInertialFrame in the kinematicCloudProperties, as

particleForces
{ nonInertialFrame
{omega (0 0 180);
centreOfRotation (0 0 0);
}}


It compiles and runs but the particles stay perfectly still! It's always worrying when I can replace that code with nonInertialFrame {blah blah;} and get the same result.

When I try and use SRF I get the error message:
request for SRFModel SRFProperties from objectRegistry region0 failed
available objects of type SRFModel are 0 ( )

So I guess the solver doesn't know to supply the SRF data. Please could someone advise, I would be happy fixing either of the above, or putting in a custom code to define the particle forces.

Thanks in advance,

Sam

vikramaditya91 July 29, 2016 03:43

I have the same problem as above
 
Hey,

I have 2 questions about the post above:

1) I am stuck in the exact same problem of not being able to provide an SRF force. I get this error when I try to do some Lagrangian particle tracking using the icoUncoupledKineticParcelFoam on a case which has flow field results from an SRFPimpleFoam solver.
From what I understand in the error, it seems that objectRegistry does not have the SRFProperties file loaded in it. I tried to go to the place where it actually loads the file and I came across this particular piece of code located in $FOAM_SRC/lagrangian/intermediate/submodels/Kinematic/ParticleForces/SRF in OpenFOAM3.0.1

Code:

template<class CloudType>
void Foam::SRFForce<CloudType>::cacheFields(const bool store)
{
    if (store)
    {
        const typename SRF::SRFModel& model = this->mesh().template
            lookupObject<SRF::SRFModel>("SRFProperties");
        srfPtr_ = &model;
    }
    else
    {
        srfPtr_ = NULL;
    }
}

Do you have any suggestions on how I can let the SRFForce file know that I already have a SRFProperties file in the constant/ directory.


https://drive.google.com/file/d/0B7O...ew?usp=sharing

I have attached a modified tutorial case (2DRotor), on which you can recreate the problem by first running "SRFPimpleFoam" which will output results of velocity and pressure flow fields. Then run "icoUncoupledKineticParcelFoam" which gives the error that
Code:

request for SRFModel SRFProperties from objectRegistry region0 failed
available objects of type SRFModel are 0 ( )


2) My second question is about what Sam posted above. He said he wanted to use the NonIntertialFrame forces as well. I do not get the reasoning behind using the NonInterialFram forces because the SRFForce makes a correction of exactly that, while also taking densities of the particle and fluid also into account with this line of code:
Code:

    // Coriolis and centrifugal acceleration terms
    value.Su() =
        mass*(1.0 - p.rhoc()/p.rho())
      *(2.0*(p.U() ^ omega) + (omega ^ (r ^ omega)));

Regards

vikramaditya91 July 29, 2016 05:15

Quick Update
 
This error doesnt seem to appear now after I made these changes. It seems that the SRFProperties file wasnt even read earlier. Adding these lines to the createFields.H seems to make the error go away. I have not tested this just yet, will edit this post soon

Code:

Info<< "Reading field Urel\n" << endl;
volVectorField Urel
(
    IOobject
    (
        "Urel",
        runTime.timeName(),
        mesh,
        IOobject::MUST_READ,
        IOobject::AUTO_WRITE
    ),
    mesh
);

Info<< "Creating SRF model\n" << endl;
autoPtr<SRF::SRFModel> SRF(SRF::SRFModel::New(Urel));



All times are GMT -4. The time now is 04:48.