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


اول از همه OpenFOAM محیط گرافیکی نداره و توی ترمینال اجرا میشه. پس ما هم یه مقدار با ترمینال لینوکس کار می‌کنیم.

احتمالا تا حالا با cmd ویندوز کار کردید. ترمینال لینوکس هم مثل cmd یه محیط کامندی هست ولی قدرتش خیلی خیلی بیشتره.

توی User Guide اوپن‌فوم گفته شده که توی پوشه FOAM_TUTORIALS$ مثال‌هایی برای استفاده Solverها و Utilityها اومده. ولی FOAM_TUTORIALS$ چیه؟

توی ترمینال لینوکس هر چیزی که با علامت $ شروع میشه متغیر محیطی(environment variables) هست. شما با دستور echo می‌تونید محتوای یه متغیر محیطی رو مشاهده کنید. مثلا:



همونجوری که مشخصه این متغیر داره به پوشه tutorials توی شاخه‌ای که OpenFOAM نصب شده (opt/openfoam4/) اشاره می‌کنه.

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

c:\programfiles\tools

ولی توی لینوکس اینجوری نیست که مثل ویندوز درایو داشته باشید. اینجا آدرس‌ها همیشه از ریشه یا / شروع میشن. مثل همون شاخه opt/openfoam4/


اگه بخواید همه متغیرهای محیطی سیستمون رو ببینید می‌تونید از دستور printenv استفاده کنید. البته کاربرد چندانی براتون نداره، ولی مثلا می‌تونید ببینید با نصب OpenFOAM چه متغیرهایی دیگه‌ای که با FOAM$ شروع میشن به سیستمتون اضافه شدن.


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

مثلا من میخوام دستور echo $FOAM  رو بنویسم و با دو بار زدن تب ببینم چه متغیرهای دیگه‌ای وجود دارن که می‌تونن در ادامه این دستور بیان :


از پرکاربردترین دستورات ترمینال ls و cd هستن.

با استفاده از دستور  ls می‌تویند لیست فایل‌ها و پوشه‌های مسیری که هستید رو ببینید. مثلا این تصویر رو ببینید:


اینجا من تو مسیر opt/ هستم که با رنگ آبی نشون داده شده(خط اول). با زدن دستور ls محتویات شاخه opt/ که تو اون هستم رو بهم نشون میده. همونجوری که می‌بینید یکی از پوشه‌هایی که به من نشون داده openfoam4 هست. حالا قصد دارم که داخل پوشه openfoam4 برم. برای این کار از دستور cd به شکل زیر استفاده می‌کنم:


همونجوری که می‌بینید من با زدن دستور cd openfoam4 به پوشه openfoam4 منتقل شدم و مسیر آبی رنگ به opt/openfoam4/ تغییر کرد. بعدش هم یه دونه ls زدم که محتویات این پوشه رو بهم نشون بده.

توی فایل راهنمای اوپن‌فوم پیشنهاد شده که یه پوشه برای ران کردن مثال‌ها ایجاد کنید و مثال‌ها رو تو اون کپی کنید. خودش مسیری که برای این پوشه در نظر گرفته رو تو یه متغیر محلی به نام FOAM_RUN$ ریخته. شما با ls گرفتن از این متغیر محلی می‌تونید ببینید که این پوشه رو دارید یا نه:
ls $FOAM_RUN

اولین باری که اوپن‌فوم رو نصب می‌کنید معمولا این پوشه وجود نداره. با استفاده از دستور mkdir می‌تونید این پوشه رو ایجاد کنید:
mkdir -p $FOAM_RUN

سوییچ p- برای اینه که اگه همچین پوشه‌ای وجود داشته باشه بهتون خطا نده.


راستی یه نکته خیلی مهم توی لینوکس حساس بودن به حروف بزرگ و کوچیک هست. یعنی مثلا اگه دستور LS (با حروف بزرگ) رو وارد کنید، این دستور رو نمیشناسه و بهتون خطا میده. یا مثلا می‌تونید ۲ تا فایل یا فولدر هم‌نام داشته باشید، البته به شرطی که اسامیشون از نظر بزرگی و کوچکی حروف با هم متفاوت باشن.


آخرین دستوری هم که این جلسه باهاش آشنا میشیم دستور cp هست که برای کپی انجام میشه. الان ما می‌خوایم یکی از مثال‌ها رو تو پوشه run خودمون کپی کنیم. اول با دستور زیر وارد پوشه run میشیم:

cd $FOAM_RUN


در ادامه با استفاده از دستور cp و دادن مبدا و مقصد کپی رو انجام میدیم. مثلا:

cp -r $FOAM_TUTORIALS/incompressible/simpleFoam/pitzDaily .


آدرس FOAM_TUTORIALS/incompressible/simpleFoam/pitzDaily$ آدرس یکی از مثال‌ها هست که میخوایم فولدرش رو کپی ‌کنیم.

آخرین دستور یه دونه نقطه گذاشته شده که آدرس مقصد هست. همیشه یادتون باشه که یه نقطه (.) به مسیر فعلی که هستید اشاره میکنه(همون آدرس آبی رنگ توی خط نوشتن دستورات توی تصاویر بالا) . دو نقطه به یه شاخه بالاتر از خودش اشاره میکنه.

مثلا تصویر زیر رو ببینید:


من اول توی شاخه opt/openfoam4/ هستم. بعدش هرچی دستور . cd رو زدم از مسیر فعلی که هستم جابجا نشدم و همونجا موندم. چون . به همون آدرس اشاره میکنه. ولی هرباری که دستور .. cd رو می‌زنم یه شاخه بالاتر میام.

سوییچ r- توی دستور cp باعث میشه که همه پوشه‌ها و زیرپوشه‌هایی که توی آدرس مورد نظرمون قرار دارن هم کپی بشن.


فکر کنم برای این جلسه کافی باشه. اگه سوالی بود درخدمتم.