هدف آموزش: در این آموزش شما با مفاهیم سابروتین در آباکوس، اینکه UMAT چیست؟ سابروتیننویسی در آباکوس، تعریف ماده دلخواه در آباکوس، آموزش اصول و پیاده سازی سابروتین UMAT در آباکوس و اصول User Material Subroutine آشنا خواهید شد.
همنیازها: در تاریخ 17 آبان 95 آموزشی تحت عنوان “سابروتیننویسی در آباکوس” در سایت درج شد که به واکاوی اجزای اصلی سابروتین در آباکوس و معرفی برخی سابروتین های معروف و پرکاربرد در آباکوس پرداخته است.
روشهای تعریف متریال در آباکوس
همانطور که پیشتر نیز اشاره کردیم، تعیین خواص مکانیکی ماده و اختصاص آن به قطعه مورد نظر برای تحلیل در ماژول Property انجام میشود. چنانچه ماده رفتاری الاستیک داشته باشد کافیست تنها مدول یانگ و ضریب پواسون ماده را در نرمافزار وارد کنیم تا تحت هر بارگذاری مکانیکی، منحنی تنش – کرنش خطی را مشاهده نماییم. چنانچه رفتار الاستیک – پلاستیک کامل در ماده وجود دارد، علاوه بر تعیین خواص الاستیک فوق، معرفی تنش تسلیم ماده نیز ضروری است.
همچنین اگر بخواهیم رفتاری دقیقتر در ناحیه پلاستیک داشته باشیم، میتوانیم منحنی تنش – کرنش ماده را بهصورت نقطه به نقطه در این ماژول وارد کنیم. به نظر میرسد تا اینجای کار با مشکل خاصی مواجه نیستیم. مجموعه رفتارهای مکانیکی متداول (مانند خزش، شکست ترد و نرم، شکست در کامپوزیتها و . . .) در نرمافزار تعبیه شده است و کاربر میتواند بسته به نیاز خود از آنها استفاده کند.
لزوم استفاده از کدنویسی در تعریف رفتار ماده در آباکوس
با پیشرفت تئوریهای موجود در شاخههای مختلف علم و ارائه معیارهای متنوع برای نشان دادن رفتار مکانیکی ماده تحت حالات خاص، استفاده از تئوریهای گنجانده شده در نرمافزار Abaqus امکانپذیر نخواهد بود. در واقع در طیف تقریباً وسیعی از مسایل نمیتوان از تئوریهای موجود در نرمافزار آباکوس برای پیشبینی رفتار ماده در بارگذاری دلخواه استفاده نمود. اما جای نگرانی وجود ندارد. چنانچه بخاطر داشته باشید، در بخش خصوصیات و برتریهای آباکوس در حوزه تحلیل اجزاء محدود به قابلیت برنامهنویسی و اتصال نرمافزارهای این شاخه به آباکوس اشاره کردیم. اگر از مدل ماده خاصی استفاده میکنید و آباکوس آنرا ارائه نداده است خودتان باید دست بکار شوید.
سابروتین UMAT چیست؟
سابروتین UMAT یا User MATerial نامی است که آباکوس برای مدلهای ماده که توسط کاربران برنامهنویسی میشود، اختصاص داده است. UMAT در حالت Implicit و VUMAT معادل آن در حالت تحلیل Explicit است. در سابروتین UMAT شما باید رفتار ماده را با استفاده از تئوریهای مدنظرتان در قالب یک کد فرترن (for.) به آباکوس معرفی کنید. در واقع شما با این برنامه، به نرمافزار میگویید که تحت این مقدار نیرو یا جابجایی، ماده چه رفتاری از خود نشان دهد، میزان تنش و کرنش چقدر باشد، چه زمانی به تسلیم برسد و تحت چه شرایطی شکست یا خستگی رخ دهد. حال، زمانی که آباکوس قصد اعمال بار و محاسبه تنش و کرنش را داشته باشد، برنامه شما را فرا میخواند و گام به گام پیش میرود. میتوانید تصور کنید که این کار تا چه اندازه پیشرفته و دقیق است، شاید قیاسی بهتر از عمل قلب باز برای آن پیدا نکنیم !
قابلیت برنامهنویسی تنها محدود به مدل ماده نمیشود و میتوان در خصوص اعمال بار و سایر موارد نیز از آن بهره جست اما برنامهنویسی مدل ماده جزء پیشرفتهترین مباحث آکادمیک است و در مقاطع تحصیلات تکمیلی تدریس میشود و نیازمند آشنایی با مباحث مکانیک محیطهای پیوسته، جبر تانسوری و نیز پلاستیسیته در سطوح عالی است. فراموش نکنید برای این کار حتماً باید کامپایلر زبان فرترن را نصب و آن را با آباکوس لینک کنید (روش این کار در مقاله آموزشی نحوه لینک کردن آباکوس و فرترن شرح داده شده است.).
پیشنهاد میکنیم آموزش اسکریپتنویسی با پایتون در آباکوس را هم از دست ندهید!
سلام .من دانشجوی کارشناسی هستم پروژه من درباره ضربه در کامپزیت است که باید تو اباکوس مدل کنم .و معیار شکست را باید کد نویسی کنم خواهشا کتاب یا مرجع کاملی درباره umat و vumat نویسی معرفی کند هر سایتی سر زدم خیلی مختصر توضیح داده
درود بر شما
شاید بتونم بگم اصول UMAT، VUMAT و به شکل کلی کدنویسی چیزی فراتر از توضیحات راهنمای آباکوس نیست. اون چیزی که که کار را سخت میکنه لزوم تسلط بر تئوریهای پلاستیسیته، مکانیک شکست، روابط و مباحث تانسوری است.
امیرحسین عزیز، شما باید تئوریهای مورد نظر را در قالب یک فایل فرترن قابل فهم برای آباکوس دربیارید. این قابل فهم بودن ایجاب میکنه که پارامترها به خوبی شناخته شده باشن و بعد شما بتونید، فرمولها، روابط و . . را در اون قالب قرار بدید.
در نتیجه شما هیچ مطلب بیشتری پیدا نخواهید کرد در خصوص UMAT. مهم روابطه. روی اون بخش تمرکز کنید.
پاینده باشید
با سلام و خسته نباشید
اقای سروری من کد vumat رو در محیط ویژوال استودیو نوشتم و با فرمت.f90 سیو کردم. برای فراخوانی و استفاده از کد در اباکوس (در قسمت job/General/User subroutine file) یابد یه چه شکلی ادرس رو وارد کنم؟ آیا فرمت .f90 که فایل به این فرمت ذخیره شده، فرمت مناسبی است؟ منظورتون از فرمت .for چی هستش؟ چون همچین فرمتی رو در قسمت ذخیره کد مشاهده نکردم…
ممنونم
درود بر شما
مسیر کامل فایل مورد نظر باید وارد بشه (مثلا C:\desktop\umat.for)
فرمت فایل باید for. باشه، شما حتی میتونید کد را در یک نرم افزار ویرایش متن مثل notepad بنویسید (البته به شرط رعایت قواعد ساختاری زبان فرترن) و بعد از ذخیره سازی با هر فرمت دلخواه، به شکل دستی فرمت را به for. تغییر بدهید
موفق باشید. . .
ممنونم اقای مهندس.
این کار رو انجام دادم و با error زیر در قسمت job اباکوس روبرو شدم. ممنون میشم راهنمایی بفرمایید.
با چه روشی میتونم مطمئن بشم که خطا از نوع دستورات به کار رفته در کد umat هست یا از نحوه ی لینک شدن با اباکوس؟؟
سپاسگزارم
problem during compilation – C:\umat.for
Abaqus Verification را اجرا کنید و اجازه بدهید که روند کامل بشه، بعد فایل verify.log ایجاد شده در پوشه پیشفرض آباکوس را باز کنید، باید پیغام PASS…. را در موارد موجود مشاهده کنید
اگر لینک بدرستی برقرار نشده باشه، پیغام ERROR… نمایش داده میشه
سلام.خسته نباشید
آقای مهندس من هم با این ارور مواجه میشم، تو verify.log هم پیغام pass… نمایش داده میشه. الان مشکل از کجاس؟تو کامپایل کردنش مشکل وجود داره؟ اگه آره میشه لطفا بفرمایین چطوری حلش کنم؟ خیلی متشکرم
عرض کردم
ممکنه مشکل در عدم تطبیق بین نسخه فرترن و آباکوس باشه
سرچ کنید تا از نسخه های منطبق با هم مطلع بشید
خیلی ممنونم از پاسخ دادن سریع شما.
اقای مهندس من abaqus verification رو تا مشاهده پیغام verification procedure complete ادامه دادم ولی در پوشه verify (verify.log رو پیدا نکردم متاسفانه) پوشه هایی به نام fortran-make یا cpp-make که دارای فایل تکست هم بودن رو باز کردم و با پیغام زیر مواجه شدم
Abaqus Error: Unable to locate compiler! Please verify your PATH settings and/or refer to Abaqus answer 4302. – [Errno 2] ifort
The Abaqus Make execution procedure exited with errors
بنده نگفتم پوشه verify
عرض کردم پوشه پیش فرض فایلهای آباکوس ( مثلا C:\temp)
اگر امکان داره میتونید ادرس دقیق تری برای پیدا کردن verify.log جهت مطمئن شدن از وجود پیغام pass… لطف بفرمایید؟ ممنونم
فایل رو پیدا کردم اقای مهندس. این ارور نوشته شده بود: لطف میفرمایید اگه بنده رو راهنمایی بفرمایید.ایا باید ورژن اباکوس رو ارتقا بدم؟
من الان فرترن 13 و ویژوال استودیو 2012 رو با اباکوس 6.13 لینک کردم که این خطاها مشاهده شد:
LINK : fatal error LNK1181: cannot open input file ‘oldnames.lib’
Abaqus Error: Problem during linking – Abaqus/Standard User Subroutines.
This error may be due to a mismatch in the Abaqus user subroutine arguments
intel fortran composer 2013 و visual studio 2012 باید استفاده بشه برای Abaqus 6.13
فایلی که خدمتتون عرض کردم اطلاعات کاملتری میده، مثلا :
Abaqus/Standard
…PASS
Continuing…
اگر همه موارد pass بشه یعنی لینک بدرستی برقرار شده
وقتی از لینک شدن آباکوس و فرترن مطمئن شدید و خطا همچنان پابرجا بود کد را بررسی کنید؛ ممکنه متغیری استفاده کرده باشید که تعریف نشده باشه
با سلام و تشکر فراوان بابت کمک های بی دریغ شما…
بله متاسفانه همه ی موارد pass داده نشده و اینکه در ابتدای صفحه این پیغام نمایش داده میشه:
Abaqus/Standard with user subroutines
…ERROR
Abaqus did not complete successfully.
Please see std_user.log for details.
Continuing…
خواهش میکنم؛ پس فرآیند لینک به درستی انجام نشده
باسلام و عرض خسته نباشید.
اقای مهندس سروری بنده موفق به انجام فرآیند لینک کردن فرترن و اباکوس علی رغم سعی بسیار نشدم. میخواستم از حضورتون جویا شم که امکان داره بنده رو راهنمایی بفرمایید؟
درود
یه جستجوی ساده کنید مطالب بسیار زیادی از نحوه لینک کردن آباکوس 6.13 با فرترن پیدا میکنید
بله تمام مسیرهای موجود در فایل های راهنمای لینک کردن رو امتحان کردم و نهایتا نسخه آباکوس رو ارتقا دادم به 6.14-1
ولی کماکان مشکل وجود داره.
برای 6.14 شما به visual studio و کامپایلر فرترن متفاوتی نیاز دارید
روشهایی موجوده که میتونید با جستجو پیدا کنید
موفق باشید . . .
سلام.
با تشکر از سایت و آموزش های عالی که قرار می دهید.
و البته پاسخگویی با حوصله ی جناب سروری.
من می خواستم مدول الاستیسیته رو برای یه ماده یه کم تغییر بدم، این کار رو از طریق edit keyword داخل نرم افزار انجام دادم ظاهرا داخل فایل .inp این تغییر اعمال شده اما داخل بخش تعریف متریال اصلاح نشده… می خواستم بپرسم آیا این کافیه که داخل فایل ورودی تغییر دیده بشه؟
یا لازمه که یو مت بنویسم؟
البته متاسفانه با اینکه نصب نرم افزار رو قدم به قدم از سایت شما دنبال کردم اما هنوز نتونستم از documentation خود آباکوس استفاده کنم.
ممنون از پاسخگویی صبورانه تون.
سلام و ممنون از اظهار لطف شما
من دقیق متوجه موضوع نشدم
umat برای چه موضوعی؟
اینکه فقط مدول یانگ را عوض کنید؟
مدول یانگ رو میخوام بصورت عدد مختلط وارد کنم… این کار رو از طریق edit keyword انجام دادم و این تغییر در فایل .inp ثبت شده…
حالا این کافیه یا لازمه یومت بنویسمم؟
فکر نمیکنم نیازی به UMAT باشه
سلام
وقتتون بخیر
من هم با این خطا در آباکوسم مواجهم problem during compilation و بعد هم ادرس فایل یومت.چند روز پیش هم از فایل یومتم خروجی گرفتم و از درستیش مطمئنم. الان ورژن آباکوسم رو عوض کردم و با این مشکل مواجه شدم.
ذر فایلverify.log هم همه ی موارد Pass هستند و خط اخر این فایل به این صورت هست:
Clean-up…
Verification directory C:\SIMULIA\Abaqus\6.13-1\installation_info\verify has
been deleted.
ممنون میشم بفرمایید مشکا کجاست.
سلام
ممکنه نسخه فرترن و ویژوال استودیو تطبیق نداشته باشن
میتونید سرچ کنید در اینترنت و اطلاعات لازم در خصوص نسخهها را پیدا کنید
با سلام
میخواستم بدونم آیا نرم افزار انسیس هم قابلیتی مثل اضافه کردن کد UMAT داره؟یا چیزی مشابه اون که بشه خواص موادمون رو در قالب یک کد به نرم افزار بدیم.
با تشکر از شما
سلام
بله، سابروتین USERMAT در انسیس نقشی مشابه UMAT در آباکوس را ایفا میکنه
موفق باشید . . .
سلام
یه سوال فنی داشتم.
رشد و نمو دما در هر increment که به عنوان DTEMP هست، در سابروتین UMAT توسط خود نرم افزار محاسبه میشه و نیاز نیست توسط کاربر کدنویسی بشه. ولی در سابروتین VUMAT این جوری نیست و باید توسط خود کاربر مقدار نمو دما در هر increment نوشته بشه. می خواستم بپرسم آیا کسی هست که بدونه این کدنویسی چطوری باید انجام بشه؟ آیا باید از معادله کلی heat equation یا معادله انتقال گرمای فوریه نوشته بشه یا نه یه معادله دیگه ؟
با سپاس فراوان
سلام
کدنویسی بر اساس اطلاعات و فرمولبندی مدل انجام میشه
شما روابط مربوط به هر متغیری را که داشته باشید میتونید به شکل نموی محاسبه و آپدیتش کنید
در خصوص استفاده از معادله هم میتونید در مقالات سرچ کنید؛ قطعا به نتیجه میرسید
موفق باشید . . .
سلام، خسته نباشید
من آباکوس ورژن 6.14 را با ویژوال استودیو 2012 و فرترن 2013 لینک کردم و Abaqus Verification را هم اجرا کردم و همه موارد به درستی انجام شده و pass نشان میدهد اما موقعی که میخواهم Umat مورد نظر را در فایل Implicit شبیه سازی شده ایمپورت کنم ارور Problem during compilation را دریافت میکنم، درحالیکه همین فایل Umat را در یکی از Sample های آباکوس اجرا کردم و انجام شد!! به نظر شما اشکال کار از کجاست؟
ممنون.
سلام
اگر از لینک شدن فرترن و آباکوس اطمینان دارید، مشکل از اینترفیس کد شماست
با عرض سلام و خسته نباشید
ببخشید من بخشی که دقیقا مرتبط با سوالم باشه پیدا نکردم برای همین سوالم رو اینجا میپرسم.
من میخوام ثابت های جانسون-کوک رو که در مقاله ها بصورت A,B,C,m.n داده شده برای تعریف ماده وارد نرم افزار کنم اما نمیدونم دقیقا ترتیبش به چه صورت هست اخه تو اباکوس پارامترها به صورت d1,d2تاd5 هستش تویه help اباکوس رو نگاه کردم اما دقیقا نفهمیدم ترتیب به چه صورت هستش چون معادله ای که داده بود کمی متفاوت با معادله ی جانسون کوک بود. ممنون میشم منو راهنمایی کنید.
سلام
دوست عزیز پارامترهایی که در آباکوس وارد میکنید مربوط به معیار Damage جانسون – کوک هست و اگر به راهنمای آباکوس توجه کرده باشید اشاره شده که فرمول، مربوط به استخراج کرنش پلاستیک معادل هست
چیزی که در ذهن شماست سطح تسلیم جانسون – کوک هست، به عبارت دیگر پارامترهایی که شما دنبالش هستید (A,B,C,m) در محاسبات تنش وارد میشن
توصیه میکنم این مقاله را مطالعه کنید (لینک دانلود) ، هر دو رابطه مورد نظر شما داخلش هست
موفق باشید . . .
با سلام و خسته نباشید.
من یه سابروتین vumat برای تعریف رفتار پلاستیسته با سخت شوندگی سینماتیک نوشتم و نتایج حاصل از اون رو با نتایج حاصل از حل گر خود آباکوس برای یک تک المان c3d8r تحت کشش تک محوره ، مقایسه کردم و چیزی حدود 10 درصد خطا بین نتایج مربوط به کانتور جابجایی و تنش فون میزز و نمودار تنش کرنش مشاهده شد. می خواستم بپرسم که آیا این خطا طبیعیه و مشکلی نداره؟ یا نه ، نتایج باید کاملا بر هم منطبق باشند؟
اگه این مقدار از خطا طبیعیه و مشکلی نداره ،می خواستم بپرسم ریشه این خطا چیه؟ مگه خود حل گر آباکوس همون کاری رو نمی کنه که ما تو کد سابروتین نوشتیم؟!
با تشکر فراوان
سلام
اگر مدلی نوشتید که در پیش فرض آباکوس هم موجوده و یا با صفر کردن برخی پارامترها به مدل تعبیه شده در آباکوس میرسید خطا باید “صفر” باشه
خطا عوامل زیادی میتونه داشته باشه؛ باید کدی که نوشتید را واکاوی کنید تا دلیل اختلاف را متوجه بشید
شما کدی مینویسید که حلگر آباکوس اجراش کنه؛ ریش و قیچی دست شماست، تنها کدنویسی مهم نیست؛ بهینه بودن کد و بالا بودن سرعت اجرا هم مهمه
موفق باشید . . .
سلام.وقت بخیر
آقای مهندس یه سوال داشتم.من کد UMAT رو برای کامپوزیت با المان لایه ای سالید نوشتم ولی از LAYER داخل کد استفاده نکردم فقط تو قسمت HEADER UMAT از LAYER اسم آورده.الان این کد همگرا نمیشه شاید بخاطر اتصالات.بخاطر همین میخوام کد رو در VUMAT بنویسم میخوام بدونم در این حالت محاسبات برای لایه ها انجام میگیره یا نه؟یعنی نتایج رو برای لایه ها میبینم یا نه؟ممنون میشم راهنماییم کنین
سلام
فرقی نداره
محاسبات در VUMAT به شکل Explicit خواهد بود
ببخشید یه سوال دیگه، تنش و کرنش رو تو VUMAT چطوری باید حساب کنم؟
و اینکه STATEV هارو که قراره آپدیت شه از همون اول باید با STATENEW , STATEOLD تعریف کنم یا اولش با STATEV خالی تعریف کنم؟
مگر شما UMAT ننوشتهاید؟!
روند به شکل مشابه هست
UMAT رو نوشتم ولی VUMAT رو اصلا بلد نیستم.یعنی این NEW,OLD ها منو به اشتباه میندازن.من با SDVINI اومدم STATEV هارو اول وارد کردم ولی اینو نمیدونم
سلام
وقت بخیر
یه سوال داشتم.در UMAT چگونه میتوانیم یک خاصیت اصلی مانند مدول الاستیسیته را به عنوان متغیر(STATEV) تعریف کنیم؟مدول الاستیسیته رو هم به عنوان PROPS تعریف کنیم و هم به عنوان STATEV؟؟و در مقدار دهی اولیه به STATEV برای مدول الاستیسیته مقدارش را قرار دهیم یا اسم مدول یا PROPS؟من هر مدل مینویسم این مدول الاستیسیته رو ارور میده!
ممنون میشم راهنماییم کنین
نیازی نیست مدول یانگ را بعنوان متغیر حالت بدهید
متغیرهای حالت در طول پروسه حل مدام آپدیت میشن؛ ما که در مسائل معمولی نیازی به آپدیت کردن مدول یانگ نداریم (مسائل آسیب متفاوت هستند)
یا در کد مقداردهی کنید (یعنی مثلا E=210e9) و یا اینکه بعنوان Props تعریف کنید که از داخل آباکوس و ماژول property مقداردهی کنید ((E=props(1، حالا در آباکوس اولین مقداری که در props وارد میکنید به E تعلق میگیره)
اگر هم نیاز دارید به هر دلیلی در قالب متغیر حالت تعریف کنید که باید در پروسه حل آپدیت بشه؛ این دیگه اصول اولیه برنامه نویسی هست(با هر زبان برنامه نویسی)
یک مقدار اولیه تعریف کنید، روابط و فرمولها را که در اختیار دارید پیاده سازی کنید و در یک حلقه تکرار، هر بار مقدار جدید E که بدست اومد داخل ظرف STATEV مربوطه قرار بدهید
آقای مهندس مسئله من آسیب هست، در این حالت وقتی مدول رو به عنوان statev تعریف میکنم دیگه نیازی نیست که به عنوان props هم تعریف کنم.درسته؟
خب یک مقدار اولیه که لازم دارید
مقدار اولیه را در قالب props وارد کنید، بعد میتونید میقداری که دائم داره آپدیت میشه را در یک STATEV بریزید و از همون در محاسبه تنش استفاده کنید
واقعا ممنون مرسی،حل شد.مشکل اینجا بود که من STATEV مربوط به خواص اصلی رو پیش بقیه STATEV ها که در کدSDIVINI در ابتدای کد آورده بودم مینوشتم ولی الان اونا رو در قسمت بعد از تعریف خواص اصلی آوردم و حل شد!!!!!!!!
موفق باشید . . .
سلام . میشه توی ویندوز 10 ، فورترن و ویژوال و آباکوس رو لینک کرد؟
سلام
بله
آیا نسخه ی خاصی لازمه ؟
من چند نسخه رو امتحان کردم نشد!
برای نسخه 6.14 میتونید ویژوال استودیو 2012 و Fortran XE composer 2013 را امتحان کنید
سلام پروژه ی من در رابطه با مواد تابعی
Functional graded material
است در این پروژه یادگیری اباکوس بهتر خواهد بود یا انسیس؟
سلام
هر دو نرم افزار توانایی مدلسازی FGM را دارا هستند؛ برتری خاصی وجود نداره و بستگی به تسلط شما روی نرم افزار داره
* لطف کنید بعد از طرح سؤال منتظر پاسخ باشید و از تکرار مجدد بپرهیزید؛ سپاس