یکی از ویژگیهای جذاب آباکوس، قابلیت برنامهنویسی یا در اصطلاح سابروتیننویسی است که به کاربران اجازه میدهد در صورتی که امکانات گسترده گنجانده شده در نرمافزار، پاسخگوی نیازهای آنها نیست دست به کار شده و به کدنویسی بپردازند. فراموش نکنید تا حد امکان باید نیازهای خود را از طریق پیشفرضهای تعبیه شده در آباکوس برطرف سازید اما چنانچه قصد انجام تحلیلی ابتکاری، استفاده از یک مدل ماده جدید، بکارگیری یک مدل آسیب نوین (در موادی نظیر فلزات خاص و بتنها)، اعمال بار دلخواه و حتی ایجاد یک المان خاص را دارید، راهی جز سابروتیننویسی به زبان فرترن برای شما باقی نمیماند (سابروتیننویسی در آباکوس). این ویژگی در پروژههای مربوط به رشتههای مهندسی مکانیک، مهندسی عمران، مهندسی صنایع، مهندسی مواد بیشترین کاربرد را داراست. با ما در این آموزش همراه باشید…
هدف از یک تحلیل اجزای محدود، بررسی متغیرها و یا پارامترهای اختصاصی در یک پروسه بارگذاری است. مشاهده و بررسی کانتور تنش، ترسیم نمودار تنش- کرنش، بررسی میزان انرژی کرنشی، دمای موجود در گرههای یک المان و فرکانس طبیعی یک سازه، از موارد متداولی بهشمار میروند که شما قادر خواهید بود در ماژول Step و تنها با یک کلیک، Abaqus را به ذخیرهسازی و چاپ این متغیرها مکلف سازید. اما فرض کنید رفتار ماده موردنظر شما در آباکوس گنجانده نشده و یا قصد دارید به کمک یک سابروتین به بررسی رشد ترک در یک قطعه بتنی بپردازید. در اینصورت بدون شک نیاز پیدا خواهید کرد که برخی از متغیرهای ابتکاری و جدید مدل خود را (که در Abaqus هم موجود نیست) ذخیره و چاپ کنید تا از این طریق به بررسی صحت حل و نحوه تغییرات در متغیر مذکور بپردازید. در این صورت متغیرهای حالت یا SDV (Solution Dependent Variable) به کمک شما خواهند آمد.
DEPVAR در نرمافزار آباکوس مشخص کننده تعداد متغیرهای حالت موردنظر در یک تحلیل بوده و این ویژگی با هدف تخصیص یک فضا در هر نقطه انتگرالگیری به متغیرهای حالت بکار گرفته میشود. در واقع متغیرهای حالت به منزله تخصیص یک ظرف برای ذخیره کردن دادههای موردنظر در هر نقطه انتگرالگیری است. فرض کنید قصد دارید تا به بررسی Damage در یک سازه بپردازید. اگر در این زمینه تخصص داشته باشید میدانید که عملا مقدار آسیب با پارامتر D نشان داده میشود که دارای مقداری بین صفر و یک است. عدد صفر به منزله سالم بودن سطح مقطع و عدد یک به معنای گسیختگی کامل سطح مقطع و عدم تحمل بار توسط نمونه موردنظر است. لذا کاربر میتواند پارامتر مربوطه را بعنوان یک SDV یا متغیر حالت وابسته به حل ذخیره کرده و نحوه رشد آن را در طول بارگذاری مورد واکاوی قرار دهد. فراموش نکنید پیش از شروع به حل و در ماژول Step درخواست ذخیرهسازی مقادیر SDV در طول حل را به آباکوس بدهید.
اکنون قادر خواهید بود تا مقدار متغیرهای مورد نظرتان در طول فرآیند حل را به دقت دنبال کنید و به تحلیل آن بپردازید.
منبع : آکادمی نرمافزارهای مکانیک
با سلام من در نرم افزار آباکوس خواص ماده ویسکوالاستیک رو وابسته به دما تعریف می کنم و می خوام در تحلیلم دما رو با نرخ مشخص مثلاً 2 درجه بر دقیقه تغییر بدم. چطوری میشه تحلیل رو انجام داد که دما در خلال تحلیل با نرخ مشخص آپدیت شود؟ آیا باید دما در بازه زمانی را در قسمت خاصی مشخص کنم، چگونه ؟ آیا در این حالت هم باید از متغیر حالت استفاده کرد، چگونه؟
با توجه به اینکه در مشابه این مورد قبلاً هم سوالی مطرح کردم و جوابتون خیلی کلی بود اگه ممکنه یک راهنمایی دقیق تر می خواستم.
سلام
با توضیحاتی که دادید برداشت من اینه نیاز به کدنویسی داشته باشید
میتونید مقالات و کارهای مشابه که در این زمینه انجام شده را مطالعه کنید تا الگوی کار دستتون بیاد
اگر کدنویسی لازم باشه میتونید به Documentation آباکوس مراجعه کنید تا با قالب برنامه و نحوه آپدیت متغیرها آشنا بشید
موفق باشید . . .
با سلام و تشکر بابت جوابدهیتون، من هلپ آبکوس رو جست و جو کردم ولی نتونستم ازش کمک بگیرم. میشه لطفاً راهنمایی کنید که چه سابروتینی رو انتخاب کنم؟ اگر هم فایل مرتبطی در مورد آپدیت کردن دما داشته باشید ممنون میشم اگه در اختیارم بگذارید.
سلام
هر سابروتین یک توضیح اولیه داره که توضیح میده این سابروتین در کجا کاربرد داره و به چه منظوری بکار گرفته میشه
دقیقتر مطالعه بفرمایید تا بتونید سابروتین مورد نظر را پیدا کنید
مقالات را مطالعه کنید تا با فرمولیشن و نحوه آپدیت دما و سایر روابط آشنا بشید، خودتون بهترین کسی هستید که میتونید به خودتون کمک کنید چون کاملا از زوایای مختلف مسئلتون آگاهید
موفق باشید . . .
سلام خسته نباشید. در مدل من، مدول الاستیک با گذر زمان افزایش پیدا میکنه و وابسته به زمان است. چگونه در ماژول property، مدول الاستیک وابسته به زمان تعریف کنم؟ توی keyword میشه؟ اگه میشه راهش چیه؟ یا باید کد نوشت؟
سلام
در keyword تغییرات لازم را اعمال کنید (از منوی Model > Edit keyword)
برای مثال:
** material definition
*MATERIAL, NAME=myMaterial
*ELASTIC
** E, v, temp, FV1
1.89e+10, 0.3, , 0.0
2.45e+10, 0.3, , 1.0
2.85e+10, 0.3, , 2.0
سلام جناب مهندس
یک SDV در سابروتین UMAT دارم که به عنوان کرنش پلاستیک معرفی و مقدار دهی شده است چگونه میتوان از مقدار آن به عنوان خروجی PE که خروجی استاندارد کرنش پلاستیک است، استفاده کرد؟ آیا چنین کاری در آباکوس امکانپذیر هست که SDV ها را به عنوان خروجی استاندار و نه وابسته به حل درخواست کرد؟
با تشکر
سلام
ویژگی اصلی متغیرهای حالت اینه که در طول حل آپدیت بشن؛ در واقع این متغیرها مثل یک ظرف میمونه که محتویاتش مدام پر و خالی میشه
حالا شما اگر این متغیر را در پایان اینکرمنت آپدیت نکنید طبیعتاً مقدارش تغییر نخواهد کرد
ببخشید مثل اینکه نتونستم سوالم رو درست مطرح کنم. من یک SDV دارم که می خواهم آن را به عنوان خروجی در فایل ODB ذخیره کنم ولی نه به عنوان متغیر حالت بلکه مقدار آن به عنوان کرنش پلاستیک (PE) در فایل ODB ذخیره گردد. آیا این کار در آباکوس امکان پذیر هست؟
ممنون از حُسن توجه شما
یعنی قراره یک عدد ثابت باشه؟
کرنش پلاستیک مگه تغییر نمیکنه؟
اگر این SDV قرار باشه کرنش پلاستیک را معرفی کنه که باید در هر اینکرمنت آپدیت بشه
شما میتونید کرنش پلاستیک را در هر اینکرمنت خروجی بگیرید؛ دیگه تعریف SDV چه کمکی میکنه ؟
واقعا در فضای مسئله قرار نمیگیرم با توضیحاتتون
SDV در سابروتین UMAT من عدد ثابت نیست و در هر اینکریمنت طبق مدل به عنوان کرنش پلاستیک محاسبه میشود ولی مشکل اینجاست که وقتی از سابروتین UMAT استفاده میکنیم درخواست PE نتیجه صفر دارد و در این سابروتین هم PE ظاهرا قابل دسترس نیست تا مقدار SDV که حاوی کرنش پلاستیک است، درون آن بریزیم.
آقای مهندس سروری این قضیه فقط مشکل من نیست دیگرانی هم به این مشکل برخورد کردن. ولی هنوز راه حل رو پیدا نکردم.
https://polymerfem.com/forum/finite-element-modeling/constitutive-models/1322-plastic-strain-output-from-umat
ببینید شما وقتی قصد دارید یک متغیر (مثل همین کرنش پلاستیک) را در یک SDV ذخیره کنید باید از طریق روابط الاستیک-پلاستیک در هر اینکرمنت سهم کرنش پلاستیک از کرنش کل را پیدا کنید و این مقدار را در ظرف SDV بریزید
طبیعتاً هر اینکرمنت هم که جلو بره باید این متغیر آپدیت و ثبت بشه
شما اشاره میکنید که : “در این سابروتین هم PE ظاهرا قابل دسترس نیست تا مقدار SDV که حاوی کرنش پلاستیک است، درون آن بریزیم”
این اصلاً معنی نداره؛ کرنش پلاستیک برای شما SDV است؛ PE که اصلا وجود نداره، وجود داشت که نیازی به این کار نبود
کاری که شما باید بکنید اینه که چون به شکل پیش فرض مقدار مورد نظر محاسبه نمیشه پس یک SDV تعریف میکنید؛ در هر اینکرمنت، سهم کرنش پلاستیک را پیدا کنید (اول کرنش trial و بعد پیدا کردن بخش پلاستیک و . . .)؛ حالا مقدار مشخص شده را داخل SDV قرار میدهید
در آخر اینکرمنت هم این متغیر را آپدیت میکنید
شما باید خودتون PE را حساب کنید و در قالب یک SDV با هر نامی که دوست دارید ذخیره کنید؛ هر جای کد هم که به کرنش پلاستیک نیاز دارید از همین استفاده کنید
http://imechanica.org/node/16115
اینجا هم چیزی جز توضیحات بنده ذکر نشده
به فرمولها و روند آپدیت شدن پارامتر توجه کنید
PE برای شما SDV است؛ هر جا نیاز دارید از همین SDV استفاده کنید؛ به اسمش کار نداشته باشید!
ممنون از وقتی که میگذارید. اما بعضی مواقع بهتره که مقدار SDV در یک خروجی استاندارد ذخیره بشه تا مقادیری مثل معادلهای کرنش پلاستیک و تنش یا Invariant های تنش یا کرنش به صورت اتوماتیک در آباکوس محاسبه و در خروجی ثبت شوند.
بله
به شرطی که این امکان باشه
با عرض سلام . ادب
جناب آقای مهندس بنده از یک فایل umat که در حوزه کریستال پلاستیسیته می باشد استفاده میکنم. از آنجاییکه این کد متعلق به بنده نیست لذا دو سوال داشتم که ممنون میشوم راهنمایی کنید.
۱- از کجا بفهمم هر SDV در خروجی visualization برای محاسبه چه پارامتری استفاده شده است.؟
2- تعداد SDV هایی که کد لحاظ کرده را از کجا بفهمم که هنگام تعریف property در قسمت DEPVAR آن تعداد را لحاظ کنم؟
با سپاس
سلام
باید در متن کد دنبال هر دو موضوع بگردید
به شکل معمول اگر کد حرفه ای نوشته بشه همه متغیرهای حالت در ابتدای کد با یک کامنت مختصر معرفی میشه
در غیر اینصورت در کد واژه SDV را سرچ کنید و خط به خط جلو برید؛ اینجوری هم تعداد متغیرها مشخص میشه و هم متوجه خواهید شد که چه پارامتری به اون متغیر اختصاص داده شده
سلام جناب مهندس
یه کد ساده الاستیک رو بصورت Umat برای یک مکعب استفاده کردم و وارنینگ زیر رو میده!
User subroutine umat will be used with the stavev array dimensioned to zero since the *depvar option is not used with this material. Consequently, defining statev entries in subroutine umat will cause code execution errors.
و ارور زیر!
1000 elements have been defined with zero hour glass stiffness. You may use *hourglass stiffness or change the element type. The elements have been identified in element set ErrElemZeroHourGlassStiffness.
Analysis Input File Processor exited with an error.
ممنون میشم راهنمایی بفرمایید.
سلام
در ماژول property بعد از اینکه گزینه user material را انتخاب کردید گزینه depvar را هم از بخش general فعال و تعداد متغیرهای حالت مورد استفاده در umat خودتون را وارد کنید
برای رفع ارور هم به ماژول مش برید، از مسیر Mesh > Element type اقدام کنید؛ در پنجره باز شده در بخش element controls و در مقابل گزینه hourglass control یکی از گزینه ها مثل Enhanced را انتخاب کنید
با سلام مجدد خدمت شما و تشکر از پاسخ
بنده هیچ Depvar در کد استفاده نکرده ام، یک کد الاستیک با ورودی کرنش و محاسبه تنش با ماتریس سختی الاستیک و خروجی تنش
با این وجود Depvar رو تعریف کردم با تعداد 0 و این ارور رو میده
The number of solution-dependent state variables can not be set equal to zero.
Analysis Input File Processor exited with an error.
متن خطا را بخونید
واضحه
نوشته تعداد depvar نمیتونه صفر باشه
ممنون
سلام. میشه لطف کنین در رابطه با سابروتین نویسی برا رشد ترک خزشی راهنماییم کنین؟
سلام
میتونید مدل خزشی خودتون را از طریق سابروتین CREEP پیاده سازی کنید ولی اگر مباحثی مثل damage را هم در نظر بگیرید باید UMAT بکار ببرید
با عرض سلام خدمت شما.
آیا این امکان وجود دارد که بعضی از SDV هایی رو که فقط میخوایم رو خروجی بگیریم؟؟
اگر نمیشه، این امکان وجود داره که SDV های یک یومت رو بدون این که به عنوان خروجی تعریف بشه به یک نوعی بیرون کشید؟؟؟
سلام
شما هر متغیری را که آپدیت کنید ذخیره میشه و طبیعتا در خروجی هم نمایش داده خواهد شد
منظورتون از بیرون کشیدن چیه؟
ممنون از پاسخگوییتون! نه ببینید من بخشی از کدم یومت ویسکوالاستیک هستش که برای خودم نیست. و با آزمون و خطا فهمیدم که اگر مقدار DEPVAR رو 250 بذارم error نمیده و حل می کنه حالا من که کدم ترکیبی از چند کد هستش رو میخوام فقط SDV های خاصی رو ازش خروجی بگیرم چون اون رو نیاز دارم یعنی SDV اون بخش ویسکو که 250 تا هستش رو نمیخوام چون از لحاظ حجم محاسباتی خیلی بزرگ میشه! نزدیک چند ترابایت! حالا این امکانش هست من فقط SDV های اون قسمتی رو که میخوام رو بگیرم و بخش ویسکوش رو نگیرم؟!
ببینید SDVها همه تحت یک گزینه در field output وجود دارند
در نتیجه همه نمایش داده خواهند شد ضمن اینکه اگر قراره یک متغیر در طول حل آپدیت بشه پس باید در یک ظرف ریخته بشه و مدام مقدارش تغییر کنه
چه شما خروجی بگیرید چه نگیرید فرایند آپدیت کردن متغیر حجم فایل را افزایش خواهد داد
هر چند الان یه راه حلی به ذهنم رسید که با تعریف set میتونم به اون منظورم برسم
set روی SDV ؟؟؟
سلام وقتتون بخیر
من یک کد یومت نوشتم و داخل این کد از statev استفاده کردم. در این کد من تعریف کردم که اگر معیار آسیب تعریف شده ارضا شدstatev برابر ۱۰ شود و اگر ارضا نشد صفر باشد. اما در آخر میبینم که برای statev مقداری مثل ۹ و مقادیر دیگری هم وجود دارد. همین باعث مشکل در تحلی من شده . به نظرتون چکار کنم
سلام
برای دیدن مقدار دقیق از probe استفاده کنید
با عرض سلام
بنده برای یک ماده با رفتار هایپرالاستیک آسیب را تعریف کردم و برای یک المان جواب کامل بدست می آید ولی با تعداد المان های بیشتر تا نقطه ای که تنش به ماکسیمم مقدار خود می رسد جواب می دهد یعنی لحظه ای که نمودار تنش شروع به کاهش می کند را برای المان های بیشتر بدست نمی آید. اگر کمک کنید بسیار سپاسگزارم.
سلام
سابروتین نویسی کرده اید؟
سلام خوبین جناب مهندس سروری
من یه سابروتین خیلی ساده USDFLD نوشتم ولی نمیدونم چرا مقادیر SDV من همه ش صفر نشون میده
سلام
ممنونم
آپدیت متغیرها را بررسی کنید؛ کد در اون قسمت مشکل داره
سلام
من یک مدل دوبعدی رفتاری غیرخطی گرافن دارم ولی داخل سابروتین یومت چون ماتریس تغییر شکل گرادیان رو لازم دارم با همون تحلیل سه بعدی میرم جلو ولی خطای THE NUMBER OF SOLUTION-DEPENDENT STATE VARIABLES CAN NOT BE SET
EQUAL TO ZERO. بهم میده؟؟؟؟
تعداد statev را درست وارد کنید؛ الان صفر گذاشتید یعنی متغیر حالتی ندارید
در ضمن با یک مدل دو بعدی نمیتونید مسئله 3 بعدی حل کنید