مقدمه و حل جریان توسعه یافته داخل لوله – قسمت 2/2

تست شده در OF 2.3

در قسمت اول این آموزش به بررسی نحوه تولید یک شبکه توسط ابزار بلاکمش پرداخته شد. همچنین نحوه تولید یک مساله جدید در اُپنفوم توضیح داده شد. اما در قسمت دوم این آموزش یاد خواهیم گرفت:

  • تنظیم شرط مرزی از نوع Mapped
  • حل مساله و مشاهده نتایج در پاراویو
  • وارد کردن شبکه از گمبیت به اُپنفوم

اما از مساله ای که در قسمت اول بحث شد، فعلا فقط شبکه آن آماده شده است. لازم است تا در این قسمت شرایط مرزی و همچنین تنظیمات مربوط به حل، اعمال شوند. شرایط مرزی یک مساله در اُپنفوم در داخل پوشه 0 قرار می گیرد. این پوشه در پوشه اصلی مساله قرار دارد. در حالت کلی یک مساله اُپنفوم باید حاوی سه پوشه باشد. پوشه های 0، constant و system. در پوشه صفر همانطور که گفته شد، شرایط مرزی تعریف می شوند. در پوشه constant علاوه بر شبکه (که قبلا توضیح داده شد) یک سری ثوابت و تنظیمات دیگر اعمال می شوند. مثلا تعیین مقدار ویسکوزیته سینماتیک، آرام یا آشفته بودن جریان و غیره. پوشه system نیز حاوی تنظیمات اصلی حلگر و همچنین اسکیم های گسسته سازی معادلات می باشد.

  • تعریف شرایط مرزی

برای تعریف شرایط مرزی، هر پارامتر (مثل فشار یا سرعت) دارای فایل مخصوص به خود در پوشه 0 است. در هرکدام از این فایل ها، شرایط مرزی مربوط به هرکدام از مرزها تعریف می شوند. در مساله حاضر که از حلگر icoFoam برای حل استفاده می کند، تنها دو پارامتر فشار (p) و سرعت (U) موجودند. شرایط مرزی بسیار زیادی در اُپنفوم موجود است. کاربر باید با تجربه ای که به مرور زمان کسب می کند و همچنین با دانشی که از CFD در اختیار دارد، بهترین شرط مرزی را انتخاب کند. در مساله حاضر تنها سه مرز موجودند و برای هرکدام باید شرایط مرزی مربوط به فشار و سرعت داده شوند. اما شروط مرزی برای فشار به شکل زیر خواهند بود:

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

internalField   uniform 0;

boundaryField
{
    inlet
    {
        type            zeroGradient;
    }

    outlet
    {
        type            fixedValue;
        value           uniform 0;
    }

    walls
    {
        type            zeroGradient;
    }

}

برای فشار در ورودی و روی دیوارها معمولا از شرط مرزی گرادیان صفر استفاده می شود. یعنی هیچ شار فشاری از درون این مرزها عبور نمی کند. اما برای خروجی از شرط مرزی دیریکله با مقدار ثابت استفاده می شود. این مقدار در اینجا صفر در نظر گرفته شده اما می توان از هر مقداری برای آن استفاده کرد. دلیل این امر این است که در مسائل غیر قابل تراکم تنها اختلاف فشار مهم است و نه مقدار مطلق آن. حال فرض کنید می خواستیم این مساله را به صورت عادی و بدون استفاده از شرط مرزی Mapped حل کنیم. در این صورت شرط مرزی سرعت برای این سه مرز به شکل زیر تعریف میشد:

dimensions      [0 1 -1 0 0 0 0];

internalField   uniform (0 0 0);

boundaryField
{
    inlet
    {
        type                fixedValue;
        value               uniform (0 0 0.01);
    }

    outlet
    {
        type                zeroGradient;
    }

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

}

در اینجا برای دیوار، شرط مرزی دیریکله با مقدار صفر در نظر گرفته می شود. توجه شود که سرعت یک کمیت برداری است. برای ورودی لازم است مقدار سرعت جریان ورودی به آن داده شود. در خروجی نیز معمولا از شرط مرزی گرادیان صفر برای سرعت استفاده می شود. اما در این مساله قرار است از شرط مرزی Mapped استفاده شود. همانگونه که در قسمت اول این آموزش هم توضیح داده شده، این شرط مرزی در هر گام زمانی مقدار پارامتر را در یک مرز روی مرز دیگر قرار می دهد. در اینجا می خواهیم اطلاعات مربوط به سرعت را از خروجی به ورودی منتقل کنیم. با تکرار این کار به صورت متوالی و در هر گام زمانی، به تدریج جریان توسعه یافته خواهد شد. به دلیل کوپلینگ بین فشار و سرعت در معادله مومنتوم، نیازی به انتقال پارامتر فشار از خروجی به ورودی نیست. اما برای اعمال این شرط مرزی لازم است تا دو تغییر در مساله داده شود.

در ابتدا لازم است تا در داخل فایل boundary موجود در پوشه polyMesh نوع شرط مرزی inlet (ورودی) تغییر داده شود. قبلا گفته شد که در این فایل تنها 6 شرط مرزی کلی تعریف می شوند. اما در این مساله خاص، به استثناء از یک شرط مرزی دیگری به نام MappedPatch استفاده خواهد شد. این شرط مرزی به این شکل تعریف می شود:

3
(
    inlet
    {
        type            mappedPatch;
        nFaces          800;
        startFace       46000;
        sampleMode      nearestCell;
        sampleRegion    region0;
        samplePatch     none;
        offsetMode      uniform;
        offset          (0 0 1);
    }
    outlet
    {
        type            patch;
        nFaces          800;
        startFace       46800;
    }
    walls
    {
        type            wall;
        inGroups        1(wall);
        nFaces          2400;
        startFace       47600;
    }
)

همانطور که مشاهده می شود در این شرط مرزی از یک Offset برای نمونه گیری استفاده می شود. در این شرط مرزی گفته شده که اطلاعات از یک سطح به فاصله 1 متری در جهت z روی مرز inlet قرار داده شود. این 1 متر در حقیقت همان فاصله بین ورودی از خروجی لوله است. اما قسمت بعدی مربوط به فایل U موجود در پوشه 0 می شود. در این فایل در ورودی لازم است تا از شرط مرزی Mapped استفاده شود:

dimensions      [0 1 -1 0 0 0 0];

internalField   uniform (0 0 0);

boundaryField
{
    inlet
    {
        type                mapped;
        value               uniform (0 0 0.01);
        interpolationScheme cell;
        setAverage          true;
        average             (0 0 0.01);
    }

    outlet
    {
        type                zeroGradient;
    }

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

}

اما در اینجا باید مقدار سرعت ورودی نیز به مساله داده شود. در قسمت value و average لازم است به ترتیب مقدار سرعت ورودی و متوسط آن (که به دلیل یکنواخت بودن سرعت در ورودی همان برابر با سرعت ورودی خواهد بود) به شرط مرزی داده شود. حال مساله آماده حل برای استفاده از این نوع شرط مرزی است.

اما در پوشه constant علاوه بر اینکه شبکه در داخل پوشه polyMesh قرار گرفته، لازم است تا مقدار ویسکوزیته سینماتیک که یک ثابت در معادله مومنتوم می باشد تعیین شود. این مقدار در داخل فایلی به نام transportPeroperties تعیین می شود.

nu              nu [ 0 2 -1 0 0 0 0 ] 1e-02;

همچنین دقت شده است که در اینجا جریان آرام باشد. در داخل لوله جریان وقتی آرام است که عدد رینولدز کمتر از 2300 باشد. با محاسبه قطر هیدرولیکی برای مقطع مستطیلی خواهیم داشت:

D = 4A/p = 1.33 m

سپس با استفاده از فرمول عدد رینولدز داریم:

Re = VD/nu = 1.33

بنابراین جریان آرام است.و اما در انتها و در پوشه system، سه فایل اساسی یک مساله اُپنفوم قرار دارند. فایل اول controlDict به عنوان مهمترین فایل مساله، حاوی حلگر مورد استفاده، گام زمانی، نحوه ذخیره سازی گام ها و بسیاری از تنظیمات دیگر است که به مرور در آموزش ها به آنها اشاره خواهد شد. همچنین این فایل حاوی Function Object های تعریف شده توسط کاربر خواهد بود. در اینجا مقدار گام زمانی، گام زمانی شروع به حل و همچنین مقدار زمان حل مشخص می شوند. برای پایا شدن حل لازم است تا مقدار زمان انتهایی، مناسب در نظر گرفته شود. معیار محاسبه گام زمانی نیز عدد کورانت می باشد که بهتر است در حین حل مساله کمتر از یک باشد.

application     icoFoam;

startFrom       latestTime;

startTime       0;

stopAt          endTime;

endTime         100;

deltaT          0.1;

writeControl    runTime;

writeInterval   0.2;

purgeWrite      0;

writeFormat     ascii;

writePrecision  6;

writeCompression off;

timeFormat      general;

timePrecision   6;

runTimeModifiable true;

در فایل دوم، fvSchemes، اسکیم های گسسته سازی معادلات تعیین می شوند. در حلگر icoFoam تنها یک معادله ناویر استوکس حل خواهد شد. لازم است برای همه جمله های موجود در این معادله اعم از گرادیان فشار، پخشندگی (Laplacian) و جابجایی (divSchemes) اسکیم های گسسته سازی تعیین شوند. اما فعلا لزومی ندارد کاربر با انواع مختلف اسکیم های گسسته سازی دست و پنجه نرم کند. فعلا می توان از همین اسکیم های در نظر گرفته شده برای مساله cavity برای مساله حاضر نیز استفاده کرد.

ddtSchemes
{
    default         Euler;
}

gradSchemes
{
    default         Gauss linear;
    grad(p)         Gauss linear;
}

divSchemes
{
    default         none;
    div(phi,U)      Gauss linear;
}

laplacianSchemes
{
    default         Gauss linear orthogonal;
}

interpolationSchemes
{
    default         linear;
}

snGradSchemes
{
    default         orthogonal;
}

fluxRequired
{
    default         no;
    p               ;
}

فایل آخر، fvSolution حاوی تنظیمات مربوط به حلگر های ماتریس است. همانطور که می دانید در حل یک معادله به روش عددی ابتدا اسکیم های گسسته سازی، معادلات حل را به یک سری معادلات جبری محدود درون هر یک المان تبدیل می کنند. این کار باعث به وجود آمدن معادلات جبری چند مجهولی خواهند بود که می توان آنها را به شکل ماتریس نوشت. این ماتریس ها را می توان به روش های مختلف، مثلا روش گاوس سیدل، حل کرد. در فایل fvSolution این حلگرها تعیین می شوند. همچنین مقدار خطای حل (Tolerance) برای هرکدام پارامترهای تعیین می شود. در ادامه و در فایل fvScehmes، تنظیمات مربوط به الگوریتم کوپلینگ سرعت و فشار نیز تعیین می شوند. برای نموه از این الگوریتم ها می توان به SIMPLE و یا PIMPLE اشاره کرد. همچنین در انتهای این فایل معمولا Relaxation Factor ها نیز تعریف می شوند.

solvers
{
    p
    {
        solver          PCG;
        preconditioner  DIC;
        tolerance       1e-06;
        relTol          0;
    }

    U
    {
        solver          smoothSolver;
        smoother        symGaussSeidel;
        tolerance       1e-05;
        relTol          0;
    }
}

PISO
{
    nCorrectors     2;
    nNonOrthogonalCorrectors 0;
    pRefCell        0;
    pRefValue       0;
}

حال مساله آماده حل است.

  • حل مساله و مشاهده نتایج در پاراویو

برای حل مساله کافیست تا نام حلگر وارد شود. یعنی بعد از وارد شدن به پوشه مساله توسط ترمینال، کافیست دستور زیر وارد شود:

icoFoam

حال مساله شروع به حل خواهد کرد. پس از حدود 20 ثانیه، مساله پایا خواهد شد. برای دیدن نتایج از پاراویو استفاده خواهیم کرد:

paraFoam

حال لازم است تا ابتدا مثل قبل، تمام مرزهای هندسه انتخاب شوند. در ادامه لازم است هر دو پارامتر فشار و سرعت انتخاب شوند. با کلیک بر روی دکمه Apply، هندسه و پارامترها لود خواهند شد. حال می توان به راحتی و با استفاده از ابزارهای مختلف نرم افزار پاراویو نتایج را مشاهده کرد. برای دیدن پروفیل سرعت در داخل لوله می توان از ابزار Slice استفاده کرد. با انتخاب این ابزار، جهت برش را در جهت عمود بر z قرار خواهیم داد:

7

7_2

پس از اعمال این ابزار با دکمه Apply لازم است تا به گام زمانی انتهایی برویم تا نتایج را در انتهای حل مشاهده کنیم.

8

حال می توان از بین پارامتر های موجود (فشار یا سرعت) یکی برای دیدن نتایج آن، انتخاب کرد.

9

در نهایت نتیجه به شکل زیر خواهد بود:

10

  • وارد کردن یک شبکه از گمبیت به اُپنفوم

در این قسمت یک شبکه تولید شده توسط گمبیت را وارد اُپنفوم خواهیم کرد. اینبار هندسه یک لوله با مقطع یک دایره حفره دار مورد بررسی قرار خواهد گرفت. در گمبیت این شبکه تولید شده و آماده ورود به اُپنفوم است. شاید سوال پیش آید که شرایط مرزی در گمبیت باید چگونه تعیین شوند. در گمبیت کافیست دقیقا همانند زمانی که برای فلوئنت شبکه آماده میشد، شرایط مرزی تعیین شوند. یعنی برای مرز لوله، شرط مرزی Wall، برای مرز ورودی، شرط مرزی Velocity Inlet و برای مرز خروجی، شرط مرزی Outflow انتخاب شوند. با وارد کردن شبکه به اُپنفوم، به صورت خودکار شروط مرزی wall و patch به مرزها داده خواهد شد.

لازم است تا یک کپی از مساله قبلی تنظیم شده در اینجا گرفته شود. بنابریان کافیست از پوشه های 0، constant و system کپی گرفته شده و در یک پوشه جدید دیگر، اینبار مثلا به نام pipeDevelopedFlowAnnular قرار گیرند. خود این پوشه مادر در پوشه run قرار خواهد داشت.

اما نحوه وارد کردن شبکه به اُپنفوم بسیار ساده است. کافیست ابتدا شبکه به شکل فایل با فرمت .msh در گمبیت ذخیره شده و سپس در پوشه اصلی مساله در کنار پوشه های 0، constant و system قرار داده شود. از طرفی لازم است تا پوشه polyMesh که شبکه قبلی در آن قرار دارد، پاک شود. سپس در ترمینال و در پوشه اصلی مساله کافیست دستور زیر وارد شود:

fluent3DMeshToFoam pipe.msh

در اینجا نام pipe.msh همان نام شبکه است. با اجرای این دستور دیده می شود که شبکه در داخل پوشه constant/polyMesh ایجاد می شود. حال لازم است تا فایل boundary دوباره تغییر داده شود. اگر این کار انجام شود خواهیم داشت:

3
(
    inlet
    {
        type            mappedPatch;
        nFaces          800;
        startFace       46000;
        sampleMode      nearestCell;
        sampleRegion    region0;
        samplePatch     none;
        offsetMode      uniform;
        offset          (0 0 1);
    }
    outlet
    {
        type            patch;
        nFaces          800;
        startFace       46800;
    }
    walls
    {
        type            wall;
        inGroups        1(wall);
        nFaces          2400;
        startFace       47600;
    }
)

به دلیل اینکه همه تنظیمات از قبل انجام شده و این مساله در حقیقت یک کپی از مساله قبلی است بنابراین هیچ نیازی به تنظیمات اضافه نیست. با اجرای حلگر می توان نتایج را بار دیگر و این بار برای یک سطح مقطع جدید مشاهده کرد.

11

دانلود فایل های مساله دوم بدون شبکه:

این قسمت فقط برای اعضا قابل مشاهده است. لطفا وارد شوید.

دانلود شبکه گمبیت:

این قسمت فقط برای اعضا قابل مشاهده است. لطفا وارد شوید.
آموزشی
برای نوشتن دیدگاه باید وارد بشوید.
فهرست
X