اهداف آموزش: در این آموزش شما با نحوه اسکریپت نویسی در آباکوس توسط زبان برنامه نویسی پایتون شامل دستورات مقدماتی زبان برنامهنویسی Python و مقدمات لازم جهت شروع اسکریپت نویسی (Scripting) در ABAQUS آشنا خواهید شد.
سرفصلهای این آموزش:
- رابط کاربری Abaqus/CAE و Abaqus Scripting
- اسکریپت چیست؟
- مقدمهای بر پایتون جهت اسکریپتنویسی در آباکوس
- منابع جهت کد نویسی در آباکوس
تذکر: در تاریخ 17 آبان 95 آموزشی تحت عنوان “مقدمهای بر سابروتین نویسی در آباکوس توسط فرترن – FORTRAN” در سایت درج شد.
رابط کاربری Abaqus/CAE و Abaqus Scripting
شاید دانستن این نکته برای شما جالب باشد که وقتی شما از محیط کاربری Abaqus/CAE برای ایجاد مدل هندسی و مشاهده نتایج استفاده میکنید (در اصطلاح GUI)، دستورات اجرا شده توسط شما پس از هر عملی به شکل یک کد ایجاد و ذخیره خواهد شد. این دستورات حاوی اطلاعاتی از نحوه ایجاد مدل هندسی و تغییر تنظیمات مربوطه در تمامی پنجرههایی است که در هر ماژول از آن استفاده کردهاید. GUI یا رابط کاربری آباکوس، تمامی دستورات مورد نظر را در یک زبان برنامهنویسی شیگرا به نام Python ایجاد خواهد کرد. تمامی دستورات ایجاد شده توسط هسته مرکزی یا Kernel آباکوس ترجمه شده و بر اساس تنظیمات ایجاد شده در آن، کاربر نمایش بصری از دستور صادر شده را مشاهده میکند. در واقع Kernel مغز متفکر پشت پرده Abaqus/CAE و GUI رابط کاربری بین کاربر و Kernel است.
اسکریپت چیست؟
مطابق توضیحات بالا اکنون میدانید که تمامی اعمال و دستورات شما در آباکوس در قالب خطوط دستوری ذخیره میشود. به عبارت بهتر، رابط کاربری که شما از آن استفاده میکنید تنها یک محیط بصری و گرافیکی است که تبدیل آن به کد پایتون و تفسیر کد ایجاد شده بر عهده هسته مرکزی یا همان مغز متفکر آباکوس است. محیط اسکریپتنویسی آباکوس این امکان را برای شما فراهم میکند تا به شکل مستقیم با Kernel نرمافزار ارتباط برقرار کرده و به نوعی GUI تعبیه شده را فراموش کنید. فایلی که حاوی دستورات محیط اسکریپتنویسی آباکوس است یک اسکریپت نامیده میشود. شما میتوانید از یک اسکریپت در موارد زیر استفاده کنید:
- انجام یک عمل یا دستور تکراری. برای مثال میتوانید اسکریپتی ایجاد کنید که به محض آغاز Abaqus/CAE کتابخانه کاملی از مواد مهندسی مورد نظر و پرکاربرد شما را ایجاد کند تا با ورود به ماژول Property در اختیار شما قرار گیرد. همچنین میتوانید اسکریپتی بنویسید که در ماژول Job به اجرای حل بپردازد.
- ایجاد یک مسئله پارامتریک. برای مثال، میتوانید اسکریپتی بنویسید که به شکل گام به گام به اصلاح مدل هندسی پرداخته و نتایج تحلیل را آنالیز کند. این اسکریپت میتواند به نحوی نوشته شود تا به اطلاعات خروجی دسترسی داشته، نتایج مورد نظر را نمایش دهد و دادههای خاص مورد نظر کاربر را نیز ثبت نماید.
- میتوانید از طریق اسکریپتنویسی به ایجاد و اصلاح مدلهایی بپردازید که به شکل مستقیم در Abaqus/CAE در حال ایجاد کردن آن هستید. در واقع رابط کاربری اسکریپتنویسی در آباکوس، یک API یا Application Programming Interface برای مدلهای ایجاد شده توسط کاربر است.
- دسترسی به دادههای خروجی. برای مثال، ممکن است نیاز داشته باشید تا به کمک نتایج تحلیل، پسپردازش دلخواه خودتان را ایجاد نمایید. شما میتوانید دادههای دلخواه خود را در Output Database ثبت کرده و از طریق ماژول Visualization به مشاهده نتایج دلخواهتان بپردازید.
از آنجایی که برای درک و یا نوشتن اسکریپت اختصاصی مورد نظرتان به آشنایی کامل با زبان برنامهنویسی پایتون نیاز خواهید داشت، در ادامه به شکل بسیار مقدماتی، مفاهیم اولیه زبان Python را که در اسکریپتنویسی در آباکوس به آن نیاز پیدا خواهید کرد به شما معرفی میکنیم. توصیه ما این است جهت درک کامل و جامع موضوع، به منبع معرفی شده در انتهای پست مراجعه نمایید.
مقدمهای بر پایتون (Python)
پایتون زبان برنامهنویسی متن باز یا Open Source، شیگرا و داینامیک است که کدهای نوشته شده توسط آن در محدوده وسیعی از پلتفرمها نظیر ویندوز، مک و دستگاههای قابل حمل نظیر تلفنهای همراه قابل اجرا و استفاده میباشد. پایتون را باید زبانی تفسیری و سطح بالا دانست که اولین بار در سال 1990 میلادی توسط فردی بهنام Guido van Rossum ایجاد شد. شاید Guido نیز فکر نمیکرد کار بر روی پروژه شخصی خود در زمان اوقات فراغت و بیکاری بعدها به پروژهای بسیار کارآمد و مفید تبدیل شود. اولین نسخه پایتون در سال 1991 انتشار یافت و تا سال 2000 عملا توسعه و بروزرسانی آن توسط مؤسسه ملی تحقیقات و ابتکارات (CNRI) واقع در ایالات متحده آمریکا انجام میشد؛ تا اینکه در سال 2000 تیم توسعه دهنده پایتون به آزمایشگاههای پایتون منتقل شدند.
ویژگیهایی نظیر شیگرایی، متنباز بودن، قابلیت اجرای مجازی بر روی هر پردازشگر، درونیسازی و گسترش، سهولت یادگیری و استفاده پایتون را به زبانی محبوب و پرکاربرد در میان علاقمندان حوزه برنامهنویسی تبدیل کرده است. شاید جالب باشد بدانید برنامههایی نظیر BitTorrent، Blender، Chandler، Mailman و Zope از معروفترین برنامههایی بهشمار میروند که با پایتون نوشته شدهاند.
انواع داده اولیه در پایتون
- متغیرها : به شکل ساده، متغیر نامی است که به یک مقدار نسبت داده میشود. اگر تجربه کار با زبانهای برنامهنویسی را داشته باشید میدانید که در اکثر زبانهای برنامهنویسی برای استفاده از متغیرها باید ابتدا به تعریف آنها بپردازید. در زبان پایتون برای تعریف یک متغیر کافیست آنرا مقداردهی کنید. به عبارت بهتر نیازی به تعریف جداگانه وجود ندارد.
- داده منطقی یا Boolean : متغیرهای منطقی یا در اصطلاح Logical Varaibles میتوانند یکی از دو مقدار درست (True) یا غلط (False) را در خود جای دهند (برای مثال abc= True).
- اعداد صحیح کوتاه (Plain): این نوع از داده ورودی میتواند اعداد صحیح در محدوده 2147483648- تا 2147483647 را در بر گیرد (مثال: L=5625).
- اعداد صحیح بلند (Long) : این نوع از داده، اعداد صحیح را تا جایی که حافظه اجازه دهد در خود نگهداری میکنند.
- اعداد اعشاری (Float): این نوع داده قابلیت ذخیرهسازی اعداد اعشاری را در خود دارد (مثال: Pi=3.14159).
- اعداد مختلط (Complex): به کمک این نوع داده قادر خواهید بود به کار با اعداد مختلط بپردازید (مثال: z1=2-3j).
- رشتهها (String): یکی از ویژگیهای ضروری در هر زبان برنامهنویسی قابلیت ذخیرهسازی و کار با رشتههاست. در این نوع داده نمیتوانید بهشکل مستقیم کاراکترها را تغییر دهید (مثال: string1=abaqus, string2=3ds string1+string2=abaqus3ds).
- Unicodes: این نوع از دادهها همانند رشته عمل میکنند اما فرمت ذخیرهسازی رشتهها در آن Unicode خواهد بود.
نامگذاری متغیرها در پایتون
بحث نامگذاری و استفاده از متغیرها در یک زبان برنامهنویسی از اهمیت بالایی برخوردار است. در نامگذاری متغیرها در پایتون مجاز هستید ترکیبی از حروف و اعداد را بکار گیرید. اما نکتهای که باید به آن توجه داشته باشید Case Sensitive بودن یا حساسیت زبان پایتون به بزرگی و کوچکی حروف است؛ در واقع از نظر پایتون دو متغیر Abaqus و abaqus با یکدیگر یکسان نبوده و معرف دو متغیر مجزا از نظر مقدار و حتی نوع هستند. همچنین اصول و قوانین زبان پایتون برای نامگذاری متغیرها به شکل خلاصه عبارتند از:
- نام متغیر باید با یک حرف شروع شود.
- کاراکترهایی نظیر #, $, %, ^ نباید در نامگذاری مورد استفاده قرار گیرد.
- برخی از نامها و اسامی، معرف متغیرهای رزرو شده توسط پایتون است و متغیر مورد نظر شما نباید از بین این اسامی رزرو شده باشد. بهعنوان مثال استفاده از اسامی نظیر if، for، class و … در نامگذاری متغیر مجاز نمیباشد. در صورت استفاده از هر یک از موارد فوق، برنامه از روند عادی اجرا خارج شده و متوقف میگردد.
منابع جهت اسکرپیت نویسی در آباکوس
در بخش معرفی دستورات و قواعد مربوط به زبان برنامهنویسی پایتون از کتاب “زبان برنامهنویسی پایتون، نوشته سجاد رضایی” استفاده شده است. به شما همراهان عزیز و علاقمند توصیه میکنم کتاب فوق را تهیه کرده و به مطالعه آن بپردازید. همچنین جهت آشنایی بیشتر میتوانید به سایت رسمی پایتون مراجعه فرمایید. بدیهی است تسلط شما بر اصول و قواعد حاکم بر این زبان برنامهنویسی، در اسکریپتنویسی آباکوس کارگشا و سودمند خواهد بود.
با سلام
آیا امکان دارد به کمک پایتون آباکوس بتوان نتایج حل را مستقیما داخل یک list یا یک dictionary ریخت؟ در حال حاضر آباکوس نتایج را داخل یک فایل متنی میریزد. در صورتی که من به این نتایج نیاز داشته و می بایست مجددا از آنها در ادامه تحلیل استفاده کنم.
با تشکر
سلام
منظورتون از لیست یا dictionary چیه؟
کلا با پایتون دست کاربر بازه و میتونه کارهای مختلفی انجام بده
با سلام
امکان اضافه کردن مدل رفتاری یک متریال خاص به طور مثال یک نوع خاک در آباکوس با اسکریپت نویسی با پایتون ممکن هست یا برای این کار باید از سابروتین نویسی در فرترن استفاده کرد؟
سلام
سابروتین نیاز دارید
سلام و خیلی ممنون از زحماتتون
اگر ما فرمولبندی یک المان جدید رو داشته باشیم می تونیم با پایتون نویسی المان جدید به آباکوس اضافه کنیم و خروجی بگیریم؟ چطوری و کجا؟
ممنون
سلام
خیر
برای ایجاد المان باید سابروتین نویسی کنید؛ از طریق سابروتین UEL
بسم الله الرحمن الرحیم
با سلام خدمت شما و تشکر از مطالب مفید سایت و تشکر ویژه بابت پاسخگویی مستمر به کاربران
در برخی مقالات که مشخصا می گن ما از آباکوس برای شبیه سازی استفاده کردیم یا از حلگر آباکوس/صریح استفاده کردیم؛ یک سری معادلات مثلا بقای جرم، تعادل و یا معادلات انتقال حرارت ذکر میشه و سپس نتایج شبیه سازی آورده میشه. اما توضیح داده نمیشه که این معادلات در کجا و چگونه به آباکوس فهمانده میشه. یا مثلا یک تغییر متغییر جهت حل بهتر معادله ناویر (در شبیه سازی با آباکوس به روش CEL) توضیح داده میشه و باز هم محل اعمال این تغییر متغیر گفته نمیشه.
میخواستم بدونم چنین مسائلی در اسکریپت نویسی به آباکوس فهمانده میشه یا در سابروتین نویسی؟ و آیا اساسا مگر این معادلات در آباکوس وجود نداره که بخواهیم دوباره این معادلات را به آباکوس بفهمونیم؟
تشکر مجدد
سلام
اصولا شما باید در مقاله، تئوری مورد استفاده خودتون را معرفی کنید
آباکوس هم کاری جز حل عددی همین معادلات و تئوری ها انجام نمیده
حالا بسته به نوع تغییری که نیاز هست ممکنه نیاز به سابروتین نویسی باشه (غالبا تغییر در تئوری باید با سابروتین نویسی جلو بره)
آقای مهندس سروری
با سلام و تشکر برای مطالب مفید موجود در سایت
برای اعمال شرط مرزی دمایی در تعدادی نقطه که در هر کدام از آنها، دما با زمان تغییر میکند، به نظر شما مناسبترین شیوه برای اعمال بار چه هست؟
چون تعداد نقاط زیاد هست، عملا تعریف amplitude به تعداد نقاط بسیار مشکل هست
راهنمایی های شما سپاسگزاری میکنم
سلام
میتونید با اسکریپت نویسی کار را پیش ببرید
سلام عرض ادب و احترام
در یک پارت میخواهم چندین سوراخ درست کنم با عمقهای مختلف . مشکلی که دارم برای cut extrude هر دفعه اسم لبه ها تغییر میکند این مشکل را چگونه میتوانم حل کنم؟؟
سلام
در اولین قدم یک نام ثابت به اون لبه اختصاص بدید
سلام مهندس. برای اینکه با روش المان محدود(نه روش sph) بخوایم که چندتا ساچمه رو به یک سطح برخورد بدیم آیا باید از اسکریپت نویسی استفاده کرد؟[مثلن ۳۰ تا ساچمه]…
یا اینکه آیا میشه این ۳۰ تا ساچمه رو به سطح برخورد داد اونهم با ایجاد ۳۰ تا پارت ساچمه که به هر کدوم مثلن یک سرعت اولیه بدیم؟[ساچمه ها به سطح برخورد میکنن و از پس از برخورد از سطح دور میشن، درواقع برخورد دوباره صورت نمیگیره].
سلام
میتونید 30 تا پارت درست کنید و ادامه کار . . .
میتونید با اسکریپت کار کنید تا 30 تا ساچمه را تعریف کنید و نیازی به تکرار مراحل مدلسازی نباشه
هر دو راه ممکنه
سایت خیلی خوبی دارید ولی کاش این آموزش رو موجود داشتید. خیلی نیازش دارم
سلام و وقت بخیر،
من می خوام از آباکوس برای تحلیل incremental استفاده کنم. به این صورت که از متلب (اولویت اصلی) و اگر نشد پایتون، تاریخچه بارگذاری به همراه ماتریس ضرایب ماده رو به آباکوس بدم و آباکوس برام تحلیل incremental plasticity رو انجام بده. کاملا به تئوری ها، متلب و پایتون مسلطم. آباکوس رو هم خیلی جزئی و مقدماتی بلدم. منتها هر چقدر می گردم برای این کار، همه میگن کار راحتی هست و میشه، ولی هیچ جا راهنمایی ای برای انجام اون پیدا نمی کنم. امکانش هست محبت بفرمایید و تا حد امکان راهنمایی بفرمایید؟
بی نهایت ممنونم
سلام
پیشنهاد میکنم یک مثال را شروع به حل کنید و همزمان در هر گام ساختار پایتون مربوطه را بررسی کنید
اینجوری متوجه میشید معادل هر دستوری که در محیط گرافیکی اجرا میکنید در پایتون چی هست
همین میتونه برای مسئله شما هم مورد استفاده قرار بگیره
سلام خسته نباشید من تعدادی توابع رو داخل پایتون داشتم و خاستم توابع را در سابروتین uel فراخوانی کنم مثلا تابع تابع شکل در پایتون نوشتم و خاستم تابع رو در سابروتین فراخوانی call کنم میدونید با چه دستور باید این کار انجام بدم ایا این کار امکان پذیر است؟ با تشکر از سایت خوب شما.
سلام
میتونید از این مطلب الگو بگیرید:
https://stackoverflow.com/questions/59154191/how-to-call-python-in-abaqus-umat-subroutine
سلام و خسته نباشید
مدلسازی گل ولای و بطور کلی جریان گل توی اباکوس ممکنه؟ با سابروتین لزوما یا روش دیگه ای؟
سلام
تجربه ای ندارم
با سلام
آیا فیلم آموزشی اسکریپت نویسی رو موجود دارید؟ و اینکه بعد از دیدن اون مثلا می تونیم که فرایند تکراری رو درست کنیم؟ مثلا تغییر یه پارامترو ران دوباره؟
سلام
خیر
سلام و وقت بخیر
ببخشید من قصد دارم با اسکریپت نویسی مقدار load رو تغییر بدم. وقتی run script میکنم فقط یک مرحله جلو میره و این ارور رو میده:
datum = mdb.models[‘Model-1’].rootAssembly.datums[6]
keyerror:6
سلام
یکبار با نرم افزار پیش برید و فایل اسکریپت مربوطه را استخراج کنید
فایل ایجاد شده را کپی کنید و تغییرات دلخواهتون را اعمال کنید
سلام وقت بخیر
ببخشید من یک سوالی درباره تعریف متریال داخل اباکوس دارم. آیا امکان تعریف متریال خاص با زبان پایتون داخل آباکوس هست یا فقط باید با زبان فورترن کد نویسی کرد؟
سلام
تعریف رفتار ماده خاص که با پیش فرضهای برنامه قابل مدلسازی نیست فقط با سابروتین امکان پذیر هست