چرا فرترن؟
با توجه به اینکه فرترن زبانی بسیار سریع میباشد، در بسیاری از نرم افزارهای مهندسی به عنوان زبان کد استفاده شده است. بسیاری از کدهای CFD بر اساس زبان قدرتمند فرترن نوشته شده اند. مطالعه کدها و همچنین توسعه دادن کدهای جدید مستلزم آشنایی با زبان برنامه نویسی فرترن می باشد. گرچه کدهای آماده ای که در متلب و سایر نرم افزارها ارائه شده اند، کار دانشجویان را برای توسعه کد راحت تر کرده اند، ویژگی ها و توابع موجود در متلب باعث عدم تسلط دانشجویان با روشهای عددی استفاده شده در کدهای پیشرفته میباشد، از این رو به دانشجویان بشدت توصیه می شود برای بهتر آموختن CFD و همچنین محاسبات عددی پیشرفته شروع به کد نویسی در زبان های مادر مانند فرترن و سی پلاس پلاس کنند. با همه این تفاسیر در دانشگاههای بزرگ دنیا برای آموزش دینامیک سیالات عددی و روشهای عددی پیشرفته از ترکیب همه زبانهای برنامه نویسی بالاخص فرترن ،سی پلاس پلاس ،متلب و پایتون استفاده میکنند.
چه افرادی به فرترن نیاز دارند؟
زبان برنامه نویسی فرترن علاوه بر CFD در دیگر علوم مانند هواشناسی، فیزیک، شیمی و مواردی که با داده های بسیار عظیم سر و کار دارند بسیار پرکاربرد است. دانشجویان مهندسی مکانیک به عنوان پیش زمینه در دروس محاسبات عددی و دینامیک سیالات محاسباتی (cfd) بایستی به زبان برنامه نویسی فرترن تسلط داشته باشند.
ویژگیهای این دوره؟
در اینجا در بخش اول از دوره آموزش دینامیک سیالات محاسباتی، زبان برنامه نویسی فرترن از مقدماتی تا پیشرفته ارائه خدمت شما عزیزان ارائه شده است. آموزش متمرکز بر یادگیری دانشجویان و همراه با مثال و کد میباشد. این آموزش در حدود بیست جلسه 50 دقیقه ای تهیه شده است و با دنبال کردن آن به مدت 20 روز میتوانید بیشتر مهارتهای مورد نیاز برای کدنویسی روشهای عددی را فرا بگیرید. در همین پست پس از معرفی سرفصلهای هر بخش یک سری تمرین برای بهبود مهارتهای شما فراهم دیده شده است. دانش خود را از طریق این تمرین ها به کمال برسانید. جلسه اول برای شما عزیزان رایگان است و میتوانید از فرمت آموزش دیدن بفرمایید.
نرم افزارهای مورد نیاز
نرم افزارهای مورد نیاز کامپایلر های معروف فرترن مانند simply fortran، intel- visula fortran, pgi visual fortran و یا ftn95 (plato-silverfrost) میباشد. شما با هرکدام که راخت تر هستید میتوانید از این آموزش استفاده نمایید با این حال در ویدئوها از simplyfortran استفاده شده و بهتر است برای این آموزش از این کامپایلر ساده و پرقدرت استفاده کنید. یک نسخه از این نرم افزار به همراه پلاتو در اینجا ارائه شده اند که میتوانید دانلود کرده و استفاده نمایید.
دوستانی که با لینوکس کار میکنند میتوانند پس از نصب کامپایلرهای مناسب از این آموزش استفاده کنند. در انتها یک در یک جلسه آموزش کدنویسی فرترن در لینوکس نیز اضافه میشود.
برای دیدن جزئیات کامل جلسات به تب فهرست جلسات بروید
- لینک دانلود فایل بلافاصله بعد از پرداخت وجه به نمایش در خواهد آمد.
- همچنین لینک دانلود به ایمیل شما ارسال خواهد شد به همین دلیل ایمیل خود را به دقت وارد نمایید.
- ممکن است ایمیل ارسالی به پوشه اسپم یا Bulk ایمیل شما ارسال شده باشد.
- در صورتی که به هر دلیلی موفق به دانلود فایل مورد نظر نشدید با ما تماس بگیرید.
نیما
با سلام:
من کل جلسات رو خریداری کردم ولی جلسات 18 و 21 قابل دانلود نیستند.
دکتر یاسر عباسی
سلام
با مدیریت هماهنگ کنید لطفا
محمد غفور امیری
با اهدا سلام و احترام
عرض ادب
آقای دکتر
بنده منظور دستور spacing رو متوجه نمیشم،
اصلا کاربردش چیه؟؟؟؟؟
بود و نبودش که هیچ اثری توو اجرای برنامه نداره!!!!
نمیتونم فرمولش رو درک کنم!!!!
این فرمول چه جوری کار میکنه!!!
Tend – Tstart/dT +Spacing(dT)
الان توو دستور بالا spacing چه جوری عمل میکنه؟؟؟؟؟
چه خاصیتی داره؟؟؟
لطفا چند تا نمونه محاسباتیه ساده برام بزارین..
با تشکر
دکتر یاسر عباسی
آقای امیری شما بایستی بگین تو کدوم جلسه، کدوم برنامه و ….
محمد غفور امیری
سلام مجدد.
جلسه ی هشتم، یه مثال بیشتر توش spacing نیست.
آقای دکتر بنده سوالای دیگه ای هم پرسیده بودم؟
دکتر یاسر عباسی
سلام و وقت بخیر
جناب امیری
تابع ذاتی spacing(x) کارش اینه که کوچکترین مقداری رو که میتونه به x افزوده بشه تا عدد x دیگه x نباشه رو به شما بده، بستگی داره که x دقت مضاعف داشته باشه یا نه و حتی ویندوز شما 64 باشه یا 32 و سایر موارد:
مثلا برای سیستم من
PROGRAM test_spacing
INTEGER, PARAMETER :: SGL = SELECTED_REAL_KIND(p=6, r=37)
INTEGER, PARAMETER :: DBL = SELECTED_REAL_KIND(p=13, r=200)
WRITE(*,*) spacing(1.0_SGL) ! “1.1920929E-07” on i686
WRITE(*,*) spacing(1.0_DBL) ! “2.220446049250313E-016” on i686
END PROGRAM
دکتر یاسر عباسی
آقای امیری، هم توی واتساپ و هم توی ایمیل و هم از طریق تلفن جواب سایر سوالاتتون رو دادم.
محمد غفور امیری
با اهدا سلام و احترام
عرض ادب
آقای دکتر
توو برنامه ی delta
مقدار x1 و x2 رو درست و real میزنه.
ولی
اگر a=0 باشه:
مقدار x رو بصورت integer میزنه، علتش چیه؟
ممنون میشم راهنمایی بفرمایین
دکتر یاسر عباسی
سلام و وقت یخیر
این موارد رو تو واتساپ بپرسید بهتر میشه جواب داد
محمد غفور امیری
با اهدا سلام و احترام
عرض ادب
آقای دکتر
این پنجره ی اجرای برنامه،(همین پنجره ی سیاه)
بزرگتر نمیشه؟(از نظر پهنا)
چون جواب برنامه وقتی طولانی میشه میره خط بعدی؟ ولی اگه اندازه ی مانیتور بشه،دیگه خط بعدی نمیره.
نمیشه بزرگش کرد؟
دکتر یاسر عباسی
سلام مجدد
این پنجره مربوط به ویندوز هست و برای تغییر سایز آن بایستی به گزینه های مربوط به رجیستری ویندوز رجوع کنید که من اطلاعی ندارم. شما بهتره که داده ها رو توی یک فایل ذحیره کنید که بتونید راحت تر اونها رو مشاهده کنید.
با تشکر
محمد غفور امیری
با اهدا سلام و احترام
عرض ادب
آقای دکتر،در قسمت اعداد مختلط ،وقتی برنامه رو اجرا میکنم،قسمت موهومی رو نشون نمیئه و اصلا توو محاسبات نمیاره
ممنون میشم راهنمایی بفرمایین
دکتر یاسر عباسی
سلام
احتمالا به درستی تعریف و یا فراخوانی نکرده اید
محمد غفور امیری
سلام
آقای دکتر
ثابت ها رو که میزنیم ،که نشون بده،درستپ نشون میده،ولی جواب نهایی رو درست نشون نمیده،
محمد غفور امیری
با اهدا سلام و احترام
عرض ادب
آقای دکتر ،این آموزشهایی که فرمودین(c,c++,matlab )رو به همین صورتی که فرترن رو آموزش میدین،دارین؟
اگه دارین ممنون میشم توو سایت بارگزاری کنین،
که خریداری کنیم.
آموزش پایتون هم دارین؟؟
دکتر یاسر عباسی
آموزش پایتون رو بزودی شروع میکنم
اما در مورد متلب و c++ و … عزیزانی در این وبسایت هستند که خیلی بیشتر از من تسلط دارن
فرترن چون بیشتر بدرد مکانیکیها و فیزیکیها میخورد من ارائه کردم
اونها بایستی زحمتش رو بکشن
محمد غفور امیری
با اهدا سلام مجدد
آقای دکتر ،بنده اینهمه ایراد از کار گرفتم ،منتها جا داره خوبی آموزش شما رو بگم:
اینکه موقع آموزش بصورت واقعی اموزش میدیم و جاهایی که برنامه عیب داره رو حذف نمیکنین.
مثلا برنامه رو اجرا میکنین و error میده،و عیبش رو برطرف میکنین،همین کار شما یه حسن هست که عیب رو برطرف میکنین و در واقع دارین آموزش میدین.
چون بعضی اموزشها فقط وقتی برنامه درست اجرا بشه رو توو اموزش میزارن و دانشجو حتی برطرف کردن عیب هم یاد نمیگیره.
ممنون از اینهمه لطف
دکتر یاسر عباسی
سلام مجدد
بله من تجربه آموزش کدنویسی زیاد دارم (c++، #c و فرترن و متلب و …) و اونجا متوجه شدم بایستی حتما عیب یابی رو به کاربر آموزش داد. حتی یکسری تکنیک سعی و خطا هم برای این کار انجام دادم که تو آموزش میتونید ملاحظه بفرمایید.
محمد غفور امیری
با اهدا سلام و احتزام
عرض ادب
آقای دکتر ،در مورد دستور write(*,10,advance=’no’) خیلی کم توضیح دادین.
اصلا چرا این دستور اینجور نوشته میشه؟
برای نوشتن دستور write مگه نمیبایست اینجور بنویسیمwrite(10,*) یعنی اول عدد آورده شود؟
لطفا طریقه ی نوشتن دستورات و روال کار رو بهتر توضیح بدین.
مثلا همونجوری که موقع آموزش زبان انگلیسی میگن:
اول فاعل
بعد فعل
فعل+فاعل
لطفا شما هم یک قاده ی مشخص برای آموزش ارائه بدین.
و قبل از نوشتن این جور دستورا:
اول: مراحل نوشتن و اینکه چرا هر علامت، مثل(*) یا عدد،مثل(10) یا کلمه ،مثل(advance) ،چرا در دستور اینگونه قرار میگیرند؟
دوم: ترتیب نوشتنشون
سوم:اگر اینجور نوشته نشن و جا به جا بشن چه اتفاقی میوفته؟
ممنون میشم این مسائل رو برطرف کنین:
یا بضورت یک فایل نوشتاری یا بصورت یک فیلم،این مشکل ها رو حل کنین و توضیح بدین.
بنده فکر میکنم بازده بیشتری داشته باشه.
ببینین: بنده در مورد عدد قبل Format خیلی مشکل داشتم،و زیاد ازتون سوال پرسیدم ،تا اینکه با این توضیح آخری شما توجیه شدم.
ولی شما توو آموزش خیلی سر سری ازش رد شدین.
وقتی که کامل و جامع و روان توضیح بدین.
دیگه مخاطبا ،اینقدر سوال نمیکنن.
با تشکر
دکتر یاسر عباسی
سلام و درود بر شما دوست عزیز
شما اصلا صبر ندارید. من نزدیک به سه جلسه رو که فکر کنم جلسات ۱۷ ، ۱۸ یا ۱۹ باشه رو به مطلب نوشتن و خواندن پیشرفته در فرترن اختصاص دادم و خیلی مفصل تر از این چیزی که الان هست توضیح دادم. توی هر مرحله یک مطلب رو آموزش میدم که متاسفانه نیاز هست مطالبی از جاهای دیگه که هنوز درس داده نشده رو بیارم. نمیتونم پیوستگی مطالب رو برهم بزنم. در حالیکه مرتب به شما میگم یکم صبر کنید و جلوتر برید و همه موارد رو درخواهید یافت. در مورد advance هم به همین صورت در جلسات مذکور توضیح دادم.
این آموزش رو چندین نفر دیگه هم خریداری کردن ولی این مشکلات شما رو نداشتن، من یادمه میخواستم آلمانی یاد بگیرم جلسه اول استاد فقط برای ما دو ساعت گفتگوی آلمانی گذاشت که ما اصلا متوجه نمیشدیم و آخر کلاس به ما گفتن که هدف این بود که شما با لحن و ملودی زبان آلمانی آشنا بشید. من هم از جلسه اول سعی کردم شما رو با نرم افزار آشنا کنم ولی شما از همون اول میخواستید که بپرید روی مساپل پیچیده تر.
فلسفه تدریس هم در آدمهای مختلف و همچنین موارد مختلف فرق میکنه. شما نمیتونید آموزش زبان خارجی رو با آموزش زبان برنامه نویسی یکسان کنید. این نکته رو هم در نظر داشته باشید که این آموزش برای کسانی تهیه شده که از ابتدا دانش خیلی کمی راجع به برنامه نویسی دارند.
نکته آخر من از پاسخ دادن به مطالب شما اصلا ناراحت نمیشم و تا هر موقع که خواستید پاسخ میدم همانطور که تا الان دادم. اما میتونید بعضی موارد رو به صورت خصوصی در میون بگذارید . چون این نظرات رو بقیه هم میبینن و بازخورد بدی خواهد داشت. اونها نمیدونن که شما صبر کافی نداشتید.
با تشکر
محمد غفور امیری
با اهدا سلام و احترام
عرض ادب
آقای دکتر بنده هنوز متوجه نشدم این عدد 10 قبل فرمت چیه،؟
توو دستور achar هم اومده،
بعضی جاها برنامه اجرا نمیشه به خاطر همین عدد 10.
لطفا کامل تر توضیح بدین
دکتر یاسر عباسی
سلام و وقت بخیر
داده های زیر رو ببینید
1 1.11 1.12
2 3.42 3.45
3.333 4.4444 5.5555
دو سطر اول به این صورت هستند.
(عدد صحیح) (عدد حقیقی با دو رقم اعشار) (عدد حقیقی با دو رقم اعشار)
اما سطر سوم به این صورته
(عدد حقیقی با سه رفم اعشار) (عدد حقیقی با چهار رفم اعشار) (عدد حقیقی با چهار رفم اعشار)
میخواهید به فرترن بگید که بایستی خط اول و دوم را با این فرمت چاپ کنه (همه اعداد حقیقی به صورت پیشفرض تا ۸ ستون اشغال میکنند) و خط سوم به فرمت بعدی
در نتیجه در فرترن بایستی دو تا فرمت مشخص کنید. یکی برای خطهای اول و دوم و یکی هم برای خط سوم. حالا برای اینکه کد بفهمه کجا بایستی از کدوم دستور فرمت استفاده کنه، یه عددی بهشون اختصاص میده. مثلا به دستور فرمت برای سطرهای ۱ و ۲ عدد ۱۰۰ رو نسبت میده و به دستور فرمت مربوط به سطر سوم عدد ۱۱. حالا هرجایی که میخواد چاپ کنه داده های این خطوط رو و یا توی فایلی قرار بده به جای اینکه کل دستور فرمت رو بنویسه به اون عدده اشاره میکنه
محمد غفور امیری
با اهدا سلام و احترام
عرض ادب
آقای دکتر،وقتی برنامه رو مینویسم،واجرا میکنم و به درستی save میکنم.وقتی برنامه رو میبندم.
و دوباره باز میکنم و میخام کد رو مجدد اجرا کنم
بعد از اینکه این کد رو دوباره باز میکنم.
میگه برنامه رو دوباره save کنید.و اجرا نمیکنه.
ببینین حالا این کد ها که 10،12 خط بیشتر نداره.اگه یه کد 1000 خطی بنویسیم و بعد از بستن برنامه ،دوباره اجرا نکنه،اون موقع تکلیف چیه؟
دکتر یاسر عباسی
شما کافیه در سمت چپ فایلی فرترنی که با پسورد f90 یا f95 ذخیره کردید رو مجددا اضافه کنید. وقتی این فایل رو داشته باشید در هر نرم افزار دیگه ای هم میتونید کدتون رو کامپایل کنید. من تا حالا مشکل شما رو نداشتم