foamonmac-min

نحوه نصب اپنفوم ۵ روی سیستم عامل مک

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

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

در قدم اول ، از لینک زیر نرم افزارDocker رو نصب کنید:

توجه کنین که نسخه Stable آن را نصب کنید. سپس برای دانلود پکیج های اپنفوم این دستور را در ترمینال مک وارد کنید:

و سپس :

برای تنظیم Case Sensitive Filing System نیز این دستورات را به ترتیب در ترمینال وارد کنید:

در حالت پیشفرض، فضای ۱۰ گیگابایتی برای اپن فوم در آدرس زیر در نظر گرفته میشود:

برای مثال برای ایجاد ۲۰ گیگ فضا ، دستورات زیر در ترمینال وارد کنید:

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

منتظر بمانید تا دانلود تمام شود .
نصب تمام شد و حالا اپن فوم اماده است . برای تست دستورات زیر را اجرا کنید :

تبریک ! شما اولین شبیه سازی را با مک انجام دادید!
نکته ای که باید اشاره شود این است که برای استفاده از نرم افزار پاراویو، بهتر است تا از لینک زیر نسخه مربوط به مک را دانلود و برای دیدن نتایج از آن استفاده کنید.

در این صورت کافیست تا از دستور touch بعد از حل کیس خود استفاده کنید و از نرافزار پاراویو برای باز کردن فایل نتایج استفاده کنید.

openfoam-v5-featured-800x400-min

از نسخه ۵ اپنفوم عقب نمانید!

نسخه ۵ نرم افزار متن باز اپن فوم در تاریخ ۲۶ جولای منتشر شد. این نسخه، قابلیت های جدید و پیشرفته ی عمده ای را بر روی کد های موجود ایجاد کرده است.

این قابلیت ها شامل مدل سازی امواج و بازنویسی الگوریتم های مسیریابی ذرات می شوند. همچنین قابلیت استفاده از snappyHexMesh بهبود یافته است. مدل های انتقال، توربولانسی، ترمودینامیکی و احتراق جدیدی در این نسخه از اپن فوم ارائه شده اند. همچنین توسعه های چشمگیری در حل عددی جریان های چندفازی و تراکم پذیر ایجاد شده است. از طرفی نسخه جدید نرم افزار  ParaView 5.4.0 با این نسخه همراه شده است. در زیر به برخی از مهمترین تغییرات و اضافات در این نسخه از اپن فوم می پردازیم:

برای مشاهده لیست کامل به اینجا مراجعه کنید.

چندفازی برای مهندسی دریایی:

  • مدل سازی موج: اجرای شرایط مرزی برای اعمال امواج در یک ورودی مطابق با استانداردهای بالای کیفیت در کدنویسی
  • مقداردهی اولیه موج: ابزار setWaves جدید برای مقداردهی اولیه موج.
  • دمپ کردن امواج: استفاده از fvOption جدید verticalDamping برای جلوگیری از بازگشت موج در خروجی و ایجاد خطا

چندفاز در حالت کلی:

  • بالا بردن پایداری حل در حلگرهای چندفازی به لطف شرایط مرزی جدید در ورودی و خروجی
  • مدل سازی کشش سطحی: چارچوب جدید برای مدل های کشش سطحی با قابلیت انتخاب زمان اجرا (Runtime-selectable) در کتابخانه interfaceProperties .
  • دستیابی راحت تر به تنش سطحی وابسته به دما از طریق کلاس liquidProperties.
  • مدل سازی فیلم سیال: یک سالور چندفازی آزمایشگاهی جدیدی compressibleInterFilmFoam که انتقال بین کپچرکردن سطح تماس حجم سیال و تخمین لایه را دربر می گیرد.

مدل سازی انتقال و آشفتگی:

  • مدل سازی ویسکوزیته: مدل عمومی جدید غیر نیوتنی strainRateFunction که کاربر می تواند تابعی را در زمان اجرا با استفاده از توابع Function1مانند tablecsvFilepolynomial و غیره انتخاب کند مانند مدل جدید Casson برای رئولوژی خون.
  • مدل سازی آشفتگی : مدل توربولانسی RSM در VoFو سالورهای دیگر چندفازی تراکم ناپذیر.

ذرات و مسیریابی:

  • تزریق ذرات: ایجاد توزیع ذرات massRosinRammler برای اعمال تعداد مختلف از هر دسته از ذرات برای دسته ذرات جرم ثابت.
  • بهینه سازی: اضافه کردن solveFlow به منظور فریز کردن میدان جریان با حفظ حرکت ذرات در sprayFoam .

اطلاعات بیشتر در  “OpenFOAM Barycentric Tracking”

احتراق:

  • TDAC/ISAT: مدل شیمیایی جدید TDAC (Tabulation of Dynamic Adaptive Chemistry) را در TDACChemistryModel  فراهم می کند.
  • مدل جدید احتراق آشفته EDC (Eddy Dissipation Concept) شامل پشتیبانی برای       TDAC/ISAT      برای شیمی کاربردی.

شبکه بندی و مش ها:

  • BlockMesh: قابلیت جدید تصویر کردن نقاط و خطوط روی سطوح. همچنین اصافه شدن قابلیت Multi-grading در ابزار.
  • refineMesh: عملیات موازی اصلاح شده.
  • Mesh Motion: اضافه شدن امکان داشتن چندین مش متحرک به صورت همزمان در یک مساله، مصلا داشتن دو حرکت چرخشی مخالف هم به صورت AMI در یک مساله.

انرژی، انتقال حرارت و مدل سازی ترموفیزیک:

  • مدل سازی ترموفیزیکی مایع: اضافه شدن معادله حالت برای تقریب بوزینسک برای جریان های شناور.
  • حل گرهای تراکم پذیر: ایجاد rhoSimpleFoam (جریان پایا) که با هر مدل ترموفیزیکی شامل مایعات با ثبات بیشتری کار می کند.
  • اضافه شدن تشعشع به صورت fvOption برای هر حلگری که انرژی را حل می کند.

موازی :

  • فرمت فایل جدید Collocated برای جمع آوری همه دیتا و مش برای هر میدان decompose شده درون یک فایل.
  • امکان نوشته شدن دیتا به صورت موازی که به پردازشگر اجازه میدهد در حین ذخیره دیتا به حل ادامه دهد.

بهره وری و قابلیت استفاده:

  • ورودی کاربر: نحوه ورودی fvOptions بسیار کاربرپسند ساخته شده است.
  • Function1: اضافه شدن گستره ای از توابع صعودی از جمله توابع خطی، درجه دوم، ربع سینوسی و ربع کسینوسی که می تواند به هر تابع دیگری با استفاده از مقیاس اضافه شود.
  • “Limiting” fvOptions: برای محدودکردن حداکثر سرعت، به عنوان مثال برای جلوگیری از سرعت های غیرفیزیکی بیش از حد تولید شده در حین ضربه زدن.
of5onU1604-min

نحوه نصب اپنفوم ۵ روی اوبونتو ۱۶٫۰۴

نسخه جدید OpenFOAM یعنی نسخه ۵ که در۲۶ جولای سال ۲۰۱۷ منتشر شده است، قابلیت های جدید و پیشرفت های عمده ای بر روی کدهای موجود ایجاد کرده است. شبیه سازی امواج به این نسخه اضافه شده و امکانات ابزار snappyHexMesh بیشتر شده است. همچنین قابلیت های جدید در ابزارblockMesh  به عنوان تولید کننده مش پس زمینه، حل مسائل با مش چرخشی را بهبود داده است. مدل های انتقال، توربولانسی، ترمودینامیکی و احتراقی جدید دراین نسخه از اپن فوم ارائه شده اند. همچنین بهبود چشم گیری درحل عددی جریان های چندفازی وتراکم پذیر ایجاد شده است. نسخه جدید نرم افزار Paraview 5.4.0 نیز با این نسخه همراه شده است. به دلیل اهمیت موضوع، دراین پست به نحوه ی نصب اپن فوم ۵ برروی ابونتو ۱۶٫۰۴ می پردازیم. برای نصب اپن فوم در ابونتو مراحل زیر را به ترتیب در ترمینال لینوکس کپی و پیست کنید.

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

حال باید پکیج های اوبونتو آپدیت شود، که یکی ازاین پکیج ها همان اپن فوم است:

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

یکی از مزیت های خوب این نسخه ی اپن فوم این است که درکنار نصب نرم افزار،  paraviewOpenFOAM 5.4 نیز همراه اپن فوم نصب شده و دیگر نیازی به نصب جداگانه ی آن نیست.

هنگام نصب نرم افزار ممکن است به خطایی مشابه خطای زیر برخورد کنید:

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

حال برای کامل شدن فرایند نصب دستورات زیر را درترمینال وارد کنید:

بعد از باز شدن فایل دستور زیر را به انتهای آن اضافه کنید و در نهایت فایل را بسته وآن را ذخیره کنید.

نصب دراین مرحله به پایان می­رسد. برای اطمینان ازنصب نرم افزار دستور زیر را اجرا کنید:

درادامه لازم است پوشه ی مربوط به کاربر جهت قرار دادن مثال های آموزشی تشکیل شود، به این منظور دستور زیر را به ترتیب در ترمینال وارد کنید:

همچنین بهتر است پوشه حاوی همه مثال های از پیش آماده شده اپنفوم را در پوشه run خود کپی کنید. دستور زیر را وارد کنید:

حال برای  حل یک مثال ساده، دستورات زیر را اجرا کنید:

Nu

نحوه محاسبه عدد ناسلت متوسط روی یک مرز

اعداد بی ‌بعد به دلیل کاهش حجم محاسبات و ساده ترکردن تحلیل نتایج اهمیت ویژه ای را درعلوم مهندسی به خود اختصاص داده اند. از جمله اعداد بی بعد مهم در بحث انتقال حرارت عدد ناسلت می باشد.

بسیاری از ما بعد از انجام شبیه سازی های مرتبط با انتقال حرارت برای انجام عملیات پس پردازش و تحلیل نتایج نیازمند محاسبه عدد ناسلت هستیم. لذا به دلیل اهمیت محاسبه آن در علوم سیالاتی، در این پست به نحوه ی محاسبه عدد ناسلت متوسط در نرم افزار OpenFOAM پرداخته می شود.

عدد ناسلت نسبت انتقال حرارت جابه جایی به انتقال حرارت هدایتی را درون یک فیلم بیان می کند. اعداد ناسلت بزرگتر، بیانگر انتقال حرارت جابجایی بزرگتر هستند که در جریان های توربولانسی اتفاق می افتد. عدد ناسلت یک برای یک فیلم سیال، بیان کننده این است که نرخ انتقال حرارت هدایت و جابجایی یکسان است.

طول مشخصه انتخابی باید درجهت رشد لایه مرزی سیال باشد، به عنوان مثال قطرخارجی یک سیلندر در جریان عرضی یا عمود بر محوراستوانه یا قطرکره.

  برای بررسی انتقال حرارت داخل لایه مرزی جریان روی صفحه ی تخت رادرنظر می گیریم، به علت اختلاف دمای سیال با سطح صفحه، انتقال حرارت از سطح صفحه به جریان صورت می گیرد.

انتقال حرارت جابه جایی به سیال

Q_y=hA(T_s-T_∞)

انتقال حرارت رسانش درصفحه

Q_y=-KA ∂/∂y(T-T_s)|_(y=0)

روی صفحه انتقال حرارت جابه جایی با انتقال حرارت رسانش برابر بوده و رابطه محاسبه عدد ناسلت از برابر قراردادن دورابطه فوق به دست می آید:

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

در اپنفوم برای محاسبه فرمول بالا در هر گام زمانی باید از Function Object مناسب استفاده کرد. چون تابع مربوطه به صورت پیش فرض در اپنفوم موجود نیست باید از پکیج Swak4Foam برای این منظور استفاده کنیم. در نهایت کد مربوطه را در فایل controlDict در پوشه ی سیستم (در داخل دیکشنری Functions، که اگر نبود خودمان اضافه می کنیم) به صورت زیر وارد می کنیم:

در اینجا از تابع نوع patchExpression استفاده شده است که به کاربر این امکان را می دهد هر فرمولی را روی مرز محاسبه کرده و متوسط، مینیموم، ماکزیموم و … را بدست آورد. همانطور که مشاهده می شود عدد ناسلت، مشابه رابطه بدست آمده تعریف شده است. T_inf همان T_∞ در رابطه به دست آمده است، که مقدار آن مطابق مساله مورد نظر تعیین می شود. درقسمت Patches نام مرزی که به دنبال محاسبه ی عدد ناسلت متوسط روی آن هستیم نوشته می شود. L نیز طول مشخصه مساله است. در اینجا قسمت Accumulations عمل مورد نیاز کاربر را مشخص می کند که در اینجا متوسط روی مرز (Average) در نظر گرفته شده است. با کمی دقت در فرمول وارد شده می توان فهمید که در swak4Foam گرادیان روی یک مرز با عبارت:

تعریف می شود.

Gambit

نحوه نصب گمبیت روی اوبونتو

روند انجام محاسبات در هر نرم‌افزار دینامیک سیالات محاسباتی از سه بخش کلی پیش‌پردازش، پردازش و پس‌پردازش تشکیل می‌شود. همان‌طور که از عنوان مرحله پیش‌پردازش مشخص است، این مرحله مربوط به تولید هندسه مسئله و شبکه‌بندی هندسه، دارای کیفیت کافی در انجام محاسبات، برای مرحله پردازش می‌باشد. همواره یکی از مشکلات کاربران در استفاده از اپن‌فوم، پیچیدگی و سختی ایجاد هندسه و شبکه‌بندی است. هر چند اپن‌فوم مجهز به ابزارهایی در این زمینه مانند blockMesh , snappyHexMesh , … می‌باشد، ولی در موارد متعدد کاربران به ناچار به نرم‌افزارهای تولید شبکه دیگری مانند Gambit, ICEM , pointwise, … روی می‌آورند. دلیل این کار، پیچیدگی زیاد، صرف وقت و حوصله و البته ناآشنایی بسیاری از کاربران در استفاده از ابزارهای اپن‌فوم است. که استفاده از آن‌ها را سخت و در بعضی موارد پیچیده، به طور کامل غیرممکن می‌کند. همچنین ابزار blockMesh تنها توانایی ایجاد شبکه با سازمان را فراهم کرده است، و برای ایجاد شبکه بی‌سازمان برای هندسه های پیچیده بسیار ناکارآمد است، و موجب سردرگمی کاربر می‌شود.

همان‌طور که ذکر شد مرحله پیش‌پردازش شامل تولید هندسه و شبکه‌بندی است. از آنجایی که اکثر هندسه‌های مورد بررسی در زمینه دینامیک سیالات محاسباتی دارای پیچیدگی‌های ظاهری است، پس بهتر است از نرم افزارهای گرافیکی برای تولید هندسه استفاده شود. زیرا در صورت مشاهده مستقیم هندسه، در روند تولید هندسه و شبکه‌بندی با کیفیت بسیار تاثیرگذار خواهد بود. از نرم‌افزارهای گرافیکی تولید هندسه و شبکه می‌توان به Gambit, ICEM, pointwise, AnsysMeshing, Gridgen, T-grid, HyperMesh ,… اشاره کرد، که هر کدام ویژگی و برتری خاص خود را نسبت به بقیه دارد. هدف از این پست، آموزش تک تک این نرم‌افزارها نیست، و هر کدام نیاز به دوره خاص خود دارد، و از حیطه این آموزش جدا خواهد بود. در این میان شاید بتوان گفت که نرم افزار Gambit با توجه به قدمت بالایی که نسبت بقیه نرم‌افزارها دارد، و همچنین برای ایجاد مش با کیفیت، و کنترل کردن ساختار شبکه از سادگی خاصی برخوردار است، باعث شده که برای صرفه‌جویی در وقت و آموزش سریع‌تر مورد استفاده قرار گیرد.

از ویژگی های مهم نرم افزار گمبیت می توان به موارد زیر اشاره کرد:

  • ایجاد هندسه
  • تولید شبکه برای حل جریان در هندسه
  • دارا بودن محیط کاربری مفید و کاربردی
  • سازگاری با سیستم عامل‌های ویندوز و لینوکس
  • ابزارهایی برای بررسی کردن کیفیت شبکه‌بندی
  • تولید انواع شبکه مثلثی و چهار ضلعی با کیفیت بالا
  • آنالیز تئوری سیالات
  • بهبود شبکه بندی
  • مدل کردن جریان سیال و انتقال حرارت
  • استفاده از حافظه داینامیک
  • دارا بودن انواع و اقسام مش ها و المان ها از جمله چهار وجهی، چهار ضلعی، شش وجهی، هرمی یا گوه ای

فرایند یادگیری gambit نیز بسیار آسان است. تولید شبکه‌های چهاروجی همراه با مش لایه مرزی بسیار مورد توجه است. همچنین قابلیت sizeFunction آن بسیار کارآمد است، و برخی از الگوریتم های آن بعدها در ICEM مورد استفاده قرار گرفته است. بنابراین اگر این محصول در آزمایشگاه شما موجود است بهترین گزینه برای شروع خواهد بود.

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

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

قدم اول در نصب گمبیت، در دست داشتن فایل نصب آن است. این فایل با پسوند sh خواهد بود که به آن shell script گفته می‌شود. این فایل را به صورت زیپ شده می توانید از اینجا دانلود کنید. سپس این فایل را در پوشه Home خود در اوبونتو قرار دهید. با دستور زیر ابتدا فایل را از حالت فشرده خارج کنید:

مرحله بعدی اجرای فایل نصبی Shell Script خواهد بود که با دستور زیر اجرا می شود.

در مرحله نصب پیامهایی ظاهر میشود که نیاز به پاسخ دادن هست. پاسخ های زیر را به ترتیب در ترمینال وارد کنید و دکمه Enter را بزنید.

با انجام مراحل بالا گمبیت شروع به نصب شدن می‌کند و در پوشه Fluent Inc. در Home نصب می شود. پس از نصب می توانید فایل های نصبی را با دستور زیر پاک کنید:

اجرای گمبیت به یک سری پکیج (کتابخانه های لینوکس) نیاز دارد که باید نصب شوند. دستورات زیر برای نصب این پکیج ها است. دستور زیر را در ترمینال وارد کنید. بعد از وارد کردن پسورد اوبونتو و نصب پکیج مذکور میتوانید ترمینال را ببندید.

با دستور زیر یک فایل متنی به اسم xorg.conf در آدرس /etc/X11 ایجاد کنید.

با اجرای این دستور ویرایشگر gedit باز میشود. متن زیر را مستقیما در آن کپی کنید.

سپس با فشردن کلید ترکیبی Ctrl+S فایل را ذخیره کنید و پنجره را ببندید. مرحله بعدی اجرای دستور زیر است.

بعد از اجرای دستور بالا سیستم خود را ری استارت کنید. بعد از بالا آمدن اوبونتو دستور زیر را وارد ترمینال کنید.

همچنین فایل نصبی مربوط به پکیج libXp را از اینجا دانلود کنید و سپس آن را در پوشه Home خود قرار دهید، سپس در ترمینال دستور زیر را وارد کنید که نیاز به وارد کردن رمز عبور لینوکس شما هم هست:

در مرحله بعد فایل libstdc++.so.5 مورد نیاز گمبیت را به صورت زیپ شده از اینجا دانلود و پس از اکسترکت در مسیر زیر کپی کنید.

فایل لایسنس را از اینجا دانلود کنید و در پوشه های زیر کپی کنید.

تا این مرحله گمبیت نصب شده و می توان آن را با رفتن به آدرس نصب آن اجرا کرد ولی برای راحت تر شدن اجرای نرم افزار بهتر است تا یک alias در فایل .bashrc لینوکس برای آن بسازیم. برای این منظور دستور زیر را وارد کنید تا بتوانید فایل .bashrc را ویرایش کنید:

در این مرحله پنجره مربوط به ویرایش فایل مذکور باز خواهد شد. حال کدهای زیر را به انتهای آن اضافه کنید، فایل را ذخیره کنید و ببندید.

در این مرحله نصب گمبیت به اتمام رسیده است. شما میتوانید با اجرای دستور زیر در ترمینال، گمبیت را اجرا کنید:

البته بجاست که به نکته ای اشاره شود و آن اینکه نرم افزار گمبیت در هر بار اجرا پوشه ای را به عنوان پروژه در نظر می گیرد و این پوشه (اگر حذف نشود) برای همیشه باقی می ماند و باعث شلوغ شدن پوشه Home شما می شود. برای اینکه پوشه Home منظمی داشته باشید بهتر است تا یک پوشه با نام Gambit در داخل پوشه Home خود ایجاد کنید. سپس برای ران کردن گمبیت همیشه این کار را انجام دهید:

در این صورت پوشه های مربوط به پروژه ها در پوشه Gambit ایجاد خواهند شد و در پوشه Home شما پوشه ای ایجاد نمی شود.

bashOnWindows

نحوه نصب اپنفوم روی ویندوز ۱۰

ُسلام!

طبق یک نظرسنجی که در گروه تلگرامی سایت برگزار شد، تصمیم بر این شد که در این پست آموزش “نحوه نصب اپنفوم روی ویندوز ۱۰” رو داشته باشیم. خوشبختانه بعد از مدت ها سایت رسمی اپنفوم به صورت رسمی نحوه نصب اپنفوم رو در ویندوز ۱۰ قرار داد. فقط باید دقت کنید که این کار فقط روی ویندوز ۱۰ امکان پذیر هست و فعلا آپدیتی برای ویندوزهای دیگه برای داشتن این قابلیت ارائه نشده. در واقع ویندوز ۱۰ قابلیتی پیدا کرده (البته نه در ورژن های قدیمیش) که می تونید به وسیله اون، Terminal اوبونتو رو در ویندوز خودتون داشته باشید. داشتن Terminal برای یک “لینوکس گیک” (!) به معنی در اختیار داشتن تمام امکانات سیستم عامل لینوکس هست! 🙂

افراد خیلی زیادی شاید مشکل در نصب لینوکس به صورت Dual Boot با ویندوز داشتند و یا به هر دلیلی نمی خواستند لینوکس رو نصب بکنند. این افراد مجبور بودند تا اوبونتو رو به صورت مجازی در سیستم خودشون نصب بکنند و بعد اپنفوم رو روی اون نصب کنند. این کار باعث کاهش فوق العاده زیاد سرعت اوبونتو میشد و عملا کار با اپنفوم رو خیلی سخت میکرد. اما با این عرضه سایت اپنفوم، میشه خیلی راحت و با سرعت بالا کیس های اپنفوم رو ران کرد. طبق ادعای سایت اپنفوم، تغییر محسوسی در سرعت این نسخه با نسخه لینوکسی وجود نداره. البته که من بازهم نسخه لینوکسی رو ترجیح میدم! به خاطر خیلی دلایل که شاید بعدا بهشون اشاره کردیم 😉

یک نکته همون اول کار بگم که این کار نیاز به دانلود داره! اونطور که من تخمین زدم شما باید نزدیک به ۴۶۰ مگابایت (شاید هم بیشتر) از اینترنت دیتا دانلود کنید. البته در این عدد، حجم اپنفوم هم حساب شده. خب کار رو شروع می کنیم:

در مرحله اول شما باید مطمئن بشید که آیا نسخه ویندوز ۱۰ شما قابلیت اضافه کردن ترمینال لینوکس رو به خودش داره یا خیر. برای این کار وارد محیط برنامه Settings ویندوز بشید:

و بعد از داخل اون، وارد قسمت System بشید:

حالا تو اینجا Build مربوط به ویندوز خودتون رو پیدا کنید:

اگر این مقدار طبق گفته سایت ماکروسافت از ۱۴۳۱۶ بیشتر باشه، ویندوز شما قابلیت مورد نظر رو داره و می تونید ادامه بدید. در غیر این صورت باید برید و از قسمت Update Windows این قابلیت رو دانلود و نصب کنید. آپدیتی که باید دنبالش باشید نامش Feature update to Windows 10, version 1607 هست.

خب حالا اگر مورد بالا، مشکلی نداشت ادامه کار رو به این صورت طی می کنیم. شما باید برید و این قابلیت رو در ویندوز خودتون فعال کنید. برای این کار دوباره وارد قسمت Settings بشید، ولی این بار به قسمت Updates & Security برید. حالا در این قسمت روی قسمت For Developers کلیک کنید و گزینه Developer Mode رو انتخاب کنید:

احتمالا با انتخاب این گزینه به شما میگه که ویندوز شما احتیاج به یک رستارت داره. ویندوز رو رستارت کنید. بعد از انجام این کار حالا به Control Panel سیستم برید و وارد قسمت Programs بشید.

در این قسمت Turn Windows Features On or Off رو انتخاب کنید:

در این صورت پنجره ای باز خواهد شد که به شما اجازه میده یک سری از قابلیت های ویندوز رو روشن/خاموش کنید. در گزینه های آخر، گزینه مربوط به Windows Subsystem for Linux (Beta) رو فعال کنید و کامپیوتر رو رستارت کنید:

بعد از رستارت این قابلیت به ویندوز شما اضافه شده و شما می تونید با باز کردن Start Menu و تایپ Bash برنامه Bash on Ubuntu on Windows رو مشاهده و باز کنید:

حالا ترمینال لینوکس در اختیار شماست! 🙂 وقتی برای اولین بار این برنامه رو باز می کنید از شما می خواد تا دانلود اوبونتو روی ویندوز رو تایید کنید. در واقع یک اوبونتوی کوچک روی سیستم شما همراه با همه فایل های ضروری نصب خواهد شد. برای ادامه کار باید حرف Y رو وارد کنید و Enter بزنید:

با انجام این کار دانلود شروع خواهد شد و اگر سرعت پایینی دارید، کمی حوصله کنید؛ شاید نزدیک به یک ساعت. بعد از اتمام دانلود، ویندوز پیغامی مبنی بر رستارت خواهد داد، اما فعلا رستارت نکنید! اجازه بدید تا Bash کاملا نصب و ستاپ بشه. در پایان می بینید که از شما یک اسم User و Password برای اوبونتو میپرسه. نام User رو وارد کنید (که میتونه هر اسمی باشه) و بعد دو بار به ترتیبی که خواسته شده Password رو وارد کنید. البته در ورژن های قدیمیتر ویندوز  مرحله آخر یعنی وارد کردن نام کاربری و رمز عبور نشون داده نمیشه و شما با عنوان کاربر root به لینوکس معرفی خواهید شد. با اتمام این مرحله، پیغامی مبنی بر اتمام مراحل نصب در ترمینال برای شما نشون داده میشه و شما می تونید دستورات Bash رو وارد کنید:

حالا رایانه رو رستارت کنید. 🙂 خب تا اینجا مرحله نصب ترمینال Bash به پایان رسیده و می تونیم کار رو برای نصب اپنفوم و پاراویو ادامه بدیم. اما قبلش یک نکته کوچک: شاید این سوال برای شما هم پیش بیاد که الان پوشه HOME لینوکس کجای کامپیوتر شماست؟ این پوشه رو می تونید در آدرس زیر پیدا کنید:

که در واقع همون اینجاست:

Username هم نام کاربری شما در ویندوز هست. برای نصب اپنفوم کافیه از دستورات همیشگی نصب اپنفوم استفاده کنید. یعنی:

دقت کنید که در اینجا برای کپی پیست کردن شاید با کمی مشکل مواجه بشید. برای پیست کردن داخل ترمینال کافیه فقط یکبار از راست کلیک موس استفاده کنید. اگر دیدید با انجام این کار یک سری حروف بی مفهوم در ترمینال پیست شد، نگران نباشید. کافیه یکبار تکست مربوطه رو داخل یک Notepad پیست کنید و دوباره از اونجا به ترمینال کپی کنید. در این صورت مشکل حل خواهد شد. باز هم نشد؟ ;/ حتما زبان ویندوز روی “فا” قرار گرفته. اون رو En کنید تا مشکل حل بشه 😉 خلاصه بعد از همه اینها و اجرای دستورات بالا نزدیک به ۳۱۳ مگابایت برای اپنفوم نسخه ۴ دانلود خواهد شد.

احتمال داره در میانه نصب خطای Unable to Fetch… بده و متوقف بشه. کافیه دوباره دستور نصب اپنفوم رو وارد کنید. دقت کنید که در این صورت حتما فقط باید دستور آخر از چهار دستور بالا رو اجرا کنید. اگر باز هم نشد، اینترنت خودتون رو عوض کنید و دوباره امتحان کنید. کار نشد نداره 😉

وقتی دانلود و نصب اپنفوم تمام شد، مراحل همیشگی پایانی رو انجام بدید:

و بعد:

فینیشد، حالا نصب اپنفوم شما تکمیل شده ولی فعلا یک قدم به انتهای مسیر مونده. در ادامه کار لازمه تا نرم افزاری رو روی ویندوز نصب کنیم تا بتونه نرم افزارهای گرافیکی لینوکس رو برای ما اجرا کنه. تابحال گمبیت نصب کردید؟ Exceed هم باهاش نصب کردید، درسته؟ نرم افزار Exceed در واقع نرم افزار تبدیل محیط لینوکسی گمبیت به ویندوز هست. بله بله! گمبیت مخصوص لینوکسه 🙂 آموزش نصب اون رو هم روی لینوکس خواهیم داشت ;). خب برای این کار شما باید نرم افزاری به نام Xming رو از آدرس زیر دانلود، نصب و بعد اجرا کنید:

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

نصب نرم افزار تموم شده و می تونید از اپنفوم استفاده بکنید. برای شروع پوشه run رو تولید کنید و tutorials رو داخلش کپی کنید:

و حالا ران کردن اولین کیس:

که در نهایت:

هَو فان 🙂

tecplot1

آموزش وارد کردن نتایج محاسبات اوپن فوم به Tecplot، قسمت اول

مهم ترین و اصلی ترین کار بعد از انجام محاسبات در هر نرم افزار CFD ، پس پردازش نتایج محاسبات مربوطه است. همواره یکی از مشکلات کاربران در استفاده از نرم افزار اوپن فوم، پیچیدگی و سختی پس پردازش نتایج محاسبات نسبت به سایر نرم افزار های تجاری است. به طوری که در موارد متعددی کاربران ناچار به نصب نرم افزار های جانبی مانند Swak4Foam می شوند. البته نرم افزار Paraview که همراه با اوپن فوم نصب و استفاده می شود بسیار قدرت مند و پرکاربرد است. ولی به دلیل پیچیدگی زیاد و نا آشنایی کاربران با آن، استفاده از آن برای بسیاری از کاربران ( از جمله بنده ) سخت و در مواردی ناممکن است. از آنجایی که بسیاری از کاربران اوپن فوم آشنایی خوبی با نرم افزار Tecplot دارند، استفاده از این نرم افزار جهت پس پردازش اطلاعات اوپن فوم می تواند انتخابی خوب، آسان و لذت بخش باشد. هدف ما در این آموزش این است که به زبانی ساده نحوه وارد کردن نتایج محاسبات اوپن فوم به Tecplot را توضیح دهیم. در این آموزش ما نتایج حل مثال pitzDaily را با استفاده ار روش های بیان شده وارد نرم افزار Tecplot360 می کنیم. به طور کلی جهت وارد کردن نتایج محاسبات اوپن فوم به Tecplot سه راه وجود دارد:
۱-    وارد کردن مستقیم نتایج محاسبات اوپن فوم به Tecplot با استفاده از Data loader مخصوص اوپن فوم در Tecplot
۲-    استفاده از ابزار foamToTecplot360 جهت تبدیل نتایج محاسبات اوپن فوم به فرمت استاندارد Tecplot ( .plt )
۳-    استفاده از ابزار foamDataToFluent و foamMeshToFluent و استفاده از Data loader مخصوص فلوئنت در Tecplot

وارد کردن مستقیم نتایج محاسبات اوپن فوم به Tecplot با استفاده از Data loader مخصوص اوپن فوم در Tecplot

خوشبختانه در نرم افزار Tecplot360 نسخه ۲۰۱۳ و  نسخه های جدیدتر، Data loader مخصوص اوپن فوم تعبیه شده است که با استفاده از آن می توان به سادگی نتایج محاسبات اوپن فوم را وارد Tecplot کرد.
مراحل کار:
–    فولدر اصلی نتایج محاسبات اوپن فوم ( شامل پوشه های زمانی، Constant و System )  را در مکان مناسبی که نرم افزار Tecplot بتواند به آن دسترسی پیدا کند کپی می کنیم.
–    نرم افزار Tecplot را اجرا می کنیم و به مسیر File>Load Data Files می رویم.
–    در پنجره باز شده، در منوی Files of Types گزینه OpenFOAM را انتخاب می کنیم.
–    به فولدر اصلی نتایج محاسبات اوپن فوم می رویم، فایل ControlDict موجود در پوشه System را انتخاب می کنیم و دکمه Open را می زنیم.

untitled-1

–    حال تمام نتایج محاسبات اوپن فوم در تمام زمان های موجود در فولدر اصلی، در نرم افزار Tecplot قابل مشاهده است.
نکته: متاسفانه Data Loader مخصوص اوپن فوم موجود در Tecplot360 دارای مشکلاتی ( مانند خطاهای غیرموجه  هنگام باز کردن بعضی از نتایج محاسبات اوپن فوم،  نمایش مقادیر اشتباه در کانتور ها به خصوص هنگام ایجاد Slice در Tecplot ، عدم توانایی در بازکردن هندسه های دو بعدی که دارای شرط مرزی wedge هستند و…. ) است. به همین دلیل ممکن است در موارد متعددی در استفاده از این Data Loader به مشکل بر بخوریم. در اینگونه موارد می توان از دو روش دیگر ( توضیحات در ادامه این مطلب ) استفاده کرد.

استفاده از ابزار foamToTecplot360 جهت تبدیل نتایج محاسبات اوپن فوم به فرمت استاندارد Tecplot ( .plt )

این ابزار به طور پیشفرض همراه اوپن فوم نصب نیست و باید به صورت جداگانه نصب شود.
جهت آموزش نصب ابزار foamToTecplot360 به آدرس زیر مراجعه فرمایید:

https://github.com/wyldckat/localFoamToTecplot360/blob/master/README.mediawiki

با استفاده از این ابزار می توان فایل های نتایج اوپن فوم را به فایل های استاندارد Tecplot360 با فرمت .plt تبدیل نمود. تمام نسخه های قدیمی و جدیدتر Tecplot 360 توانایی بازکردن فایل های با فرمت .plt را دارند.
مراحل کار:
–    ابتدا با استفاده از لینک بالا نرم افزار foamToTecplot360 را نصب می کنیم.
–    جهت اطمینان از نصب این نرم افزار ، دستور foamToTecplot360 را در محیط ترمینال وارد می کنیم.. اگر این ابزار در کنار نرم افزار  اوپن فوم نصب باشد، باید خروجی ترمینال خطایی به فرم زیر باشد:

untitled-2

–    حال که از نصب این ابزار مطمئن شدیم، پنجره ترمینال را باز کنید و با استفاده از دستور cd آن را به پوشه اصلی نتایج اوپن فوم هدایت می کنیم.
به عنوان مثال  اگر پوشه اصلی نتایج اوپن فوم با نام pitzDaily در Desktop قرار گرفته باشد از دستور زیر استفاده می کنیم:

untitled-3

–    در پنجره ترمینال دستور foamToTecplot360 را وارد می نماییم.

–    مشاهده می شود که یک پوشه با نام Tecplot360 در پوشه اصلی نتایج نرم افزار اوپن فوم ایجاد شده است که حاوی فایل هایی با پسوند .plt است. این پوشه را به محلی که نرم افزار Tecplot بتواند به آن دسترسی پیدا کنید کپی می کنیم.
–    این پوشه دارای سه گروه فایل است:
۱- فایل شبکه
۲- فایل های مقادیر نقاط داخلی
۳- فایل های مقادیر نقاط روی مرز ها
که این فایل ها ها باید با ترتیب مشخصی در نرم افزار Tecplot باز شوند.
–    نرم افزار Tecplot را اجرا کنید و به مسیر File>Load Data Files می رویم.
–    در پنجره باز شده، در منوی Files of Types گزینه Tecplot Data Loader را انتخاب می کنیم.
–    به پوشه Tecplot360 را که از داخل پوشه اصلی نتایج اوپن فوم در محل مناسب کپی کرده ایم می رویم.
–    ابتدا فایل grid را را با دو بار کلیک کردن به لیست additional files اضافه می کنیم.
–    سپس مابقی فایل های داخل پوشه Tecplot360 ( به استثنا فایل های داخل پوشه boundary mesh ) را به ترتیب شماره با دابل کلیک به لیست additional files اضافه کنید.
untitled-4
نکته: فایل grid حتما باید در لیست additional files در اولین سطر ( مقدم بر بقیه ) باشد.
–    حال دکمه open را میزنیم. با این کار فایل شبکه و مقادیر نقاط داخلی هندسه به Tecplot وارد شده اند.
–    مجددا با استفاده از File>Load Data Files تمام فایل های موجود در پوشه Tecplot360>boundaryMesh را با دابل کلیک به لیست additional files ااضافه می کنیم و دکمه open را می زنیم.
untitled-5
–    سپس در پنجره باز شده دکمه append را می زنیم.
–    حال مقادیر نقاط مرزی به Tecplot وارد شده اند.
نکته: یک خبر خوب اینکه نسخه لینوکسی تکپلات هم موجود هست و شما می تونید مستقیما اون رو در داخل اوبونتو نصب و استفاده کنید. بنابراین برای انجام کارهای پس پردازشی نیاز به تغییر سیستم عامل خود به ویندوز را ندارید.

در آموزش بعدی “استفاده از ابزار foamDataToFluent و foamMeshToFluent و استفاده از Data loader مخصوص فلوئنت در Tecplot” را فرا خواهید گرفت.

bb

پردازش موازی در اپنفوم

مدت زمان انجام یک کار به‌ وسیله رایانه، به عوامل متعددی بستگی دارد که اولین آنها، سرعت پردازشگر رایانه‌ یا همان تعداد هسته های لپتاپتان است. یکی از قابلیت های مهم اپنفوم  امکان پردازش موازی آن است که باعث افزایش چشمگیر سرعت انجام محاسبات شما خواهد شد. اپنفوم از کتابخانه قدرتمند OpenMPI برای اجرای موازی بهره میگیرد.

decomposePar دستوری است که در اپنفوم میتوان با آن امکان پردازش موازی را فراهم کرد. برای اینکار نیازمند تولید و اعمال تغییرات در فایلی مشابه با همین نام، (decomposeParDict) در پوشه ی سیستم میباشیم. این دستور با تقسیم دامنه محاسباتی به چندین زیر دامنه سرعت حل شما را در مسائل سنگین بالا میبرد. در مسائل با حل موازی، دیتای مساله برای حل بین پردازشگرها تقسیم میشود.

نمونه ای از فایل system/decomposeParDict به شکل زیر است:

برای انجام عمل decompose می توان از چندین روش استفاده کرد. راحت ترین روش که دامنه را با توجه به جهات مختلف تقسیم بندی می کند روش simple نام دارد. دقت کنید که در روش simple ضرب عناصر بردار n باید دقیقا برابر با مقدار کلیدواژه numberOfSubdomains باشد. برای دیدن روش های دیگر می توانید از Banana Trick استفاده کنید. در روش Manual شما خودتان قادر به اختصاص دادن قسمت های مختلف دامنه حل به پردازشگرها هستید. این روش مخصوصا در زمانی به کار می آید که شما از کلاسترها برای حل مساله خود استفاده می کنید.

پس از تنظیم فایل decomposeParDict نوبت به اجرای دستورات مورد نیاز برای حل موازی می رسد. در ابتدای کار شما باید از این نکته اطمینان حاصل کنید که مساله شما در حالت عادی و بدون استفاده از پردازش موازی به خوبی ران شده و مراحل تکرار ادامه می یابد. در صورتی که ازین مرحله مطمئن نیستید به هیچ وجه وارد مرحله پردازش موازی نشوید. در مرحله بعد باید دامنه حل خود را با توجه به تنظیماتی که قبلا در فایل decomposeParDict انجام داده بودید به چند قسمت تقسیم کنید. این کار توسط دستور زیر قابل انجام است:

حال می توانید به راحتی حلگر خود را به صورت موازی اجرا کنید:

که در آن nProce تعداد پردازنده ها و foamExec نوع حلگر میباشد. با استفاده از عبارت > log، خروجی ترمینال را به فایلی به نام log منتقل کرده ایم تا در صورت نیاز برای کارهای دیگر از آن استفاده کنیم. همچنین کاراکتر & در آخر دستور باعث خواهد شد تا این دستور در پس زمینه سیستم عامل اجرا شود و در نتیجه ما قابلیت وارد کردن دستورات دیگر در ترمینال را داریم.

اگر از پیچیدگی و زمخت بودن دستور بالا شاکی هستید، دستور دیگری به شما معرفی می کنیم که دقیقا همان کاربرد بالا را دارد اما اینبار بسیار خلاصه تر است:

خوبی دستور دوم علاوه بر سادگی آن این است که خروجی حلگر، هم در ترمینال نمایش داده می شود و هم در داخل فایل log ذخیره می شود. خوبی این روش این است که شما هروقت اراده کنید می توانید بدون فوت وقت به خروجی های حلگر مثل مانده ها، ضرایب درگ، خروجی توابع و غیره در ترمینال دسترسی داشته باشید.

همچنین اگر از pyFoam استفاده می کنید، می توانید توسط دستور pyFoamPlotRunner.py که مختص ران کردن فایل های اجرایی در اپنفوم است، از حل موازی استفاده کنید:

درود.

SFO_post

پروژه SFO (StarCCM+ Fluent OpenFOAM)

با سلام خدمت دوستان.

در این پست قصد معرفی یک پروژه بسیار مفید رو دارم که به صورت آنلاین توسط آقای دکتر تیمور جواهرچی از دانشگاه واشنگتن ارائه شده. ایشون توسط تیمی، آموزش هایی رو در رابطه با سه نرم افزار دینامیک سیالات محاسباتی (StarCCM+ و Fluent و OpenFOAM) به صورت آنلاین در سایت Jupyter قرار دادند و همه می تونند به صورت رایگان از این آموزش های بسیار مفید استفاده کنند.

sfoبه لطف جناب دکتر جواهرچی، من هم به عنوان کوچکترین عضو این تیم، آموزشی رو در رابطه با نرم افزار OpenFOAM (مساله جریان حول استوانه در حال چرخش) به صورت آنلاین تدوین کردم. شما می تونید برای مشاهده همه آموزش های این پروژه به اینجا مراجعه کنید.

هر آموزش شامل چهار مرحله هست. این مراحل به ترتیب زیر هست:

۱- فیزیک مساله

۲- هندسه و شبکه بندی

۳- تنظیمات مربوط به شبیه سازی

۴- پس پردازش و نتایج

به امید خدا آموزش های بیشتری در رابطه با هر سه نرم افزار طی مدت زمان توسط این تیم اضافه خواهد شد که می تونید استفاده بکنید. لینک صفحه اصلی پروژه SFO به صورت دایمی در قسمت چپ سایت قرار داده شده تا بتونید در هر زمان به راحتی به آموزش ها دسترسی داشته باشید.

با تشکر از آقای دکتر جواهرچی که چنین گنجینه ارزشمندی رو برای همه CFD کارها تهیه کردند.

درود.

All Flavours in One

استفاده همزمان از چندین نسخه اپنفوم

از آنجا که نرم افزار های متن باز قابلیت بروزرسانی بیشتری نسبت به سایر نرم افزار ها دارند، بنابراین بروزرسانی آنها کاربردی تر و سریعتر از سایر نرم افزار های دیگر انجام می پذیرد. اپنفوم نیز از این قاعده مستثنا نیست . در نسخه های بروزرسانی شده میتوانید حلگر ها و مثال های جدیدتری که در نسخه های قدیمی تر وجود نداشت را بیابید و این بسیار سودمند است. برای مثال در نسخه ی ۳٫۰٫۱ شاهد حلگر driftFluxFoam بودیم که در حل مسائل دوفازی (بحث آلاینده ها) بسیار کاربردی است.

برای استفاده از آپدیت های جدید، شما دو راه دارید :

الف) نسخه قدیمیتر را همزمان با نسخه ی جدید داشته باشید (که اغلب همینطور است):

برای این منظور شما نیاز به دستور alias (اسامی مستعار) و ایجاد تغییراتی در فایل /.bashrc   دارید که به وسیله ی این دستور میتوانیم دستورهای شخصی خود رو درست کنیم و انرا نامگذاری کنیم.

برای این کار نیاز به فراخوانی مجزای دستورات هرکدام از نسخه های مختلف اپنفوم دارید. این کار توسط تغییر در فایل bashrc و استفاده از دستور alias انجام می گیرد. در هنگام نصب اپنفوم و در مرحله آخر شما عبارتی را به فایل $HOME/.bashrc اضافه کردید. می دانید که فایل bashrc دستورات و پارامترهای مختلف لینوکس را در هنگام بوت سیستم عامل فراخوانی می کند. در واقع ما فایلی را به خورد bashrc داده ایم که در هنگام بوت لینوکس، دستورات اپنفوم را فراخوانی کند! این عبارت به شکل زیر بود:

در واقع bashrc بدون هیچ دستور خاصی تمام دستورات اپنفوم نسخه ۳٫۰٫۱ را در هنگام بوت لینوکس، فراخوانی می کند. حال فرض کنید شما نسخه دیگری از نرم افزار نصب کرده اید و می خواهید دستورات آن نیز فراخوانی شوند. یعنی می خواهید چنین عبارتی را به انتهای فایل bashrc خود اضافه کنید:

اما آیا به نظر شما دستورات دو نسخه با هم قاتی نمی شوند؟ پس بنابراین باید به نحوی این مشکل را حل کنیم. باید کاری کنیم که با وارد کردن دو دستور مختلف، هرکدام از این نسخه ها فراخوانی شوند. برای این کار از دستور alias استفاده می کینم. دستور alias کمک را به کاربر می دهد که بتواند دستورات جدید برای خود تعریف کند. مثلا فرض کنید دستوری به شکل زیر تعریف می کنیم و این کد را در انتهای فایل bashrc قرار می دهیم:

کاری که این دستور (که همان OpenFOAM است) انجام می دهد تغییر آدرس ترمینال به پوشه OpenFOAM است، همین! خب حالا می خواهیم از دستورات جدید برای فراخوانی اپنفوم های مختلف استفاده کنیم. دستور مربوط به فراخوانی اپنفوم را که در بالا دیدید. کافیست به آن یک alias نسبت دهیم. مثلا برای نسخه ۳۰۱ دستور OF301 را در نظر می گیریم:

حالا اگر یک ترمینال جدید باز کنید (تا فایل bashrc را از نو لود کند)، و با وارد کردن دستور زیر:

دستورات مربوط به اپنفوم ۳۰۱ فراخوانی می شوند. کافیست مثلا وارد کنید:

تا نسخه حلگر icoFoam را ببینید. حال می توانید به تعداد دلخواه خود اپنفوم نصب کرده و به هرکدام در فایل bashrc یک alias اختصاص دهید. یعنی مثلا:

ب) فقط نسخه ی جدیدتر را داشته باشید:

رفتن به این قسمت از سایت اپنفوم برای آپگرید کردن و یا دانلود نسخه ی جدید. معمولا این کار توصیه نمی شود چرا که گاهی باعث عدم آپگریدینگ مناسب و اشکال در دستورات می شود.

شاد باشید!

coffee

How to sense in CFD

چگونه در CFD به جواب درست برسیم؟ قسمت سوم: Monitoring

[su_label type=”important”]تست شده در همه نسخه ها[/su_label]

در قسمت سوم و شاید آخرین قسمت از سری پست های “چگونه در CFD به جواب درست برسیم؟” به اهمیت Monitoring در CFD و همچنین نحوه انجام این کار در اپنفوم می پردازیم.

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

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

برای انجام مانیتورینگ شما لازم هست تا کدهایی رو به انتهای فایل controlDict کیس خودتون اضافه بکنید. در اینجا دو تا از معروف ترین این توابع رو معرفی میکنیم: Probes و forceCoeffs. تابع اول برای مشاهده مقدار نقطه ای یک پارامتر در میدان و تابع دوم برای مشاهده ضرایب نیرو مورد استفاده قرار میگیره.

فرض کنید شما در حال بررسی جریان حول یک ساختمان هستید. از طرفی می خواهید ببینید که کی جریان به حالت پایا می رسد. کافیست چند نقطه در آشفته ترین قسمت جریان (که معمولا در قسمت Wake قرار دارد) قرار بدید. اگر این نقطات به حالت پایا برسند به احتمال زیاد نقاط دیگر نیز پایا خواهند بود. مثلا فرض کنید مختصات این نقطات برابر با (۰ ۱۰ ۲۰) و (۰ ۱۲ ۲۰) هست. در این صورت ما می تونیم یک تابع برای بررسی پارامترهای U و p در این نقطه ایجاد کنیم:

می بینید که تعریف بسیار سادست. کافیست کد بالا را به فایل controlDict خود اضافه کنید. حالا اگر مساله خودتون رو ران بگیرید پوشه ای به نام postProcessing در کیس ایجاد خواهد شد که حاوی اطلاعات مورد نیاز شما نسبت به زمان است. مثلا:

شما می تونید این داده ها را با استفاده از gnuplot رسم کنید. بسیار ساده. یک اسکریپت gnuplot آماده کنید و کد زیر را داخل آن قرار بدید. اسم فایل رو هم مثلا بگذارید plot.

حالا خیلی راحت از کیس اصلی دستور زیر رو در حین حل (از یک ترمینالی به غیر از ترمینالی که در حال ران کردن مساله شماست) نمودار رو رسم کنید:

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

1

برای کنسل کردن نمودار باید از Ctrl+C استفاده کنید.

تابع دیگر forceCoeffs نام دارد. مساله جریان حول استوانه را که در ابتدا گفتیم به یاد بیاورید. می خواهیم ضرایب درگ و لیفت روی استوانه را مانیتور کنیم. بنابراین داریم:

کد بالا رو در داخل دیکشنری functions در فایل controlDict قرار میدیم. به مقادیر موجود در تابع توجه کنید. این مقادیر را باید حتما با توجه به مساله خودتون تغییر بدید. بعد از ران و همانند قبل و با تنظیم یک فایل اسکریپت gnuplot می تونید نمودار زیبای زیر رو بعد از یک مدت مشاهده بکنید:

2

نکته آخر اینکه شاید شما قبل از ران کردن کیس فراموش کردید تا Function Object رو در نظر بگیرید. در این صورت می تونید خیلی راحت با استفاده از دستور زیر فقط Function Object های تازه اضافه شده رو از زمان ابتدا تا انتها سریعا ران کنید. البته در این حالت شاید شما بپرسید چطور با عدم تمام شدن حل و عدم وجود اطلاعات در دسترس، اپنفوم قصد استخراج اطلاعات مربوط به هر تایم استپ را دارد؟ اتفاقا حق با شماست. اپنفوم چنین کاری نمی تونه انجام بده. اپنفوم فقط اطلاعات مربوط به گام های زمانی رو استخراج می کنه که در دیسک رایت شدند. Write Interval که در ControlDict یادتون هست؟

بنابراین اگر نیاز به رسم نمودار خیلی خوب دارید و Write Interval های شما در حین ران خیلی ریز نبودند، باید بگم که شما مجبورید دوباره ران بگیرید و اینبار از Function Object در ControlDict استفاده بکنید.

فینیشد. شاد باشد.

قهوه قراموش نشود 😉

coffee

residual

چگونه در CFD به جواب درست برسیم؟ قسمت دوم: رسم نمودار مانده ها توسط PyFOAM

[su_label type=”important”]تست شده در همه نسخه ها[/su_label]

در این پست به صورت خلاصه به نحوه اجرای یک حلگر همراه با رسم نمودار مانده ها می پردازیم. شاید بشه گفت در حین حل یک مساله CFD، مشاهده نمودار مانده ها مهمترین ابزار بررسی روند حل هست. این نمودار، متوسط خطای پارامترها رو در هر گام زمانی نسبت به گام زمانی قبل محاسبه و به شکل بی بعد ارائه می کنه. در نتیجه باید انتظار داشته باشیم که رفته به رفته خطاها کم شده و در نتیجه نمودار مانده ها به مقدار صفر نزدیک بشند. پایا و ناپایا بودن مساله، سادگی و پیچیدگی هندسه، مدل های استفاده شده، شبکه به کار رفته، همه از جمله عواملی هستند که روی نمودار مانده ها تاثیر گذارند. متخصصان CFD با دیدن نمودار مانده ها می توانند رفتار حلگر رو نسبت به مساله تشخیص بدند و در نتیجه تا حدودی از صحت و یا عدم صحت حل مطمئن بشند. در نرم افزارهای تجاری، این نمودار معمولا با شروع به حل، به صورت خودکار رسم میشه، اما در نرم افزارهای متن باز و به خصوص اپنفوم، این نمودار به صورت خودکار رسم نمیشه. اما راه حل آن بسیار ساده است. می توان از دو روش برای این کار استفاده کرد. روش اول استفاده از خروجی های داده شده در فایل log حلگر و روش دوم استفاده از پکیج سودمند PyFOAM که به صورت مجزا برای اپنفوم به صورت غیر رسمی منتشر میشه. روش دوم بسیار ساده تر و قوی تر از روش اول است. در نتیجه ما هم در اینجا از همین روش استفاده می کنیم.
ابتدا لازم هست که شما این ابزار رو نصب بکنید، تا در ادامه بتونیم از اون برای رسم نمودار استفاده بکنیم. قبل از نصب لازم هست شما دو پکیج از پکیج های لینوکس نصب بکنید. پکیج اول، ابزار gnuplot هست که برای رسم نمودارهای مختلف به کار میره. پکیج دوم python-numpy هست که pyFoam از اون برای محاسبات استفاده می کنه. بنابراین قبل از همه چیز:

حالا کد PyFOAM رو از این لینک دانلود بکنید و اون رو در پوشه OpenFOAM قرار بدید. البته مهم نیست که فایل در کجا قرار داشته باشه، ولی بهتر هست برای حفظ نظم اون رو داخل پوشه $HOME/OpenFOAM قرار بدیم. فایل دانلود شده شما یک فایل زیپ شده با پسوند tar.gz هست. بنابراین ابتدا فایل رو باید از حالت زیپ خارج کنیم:

و سپس با دستور زیر، PyFOAM رو نصب می کنیم:

نصب PyFOAM چند ثانیه بیشتر طول نمیکشه. بعد از نصب، شما می تونید از خیل عظیم ابزارهای PyFOAM استفاده کنید. برای دیدن ابزارهای وسیع PyFOAM می تونید به اینجا مراجعه کنید. همچنین آقای Bernhard Gschaider سازنده PyFOAM و Swak4Foam، در یک PDF بسیار کاملی ابزارهای مختلف PyFOAM رو توضیح دادند. می تونید این PDF رو هم از اینجا دانلود کنید.
اما ما برای رسم نمودار مانده از ابزار pyFoamPlotRunner.py استفاده خواهیم کرد. نحوه استفاده بسیار سادست. کافیه به جای دستورات قبلی برای اجرای حلگر، اینبار همانند زیر عمل کنیم:

می خواید پردازش موازی انجام بدید؟ مشکلی نیست:

با اجرای حلگرها توسط این ابزار، می بینید که به صورت خودکار نمودار مانده ها هم رسم خواهد شد.

شاد باشید! 🙂

winCFD

چگونه در CFD به جواب درست برسیم؟ قسمت اول: کلیات

امروز، به بررسی نحوه رسیدن به یک جواب درست در CFD و روند حل یک مساله به روش استاندارد می پردازیم. این آموزش به صورت منظم در چند بخش برای شما تنظیم شده که به مرور زمان در سایت قرار میگیره.
بسیاری از افرادی که CFD کار می کنند، نحوه درست حل یک مساله رو نمی دونند. شاید از نظر علمی در یک موضوع خاصی تخصص بسیار خوبی هم داشته باشند ولی این تخصص به هیچ وجه ضامن رسیدن به یک جواب خوب نیست. دلیل این موضوع، ناآگاه بودن شخص از نحوه انجام درست یک تحقیق مخصوصا در زمینه حساسی همچون CFD هست. به شخصه افراد بسیار زیادی رو دیدم که با گذاشتن قدم های اشتباه، با وجود داشتن دانش علمی لازم در یک موضوع خاص، هیچ گاه در CFD موفق نشدند و حتی اون رو کار بسیار طاقت فرسا و بیخودی برشمردند. در حالی که متوجه نیستند مشکل از CFD نیست، بلکه از خود آنهاست. افراد زیادی از من در مورد عدم نتیجه گرفتن در یک مساله خاص سوال می کنند و به تجربه مشاهده کردم که در اکثر مواقع، دلیل، عدم آگاهی فرد از روند استاندارد حل یک مساله هست.
به طور خیلی خلاصه مراحل انجام یک مساله به روش عددی شامل مراحل زیر هست:
۱٫ ساده سازی هندسه، شرایط مساله، شبکه با کیفیت، حل به صورت ابتدائی و پیدا کردن مشکلات فنی.
۲٫ اعمال کردن شرایط پیچیده تر که مرتبط با مساله اصلی است و پیدا کردن مشکلات فنی.
۳٫ تلاش برای صحت سنجی و مانیتورینگ مساله.
۴٫ تهیه و اجرا کردن مساله اصلی با پارامترهای مختلف.
۵٫ استخراج مناسب نتایج.
۶٫ و از همه مهمتر رعایت نظم در طول تمامی مراحل بالاست.
عمل نکردن صحیح به هرکدام از موارد فوق ممکن است منجر به عدم موفقیت کاربر شود. ساده سازی هندسه یکی از جمله قسمت هایی است که خیلی مورد توجه تازه کاران قرار نمی گیرد. معمولا تازه کاران عرصه CFD تصور می کنند یک هندسه پیچیده نشان دهنده حرفه ای بودن کار است، در حالی که این برداشت در بین CFD کاران با تجربه، مزاحی بیش نیست. هندسه باید تا آنجا که به نتایج حل اصلی (که مد نظر است) لطمه ای نزند، ساده شود. هندسه پیچیده اغلب باعث ریزتر شدن شبکه، به وجود آمدن شبکه های بی کیفیت و در نتیجه واگرا شدن سریع حلگر و یا به دست آمدن نتایج غلط پس از یک حل بسیار طولانی می شود. از طرف دیگر استفاده از یک شبکه با کیفیت در حل مساله است. فکر می کنید شبکه بندی، چند درصد از حجم یک مساله CFD را به خود اختصاص می دهد؟ از نظر افراد دارای سابقه این حجم چیزی در حدود ۶۰ تا ۷۰ درصد است. یعنی حجم عظیم کار باید روی شبکه بندی صرف شود. این مرحله هم از جمله مراحلی هست که خیلی مورد توجه افراد قرار نمی گیرد و در نتیجه بعد از حل، از نرم افزار CFD به خاطر تولید نتایج دور از واقعیت گله می کنند.

3پله پله کار کردن و به تدریج پیچیده تر کردن یک مساله، کلید طلایی حل مساله در CFD هست. هیچ گاه سعی نکنید یک مساله پیچیده که شامل چندین مدل می شود را یکباره حل کنید. فرض کنید شما می خواهید یک مساله دو فازی، متخلخل، با سیال غیر نیوتنی را حل کنید. اولین قدم تست کردن تک به تک این مدل هاست. همیشه مساله خود رو به چند بلوک تقسیم بندی کنید و روی هر بلوک جداگانه کار کنید. به این بلوک ها به صورت یک جعبه سیاه نگاه کنید. هرکدام از این بلوک ها یک ورودی و یک خروجی دارند. در نهایت بلوک ها را به هم متصل کنید تا مساله کلی حل شود. هیچ گاه تک بلوکه کار نکنید! در مساله گفته شده در بالا، در هر مرحله یک مدل را وارد کار کنید، مشکلات و خطاهای آن را (که قریب به اکثر مواقع به وجود می آیند) برطرف کنید و سپس مدل بعدی را اضافه کنید.
اما در حین حل، لازم است تا شما مساله خود را مانیتورینگ (Monitoring) کنید. این قسمت، موضوعی است که در پست های بعدی در مورد آن صحبت خواهد شد. مانیتورینگ مساله یعنی اینکه حلگر را در هنگام حل به حال خود رها نکنید! مانتورینگ شامل موارد زیر می شود:
۱٫ نمودار مانده ها
۲٫ نمودار پیوستگی
۳٫ ضرایب نیرو
۴٫ پرابینگ (Probing)
۵٫ عدد کورانت در مسائل ناپایا
۶٫ غیره بسته به مساله
در پست های بعدی سعی خواهد شد نحوه انجام مانیتورینگ به روش های بالا، یک به یک در اپنفوم توضیح داده شود.

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

6

نحوه نصب swak4Foam

در ابتدا باید بابت طولانی شدن نوشتن پست های جدید عذرخواهی کنم. امیدوارم روزی برسه بتونم سایت رو هرچه سریع تر آپلود بکنم. فکر های خوبی در سر داریم!
و اما پکیج دوست داشتنی Swak4FOAM …!
Swak4Foam مجموعه ای از ابزارهاست که قابلیت های بسیار خوبی رو به اپنفوم اضافه می کنه. این ابزار توسط یکی از خدایان اپنفوم به نام Bernhard Gschaider نوشته شده. از جمله این ابزارها میشه به شرط مرزی groovyBC و Function Object های جدید و بسیار بسیار به درد بخور و خفن (!) و ابزار دوست داشتنی funkySetFields اشاره کرد. در پست های بعدی شاید در مورد اینها بیشتر صحبت کنیم. اما شاید لازم باشه تا ابتدا در مورد نحوه نصب swak4Foam کمی صحبت کنیم. نحوه نصب خیلی سخت نیست. کافیه پکیج نرم افزار رو دانلود بکنید، از وجود پکیج های لازم در لینوکس خودتون مطمئن بشید و سپس Lets Compile !
صفحه رسمی این ابزار رو می تونید در اینجا ببینید. در قسمت Downloading انواع روش های دانلود این پکیج با SVN و Tarball و Zip گذاشته شده. ما فایل Zip رو از اینجا دانلود می کنیم و اون رو در پوشه $HOME/OpenFOAM قرار میدیم تا نصب رو شروع بکنیم. دقت کنید که نسخه ای که در بالا لینکش داده شد برای نسخه های رسمی اپنفوم هست. اگر برای نسخه extend می خواید باید فایل Zip مربوط به اون رو دانلود بکنید.
خب قبل از کمپایل لازم هست تا از وجود دو پکیج مطمئن بشید. Flex و Bison. این دو پکیج معمولا روی سیستم ها به صورت خودکار نصب هستند. می تونید با استفاده از دو دستور زیر از نصب و نسخه این پکیج ها آگاه بشید:

اما…! swak4Foam فقط با bison های نسخه پایین تر از ۳ کار می کنه. بنابراین اگر نسخه bison شما ۳ یا بیشتر هست باید ابتدا این bison رو حذف و سپس به صورت دستی bison نسخه پایین تر رو دانلود و نصب کنید. برای این کار اول bison قبلی رو حذف می کنیم:

حالا می تونید bison 2.7 رو با استفاده از دستورات زیر دانلود کنید. bison دارای دو فایل هست که هردو باید دانلود و نصب بشند:

بعد باید این فایل های دانلود شده رو که همان فایل های deb هستند، نصب کنید. یادتون باشه که فایل های deb در لینوکس همون نقش نصب کننده نرم افزارها در ویندوز رو دارند. برای نصب این فایل ها باید از دستورات زیر استفاده کنید:

والسلام! حالا وارد پوشه OpenFOAM بشید و فایل Zip دانلود شده رو که در اونجا قرار داید Extract کنید.

در نهایت داخل پوشه swak4Foam بشید:

و با ران کردن اسکریپت داخل پوشه، اون رو کمپایل کنید:

این مرحله از ۲۰ تا ۳۰ دقیقه طول میکشه. در نهایت می تونید با نوشتن دستور زیر از نصب درست مطمئن بشید:

البته که خطا میده ولی خطا نباید command not found باشه!
درود و صد درود!

mesh_resized

بازی، اپنفوم به جای بازی، ریاضی!

[su_label type=”important”]تست شده در OF 3.0.1[/su_label]

در این قسمت قصد داریم کمی از کار با اُپنفوم لذت ببریم! برای این کار تصمیم گرفتیم یک مساله دو فازی حل کنیم. در اُپنفوم ساده ترین و معروفترین حلگر دوفازی interFoam هست. در این مساله یاد خواهیم گرفت:

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

شاید مساله شکست سد رو در فایل های آموزشی (tutorials) اُپنفوم دیده باشید. شکست سد یک مساله بنچمارک (Benchmark) و یا همون معیار برای صحت سنجی بسیاری از مسائل دوفازی هست. می تونید این مساله رو در آدرس زیر پیدا کنید.:

اما برای حل یک مساله دوفازی قبل از هرچیز لازم هست تا شرایط اولیه و مرزی تعیین شوند. شرایط اولیه، مربوط به گام زمانی صفر می شود؛ اینکه چگونه دو فاز در ابتدا در کنار هم قرار دارند. برای این کار اُپنفوم کاران (!) از ابزار setFields استفاده می کنند. این ابزار می تواند دامنه را بر حسب مقادیر مختلف پارامترها مقدار دهی کند.

همانطور که شاید بدانید، حلگر interFoam از روش VOF یا Volume Of Fluid برای حل مسائل دوفازی استفاده می کند. این یعنی پارامتری به نام آلفا تعریف شده که مقدار آن از ۰ (فاز اول) تا ۱ (فاز دوم) در حال تغییر هست. بنابراین هرکجا از میدان که مقدار آلفا برابر با ۰ بود، بعنی در این قسمت از میدان، فاز اول قرار گرفته و مشابه همین، اگر مقدار آن ۱ بود، یعنی فاز دوم در آنجا قرار دارد. با استفاده از setFields در حقیقت کافیست همین پارامتر آلفا را در میدان مقداردهی کنیم.

در مثال حاضر، می خواهیم پاشیدن یک سیال روی کلمه OpenFOAM.ir را بررسی کنیم! شبکه مساله قبلا در نرم افزار گمبیت آماده شده و فقط در اینجا از آن استفاده خواهد شد.

mesh

شماتیک کلی مساله هم به شکل زیر هست. دقیقا در بالای کلمه OpenFOAM.ir یک قطره بزرگ سیال قرار گرفته که در زمان ۰، رها می شود. به دلیل نیروی جاذبه، قطره روی کلمه خواهد افتاد و سپس ما از این کار خود بسی لذت خواهیم برد!

schemاما برای شروع کار از همان کیس شکست سد استفاده خواهیم کرد. همانند گذشته یک کپی از این کیس که آدرس آن در بالا گفته شد، در داخل پوشه run کپی می کنیم. نام آن را هم مثلا به openfoamIr تغییر می دهیم. حال لازم هست تا شرایط مرزی و بقیه تنظیماتی را که لازم است تا مساله شکست سد به مساله حاضر تبدیل شود، انجام گیرد. مرحله اول وارد کردن شبکه به مساله است. نام شبکه، openfoamTet.msh هست. این فایل رو در داخل پوشه مساله قرار می دهیم و دستور زیر را برای تبدیل این شبکه به شبکه اُپنفوم وارد می کنیم:

دقت کنید که این یک شبکه دو بعدی است، بنابراین باید از دستور fluentMeshToFoam به جای دستور fluent3DMeshToFoam استفاده شود. با وارد کردن شبکه، اُپنفوم خود، به شبکه دو بعدی ضخامتی به اندازه یک المان می دهد و سطوح بالایی و پایینی تازه تشکیل شده آن را frontAndBackPlanes نام گذاری می کند. می توان بعد از وارد کردن شبکه، به فایل boundary آن که در پوشه polyMesh قرار گرفته، یک سری زد.

در اینجا نام شرایط مرزی که در گمبیت به مرزها داده شده، مشاهده می شود. همچنین شرط مرزی frontAndBackPlanes هم که توسط اُپنفوم اضافه شده در اینجا دیده می شود. می توان نام شرایط مرزی را به دلخواه تغییر داد. مثلا برای سادگی نام مرز frontAndBackPlanes را به frontAndBack تغییر می دهیم و فایل را ذخیره می کنیم.

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

برای سرعت:

برای فشار:

برای آلفا:

در پوشه constant تغییر خاصی نیاز نیست. فقط مثلا در این مثال مقدار کشش سطحی بین دو سیال (Sigma) برابر با ۷ در نظر گرفته شده که برای مقایسه حدود صد برابر کشش سطحی بین آب و هواست. بنابراین در فایل transportProperties:

در پوشه system، دیگر نیازی به فایل از پیش تنظیم شده blockMeshDict نیست، چرا که این فایل برای تولید شبکه مربوط به مساله شکست سد بوده. بنابراین برای تمیز شدن مساله از فایل های اضافی، این فایل را حذف می کنیم. فایل controlDict حاوی تنظیماتی از جمله مقدار گام زمانی، زمان شروع و اتمام حل است. مقدار گام زمانی را برای تست همان ۰٫۰۰۱ قرار می دهیم که از قبل برای مساله شکست سد تعیین شده بود. اما دقت کنید که در پایین گزینه ای به نام adjustTimeStep موجود است. این گزینه اگر فعال باشد، با توجه به مقدار عدد Courant ای که کاربر مد نظر دارد، به صورت خودکار و در هر گام زمانی، مقدار گام زمانی جدید را تعیین می کند. در چنین مسائلی که پایداری زیادی در مسائل دیده نمی شود، استفاده از این تکنیک باعث افزایش قابل توجه پایداری خواهد شد. معمولا فیکس کردن گام زمانی به یک عدد خاص در چنین مسائلی باعث واگرایی سریع حل خواهد شد. در واقع مقدار ۰٫۰۰۱ هم چیزی حز یک حدس اولیه نیست و به مرور زمان در حین حل، مقدار گام زمانی با توجه به عدد Co تعیین می شود. مقدار استاندارد عدد Co معمولا ۱ هست، اما برای پایداری بیشتر می توان این مقدار را تا ۰٫۱ هم کاهش داد. در بعضی مسائل دیگر که پایداری زیادی مشاهده می شود، می توان برای افزایش سرعت حل، مقدار این عدد را حتی شاید تا ۵ یا ۱۰ نیز افزایش داد. همچنین زمان نهایی حل (stopTime) نیز برابر با ۵ ثانیه در نظر گرفته شده. از طرفی برای داشتن یک انیمیشن خوب در انتهای حل، به اُپنفوم گفته شده تا در هر ۰٫۰۱۵ ثانیه از حل، یک بار نتایج را روی دیسک ذخیره کند. این مورد در کلیدواژه writeControl و writeInterval تعیین می شود.

اما قبل از حل گفته شد که باید از دستور setFields برای تعیین شرط اولیه مربوط به آلفا استفاده شود. در داخل این دستور گفته شده که همه میدان حل به جز یک ناحیه مستطیلی در بالای عبارت OpenFOAM.ir فاز دوم و در داخل این ناحیه فاز اول قرار گیرد:

اما شرط اولیه در کجا ذخیره شده است؟ در واقع عبارت internalField که در هر پارامتر موجود در پوشه ۰ قرار گرفته، همان شرط اولیه است! در اکثر مسائل اُپنفوم دیده اید که این مقدار برابر با یک مقدار ثابت در نظر گرفته شده. در واقع این همان شرط اولیه یکنواخت برای همه میدان است. مثلا در همین مثال برای فشار (واقع در پوشه ۰) اینگونه نوشته شده بود:

یعنی در شروع حل، حدس اولیه در تمام میدان برای فشار برابر با صفر در نظر گرفته شده. اما برای پارامتر آلفا این موضوع برقرار نیست. چرا که می خواهیم دقیقا در بالای عبارت OpenFOAM.ir سیال فاز دوم قرار داشته باشد. بنابراین از دستور setFields برای تنظیم internalField استفاده می کنیم. توجه کنید که نمی توان به صورت دستی مقدار هر سلول را در کلیدواژه internalField وارد کرد!

اما نکته ای که باید به آن اشاره کرد، این است که دستور setFields باعث تغییر قسمت internalField در داخل فایل alpha.water خواهد شد. اما شاید کاربر در آینده نیازی به این فایل تغییر داده شده نداشته باشد و بخواهد دوباره مساله را از صفر (با شرط اولیه یکنواخت) طور دیگری حل کند. اگر دستور setFields بدون داشتن یک کپی از فایل قبلی (alpha.water) اجرا شود، تمام تغییرات روی این فایل انجام شده و عملا فایل قبلی از بین خواهد رفت. بنابراین معمولا قبل از اعمال دستور setFields یک کپی از فایل alpha.water می گیرند و مثلا نام آن را alpha.water.org مخفف کلمه original قرار می دهند. سپس می توان با خیال راحت دستور setFields را اجرا کرد.

پس از اجرای این دستور نگاهی به فایل alpha.water بیاندازید و تغییرات ایجاد شده در این فایل را مشاهده کنید. قسمت internalField به صورت non-uniiform (غیر یکنواخت) تنظیم شده (دقیقا همان طور که می خواستیم). البته فقط قسمتی از کد در اینجا آورده شده.

خب حالا تقریبا مساله آماده حل هست، شاید بخواهید این مساله را با چند پردازنده حل کنید بنابراین کافیست فایل decomposeParDict رو به درستی بر حسب تعداد پردازنده های مورد نظر خود تنظیم کنید. مثلا در زیر این فایل برای استفاده از دو ۸ پردازنده تنظیم شده:

توجه کنید که هنگام استفاده از روش Simple حتما باید ضرب مقادیر موجود در بردار n، برابر با تعداد پردازنده های شما باشد. برای مثال می توان از بردارهای (۱ ۸ ۱)، (۲ ۴ ۱) و … استفاده کرد. توجه کنید که در هنگام حل یک مساله دو بعدی، به بعد سوم پردازنده اختصاص ندهید (مقدار ۱ باشد). در غیر این صورت پردازنده خود را به هدر داده اید!

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

در اینجا آپشن p به معنای Parallel (حل موازی) و s به معنای Screen (صفحه نمایش) است. اگر آپشن s استفاده نشود، چیزی در صفحه نمایش هنگام حل نشان داده نخواهد شد.

در انتهای حل می توانید از نتایج آن لذت ببرید!

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

[su_members message=”این قسمت فقط برای اعضا قابل مشاهده است. لطفا %login% شوید.” login_text=”وارد” login_url=”http://openfoam.ir/%d9%88%d8%b1%d9%88%d8%af-%d8%a7%d8%b9%d8%b6%d8%a7/”][su_button url=”http://cdn.persiangig.com/preview/3vWhCl5X8h/openfoam_VOF.tar.gz” target=”blank” background=”#229620″ radius=”10″ icon=”icon: arrow-down”]دانلود[/su_button][/su_members]

دانلود فایل شبکه

[su_members message=”این قسمت فقط برای اعضا قابل مشاهده است. لطفا %login% شوید.” login_text=”وارد” login_url=”http://openfoam.ir/%d9%88%d8%b1%d9%88%d8%af-%d8%a7%d8%b9%d8%b6%d8%a7/”][su_button url=”http://cdn.persiangig.com/preview/wLOd7ATpSL/openfoamTet.rar” target=”blank” background=”#229620″ radius=”10″ icon=”icon: arrow-down”]دانلود[/su_button][/su_members]

مشاهده انیمشن نهایی: