چرا فرترن؟
با توجه به اینکه فرترن زبانی بسیار سریع میباشد، در بسیاری از نرم افزارهای مهندسی به عنوان زبان کد استفاده شده است. بسیاری از کدهای CFD بر اساس زبان قدرتمند فرترن نوشته شده اند. مطالعه کدها و همچنین توسعه دادن کدهای جدید مستلزم آشنایی با زبان برنامه نویسی فرترن می باشد. گرچه کدهای آماده ای که در متلب و سایر نرم افزارها ارائه شده اند، کار دانشجویان را برای توسعه کد راحت تر کرده اند، ویژگی ها و توابع موجود در متلب باعث عدم تسلط دانشجویان با روشهای عددی استفاده شده در کدهای پیشرفته میباشد، از این رو به دانشجویان بشدت توصیه می شود برای بهتر آموختن CFD و همچنین محاسبات عددی پیشرفته شروع به کد نویسی در زبان های مادر مانند فرترن و سی پلاس پلاس کنند. با همه این تفاسیر در دانشگاههای بزرگ دنیا برای آموزش دینامیک سیالات عددی و روشهای عددی پیشرفته از ترکیب همه زبانهای برنامه نویسی بالاخص فرترن ،سی پلاس پلاس ،متلب و پایتون استفاده میکنند.
چه افرادی به فرترن نیاز دارند؟
زبان برنامه نویسی فرترن علاوه بر CFD در دیگر علوم مانند هواشناسی، فیزیک، شیمی و مواردی که با داده های بسیار عظیم سر و کار دارند بسیار پرکاربرد است. دانشجویان مهندسی مکانیک به عنوان پیش زمینه در دروس محاسبات عددی و دینامیک سیالات محاسباتی (cfd) بایستی به زبان برنامه نویسی فرترن تسلط داشته باشند.
ویژگیهای این دوره؟
در اینجا در بخش اول از دوره آموزش دینامیک سیالات محاسباتی، زبان برنامه نویسی فرترن از مقدماتی تا پیشرفته ارائه خدمت شما عزیزان ارائه شده است. آموزش متمرکز بر یادگیری دانشجویان و همراه با مثال و کد میباشد. این آموزش در حدود بیست جلسه 50 دقیقه ای تهیه شده است و با دنبال کردن آن به مدت 20 روز میتوانید بیشتر مهارتهای مورد نیاز برای کدنویسی روشهای عددی را فرا بگیرید. در همین پست پس از معرفی سرفصلهای هر بخش یک سری تمرین برای بهبود مهارتهای شما فراهم دیده شده است. دانش خود را از طریق این تمرین ها به کمال برسانید. جلسه اول برای شما عزیزان رایگان است و میتوانید از فرمت آموزش دیدن بفرمایید.
نرم افزارهای مورد نیاز
نرم افزارهای مورد نیاز کامپایلر های معروف فرترن مانند simply fortran، intel- visula fortran, pgi visual fortran و یا ftn95 (plato-silverfrost) میباشد. شما با هرکدام که راخت تر هستید میتوانید از این آموزش استفاده نمایید با این حال در ویدئوها از simplyfortran استفاده شده و بهتر است برای این آموزش از این کامپایلر ساده و پرقدرت استفاده کنید. یک نسخه از این نرم افزار به همراه پلاتو در اینجا ارائه شده اند که میتوانید دانلود کرده و استفاده نمایید.
دوستانی که با لینوکس کار میکنند میتوانند پس از نصب کامپایلرهای مناسب از این آموزش استفاده کنند. در انتها یک در یک جلسه آموزش کدنویسی فرترن در لینوکس نیز اضافه میشود.
کامپایلر simplyfortran و silverfrost-ftn95 رو برای دانلود اضافه کردم
[purchase_link id=”122341″ style=”button” color=”blue” text=”برای خرید کلیک فرمایید”]
جلسه صفرم :
معرفی زبان فرترن و کامپایلر -رایگان
- معرفی زبان برنامه نویسی فرترن
- معرفی برخی کامپایلرهای فرترن
- نصب کامپایلر simplyfortran
- نوشتن و اجرای کد (سلام به شما)
- نوشتن و اجرای کد (پیشبینی تعداد مقالات)
جلسه اول برای شما عزیزان رایگان است و میتوانید از فرمت آموزش دیدن بفرمایید.
جلسه اول :
مفاهیم ضروری 1
- خلاصه جلسه اول
- مراحل اجرای یک کد ، نوشتن و اجرای کد (افزایش سرمایه)
- مفاهیم اساسی :مفهوم دستور (statement)، توضیح (comment)، تعریف کردن (declaration)، متغیر و نوع آن (variable and type)، دستورات اجرایی (execution statement)، مقداردهی (assingmrnt)، عبارت (expression)، دستورات ورودی و خروجی ساده (input output –IO)
- مفاهیم اساسی : اثر جای خالی و خط خالی در کدهای فرترن (space and blank line) ، مفهوم مکان حافظه (memory location) ، زبان ماشین
- ساختار کلی یک برنامه فرترن
- نکات مربوط به نوشتن دستورات (statement) تعداد کاراکترها در هر خط کد، استفاده از فضای خالی در دستورات (space)، کلمات کلیدی (keywords)، نوشتن یک دستور در چند خط (&)، چند دستور در یک خط (;)،
- متغیرها و انواع ذاتی آنها در فرترن
جلسه دوم :
مفاهیم ضروری 2
- خلاصه جلسه دوم
- قواعد نامگذاری در فرترن (names in fortran)
- متغیرها، تعریف و مقداردهی آنها در فرترن (variables and their declaration and assignment)، ثوابت (parameters) و مقداردهی حین تعریف کردن (::) و تابع data
- مفهوم implicit none
- کدنویسی حرکت یک پرتابه تحت شتاب جاذبه
- نکات شیوه برنامه نویسی (programming style)
- عملگرهای ریاضی در فرترن و اولویت اجرای آنها
جلسه سوم :
مفاهیم ضروری 3
- خلاصه جلسه سوم
- عملیات ریاضی ساده
- دستورات IO، (read و write و print و format و open)
جلسه چهارم :
مفاهیم ضروری 4
- خلاصه جلسه چهارم
- معرفی اجمالی حلقه تکرار (do loops)
- معرفی تابع (achari) و کارکردن با ASCII table
- استفاده از حلقه های تکرار برای محاسبه ریشه دوم اعداد با استفاده از روش نیوتن
جلسه پنجم :
مفاهیم ضروری 5
- خلاصه جلسه پنجم
- دستورات شرطی در فرترن
- نوشتن و اجرای کد با دستورات شرطی (قبول یا رد شدن دانشجویان)
- ساختار شرطی (if if struct) ، دستور( if if statemnt)و عملگرهای رابطهای (relational operand)
جلسه ششم :
مفاهیم ضروری 6
- خلاصه جلسه ششم
- متغیرهای مختلط
- معرفی توابع ذاتی (نوشتن و اجرای کد پرتابه)
- لیست توابع ذاتی فرترن
جلسه هفتم :
ساختارهای تصمیم گیری پیشرفته در فرترن
- خلاصه جلسه هفتم
- آنچه در بخش پیشرفته آموزش خواهید دید
- ساختار if پیشرفته
- مثالی از کاربرد ساختار if، elseif (نوشتن و اجرای کد ممان تیر)
- مثالی از ساختار پیشرفته if، (تکمیل نمرات دانشجویان)
- ساختار if تودرتو (nested if) + ترکیب if و do
- متغیرها وعملگرهای منطقی
- ساختار case و ساختار goto
جلسه هشتم :
ساختارهای تکرار پیشرفته 1 – تکرارهای معین
- خلاصه جلسه هشتم
- مفهوم تکرارهای معین (deterministic repeatition)
- محاسبه فاکتوریل، جملات دنباله و ترکیب احتمال دو عدد
- ساختار کلی do
- حلقه های تو در تو (nested do)
- محاسبه مبلغ ماهیانه وام در درصدها و زمان باز پرداخت مختلف
جلسه نهم :
ساختارهای تکرار پیشرفته 2 – تکرارهای نا معین
- خلاصه جلسه نهم
- معرفی تکرارهای نامشخص نوشتن و اجرای بازی حدس اعداد رندوم تولید شده
- خروج مشروط از حلقه تکرار do (conditional exit)
- ساختار do while
- الگوریتم تعیین اعداد اول
- نوشتن و اجرای کد محاسبه سینوس یک زاویه با استفاده از سریها
- نوشتن و اجرای کد خواندن تعداد نامشخصی از داده های یک فایل
جلسه دهم :
زیر برنامه ها – توابع
- خلاصه جلسه دهم
- چرایی استفاده از زیربرنامه ها، معرفی انواع آنها
- نوشتن و اجرای کد محاسبه ریشه یک معادله با استفاده از توابع
- عرفی main program تغییر مختصات با استفاده از توابع
- ساختار کلی یک تابع – چند ورودی و تنها یک خروجی
- آرگومانهای dummy
جلسه یازدهم :
زیر برنامه ها – سابروتین ها و ماژولها
- خلاصه جلسه یازدهم
- مفهوم سابروتین و تفاوت آن با تابع
- نوشتن و اجرای یک مثال با استفاده از سابروتین
- نوشتن و اجرای کد جابجایی اعداد با استفاده از سابروتین
- ساختار کلی main program
- برنامه خارجی (external program)
- ساخت فایل dll
- مفهوم ماژول
جلسه دوازدهم :
زیر برنامه ها – خواص آرگومانها
- خلاصه جلسه دوازدهم
- ویژگیهای آرگومانها
- خاصیت intent
- آرگومانهای اختیاری
- خاصیت overloading
- خاصیت recursion
- ساخت فایل dll
- مفهوم ماژول
جلسه سیزدهم :
آرایه ها 1
- خلاصه جلسه سیزدهم
- معرفی آرایه ها
- نوشتن و اجرای کد خواندن تعداد زیادی از داده ها و انجام عملیات بر روی آنها با استفاده از آرایه ها
- مفاهیم، rank، shape، extent، size، array constructor، lower bound و array elements و array declaration
- تعریف آرایه ها با استفاده از impled do
جلسه چهاردهم :
آرایه ها 2
- خلاصه جلسه سیزدهم
- مفهوم آرایه های دینامیک
- مثالی از آرایه های دینامیک
- مرتب کردن لیست با استفاده از آرایه ها
- سایر خواص آرایه ها
جلسه پانزدهم (ادامه جلسه چهاردهم):
آرایه ها 3
- ادامه جلسه چهاردهم
- مقدار دهی به آرایه استفاده از دستور DATA
- معرفی ساختار where
- نوشتن و اجرای کد خواندن تعداد زیادی از داده ها و انجام عملیات بر روی آنها با استفاده از آرایه ها
- مفاهیم، rank، shape، extent، size، array constructor، lower bound و array elements و array declaration
- تعریف آرایه ها با استفاده از impled do
جلسه شانزدهم :
کنترل ورودیها و خروجیها 1
- خلاصه جلسه پانزدهم
- معرفی دستور FORMAT
- شکل کلی دستور print و read
جلسه هفدهم :
کنترل ورودیها و خروجیها 2
- خلاصه جلسه شانزدهم
- چاپ و خواندن اعداد صحیح در هر مبنا (باینری و …)
- چاپ اعداد حقیقی (فرمت اعشاری؛ نمایی؛ مهندسی؛ علمی)
- چاپ اعداد مختلط، متغیرهای منطقی و کاراکتر ها
جلسه هجدهم :
کنترل ورودیها و خروجیها 3
- خلاصه جلسه هفدهم
- کنترل خروجی با استفاده از edit descriptorها (توصیف کننده ها)
- معرفی مشخص کننده ها (specifiers)
جلسه نوزدهم :
کنترل ورودیها و خروجیها 4
- خلاصه جلسه هجدهم
- فایلهای خارجی (external files)
- خواص دستور open و close
- فایلها با دسترسی مستقیم (direct access files)
- دستور inquire
- خاصیت non-advancing
جلسه بیستم :
کارکردن با کاراکترها
- خلاصه جلسه نوزدهم
- کار با کاراکترها
- مرتب کردن (sorting)
- رسم توابع بر روی ترمینال با استفاده از کاراکترها
- تعیین تعداد کلمات موجود در یک متن
- کار با زیر رشته ها
جلسه بیست و یکم :
تایپ های مشتق شده 1 (derived types)
- خلاصه جلسه بیستم
- تفاوت انواع داده های مشتق شده با 5 داده اصلی (ذاتی)
- تعریف یک تایپ مشتق شده؛ بیان کردن آن (declaration) و مقدار دهی با آن (assignments)
- کار کردن با یک نوع مشتق شده و مولفه های آن
جلسه بیست و دوم :
تایپ های مشتق شده 2 (derived types)
- خلاصه جلسه بیست و یکم
- مقداردهی مشتق شده (derived assignment)
- عملگر مشتق شده (derived operator)
جلسه بیست وسوم :
ساخت پایگاه داده در فرترن
- خلاصه جلسه بیست و دوم
- فرمت کامل یک نوع مشتق شده (derived data type)
- پایگاه داده در هشت مرحله با قابلیت تغییر رکورد و اضافه کردن
جلسه بیست و چهارم :
جستجو در داده ها و متغیرهای اشاره گر
- خلاصه جلسه بیست و سوم
- جستجوی خطی و دوتایی در بین داده ها
- مرتب کردن فایل بزرگی از داده ها با استفاده از مفهوم keyed files
- معرفی متغیرهای اشاره گر (pointers)
- خواص متغیرهای اشاره گر
جلسه بیست و پنجم :
تولید اعداد رندوم و کار با ماتریسها
- خلاصه جلسه بیست و چهارم
- تولید اعداد رندوم (استفاده از سابروتین clock و مفهوم seed)
- مفهوم random seed و دستورات get=seed و put=seed
- آرایه های دوبعدی (ماتریسها)
- ترتیب مؤلفه های آرایه های دوبعدی در فرترن
جلسه بیست وششم :
ماتریسها
- خلاصه جلسه بیست و پنجم
- عملکرد اپراتورهای ذاتی بر روی ماتریسها
- آموزش نحوه یافتن خطا در کد
- تعریف یک عملگر جدید برای ضرب ماتریسها
- معرفی یک سری توابع ذاتی ماتریسی
340,000 تومان 170,000 تومانافزودن به سبد خرید
مطالعه بیشتر
فقط ميخان بفروشن،
حتي شما يه جلسه شونم كه ببينين ، حتي بلد نيستن كه حرف بزنن و دائم توو حرفاشون
eeeeeeeeeeeeeeeeeee eeeeeeeeeeeeeee eeeeeeeeeeeeeee
ميكنن ،يعني اعصابتونو به هم ميريزن،
همه ي اينا رو ميشه تحمل كرد،اينكه حتي يه كد بدرد بخور ساده ي سالاتي هم توش نيست ، اين عجيبه، من كلش رو خريدم
، حتي اون
cfd در 14 هم خريدم ، اما خود قرترن رو تا جلسه 13 بيشتر نديدم ، چون بدرد نميخو.رد و سوال كه از استاد ميپرسيم ميگه جلسه ي خصوصي آنلاين بيا ، ساعتي 250 تومن ، آخه اين انسانيته؟
اين معرفته؟
يا مسيگه رياضيت ضعيفه،
بابا بگو نميخام جواب بدم، فقط پول ميخام، بابا انسانيت هم خيلي خوبه
طرف نزديك 200 تومن فقط همين فرترن رو خريده، حق نداره كه يه كد ساده براش بنويسي ،
بابا شماها ديگه چه آدمايي هستين
دوستان یه نکته دیگری رو هم مد نظر قرار بدن که آموزش ویدئویی با آموزش اساتید سر کلاس بسیار تفاوت داره. گرچه پاسخگویی در حد یک استاد وظیفه من نیست اما بازهم ذکر میکنم وجود بیش از 2000 پیام رد و بدل شده بین من و ایشان در واتساپ بیانگر اینه که من خیلی برای آموزش ایشون وقت گذاشتم. یعنی ایشون 200 تومن برای 28 ساعت آموزش پرداخت کردند اما نزدیک 28 ساعت هم از من وقت بردن با این حساب من هنوز به ایشون بدهکار به نظر میرسم.
امیدوارم این پیام ها دیگران رو برای خرید این دوره دچار تردید نکنه، زیرا من نهایت تلاشم رو میکنم که پاسخگو باشم. ای این به بعد از همه کسانی که راهنمایی میخوان میخوام که همینجا کامنت بزارن تا پساخی باشه برای آقای معلم.
آقاي محمد اين استاد فقط ميگه بخر اما بعد از خريد 4 تا سوالتو كه جواب داد ، دائم بهونه مياره ،كه چه ميدونم رياضيت ضعيفه و فلان و بهمان ،ميخام بدونم مگه شما استاد به ظاهر محترم : مگه از شما خريدئ نميكنن ، يا آموزش درست بدين و يا پايخگو باشين ،شما توو اين آموزشا فقط كد هايي رو گفتين كه هيچ جا كاربرد نداره ، يه سيالاتي ،كد cos و يا درصد بانك به چه دردض ميخوره؟، خود من ازتون خاستم كه يه كد ساده ي مربع يا مستطيل كه مش بندي شده باشه و به 4 تا خونه تقسيم شده باشه رو برام بفرستين ، با اينكه خودتون هم ميدونين كه براتون چقدر ساده است ،اما حاضر نيستين، فقط دوست داريد كه cfd رو هم بفروشين، اما طرف كه خريد ميگين هميني كه هست، حتي كد ساده ي يه مش 2 بعدي توو اينهمه برنامه نيست ، فقط كد هاي ساده رو نوشتين كه به درد كشسي نميخوره ، و خودتونو زحمت ندادين
با سلام و وقت بخیر
اگر عزیزان به واتساپ بنده و پیام های من و این دوست عزیز دسترسی داشته باشند، شاهد خواهند بود که بعد از نزدیک به 2000 پیام رد و بدل شده بین ما که اکثرا راهنماییهای بنده راجع به کدنویسی فرترن، c، درس cfd و فلوئنت و … بوده ایشون ادعا دارن که من کمکشون نکردم و فقط دنبال پول هستم. من این پیام ها رو نگه میدارم تا دیگر عزیزان که قصد خرید این محصول رو دارند با اون مواجه بشن و ببینند که من با چه صبر و حوصله ای بیش از یک سال به سوالات درسی و غیر درسی ایشون (حتی راجع به هک وبسایت و …) پاسخ داده ام. اما ایشون که خودشون هم معلم هستند، حتی سعی نمی کنند که وقت بگذراند و ضعفهای خودشون رو پوشش بدن. این کد ساده ای که ایشون میفرمایند به نظرم برای کسی که خودشون 2 سال در حال کدنویسی فرترن هستند و همچنین دانشجوی دکتری مهندسی مکانیک در یک دانشگاه خوب از کشور هستند نبایستی وقت بگیره. اما اگه کسی یاد بگیره که وظایفش رو گردن دیگران بزاره شاید نتونه از پس ساده ترین کارها بر بیاد. البته این اشکال به من هم وارده که در بیش از آنچه که نیاز بود اطلاعات به ایشون دادم.
به هر حال بیان این جمله خالی از لطف نیست که کدنویسی (به هر زبانی) چندتا پیش نیاز داره. درک خوب ریاضی، هندسه و منطق و البته صبر و حوصله زیاد. این موارد واقعا شرایط لازم هستند و بدون اینها کسی نمیتونه خوب کدنویسی کنه.
با سلام
توضیحات مربوط به تمامی جلسات را نگاه کردم اما ظاهرا در هیچ کدام از جلسات شما کد فورترنی که اختصاص به رشته سیالات داشته باشد را شما انجام نداده اید. منظورم جریان سیال و یا انتقال حرارت و امثال اینها می باشد.
اگر وجود دارد ممنون میشوم بفرمایید در کدام جلسه می باشد؟
چون رشته من مکانیک سیالات می باشد و چیزی که برای من مهم است این است که بدانم چگونه باید سیالات و اتقال حرارت را به زبان فورترن بنویسم. چگونه معادلات تفکیک شده مومنتم و انرژی و سایر موارد را باید در محیط نرم افزار فورترن تعریف کنم . و یا چگونه شرایط مرزی را تعریف کنم. چگونه از الگوریتم های مختلف Simple , PISO و غیره باید استفاده کنم…. آیا همچین آموزشی در سایت دارید؟؟ همچنین اگر بتوانید در این رابطه به من کمک کنید خیلی ممنون میشوم
با تشکر
سلام دوست عزیز
برای این مورد شما بایستی به آموزش cfd در چهارده جلسه که من ارائه کرده ام سر بزنید
با سلام
خیلی ممنون از جواب شما
آیا در آن آموزش کدها در محیط فورترن زده شده است؟ چون الان توضیحات جلسه 5 را دیدم و زده شده است که از نرم افزار اکسل استفاده شده است؟
و اینکه فقط جلسه 4 و 5 را من روی وبسایت شما میبینم. بقیه جلسات را متاسفانه نتوانستم بیابم
با تشکر
در این آموزش اکثر جلسات توسط فرترن کدنویسی شده، اما همانطور که شما تمایل داشتید بیشتر تمرکز بر روی درایو کردن معادلات و تبدیل معادلات دیفرانسیل به معادلات جبری و روش حل آنها است. در برخی جلسات برای اینکه به دانشجوها نشان داده شود که کد برنامه نویسی فقط یک ابزار است، کدها در محیطهای دیگر همچون اکسل، متلب و یا c++ نیز توسعه داده شد ه اند. با توجه به اینکه بسیاری از کدها به سایر زبانها هستند، این امر که دانشجو به سایر زبانهای برنامه نویسی نیز آشنایی داشته باشد بسیار مهم است.
تا جلسه هشتم اضافه شده و جلسات دیگر به مرور زمان در حال اضافه شدن است.
به لیست دروس ارائه شده توسط من مراجعه بفرمایید.