ویرگول
ورودثبت نام
epsi1on
epsi1on
خواندن ۵ دقیقه·۳ سال پیش

برنامه نویسی اجزاء محدود با زبان سی شارپ #C - قسمت صفرم

بنام خدا

مقدمه

مهندس های سازه و مکانیک، معمولا تمایل دارند پیش بینی کنند که اگر همه چیز خوب پیش بره و سازه یا ماشین مورد نظر ساخته بشه و به مرحله بهره برداری برسه، و بدرستی ازش استفاده بشه، آیا اون سازه یا ماشین تحمل بارهای وارده رو خواهد داشت یا خیر؟! برای جواب به این سوال، یکی از چیزهایی که میشه در حال حاظر دست به دامانش شد رایانه هست. طی چند ده سال گذشته، روشی بنام روش اجزاء محدود یا Finite Element ابداع شد و توسعه پیدا کرد که با مشرف بودن به آن میشه نرم افزارهایی ساخت و نوشت تا بتوان تاحدودی سازه ها رو در رایانه باهاش شبیه سازی کرد. دقت کنید عبارت ٪تا حدودی٪ استفاده شد و این یعنی حتی پیشرفته ترین اَبَر رایانه ها هم شاید نتوانند رفتار یک سازه رو در هر حالت ممکن، پیش بینی کنند.

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

1- خطی بودن مصالح: به این معنی که مصالح همیشه و در همه حالت رفتار خطی دارند یا منحنی تنش کرنش خطی دارند

2- ناچیز بودن تغییر مکانهای سازه: یعنی تغییر مکانهای سازه نسبت به هندسه اصلی خود سازه به قدری کم هستند که هندسه سازه بعد از تغییر مکان تغییری نمیکنه

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

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

به امید ایزد منان در نظر داریم در چند نوشته بلاگ گونه به آشنایی مخاطبین با کتابخانه ی نرم افزاری ای بنام BriefFiniteElement.NET بپردازیم که این پست مقدمه اش هست. این کتابخانه رایگان و بصورت کد باز هست. حجم کمی در حد 250 کیلوبایت داره. حجمش کمه ولی خیلی هم کار راه اندازه. به جد میشه گفت در حوزه تحلیل خطی سازه ها خیلی کار راه اندازه!!! اگر کسی باهاش به حد کافی آشنا باشه، خیلی از (اگر نگیم اکثر) نیازهای المان محدود خطی ایستایی (Static) رو میشه با استفاده از این برنامه رفع کرد.


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

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

خوب برگردیم به مبحث اصلی. اشنایی با روش کار این برنامه دو چیز رو لازم داره:

۱- آشنایی کلی با روش اجزا محدود: یعنی با چیزهایی مثل ماتریس سختی و این چیزها بیگانه نباشیم.

۲- آشنایی با زبان برنامه نویسی #C: یعنی با نرم افزار Visual Studio و کد نویسی با #C بیگانه نباشیم


قابلیت ها و محدودیت ها

قابلیتهای اصلی این برنامه بر اساس اطلاعات پروژه در گیتهاب این هست:

  • انواع اجزاء مختلف: المان تیر و ستون، المان مثلث و چهار ضلعی خمشی (Bending) و غشایی (Membrane)
  • انواع بارها: بار متمرکز روی گره، بار متمرکز روی المان تیر و ستونُ بار گسترده روی المانها

محدودیت های این برنامه

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

اماده سازی پیش نیازها

برنامه اصلی که بهش نیاز داریم عبارتست از یک محیط برنامه نویسی دات نت که ما VisualStudio Code یا به اختصار VSCode رو انتخاب میکنیم. چون هم رایگان هست و نیاز به کرک نداره، هم ساده هست و هم برای سیستم عامل ویندوز و لینوکس و مکینتاش موجوده و حجم کمی هم داره ( نسخه ی 2022اش حدود 72MB) . بعد از بارگیری و نصب VSCode، باید زبان سی شارپ رو درش نصب کنیم. دقت داشته باشید که خود VSCode موقع نصب زبان برنامه نویسی رو با خودش نصب نمیکنه و فقط خودش رو نصب میکنه! باید بعد از نصب هر زبانی که میخواهیم رو بصورت دستی نصب کنیم. طی چند مرحله این کارها رو انجام میدهیم:

۱- بارگیری و نصب VSCode

از این نشانی فایل نصب رو بارگیری و نصب نمایید:

https://code.visualstudio.com/

۲- اضافه کردن زبان #C

بعد از اتمام نصب، زبان سی شارپ رو بهش اضافه میکنیم. به این صورت که بعد از اجرای VSCode کلیدهای کیبورد Ctrl + Shift + X رو باهم نگه میداریم و از فهرست، #C رو جستجو کرده و نصبش مینماییم (اطلاعات بیشتر).

نصب کتابخانه

در مرحله ی بعد باید کتابخانه ی مورد نظرمون که همون BFE.NET هست رو نصب کنیم. ادرس رسمی کتابخونه در تارنمای github.com در این لینک هست. دو راه در پیش رو داریم،

۱- راه اول اینکه کد منبع کتابخانه رو بارگیری کنیم (توضیحات بیشتر) و اصطلاحا کامپایلش کنیم (یعنی فایل های کد رو به یک فایل dll تبدیل کنیم)

۲- راه دوم اینکه از بسته ی Nuget استفاده کنیم. بسته ی Nuget یک بسته کامپایل شده هست که بارگیریش خیلی راحت هست. از داخل خود ویژوال استودیو میشه بارگیری اش کرد. ما با همین روش ساده تر (بسته Nuget) پیش میریم. نشانی بسته ناگت مورد نظر اینجاست:

https://www.nuget.org/packages/BriefFiniteElement.NET

توضیحات بیشتر برای نصب یک بسته ناگت در VSCode:

https://stackoverflow.com/questions/40675162/install-a-nuget-package-in-visual-studio-code


سی شارپبرنامه نویسیالمان محدودمهندسی سازهعمران
ذره‌ای کوچک در هستی
شاید از این پست‌ها خوشتان بیاید