CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Running, Solving & CFD (https://www.cfd-online.com/Forums/openfoam-solving/)
-   -   Steady microchannel simulation with simpleFoam (https://www.cfd-online.com/Forums/openfoam-solving/152343-steady-microchannel-simulation-simplefoam.html)

NiFl April 29, 2015 05:32

Steady microchannel simulation with simpleFoam
 
Hi,

I am trying to simulate an existing microchannel setup with simpleFoam. I use laminar flow, as there shouldn't be turbulences at that scale. This is my layout:

0==============
||||||||||||||||||||||||||||||||||||||
||||||||||||||||||||||||||||||||||||||
||||||||||||||||||||||||||||||||||||||
===============0

One inlet, one outlet (the 0s), two wider manifolds (===) and 60 small channels connecting the manifolds (|||).

I have pressure versus flow results from the real experiment, but the simulation is far off these values.
Here are my p/U fvScheme/fvSolution:

U:
Code:

FoamFile
{
  version    2.0;
  format      ascii;
  class      volVectorField;
  object      U;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //                                                                                                                                                               

dimensions      [0 1 -1 0 0 0 0]; // [m/s]                                                                                                                                                                                                   

internalField  uniform (0 0 0);

boundaryField
{

  inlet
    {
      type        fixedValue; // incompressible -> Q=A*v                                                                                                                                                                                     
      value      uniform (0 0 0.21);
    }

  outlet
    {
      type            zeroGradient;
    }

  wall
    {
      type            fixedValue;
      value          uniform (0 0 0);
    }
}

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

p:
Code:

FoamFile
{
    version    2.0;
    format      ascii;
    class      volScalarField;
    object      p;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //                                                                                                                                                               

dimensions      [0 2 -2 0 0 0 0];

internalField  uniform 0;

boundaryField
{

    inlet
    {
        type            zeroGradient;
    }

    outlet
    {
        type            fixedValue;
        value          uniform 0;
    }

    wall
    {
        type            zeroGradient;
    }
}

fvSolution:
Code:

FoamFile
{
    version    2.0;
    format      ascii;
    class      dictionary;
    location    "system";
    object      fvSolution;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //                                                                                                                                                               

solvers
{
    p
      {
        solver          GAMG;
        tolerance        1e-7;
        relTol          0.001;
        minIter          5;
        maxIter          100;
        smoother        GaussSeidel; // DIC; //DICGaussSeidel; //FDIC;                                                                                                                                                                       
        nPreSweeps      1;
        nPostSweeps      3;
        nFinestSweeps    3;
        scaleCorrection true;
        directSolveCoarsest false;
        cacheAgglomeration on;
        nCellsInCoarsestLevel 50;    // 500                                                                                                                                                                                                   
        agglomerator    faceAreaPair;
        mergeLevels      1;    // 3                                                                                                                                                                                                           
      }

    "(U|k|epsilon)"
      {
        solver          smoothSolver;
    smoother        GaussSeidel;
    tolerance        1e-6;
    relTol          0.01;
    nSweeps          1;
    maxIter100;
      };
}

SIMPLE
{
  nNonOrthogonalCorrectors 0;
    residualControl
      {
          p              1e-2;
          U              1e-3;
    "(k|epsilon)"  1e-3;
      }
}

relaxationFactors
{
  p              0.3;
  U              0.7;
  k              0.5;
  epsilon        0.5;
  R              0.5;
  nuTilda        0.5;
}

cache
{
  grad(U);
}

fvSchemes
Code:

FoamFile
{
  version    2.0;
  format      ascii;
  class      dictionary;
  location    "system";
  object      fvSchemes;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //                                                                                                                                                               

ddtSchemes
{
 default        steadyState;
}

gradSchemes
{
 default        Gauss linear;
}

divSchemes
{
 default        none;
 div(phi,U)      bounded Gauss limitedLinearV 1;
 div(phi,k)      bounded Gauss limitedLinear 1;
 div(phi,epsilon) bounded Gauss limitedLinear 1;
 div(phi,R)      bounded Gauss limitedLinear 1;
 div(R)          Gauss linear;
 div(phi,nuTilda) bounded Gauss limitedLinear 1;
 div((nuEff*dev(T(grad(U))))) Gauss linear;
}

laplacianSchemes
{
 default        Gauss linear limited 0.33;                     
}

interpolationSchemes
{
 default        linear;
}

snGradSchemes
{
 default        limited 0.33; //corrected;                                                                                                                                                                                                   
}

fluxRequired
{
  p;
}

I use the sample function to get the pressure at inlet and outlet with following sampleDict:
Code:

FoamFile
{
  version    2.0;
  format      ascii;
  class      dictionary;
  object      sampleDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //                                                                                                                                                                 
// see /OpenFOAM-2.3.0/applications/utilities/postProcessing/sampling/ for manual                                                                                                                                                             


setFormat raw;

surfaceFormat vtk;

formatOptions
{
  ensight
    {
      format  ascii;
    }
}

interpolationScheme cellPoint;

fields
(
 p
 U
 );

surfaces
(
  inlet_interpolated
    {
      type            patch;
      patches        ( ".*inlet.*" );
      interpolate    true;
      // Optional: whether to leave as faces (=default) or triangulate                                                                                                                                                                       
      // triangulate    false;                                                                                                                                                                                                               
    }
  outlet_interpolated
    {
      type            patch;
      patches        ( ".*outlet.*" );
      interpolate    true;
      // Optional: whether to leave as faces (=default) or triangulate                                                                                                                                                                       
      // triangulate    false;                                                                                                                                                                                                               
    }
 );

The pressure at the outlet is of course 0, but the pressure at the inlet gives me for example at v=0.21 m/s=10 ml/min a pressure of -32.76 which I have to multiplicate with rho to get Pa (is that right?) that is 0.5 bar but it should be 1.2 bar.

Am I missing something like fluid-wall interactions or special micro-scale settings?
I'm quite new to OpenFoam, as you can guess...


All times are GMT -4. The time now is 14:12.