در این آموزش آباکوس شما با دلایل بکارگیری سابروتین نویسی، ضرورت برنامه نویسی و نحوه کد نویسی در آباکوس، اجزای اصلی سابروتین و برخی سابروتین های معروف و پرکاربرد در ABAQUS مثل UMAT، DLOAD، HETVAL و… آشنا خواهید شد.
سرفصل آموزش
سابروتین نویسی در آباکوس چیست؟
آباکوس در کنار تمامی امکانات و گزینههای ریز و درشت پیشفرض، این قابلیت را در اختیار کاربران علاقمند قرار داده تا بتوانند به کمک سابروتین نویسی در آباکوس توسط نرمافزار فرترن (که پایه و اساس نرمافزارهای بزرگ محاسباتی همچون آباکوس است) نیازهای خود در بالاترین سطوح علمی، پژوهشی و صنعتی را مرتفع سازند. فقط کافیست بر اصول و قواعد اجزای محدود و برنامهنویسی به زبان FORTRAN تسلط داشته باشید تا هرگونه محدودیتی را دور بزنید و با استفاده از سابروتین نویسی در آباکوس، لذت وصفناپذیر توسعه یک حل عددی را تجربه کنید.
دلایل بکارگیری سابروتین نویسی در آباکوس
قطعاً شما همراهان گرامی، در مجموعه پستهای معرفی و آموزش آباکوس و همچنین مجموعه مثالهای کاربردی آباکوس با گوشهای از تواناییها و قابلیتهای بینظیر Abaqus در حوزه شبیهسازی اجزای محدود آشنا شدهاید و میدانید که سابروتین نویسی در آباکوس یکی از ویژگیهای برجسته این نرمافزار است. طیف مسائل پوشش داده شده در کنار رابط کاربری ساده و قابل درک، باعث انتخاب آباکوس به گزینهای بسیار جدی برای کاربران دنیای حل عددی شده است.
اما تا کنون با خود اندیشیدهاید که آیا گزینههای پیشفرض موجود در آباکوس توانایی پاسخگویی به تمام نیازهای جدید کاربران را دارد؟ در جهانی که سرعت پیشرفت علم و ارائه مدلهای عددی و معادلات ساختاری توصیف رفتار ماده سرعت روزافزونی پیدا کرده است، نرمافزارهایی نظیر آباکوس چه راه حلی برای پاسخگویی به نیازهای بهروز محققین اتخاذ کردهاند؟
صرف میلیونها دلار هزینه در بحث تحقیق و توسعه و بروز نگاه داشتن هسته حل معادلات، استفاده از المانهای جدید با فرمولبندی خاص و منحصربفرد، توسعه مدلهای جدید ماده، افزودن حوزههای کاری و قابلیتهای شبیهسازی جدید و . . . تنها بخشی از نقشه راهی است که برای حضور در کورس رقابت در دنیای پرشتاب علمی قرن 21 باید بکار گرفت. اما آیا آباکوس نیز در این حوزه موفق بوده است؟
ضرورت کدنویسی در آباکوس
شاید با خواندن مقدمه فوق اندکی دقیقتر به قابلیتهای آباکوس نگاه کرده باشید. تمامی نرمافزارهایی که با آن آشنایی دارید از مجموعه قابلیتهای پیشفرضی برخوردارند که توسعه دهنده اصلی، برای پاسخگویی به بیش از 80 درصد از نیازهای کاربران در نرمافزار تعبیه کرده است. اما آیا تمامی مسائل موجود در حوزه علم و صنعت به کمک این ابزارهای پیشفرض قابل مدل سازی و بررسی هستند؟ متأسفانه پاسخ این پرسش منفی است.
اگر از کاربران پیشرفته و سطح بالای آباکوس هستید، میدانید که توسعه و بکارگیری مدلها، معادلات ساختاری، المانها و حتی بارگذاریهای خاص بهکمک گزینههای پیشفرض تعبیه شده در آباکوس امکانپذیر نیست؛ اما اگر از راهکارهای جایگزین گروه داسو سیستمز اطلاع داشته باشید، بیش از پیش این شاهکار دنیای محاسبات و مهندسی را تحسین خواهید کرد.
با توجه به درخواست شما عزیزان و همراهان گرامی، تصمیم گرفتیم تا در این پست آموزشی به معرفی اصول، قواعد و کاربردهای سابروتین نویسی در آباکوس بپردازیم و شما عزیزان را با معروفترین گزینههای سابروتین نویسی در آباکوس اشنا کنیم. با ما در این آموزش آباکوس نیز همراه باشید.
مروری سابروتین نویسی در آباکوس
اگر Documentation آباکوس را از نظر گذرانده باشید، بهخوبی میدانید که بخشهای مختلفی در این راهنمای بینظیر در اختیار شما قرار دارد. معرفی ابزارهای موجود، مسیر بکارگیری و اهداف استفاده از ابزار، آشنایی با تئوریهای بکارگرفته شده در توسعه یک روش، مجموعه مثالهای استاندارد و . . . از مهمترین و پرکاربردترین بخشهایی است که اکثر کاربران آباکوس از آن بهره می برند. اما شاید شما نیز هیچگاه از گزینه Abaqus User Subroutines Reference Guide استفاده نکرده باشید. اکنون وقت آن رسیده تا به کمی کنکاش و واکاوی در این بخش از راهنمای آباکوس نیز بپردازید.
تذکر: در پست آموزشی “کدنویسی در آباکوس” بصورت مجزا به بحث اسکریپت نویسی به زبان پایتون در آباکوس پرداخته شده است. در صورت نیاز به پست مربوطه مراجعه فرمایید.
کافیست بر روی این گزینه کلیک کنید تا به دنیای بینظیر و جذاب آموزش سابروتین نویسی در آباکوس وارد شوید. آباکوس بر حسب اینکه قصد دارید از کدام حلگر استفاده کنید، راهنمای مربوط به این بخش را در سه دسته مجزا قرار داده است:
- Abaqus/Standard Subroutines
- Abaqus/Explicit Subroutines
- Abaqus/CFD Subroutines
در واقع این راهنما به شما تأکید میکند پیش از شروع به کدنویسی برای مسئله خود، ماهیت حل و انتخاب حلگر مناسب را تعیین کنید و متناسب با نوع مسئله خود، به انتخاب و توسعه کد مورد نظر بپردازید.
اجزای اصلی سابروتین در آباکوس
پس از تعیین نوع حلگر و تصمیم به استفاده از سابروتین در آباکوس، باید به شناخت کد مورد نظر بپردازید. در ابتدا به شما توصیه میکنم کدنویسی را بهعنوان آخرین گزینه در حل یک مسئله در نظر داشته باشید؛ بهعبارت بهتر چنانچه گزینههای پیشفرض تعبیه شده در آباکوس جوابگوی نیازهای شماست، به سراغ کدنویسی نروید!
پس از اینکه فراخور مسئله و هدف مورد نیازتان تشخیص دادید که باید از چه سابروتین یا زیربرنامهای در آباکوس استفاده کنید، از طریق راهنمای نرمافزار به کسب اطلاعات در خصوص آن بپردازید.
کاری که شما قصد انجام آن را دارید به دقت نسبتاً بالایی نیازمند است؛ فقط کافیست تصور کنید برای یک لحظه کوتاه و البته به شکل ممتد و پیوسته، کنترل این غول محاسباتی را در دست گرفتهاید و فرمان مورد نظر خود را به آن صادر میکنید، محاسبات مربوطه را انجام میدهید و حاصل کار را برای ادامه حل به آباکوس وارد میکنید؛ در واقع شما واسطهای در حل شدهاید: در میانه راه کنترل را در دست گرفته و پس از انجام محاسبات مورد نظر مجدداً آباکوس را وارد میدان میکنید. ناگفته پیداست که تمرکز و تسلط بالا و اجتناب از کوچکترین خطای دستوری و برنامهنویسی، شرط اول در استفاده از یک سابروتین در آباکوس است.
پس از انتخاب سابروتین مورد نظر در راهنمای نرمافزار باید به شناخت ارکان اصلی کد بپردازید: هر سابروتین در آباکوس از مجموعهای از متغیرها و پارامترها تشکیل شده که در یک قالب خاص و از پیش تعیین شده باید نوشته شود. در واقع دو رکن اصلی هر سابروتین قالب یا Interface مربوطه و پارامترهای مورد استفاده در آن است. بهعنوان مثال، در شکل زیر قالب مربوط به UMAT (سابروتین مربوط به تعریف خواص و رفتار ماده در آباکوس) را مشاهده میکنید( برای آشنایی بیشتر با این سابروتین به آموزش مربوطه مراجعه کنید.
همانطور که در این قالب نیز مشخص شده است، شما باید از مجموعه متغیرهای استاندارد و شناخته شده برای آباکوس در کدنویسی خود استفاده کنید. البته آباکوس این امکان را به شما داده است تا در صورت نیاز و از طریق متغیرهای حالت، بتوانید به رفع نیازهای خود بپردازید. بدیهی است هر کدام از متغیرهای موجود در یک سابروتین مفهوم و معنای منحصربفردی داشته و باید از یک الگوی منظم در محاسبه و آپدیت شدن پیروی کند.
برخی سابروتین های معروف و پرکاربرد در آباکوس
حال که با کلیات، اهداف و قالب یک سابروتین آشنا شدهاید، چند SUBROUTINES معروف و پراستفاده در آباکوس را به شما معرفی خواهیم کرد:
- سابروتین CREEP: مورد استفاده برای تحلیلهای وابسته به دما، تغییر شکل ویسکوپلاستیک در ماده.
- سابروتین DLOAD: برای تعریف بارگذاری و توزیع بار غیریکنواخت در آباکوس (فشار و بار حجمی).
- سابروتین FRIC: چنانچه از مدلهای پیچیده و پیشرفته در تعیین نیروی برشی بین سطوح گوناگون و رفتار اصطکاکی ماده در تحلیل خود استفاده میکنید، این سابروتین به شما کمک خواهد کرد.
- سابروتین HETVAL: جهت تعریف مدلهای پیچیده در تولید حرارت داخلی در ماده.
- سابروتین UEL: از پیشرفتهترین و در عین حال پیچیدهترین سابروتینهای مورد استفاده در Abaqus/Standard است که برای تعریف و ایجاد کردن یک المان خاص بکار میرود. استفاده از این سابروتین به دانش و تخصص بسیار بالایی نیاز دارد.
- سابروتین UGENS: در تعریف رفتار غیرخطی پیچیده مکانیکی در المانهای پوستهای بر اساس Stiffness سطح مقطع استفاده میشود.
- سابروتین UMAT: این سابروتین برای تعریف رفتار ماده و معادلات ساختاری مورد نظر برای ماده مورد استفاده قرار میگیرد. UMAT از پیشرفتهترین و پیچیدهترین سابروتینهایی است که یک کاربر میتواند در تحلیل خود از آن استفاده کند. تسلط بر این زیربرنامه در گرو فراگیری مباحث مکانیک محیطهای پیوسته، ریاضیات، جبر تانسوری، پلاستیسیته و پلاستیسیته محاسباتی در بالاترین سطح آکادمیک است.
مکان قرارگیری سابروتین
هرچند شناخت کامل و درک عمیق از ساختار Abaqus، لازمه توسعه و استفاده از یک سابروتین نیست اما چنانچه شما بهعنوان یک توسعهدهنده، از ساختار و محتوای اصلی حل یک مسئله در آباکوس اطلاع داشته باشید، دید بسیار خوبی در خصوص سابروتین نیز پیدا خواهید کرد. در این قسمت روند کلی حل یک مسئله در آباکوس را در قالب یک فلوچارت از نظر خواهیم گذراند و مکان قرارگیری سابروتینهای مورد استفاده در آباکوس را به شما نشان خواهیم داد. شکل زیر روند پایه در استخراج داده و حل یک مسئله در Abaqus/standard را به شما نشان میدهد.
همانطور که ملاحظه میکنید هر یک از سابروتینهایی که در آباکوس مورد استفاده قرار میگیرد (با فونت قرمز مشخص شدهاند)، در مرحله خاصی از حل وارد عمل شده و پس از ایفای نقش خود، ادامه روند حل را به هسته اصلی آباکوس واگذار میکنند. حال اگر بهدنبال فهم دقیقتر و با جزئیات بیشتر از روند حل و بکارگیری سابروتین دارید، به شما توصیه میکنم فلوچارت زیر را با دقت واکاوی کنید:
ملزومات بکارگیری سابروتین در آباکوس
برای استفاده و بهرهمندی از زیربرنامه یا سابروتین در آباکوس نیاز دارید تا زبان برنامهنویسی فرترن (FORTRAN) را با Abaqus لینک کنید. برای این منظور بر حسب نسخه مورد استفاده آباکوس، باید در گام اول به نصب Microsoft Visual Studio بهعنوان بستر لازم جهت اجرا و شناخت زبانهای گوناگون برنامهنویسی بپردازید. سپس در ادامه، باید کامپایلر فرترن سازگار با نسخه آباکوس مورد نظر را دانلود کرده و نصب نمایید. با انجام این کار قادر خواهید بود تا کد مورد نظر را با رعایت قوانین برنامهنویسی فرترن در محیط ویژوال استودیو توسعه دهید و از کامپایلر زبان فرترن برای اجرای آن استفاده نمایید.
پس از نصب ویژوال استودیو و کامپایلر زبان فرترن باید توسط دستوراتی ساده ( و گاهاً پیچیده!) آباکوس را با فرترن لینک نمایید. با توجه به تخصصی بودن موضوع، سعی خواهم کرد در پستی جداگانه و در زمان مناسب، نحوه لینک کردن آباکوس و فرترن را به شما عزیزان آموزش دهم. عملاً با برقراری ارتباط بین این دو نرمافزار قادر خواهید بود کار مربوط به سابروتین نویسی در آباکوس را آغاز نمایید.
لینک کردن آباکوس و فرترن
در آموزشی جداگانه نحوه لینک کردن آباکوس 2017 با فرترن ارئه شد. شایان ذکر است که دستورالعمل موجود برای لینک کردن آباکوس 2016 با فرترن (Fortran) نیز قابل استفاده است و تفاوتی وجود ندارد. جهت مطالعه آموزش مربوطه روی لینک زیر کلیک کنید.
برای دانلود فایل PDF نحوه سابروتین نویسی در آباکوس روی لینک زیر کلیک کنید. حجم این فایل PDF آموزشی 2 مگابایت بوده و شامل 350 صفحه است.
با سلام و عرض ادب. بابت این مجموعه عالی سپاسگزارم. برای من خیلی مفید بود.
من یک سوال داشتم که متاسفانه در این محتوا به جوابشنرسیدم ممنون میشم اگر راهنمایی کنید.
برای مدلسازی پدیده ی تراکم در صورتی که رابطه ای خطی داشته باشیم، باید از چه قسمتی استفاده کنیم؟
من با سابروتین نویسی در قسمت swelling امتحان کردم جواب درستی نداد ظاهرا رابطه ای که اونحا مورد نیاز هست باید به صورت حجمی وارد بشه نه خطی
سلام
اگر در پیش فرض نرم افزار گزینه ای برای اینکار نیست باید سابروتین بنویسید
سلام. وقت شما بخیر. سوالی خدمتتان داشتم اگر راهنمایی فرمایید ممنون میشم.
در یک تحلیل آباکوس از دو استپ استفاده کردم. استپ اول استاتیک جنرال است که از بارگذاری مکانیکی و حرارتی بعنوان بار استفاده شده.استپ دوم هم ویسکو است که قرار است از دمای انتهای استپ اول برای روابط خود استفاده کنه. سوالم اینجاست که آیا میتونم از دما که در محیط CAE در استپ اول اعمال کردم برای استپ دوم که از سابروتین استفاده میکنه بعنوان ورودی(DTEMP) برای روابط در سابروتین استفاده کنم.
یا اینکه برای استپ دوم که از سابروتین استفاده میکنه بایستی از دوتا سابروتین که یکی حرارت باشه برای استفاده در سابروتین بعدی استفاده کنم
سلام
میتونید دو فایل حرارتی و مکانیکی مجزا درست کنید؛ دمای خروجی از حل دمایی را بعنوان predefined field به فایل دوم وارد کنید
سلام. متشکرم بابت راهنمایی. لطف شما زیاد.
در ارتباط با موضوع قبلی یک سابروتین خزشی نوشتم. همانطوریکه مستحضرید بایستی در دما و تنش ثابت در طول مدت زمان خزش, کرنش خزشی افزایش پیدا کنه. اما با توجه به اینکه سابروتینی که نوشتم و تحلیلی که صورت گرفته مقدار کرنش و در نهایت تغییرمکان ثابت شده و هیچ افزایشی مشاهده نمیشه در حالیکه همین مورد در محیط CAE که ران گرفتم افزایشی بوده.ظاهرا من بایستی آپدیت انجام بدم. در Document هم سرچ کردم اما نتونستم برداشت مناسبی داشته باشم. لطف میکنید راهنمایی داشته باشید.
(در دمای 400 درجه سانتیگراد مقدار تغییر مکان ثابت شده)
IF(TEMP==400) THEN
D=6.8*10**(-4)
A=1.769*10**(-14)
AN=5.61
T1=EXP(A*QTILD)
T2=EXP(-A*QTILD)
DECRA(1)=D*((0.5*(T1-T2))**AN)*TIME(1)
GO TO 10
(دما)T U3(m)
20 -0.00171278
141.782 -0.00177247
215.481 -0.00189032
298.94 -0.00203137
400 -0.00229008
400 -0.0060646
400 -0.0060646
400 -0.0060646
400 -0.0060646
400 -0.0060646
400 -0.0060646
400 -0.0060646
سلام
اگر نیاز به آپدیت یک متغیر داشته باشید باید یک پارامتر تعریف کنید، مقداردهی اولیه داشته باشید و بعد در انتهای اینکرمنت که اون دما به کمک روابط استخراج میشه مقدار جدید را به متغیر اختصاص بدید
این فرآیند باید در یک حلقه یا loop قرار بگیره