Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 64

‫فصل نوزدهم‬

‫زیربرنامه نویسی در آباکوس‬

‫مقدمه‬
‫در مواردی که تعریف ویژگیهای مدل وابس ته ب ه ح ل مس ئله‬
‫است‪ ،‬میتوان از زیربرنامههای آباکوس اس تفاده ک رد‪ .‬از آنج ایی‬
‫که زیربرنامهه ا در آب اکوس توس ط حلگره ا فراخ وانی میش وند‪،‬‬
‫بنابراین زیربرنامهها با توجه به حلگری که آنها را فراخوانی میکند‬
‫به دو دسته اصلی تقسیم میشوند‪ .‬دسته اول زیربرنامهها توس ط‬
‫حلگ ر ‪ ABAQUS/EXPLICIT‬و دس ته دوم توس ط حلگ ر‬
‫‪ ABAQUS/STANDARD‬مورد اس تفاده ق رار میگیرن د‪ .‬ب ا توج ه ب ه‬
‫اینکه زیربرنامهها به زب ان فرت رن نوش ته میش وند‪ ،‬در این بخش‬
‫ابتدا به معرفی زبان فرترن پرداخته خواهد شد‪ .‬سپس با بررسی‬
‫نکات عمومی زیربرنام هه ا‪ ،‬ب ه مع رفی چن د زیربرنام ه خ واهیم‬
‫پرداخت‪.‬‬
‫برنامه نویسی فرترن‬
‫در این بخش دستورات مهم زبان برنامهنویسی فرت رن ب رای‬
‫زیربرنامهنویسی در آباکوس بی ان خواه د ش د‪ .‬این بخش ش امل‬
‫موارد زیر است‪:‬‬
‫متغیرهای عددی و فرمانهای تعیین خصوصیت آنها‬ ‫‪.1‬‬
‫فرامین کنترل برنامه‬ ‫‪.2‬‬
‫آشنایی و‬ ‫‪314‬‬
‫طرز کار با نرم افزار ‪ABAQUS‬‬

‫خروجی و ورودیها‬ ‫‪.3‬‬


‫زیربرنامه و تابع در فرترن‬ ‫‪.4‬‬
‫‪ .5‬توابع کاربردی در فرترن‬
‫قب ل از مع رفی متغیره ا در فرت رن الزم اس ت ب ه این نکت ه‬
‫توجه شود که فرترن برخالف پیتون به بزرگی و ک وچکی ح روف‬
‫حساس نیست‪ .‬زیربرنامههای آباکوس بهصورت ‪ fix format‬نوش ته‬
‫میشود‪ .‬بنابراین دستورات از کاراکتر ‪ 7‬آغاز میگ ردد‪ .‬در ص ورت‬
‫کامنت بودن یک خطمیتوان از از ح رف ‪ C‬در ابت دای آن اس تفاده‬
‫کرد و البته می توان در هر مکانی از عالمت ! نیز به منظور کامنت‬
‫کردن بقیه خط استفاده نمود‪ .‬برای یادگیری زبان برنام هنویس ی‬
‫فرت رن نس خه وی ژوال فرت رن مناس ب اس ت‪ .‬ب ا این وج ود در‬
‫نسخههای جدی د ن رم اف زار آب اکوس از کامپایلره ای ‪Intel Fortran‬‬
‫اس تفاده میش ود‪ .‬ب رای ی افتن و ی ا اطمین ان از نص ب ص حیح‬
‫کامپایلر مورد نیاز‪ ،‬از طریق ‪ Command Prompt‬ویندوز و با توجه به‬
‫مسیر نص ب آب اکوس (ک ه در این مث ال در درای و ‪ C‬نص ب ش ده‬
‫است)‪ ،‬به مسیر‬
‫‪C: \SIMULA\Abaqus\Commands‬‬
‫رفته و دستور‬
‫‪\Abaqus Information=System‬‬
‫را بنویسید‪ .‬با اجرای این دستور نرم افزار آب اکوس نیازمن دی‪-‬‬
‫های خود را نوشته و مشخص میکند که چه ن رمافزاره ایی بط ور‬
‫مناسب نصب نشدهاند‪.‬‬
‫متغیرهای عددی و فرمانهای تعیین خصوصیت آنها‬
‫متغیرها در فرترن میتوانند صحیح‪ ،‬اعش اری و ی ا دارای ح الت‪-‬‬
‫های دیگر باشند‪ .‬ب ا توج ه ب ه اینک ه اس تفاده از متغ یره ای غ یر‬
‫همنوع ممکن است باعث عملک رد اش تباه ی ک زیربرنام ه ش ود‪،‬‬
‫بنابراین الزم است در تعریف متغیرها دقت الزم انجام گیرد‪ .‬ن وع‬
‫متغیر در فرترن با حرف اول آن مشخص میشود‪ .‬در صورتی ک ه‬
‫متغیر با یکی از حروف ‪ I,J,K,L,M,N‬شروع شود‪ ،‬بط ور پیشف رض‬
‫عدد صحیح تلقی میشود‪ .‬در غ یر این ص ورت متغ یر اعش اری ب ا‬
‫دقت معمولی فرض در نظر گرفت ه خواه د ش د‪ .‬در ص ورتی ک ه‬
‫بخواهیم از انواع دیگر متغیرها بهره ببریم و یا نوع متغیر را ب دون‬
‫توجه به ح رف اول آن مش خص ک نیم میت وان از دس تورات زی ر‬
‫استفاده کرد‪:‬‬
‫زیر برنامه نویسی در ‪ABAQUS‬‬
‫‪315‬‬

‫اعداد صحیح( ‪:)INTEGER‬‬


‫اعداد صحیح ب ا دس تور ‪ INTEGER‬مش خص میش وند‪ .‬نم ایش‬
‫عمومی این دستور بهصورت زیر است‪:‬‬
‫‪INTEGER‬‬ ‫… ‪ ,‬نام متغیر اول ‪ ,‬نام متغیر دوم‬
‫اعداد اعشاری با دقت معمولی(‪:)REAL‬‬
‫اعداد اعشاری با دقت معمولی ( هفت رقم اعشار) بهصورت‬
‫زیر مشخص میشوند‪.‬‬
‫… ‪ ,‬نام متغیر اول ‪ ,‬نام متغیر دوم ‪REAL‬‬
‫اعداد اعشاری با دقت مضاعف( ‪:) DOUBLE PRECISION‬‬
‫اع داد اعش اری ب ا دقت مض اعف (پ انزده رقم اعش ار) ب ا‬
‫استفاده از دستور زیر قابل تعریف است‪.‬‬
‫… ‪ ,‬اول نام متغیر‪ ,‬نام متغیر دوم ‪DOUBLE PRECISION‬‬
‫رشته( ‪:)CHARACTER‬‬
‫رشتهها در فرترن بهصورت زیر تعریف میگردند‪:‬‬
‫نام متغیر * ‪CHARACTER‬‬ ‫تعداد حروف‬
‫در صورتی که تعداد حروف مشخص نشود‪ ،‬برابر یک در نظ ر‬
‫گرفته خواهد شد‪.‬‬
‫‪:IMPLICIT‬‬
‫در صورتی که بخواهیم تمام متغیرهایی که با حرف یا ح روف‬
‫خاصی آغاز میشوند‪ ،‬از نوع خاصی باشد‪ ،‬از دستور زیر اس تفاده‬
‫میشود‪:‬‬
‫نوع متغیر (حرف مورد نظر) ‪IMPLICIT‬‬
‫به عنوان مثال در دستور زیر تمام متغیرهایی ک ه ب ا ح رف ‪A‬‬
‫آغاز میشوند‪( INTEGER‬عدد صحیح ) خواهند بود‪:‬‬
‫‪IMPLICIT INTEGER‬‬ ‫)‪(A‬‬
‫و در مثال زیر متغیرهایی که با حروف ‪ B‬تا‪ E‬آغاز میش وند از‬
‫نوع اعشاری با دقت مضاعف خواهند بود‪.‬‬
‫)‪IMPLICIT DOUBLE PRECISION (B-E‬‬
‫آرایهها‪:‬‬
‫آرایهها در فرترن بهصورت زیر تعریف میشوند‪:‬‬
‫نام آرایه (ابعاد آرایه) ‪DIMENSION‬‬
‫آشنایی و‬ ‫‪316‬‬
‫طرز کار با نرم افزار ‪ABAQUS‬‬

‫در مثال زیر یک آرایه صحیح ‪ 10‬عضوی تعریف شده است‪:‬‬


‫)‪DIMENSION I(10‬‬
‫در مثال ذکر شده بدلیل اینکه نام آرایه با ح رف ‪ I‬آغ از ش ده‬
‫اس ت‪ ،‬درای هه ای آن ع دد ص حیح خواهن د ب ود‪ .‬در ص ورتی ک ه‬
‫بخواهیم نوع آرایه را مشخص ک نیم‪ ،‬بای د بع د از مش خص ک ردن‬
‫ابعاد آن ‪ ،‬نوع آرایه را نیز مش خص ک رد‪ .‬ب ه عن وان مث ال آرای ه‬
‫‪ 10*10‬تعری ف ش ده در مث ال زی ر‪ ،‬اعش اری ب ا دقت مض اعف‬
‫خواهد بود‪:‬‬
‫)‪DIMENSION A(10,10‬‬
‫‪DOUBLE PRECISION A‬‬
‫البته میتوان چنین آرایهای را به صورت زیر نیز تعریف کرد‪:‬‬
‫)‪DOUBLE PRECISION A(10,10‬‬
‫‪:PARAMETER‬‬
‫متغیرها در طی برنامه ممکن است مقدارشان تغی یر کن د‪ .‬ب ا‬
‫اس تفاده از دس تور زی ر میت وان از تغی یر مق دار ی ک پ ارامتر‬
‫جلوگیری کرد‪:‬‬
‫نام متغیر اول = مقدار اول ‪ ,‬نام متغیر دوم = ( ‪PARAMETER‬‬
‫)‪ , ...‬مقدار دوم‬
‫‪:DATA‬‬
‫در ص ورتی ک ه بخ واهیم ب ه ی ک آرای ه مق دار اولی ه ب دهیم‪،‬‬
‫استفاده از دستور ‪ DATA‬مفید است‪ .‬به عنوان مثال ماتریس‪:‬‬
‫‪1 2‬‬
‫=‪A‬‬ ‫] [‬
‫‪3 4‬‬
‫به صورت زیر مقدار دهی میشود‪:‬‬
‫\‪DATA A\1,3,2,4‬‬
‫در تعریف یک آرایه‪ ،‬ابتدا ستون اول و سپس ستون دوم و ‪...‬‬
‫مقداردهی میشوند‪ .‬در ص ورتی ک ه م اتریس ‪ A‬همگی براب ر ی ک‬
‫مقدار (مثال ‪ )10‬باشند‪ ،‬دستور زیر استفاده میشود‪:‬‬
‫\‪DATA A\4*10‬‬
‫زیر برنامه نویسی در ‪ABAQUS‬‬
‫‪317‬‬

‫فرامین کنترل اجرای برنامه‪8‬‬


‫در هر زبان برنامه نویسی‪ ،‬آشنایی با دستورات کنترل اجرای‬
‫برنام ه ض روری اس ت‪ .‬در ص ورت نی از ب ه کن ترل رون د اج رای‬
‫برنامه مث ل تک رار بعض ی از خط وط‪ ،‬میت وان از دس تورات زی ر‬
‫کمک گرفت‪.‬‬
‫‪: GOTO‬‬
‫دستور ‪ GOTO‬به منظور پرش اجرای برنام ه ب ه خطی خ اص‬
‫بکار میرود‪ .‬دو فرمت اصلی این دستور عبارتند از‪:‬‬
‫‪GOTO n‬‬ ‫‪‬‬
‫که این دستور اجرای برنام ه را ب ه ابت دای خطی ک ه ب ا ع دد‬
‫صحیح ‪ n‬مشخص شده انتقال میدهد‪.‬‬
‫‪GOTO (n1,n2,…),i‬‬ ‫‪‬‬
‫در صورتی که ‪ i‬با هر ی ک از مق ادیر ‪ nj‬براب ر باش د‪ ،‬اج رای‬
‫برنامه به خط مشخص شده با ‪ nj‬منتقل خواهد شد‪.‬‬
‫‪:DO‬‬
‫با استفاده از دستور ‪ DO‬می توان مجموعهای از دستورات را‬
‫تکرار کرد‪ .‬این دستور معموال ً به دو صورت زیر بکار می رود‪:‬‬
‫‪1.‬‬
‫‪DO n I=first,end,step‬‬
‫……‬
‫……‬
‫‪n CONTINUE‬‬
‫در این دستور‪ n ،‬شماره خطی است ک ه انته ای بدن ه حلق ه‬
‫‪ DO‬را نشان میدهد‪ .‬معموال ً ب رای جلوگ یری از اش تباه از دس تور‬
‫‪ CONTINUE‬در این خط استفاده میگردد‪ I .‬شمارنده حلقه ب وده و‬
‫مقادیر ‪ first‬و ‪ end‬ابتدا و انتهای ب ازه ‪ I‬را نش ان می ده د‪ .‬مق دار‬
‫‪ step‬نیز گام متغیر ‪ I‬را نشان میده د‪ .‬بای د توج ه داش ت ک ه ن وع‬
‫متغیر و ابتدا و انته ا و گ ام متغ یر همگی بای د از ی ک ن وع متغ یر‬
‫باشند‪ .‬حلقه ‪ DO‬را می توان بهصورت زیر نیز نوشت‪.‬‬
‫‪2.‬‬
‫‪DO I=first,end,step‬‬
‫……‬
‫آشنایی و‬ ‫‪318‬‬
‫طرز کار با نرم افزار ‪ABAQUS‬‬

‫……‬
‫‪END DO‬‬
‫در صورتی ک ه بخ واهیم ی ک حلق ه در ص ورت برق رار ب ودن‬
‫شرطی اجرا گردد‪ ،‬دستور ‪ DO WHILE‬مفید خواهد بود‪ .‬س اختار‬
‫این دستور عبارت است از‪:‬‬
‫)عبارت منطقی( ‪DO WHILE‬‬
‫……‬
‫……‬
‫‪END DO‬‬
‫دس تور ‪ exit‬ب رای خ ارج ش دن از ی ک حلق ه‪ ،‬ب دون ارض ای‬
‫شرایط حلقه‪ ،‬بکار میرود‪.‬‬
‫‪:IF‬‬
‫ساختار کلی دستور شرطی ‪ IF‬بصورات زیر است‪:‬‬
‫‪) THEN‬عبارت منطقی( ‪IF‬‬
‫……‬
‫……‬
‫‪) THEN‬عبارت منطقی( ‪ELSE IF‬‬
‫……‬
‫‪…....‬‬
‫‪ELSE‬‬
‫……‬
‫……‬
‫‪END IF‬‬
‫باید دقت شود که از ش رط اتم ام برنام ه ک ه ب ا ‪ END‬نش ان‬
‫داده میشود در دستورات فوق استفاده نگردد‪.‬‬
‫خروجی‬
‫در ب رخی م وارد الزم اس ت ک ه ب ه منظ ور کن ترل ص حت‬
‫زیربرنامه آباکوس‪ ،‬برخی اطالعات در فایلی ذخ یره ش ود‪ .‬ب رای‬
‫این منظور از دستور ‪ write‬و ‪ print‬میتوان استفاده کرد‪ .‬فرم ساده‬
‫و کاربردی دستور ‪ print‬به صورت زیر است‪:‬‬
‫… ‪ ,‬متغیر‪, 1‬متغیر‪Print *, 2‬‬
‫زیر برنامه نویسی در ‪ABAQUS‬‬
‫‪319‬‬

‫البته بهجای متغیر میتوان عدد و یا رشته نیز جایگزین کرد‪ .‬در‬
‫آباکوس حاصل دس تور ف وق در ی ک فای ل ب ا ن ام (‪log.)Job name‬‬
‫ذخیره میشود‪ .‬از دستور ‪ write‬نیز میتوان برای نوش تن اطالع ات‬
‫در یک فایل خارجی استفاده کرد‪.‬‬
‫برنامه های فرعی در فرترن‬
‫در بسیاری از موارد الزم است برای جلوگیری از بک ار ب ردن‬
‫دستورات تکراری‪ ،‬از برنامههای فرعی استفاده شود‪ .‬برنامهه ای‬
‫فرعی در فرترن به سه دسته تقسیم میشوند‪:‬‬
‫‪ .1‬برنام هه ای ف رعی ی ک جمل های‪ ،‬تعری ف این برنام هه ای‬
‫فرعی بهصورت زیر است‪:‬‬
‫عبارت منطقی= (‪،...‬ورودی‪،2‬ورودی‪ )1‬نام تابع‬
‫مثال‪:‬‬
‫‪SUM(A,B,C)=A+B+C‬‬
‫…‬
‫…‬
‫)‪S=SUM(10,4,6‬‬

‫برنام هه ای ف رعی ت ک جمل های بع د از دس تورات غ یر‬


‫اجرایی و قب ل از دس تورات اج رایی نوش ته میش ود‪ .‬قواع د‬
‫حاکم بر نام متغیرها بر نام برنامههای فرعی تک جملهای ن یز‬
‫حاکم است‪.‬‬
‫‪ .2‬توابع‪ :‬ف رم کلی ت ری از برنام هه ای ف رعی ی ک جمل های‬
‫است که در بعد از برنامه اصلی نوشته میش ود‪ .‬ب ا توج ه‬
‫به اینکه در نام تابع مق داری ق رار داده میش ود‪ ،‬بن ابراین‬
‫قواعد حاکم بر نام آنها مشابه قواعد حاکم بر نام متغیرها‬
‫است‪ .‬خصوصیات توابع در ابتدای برنام ه اص لی و هنگ ام‬
‫تعری ف آنه ا تع یین میگ ردد (مش ابه تع یین خصوص یات‬
‫متغیرها)‪ .‬توابع مستقل از برنامه اصلی ب وده و ف رم کلی‬
‫آن بهصورت زیر است‪:‬‬

‫نام تابع (ورودیهای تابع) ‪ FUNCTION‬خصوصیت تابع‬


‫دستورات تابع‬
‫آشنایی و‬ ‫‪320‬‬
‫طرز کار با نرم افزار ‪ABAQUS‬‬

‫‪END‬‬

‫مثال‪:‬‬
‫)‪REAL FUNCTION SUM( A,B‬‬
‫‪SUM= A+B+C‬‬
‫‪END‬‬
‫با بکار بردن نام توابع در داخل برنام ه اص لی میت وان آنه ا را‬
‫فراخوانی کرد‪.‬‬
‫‪ .3‬زیر برنامهه ا مانن د تواب ع برنام هه ایی مس تقل از برنام ه‬
‫اص لی هس تند‪ .‬در ن ام زیربرنام هه ا ب رخالف تواب ع هیچ‬
‫مقداری ذخیره نمی شود‪ .‬فرم کلی زیر برنامه ها بهصورت‬
‫زیر است‪:‬‬
‫)‪SUBROUTINE 'NAME' ( VARIABLES‬‬
‫‪body‬‬
‫‪END‬‬
‫که منظور از ‪ ، NAME‬نام زیربرنامه است‪ .‬زیربرنامهها در‬
‫برنامه اصلی از طریق دستور زیر فراخوانی میشوند‪:‬‬
‫)‪CALL 'NAME' ( variables‬‬
‫هم در توابع و هم در زیربرنامه ها میتوان در هر ج ای برنام ه‬
‫با استفاده از دستور ‪ RETURN‬به برنامه اصلی بازگشت‪.‬‬

‫مروری بر توابع کاربردی‪8‬‬


‫برخی توابع کاربردی موجود در فرترن عبارتند از‪:‬‬
‫تابع )‪Abs(variable‬‬
‫قدر مطل ق ی ک متغ یر را ب دون تغ یر در خصوص یت متغ یر (‬
‫‪ )… ,INTEGER,DOUBLE PRECISION‬می دهد‪.‬‬
‫تابع )‪Int(variable‬‬
‫قسمت صحیح متغیر اعشاری را بهصورت ی ک متغ یر ص حیح‬
‫میدهد‪.‬‬
‫زیر برنامه نویسی در ‪ABAQUS‬‬
‫‪321‬‬

‫تابع )‪Aint(variable‬‬
‫قس مت ص حیح متغ یر اعش اری را ب هص ورت ی ک متغ یر‬
‫اعشاری میدهد‪.‬‬
‫تابع ‪)(REAL‬‬
‫مقدار متغیر را به صورت اعشاری میدهد‪.‬‬
‫تابع )‪nInt(variable‬‬
‫متغیر اعشاری را بهصورت گرد ک رده و بص ورت ی ک متغ یر‬
‫صحیح میدهد‪.‬‬
‫)‪Anint(variable‬‬
‫متغیر اعشاری را بهصورت گرد کرده و بهصورت ی ک متغ یر‬
‫اعشاری میدهد‪.‬‬
‫تابع‪)(Matmul‬‬
‫ضرب دو ماتریس و یا بردار انجام میدهد‪.‬‬
‫تابع ‪)(Dot_product‬‬
‫این تابع ضرب داخلی دو بردار را محاسبه میکند‪.‬‬
‫تابع خارج قسمت ‪)(Mod‬‬

‫تابع تصادفی ‪)(Random‬‬

‫تابع جذر ‪)(Sqrt‬‬


‫عالوه بر آنچه گفته ش د‪ ،‬تواب ع مثلث اتی و هایپربولی ک ‪Acos()،‬‬
‫‪ )(Atan()، Sin()، Cos()، Tan()، Cotan()، Sinh()، Cosh‬و ‪ )(Tanh‬نیز در‬
‫فرترن تعریف شدهاند‪.‬تابع ‪ )(EXP‬نیز از توابع مهم ریاضی موجود‬
‫در فرترن است‪.‬‬
‫امید است آنچه در مورد برنامهنویسی در فرت رن گفت ه ش د‪،‬‬
‫برای زیربرنامهنویسی در آباکوس کافی باشد‪ .‬در ادام ه ب ه رون د‬
‫برنامهنویسی در آباکوس پرداخته خواهد شد‪.‬‬
‫آشنایی و‬ ‫‪322‬‬
‫طرز کار با نرم افزار ‪ABAQUS‬‬

‫کلیّات زیربرنامهنویسی در آباکوس‬


‫یکی از مهمترین قابلیتهای آباکوس‪ ،‬امکان نوشتن زی ربرنام ه‬
‫در آن است‪ .‬در بسیاری از نرمافزارهای تجاری موج ود‪ ،‬هنگ امی‬
‫که شرایط مرزی وابسته به نتایج حل است‪ ،‬ناگزیر به قط ع ح ل‬
‫مسئله و تعریف مجدّد شرایط مرزی هستیم‪ .‬در آباکوس با کم ک‬
‫زیربرنامهه ای در نظ ر گرفت ه ش ده نی ازی ب ه قط ع ک ردن ح ل‬
‫نیست‪ .‬بنابراین عالوه بر دقت مناسب در اعمال ش رایط م رزی‪،‬‬
‫سرعت حل مسئله نیز به مراتب باالتر خواهد بود‪ .‬امید است ک ه‬
‫خوانندگان با مطالع ه این بخش بتوانن د از تم امی زیربرنام هه ای‬
‫آباکوس با کم ک ‪ help‬ن رم اف زار به ره ببرن د ( البت ه اس تفاده از‬
‫برخی زیربرنامهها نیازمند اطالعات تئوری خاصی است که ف رض‬
‫بر آن است که خوانندگان از آن آگ اه هس تند)‪ .‬ب رای این منظ ور‬
‫در این بخش ب ه بررس ی نک ات مش ترک زیربرنام هه ا پرداخت ه‬
‫خواهد شد‪ .‬سپس در قسمته ای بع د‪ ،‬چن د زیربرنام ه ب ه عن وان‬
‫مثال معرفی میشوند‪.‬‬
‫استفاده از زیربرنامه را میتوان به ‪ 3‬مرحله زیر تقسیم کرد‪.‬‬
‫ص خ ود و ب ه‬ ‫در مرحله اول بای د زیربرنام ه را ب ا ف رمت خ ا ِّ‬
‫زبان فرت رن نوش ت‪ .‬ب رای این منظ ور اس تفاده از ‪ help‬اجتن اب‬
‫ناپذیر است‪ .‬توضیحات مربوط به زیربرنامهه ا در قس مت ‪Abaqus‬‬
‫‪ User Subroutines Reference Manual‬ق رار دارد‪ .‬ب ا مراجع ه ب ه این‬
‫قسمت و در بخش ‪ User Subroutines‬خواهید دید که در آب اکوس دو‬
‫دس ته زیربرنام ه وج ود دارد ک ه ه ر دس ته مرب وط ب ه یکی از‬
‫حلگرهای ‪ Explicit‬و یا ‪ Standard‬است‪ .‬با مشاهده هر بخش خواهید‬
‫دید ک ه بط ور کلی ‪ help‬ن رماف زار آب اکوس ب رای ه ر زیربرنام ه‬
‫شامل قسمتهای اساسی زیر است‪:‬‬
‫‪ : Overview ‬در این قس مت امکان ات و مح دودیته ای‬
‫زیربرنام ه توض یح داده میش ود‪ .‬ه ر ک اربر بای د ابت دا ب ا‬
‫مطالعه این قسمت مطمئن شود که زیربرنامه مورد نظ ر‬
‫تواناییهای مورد نظر را دارد‪.‬‬
‫‪ : User subroutine interface ‬در این بخش یک برنامه کلی وجود‬
‫دارد ک ه قس مت اول آن ب ه تعری ف زیربرنام ه و ن وع‬
‫متغیرهای موجود میپردازد‪ .‬قسمت دوم که با‪user coding to‬‬
‫‪ define‬مشخص شده اس ت‪ ،‬بخش ی اس ت ک ه ک اربر بای د‬
‫برنامه خود را در آن وارد کند‪ .‬بنابراین تنها این قس مت از‬
‫زیربرنامه تغییر میکند‪ .‬در زیربرنامههای مرب وط ب ه حلگ ر‬
‫‪ explicit‬این قسمت درون یک حلقه قرار میگ یرد‪ .‬علت این‬
‫زیر برنامه نویسی در ‪ABAQUS‬‬
‫‪323‬‬

‫امر این اس ت ک ه در این حلگ ر‪ ،‬زیربرنام ه ب رای چن دین‬


‫نقطه محاسباتی در یک مرحله استفاده میشود‪.‬‬
‫برای نوشت زیربرنامه‪ ،‬کاربر باید این برنامه کلی را ب ه ط ور‬
‫کامل به ویرایشگر خود منتقل ک رده و برنام ه م ورد نظ ر‬
‫خود را در قسمت دوم وارد کند‪.‬‬
‫‪ : Variables to be defined ‬این بخش مربوط به معرفی کمیّتی‬
‫اس ت ک ه بای د توس ط ک اربر تع یین گ ردد و عمال ً ه دف‬
‫زیربرنامه تعیین این کمیّت است‪ .‬بن ابراین ک اربر بای د این‬
‫قسمت را حتما ً با دقت مطالعه کند‪.‬‬
‫‪ : Variables that can be updated ‬در برخی زیربرنامهها تعریف‬
‫برخی کمی ّ ات میتوان د توس ط ک اربر و ی ا آب اکوس انج ام‬
‫گیرد‪ .‬مطالعه این قسمت در صورت نیاز توصیه میشود‪.‬‬
‫‪ : Variables passed in for information ‬هدف از زیربرنامهنویسی‬
‫تعیین یک پارامتر از مدل بر اس اس نت ایج ح ل اس ت‪ .‬این‬
‫قسمت از ‪ help‬به معرفی پارامترهایی میپ ردازد ک ه ب رای‬
‫استفاده در زیربرنامه به کاربر داده ش ده اس ت و امک ان‬
‫تغییر در آنها وجود ندارد (در ص ورت تغی یر این پارامتره ا‪،‬‬
‫برنامه دچ ار مش کالت غ یر قاب ل پیشبی نی خواه د ش د‪.).‬‬
‫معموال ً تعداد این پارامترها زیاد بوده و بنابراین توص یه می‪-‬‬
‫شود که کاربران با توجه به نیاز خود تنها پارامترهای م ورد‬
‫نی از خ ود را مطالع ه کنن د‪ .‬معم وال ً ن ام پارامتره ا گوی ای‬
‫کمیّتی است که در خود ذخیره کردهاند‪.‬‬
‫در برخی زیربرنامهها قسمتهای دیگری نیز وج ود دارد ک ه‬
‫ب ا توج ه ب ه نی از ک اربر قاب ل اس تفادهان د‪ .‬در حلگ ر‬
‫‪ ABAQUS/STANDARD‬زیربرنام ه ب رای ه ر نقط ه محاس باتی‬
‫یکب ار فراخوان ده میش ود ولی در ‪ ABAQUS/EXPLICIT‬ب رای‬
‫تعدادی از نقاط محاس باتی این فراخ وانی انج ام میگ یرد‪ .‬در‬
‫این حالت تعداد نقاط محاسباتی در هر فراخوانی برابر متغ یر‬
‫‪ nblock‬اس ت‪ .‬بن ابراین محاس بات ب رای ه ر ی ک از مجموع ه‬
‫نقاط محاسباتی فراخوانی ش ده بای د انج ام گ یرد‪ .‬ب رای این‬
‫منظور در زیربرنامههای مربوط ب ه این حلگ ر‪ ،‬ی ک حلق ه ب ه‪-‬‬
‫صورت زیر مشاهده میشود‪:‬‬
‫‪do 100 k = 1, nblock‬‬
‫‪100 continue‬‬
‫در مرحله دوم استفاده از زیربرنام ه‪ ،‬بای د ک اربرد زیربرنام ه‬ ‫‪.1‬‬
‫برای مدل تعریف شود‪ .‬به عبارت دیگر باید مشخص شود ک ه‬
‫در تعریف مدل‪ ،‬زیربرنامه چه وظیفهای دارد‪ .‬به عن وان مث ال‬
‫آشنایی و‬ ‫‪324‬‬
‫طرز کار با نرم افزار ‪ABAQUS‬‬

‫اگر زیربرنامهای برای تعریف بارگذاری استفاده میش ود‪ ،‬بای د‬


‫‪ step‬و مک ان بارگ ذاری مش خص ش ود‪ .‬امک ان انج ام این‬
‫تنظیمات برای برخی از زیربرنامهها در محیط گرافیکی وج ود‬
‫دارد و برای برخی دیگر این تنظیمات تنه ا در فای ل ‪ inp‬انج ام‬
‫میگیرد‪ .‬واضح است که در ص ورت انج ام تنظیم ات در فای ل‬
‫‪ ،inp‬هنگام ساختن ‪ job‬باید قسمت ‪ Source‬را فایل ‪ inp‬مربوط ه‬
‫انتخاب کرد (شکل ‪.)1-19‬‬

‫شکل‪ 1-19‬ساختن ‪ job‬از فایل ‪inp‬‬

‫مرحله سوم استفاده از زیربرنامه مرب وط ب ه مع رفی ک ردن‬ ‫‪.2‬‬


‫زیربرنامه به ‪ job‬است‪ .‬برای این منظور در هنگ ام تعری ف ‪job‬‬
‫و در محل نشان داده شده در شکل ‪ ، 2-19‬آدرس فایل داده‬
‫میشود‪.‬‬
‫زیر برنامه نویسی در ‪ABAQUS‬‬
‫‪325‬‬

‫شکل ‪ 2-19‬مشخص کردن آدرس زیر برنامه‬

‫در ادام ه این فص ل ب ه بررس ی چن د زیربرنام ه خ واهیم‬


‫پرداخت‪.‬‬
‫تعریف بار متغیر با استفاده از زیر برنامه ‪VDLOAD‬‬
‫از زی ر برنام ه ‪ VDLOAD‬ب رای تعری ف ب ار متغ یر در ح له ای‬
‫صریح استفاده میشود‪ .‬میتوان با استفاده از این زیربرنامه مقدار‬
‫ب ار اعم الی (‪ )value‬را در ه ر نقط ۀ انتگ رالگ یری ب ر اس اس‬
‫متغیرهای زم ان(‪ stepTime‬ی ا ‪ ،)totalTime‬مک ان ج اری (‪،)curCoords‬‬
‫سرعت (‪ )velocity‬و ‪ ...‬تعیین کرد‪ .‬فرض کنید که میخواهیم نیروی‬
‫بویانسی وارد بر سازههای غوط هور در آب را توس ط زیربرنام ه‬
‫‪ VDLOAD‬تعریف کنیم‪ .‬برای این منظور الزم است که فشار وارد‬
‫بر سازه ب هص ورت ت ابعی از عم ق داده ش ود‪ .‬در ص ورتی ک ه ‪y‬‬
‫معرف عمق باشد‪ ،‬مقدار فشار وارد بر سازه عبارت است از‪:‬‬
‫‪if y>0:‬‬
‫‪P=0‬‬
‫‪else:‬‬
‫‪P=−ρgy‬‬
‫این بخش شامل دو قسمت است‪ .‬در قس مت اول ب ه آم اده‬
‫سازی زی ر برنام ه خ واهیم پ رداخت و در قس مت دوم ب ه نح وه‬
‫آشنایی و‬ ‫‪326‬‬
‫طرز کار با نرم افزار ‪ABAQUS‬‬

‫تعری ف و اس تفاده از زی ر برنام ه ‪ VDLOAD‬در واس ط گ رافیکی‬


‫خواهیم پرداخت‪.‬‬
‫‪VDLOAD‬‬ ‫نوشتن زیر برنامه‬
‫به منظور نوشتن زیربرنامه برای اعمال نیروی فوق ب ه بدن ه‬
‫س ازه‪ ،‬ابت دا مث ال موج ود در ‪ help‬آب اکوس را ‪ copy‬و در محی ط‬
‫فرترن ‪ past‬می کنیم‪ .‬باید توجه کرد که برای استفاده از زیربرنام ه‬
‫تنها کافی است برنامه مورد نظر را ب هج ای ‪user coding to define‬‬
‫‪ value‬جایگزین کرد‪.‬‬

‫همانگون ه ک ه در بخش قب ل ذک ر ش د‪ ،‬پارامتره ا در این‬


‫زیربرنامه به دو دسته تقسیم میشوند که عبارتند از‪:‬‬
‫پارامترهایی که باید تعیین شوند‪.‬‬ ‫‪.1‬‬
‫‪ .2‬پارامترهایی که ب رای اطالع ات در اختی ار ک اربر ق رار می‪-‬‬
‫گیرد‪.‬‬
‫الزم است که در هر زیربرنامه پارامترهای دس تۀ اول بخ وبی‬
‫شناسایی شوند‪ .‬پارامتره ای دس تۀ دوم پارامتره ایی هس تند ک ه‬
‫تنها در صورت نیاز به بررسی آنها میپردازیم‪.‬‬
‫‪ )(Value‬ازپارامترهای نوع ‪ 1‬و تنها متغ یری اس ت ک ه بای د در‬
‫زیربرنامه ‪ VDLOAD‬مشخص شود‪ .‬این متغ یر آرای های اس ت ک ه‬
‫تعداد عضوهای آن برابر تع داد نق اط انتگ رالگ یری اس ت‪ .‬ب رای‬
‫مشخص کردن بارگذاری گفته ش ده تنه ا پارامتره ای عم ق(‪ )y‬و‬
‫تعداد نقاط انتگ رالگ یری م ورد نی از اس ت‪ .‬ب ا مراجع ه ب ه ‪help‬‬
‫زیر برنامه نویسی در ‪ABAQUS‬‬
‫‪327‬‬

‫آباکوس مشاهده می شود که متغیر ‪ nblock‬مشخص کنن ده تع داد‬


‫نقاط انتگرالگیری است و آرایه ‪ )(curCoords‬مکان جاری هر نقطه‬
‫را تعیین میکند‪ )(curCoords .‬یک آرایه دو ستونی اس ت ک ه س تون‬
‫اول نش ان دهن ده ش ماره نقط ه انتگ رالگ یری و س تون دوم‬
‫مشخص کننده محور مختصات است‪ .‬با این توصیف عمال ً بررسی‬
‫س ایر پارامتره ا ض رورت ن دارد و میت وان برنام ه م ورد نظ ر را‬
‫نوشت‪.‬‬

‫استفاده از زیربرنامه ‪ VDLOAD‬در واسط گرافیکی‪:‬‬


‫در ماژول ‪ load‬از طریق مسیر نیروی فشاری بر سطوح مورد‬
‫نظر اعمال میکنیم‪:‬‬
‫‪Load Modul: Load→ Creat→ Category: Mechanical; Types for Selected‬‬
‫‪ → Ok‬انتخاب سطوح →‪Step: Presure → Countinue‬‬
‫که در ب رخی م وارد ممکن اس ت از ‪ Body force‬ن یز اس تفاده‬
‫ش ود‪ .‬س پس در پنج ره ب از ش ده ( ش کل ‪ ) 3-19‬در قس مت‬
‫‪ Distribution‬گزینه ‪ User-defined‬را مشخص میکنیم‪.‬‬
‫آشنایی و‬ ‫‪328‬‬
‫طرز کار با نرم افزار ‪ABAQUS‬‬

‫شکل ‪ 3-19‬تعریف بار گذاری‬

‫در انته ا در هنگ ام تعری ف ‪ ، job‬همانگون ه ک ه قبال ً گفت ه ش د‬


‫(شکل ‪ ،)2-19‬زیربرنامه نوشته شده را مشخص میکنیم‪.‬‬
‫تعریف شرط مرزی با کمک زیر برنامه ‪VDISP‬‬
‫با کمک زیر برنامه ‪ VDISP‬میتوان جابجایی‪ ،‬سرعت و یا شتاب‬
‫گره ها را با توجه به مکان‪ ،‬زمان و ‪ ...‬تعریف کرد‪ .‬برای اس تفاده‬
‫از این زیربرنامه مراحل زیر را باید انجام داد‪:‬‬
‫‪ .1‬نوشتن زیربرنامه و مشخص کردن پ ارامتر م ورد نظ ر ب ا‬
‫توجه به الگوریتم مورد نظر‬
‫‪ .2‬مشخص کردن گ رهه ا و درج ات آزادی ک ه در زیربرنام ه‬
‫‪VDISP‬مشخص شدهاند‪ .‬این مرحله در فایل ‪ inp‬انجام می‪-‬‬
‫شود‪.‬‬
‫‪ .3‬در هنگام ساختن ‪ Job، inp‬اصالح شده در مرحله ‪ 2‬را ب ه‪-‬‬
‫جای ‪ model‬فراخوانی کرده و زیر برنامه ‪ VDISP‬را مط ابق‬
‫آنچه قبال ً گفته شد ( شکل ‪ ) 2-18‬مشخص میکنیم‪.‬‬
‫‪VDISP‬‬ ‫نوشتن زیر برنامه‬
‫فرض کنید که میخواهیم شرایط مرزی ی ک اس توانۀ در ح ال‬
‫دوران با سرعت زاویهای ثابت را مش خص ک نیم‪ .‬بن ابراین طب ق‬
‫روند سایر زیربرنام هه ا‪ ،‬نمون ه مش خص ش ده در ‪ help‬را در ی ک‬
‫فایل کپی میکنیم‪ .‬بنابراین‪:‬‬
‫زیر برنامه نویسی در ‪ABAQUS‬‬
‫‪329‬‬

‫در خط ‪ 14‬این برنامه‪ ،‬بع د متغ یر ‪ amp‬اش تباها ً ‪ nbock‬نوش ته‬


‫شده که صحیح آن ‪ nblock‬اس ت‪ .‬مش ابه رون د گفت ه ش ده ب رای‬
‫نوشتن یک زیربرنامه‪ ،‬ابتدا باید متغیرهایی که باید تعیین ش وند را‬
‫بررس ی ک رد‪ .‬متغ یری ک ه در این زی ربرنام ه بای د ب ه آب اکوس‬
‫برگردانده شود‪ rval ،‬است ک ه ان دیس اول نش ان دهن ده ش ماره‬
‫درجه آزادی و اندیس دوم شماره گره میباشد‪ .‬ب ا توج ه ب ه آنچ ه‬
‫که در ‪ inp‬فایل مشخص خواهد شد‪ rval ،‬میتواند جابجایی‪ ،‬سرعت‬
‫و یا شتاب باش د‪ .‬در این برنام ه ه دف مش خص ک ردن س رعت‬
‫زاویهای نقاط است‪ .‬با توجه به اینکه‪:‬‬
‫^‬
‫‪⃗v =⃗r×⃗w=(x ^i+ y ^j)w k=−xw‬‬ ‫¿¿‪{ ^j+yw { ^i‬‬
‫بنابراین نیازمند بدست آوردن مکان هر نود هستیم ( س رعت‬
‫زاویه ای ثابت است)‪ .‬طبق روند گفته شده‪ ،‬از بین متغیرهایی ک ه‬
‫به عنوان ‪ Variables passed in for information‬مشخص ش دهان د ب ه‬
‫دنب ال متغ یر مش خص کنن ده مک ان ن ود میگ ردیم‪ .‬متغ یر‬
‫)‪ coordNp(nCoord, nblock‬متغیر م ورد نظ ر اس ت ک ه ان دیس اول‬
‫مشخص کننده مختصات ( ‪ 1‬معادل ‪ x ، 2‬مع ادل ‪ y‬و ‪ 3‬مع ادل ‪z‬‬
‫است) و اندیس دوم مشخص کننده شماره گ ره اس ت‪ .‬بن ابراین‬
‫زیربرنامه را بهصورت زیر اصالح میکنیم‪:‬‬
‫آشنایی و‬ ‫‪330‬‬
‫طرز کار با نرم افزار ‪ABAQUS‬‬

‫با مشخص شدن زیربرنامه‪ ،‬حال الزم است که مدل مربوطه‬


‫ساخته شده و در ‪ inp‬فایل اصالحات الزم انجام گیرد‪.‬‬
‫اصالح ‪ inp‬فایل‬
‫برای بهتر دنبال کردن این بخش‪ ،‬یک استوانه را م دل ک رده‬
‫به گونهای که محور آن بر محور ‪ z‬قرار گیرد‪ .‬بع د از مش ری زی‪،‬‬
‫با توجه به اینکه تعریف شرط مرزی م ورد نظ ر ب ر تع دادی ن ود‬
‫انجام خواهد گرفت‪ ،‬بنابراین الزم است که برای س ادگی ی ک ‪set‬‬
‫از نودهای ‪ Assembly‬ساخته ش ود‪ .‬ب رای این منظ ور رون د زی ر را‬
‫دنبال کنید‪:‬‬
‫در ماژول ‪ mesh‬گزینه ‪ object‬را ‪ Assembly‬قرار دهید و از طریق‬
‫مسیر زیر مجموعه گرههایی را که باید بر روی آنها شرط م رزی‬
‫اعمال کرد مشخص کنید‪:‬‬

‫‪Modul: Mesh‬‬ ‫→‬ ‫‪Tools‬‬ ‫→‬ ‫‪set‬‬ ‫→‬ ‫‪Manager‬‬ ‫→‬ ‫‪create‬‬
‫زیر برنامه نویسی در ‪ABAQUS‬‬
‫‪331‬‬

‫شکل ‪ 4-19‬تعریف ‪set‬‬

‫سپس مطابق شکل زیر گزینه ‪ Node‬را انتخاب کرده و س پس‬


‫تمام گرهها را انتخاب کنید‪.‬‬

‫شکل ‪ 5-19‬انتخاب گرهها‬

‫حال ‪ inp‬فایل مربوطه را ایجاد کنید و بعد از دستور‪:‬‬


‫‪*End Assembly‬‬
‫**‬
‫عبارت زیر را اضافه کنید‪:‬‬
‫‪*BOUNDARY, user, Type = VELOCITY‬‬
‫آشنایی و‬ ‫‪332‬‬
‫طرز کار با نرم افزار ‪ABAQUS‬‬

‫‪Set-1, 1, 3‬‬
‫در خ ط اول این دس تور‪ ،‬بع د از ‪ ، TYPE‬میت وان کلم ات‬
‫‪ VELOCITY ، DISPLACEMENT‬و یا ‪ ACCELERATION‬را بکار برد که‬
‫معرفی کننده س رعت‪ ،‬جابج ایی و ش تاب اس ت‪ .‬ب ه این ت رتیب‬
‫برای ‪ Abaqus‬مشخص خواهد شد که چه پارامتری را از زیر برنامه‬
‫‪ VDISP‬فراخوانی کند‪ .‬در خط دوم ابتدا شماره گره (‪)Node number‬‬
‫و یا برچسبی (‪ )node set label‬که به یک دسته گره زده شده است‬
‫را مشخص میکنیم‪ .‬در این مثال‪ Set-1،‬نام برچسبی اس ت ک ه ب ه‬
‫تمام گرههای مدل زدهایم‪ .‬بعد از ‪ node set label‬و ی ا ‪Node number‬‬
‫الزم است که اولین درجه آزادی و آخرین درجه آزادی را مشخص‬
‫کنیم‪ .‬در صورتی که مسئله ‪ 2‬بعدی باش د‪ ،‬تعری ف غل ط درج ات‬
‫آزادی میتوان د ب دون هیچ گون ه هش داری از ط رف ن رم اف زار‪،‬‬
‫مشکالت پیش بینی نشدهای را ایجاد کن د‪ .‬در نه ایت ن یز میت وان‬
‫مقدار درج ه آزادی را تعری ف ک رد ک ه در هنگ ام فراخ وانی زی ر‬
‫برنامه ‪VDISP‬توسط ‪ ،Abaqus‬اصالح خواهد شد‪.‬‬
‫در انتها‪ ،‬مجددا ً از طریق مسیر ‪:‬‬
‫‪Modul: Job‬‬ ‫→‬ ‫‪Job‬‬ ‫→‬ ‫‪create‬‬

‫شکل ‪ 6-19‬ساخت ‪ job‬با استفاده از فایل ‪inp‬‬

‫گزین ه ‪ Input file‬را انتخ اب ک رده (ش کل ‪ )6-19‬و ‪ inp‬فای ل‬


‫اصالح شده را انتخاب کنید‪ .‬سپس در قس مت ‪ General‬در پنج ره‬
‫‪ ،user subroutine file‬زیر برنامه نوشته شده را معرفی کنید (شکل‬
‫‪.)2-19‬‬
‫زیر برنامه نویسی در ‪ABAQUS‬‬
‫‪333‬‬

‫اعم‪88‬ال ش‪88‬ار ح‪88‬رارتی متغ‪88‬یر ب‪8‬ا اس‪88‬تفاده از زیربرنام‪88‬ه‬


‫‪DFLUX‬‬
‫زیربرنامه ‪ dflux‬ب ه منظ ور اعم ال ش ار ح رارتی وابس ته ب ه‬
‫مک ان و زم ان اس تفاده میگ ردد‪ .‬ب ه عن وان مث ال فرآین دهای‬
‫گرم ایش خطی و جوش کاری (ب ا کمی س اده س ازی) را میت وان‬
‫توسط این زیربرنامه شبیهسازی کرد‪ .‬در فرآیند گرم ایش خطی‪،‬‬
‫با اعمال شار ح رارتی ب ه س طح ی ک ورق‪ ،‬گرادی ان ح رارتی در‬
‫ضخامت آن ایجاد میکنند‪ .‬این گرادیان حرارتی باعث تغییر ش کل‬
‫دائمی ورق میگردد‪ .‬برای شبیه سازی این فرآین د الزم اس ت ک ه‬
‫یک شار حرارتی وابسته به مکان و زمان به ورق اعمال شود‪ .‬در‬
‫این مثال‪ ،‬میدان شار حرارتی بهصورت زیر مفروض است‪:‬‬
‫‪2eP‬‬ ‫‪2 h2‬‬
‫‪q= 2 exp − 2‬‬
‫‪πa‬‬ ‫‪a‬‬ ‫(‬ ‫)‬ ‫‪,‬‬ ‫‪h2 =( x−x 0 ( t ))2 +( y− y 0 ( t ))2‬‬

‫‪1‬‬
‫که در آن ‪ y 0x, 0‬مکان مش عل‪ a ،‬ش عاع پرت و ل یزر‪ e ،‬ب ازده‬
‫انتقال حرارت و ‪ P‬قدرت پرتو لیزر است‪ .‬در صورتی ک ه مش عل‬
‫با سرعت ‪ V‬بر روی محور ‪ y‬حرکت کند‪ ،‬خواهیم داشت‪:‬‬
‫) ‪x 0 (t )=x 0 (0 ) , y 0 (t )=V ×t− y 0 (0‬‬
‫‪2‬‬
‫در این بخش به بررسی اعمال شار حرارتی بر روی یک ورق‬
‫توسط زیربرنامه ‪ DFLUX‬پرداخت ه خواه د ش د‪ .‬ش بیهس ازی این‬
‫فرآیند شامل دو قسمت اس ت‪ .‬در قس مت اول ب ا نح وه آم اده‪-‬‬
‫سازی زیربرنامه آشنا خواهید شد و در قسمت دوم به مدلس ازی‬
‫ورق و اعمال شار حرارتی در واسط گرافیکی خواهیم پرداخت‪.‬‬
‫‪DFLUX‬‬ ‫زیربرنامه‬
‫نمون ۀ زیربرنام ه را از قس مت ‪ User subroutine interface‬ک پی‬
‫کرده و در ویرایشگر فرترن قرار دهید‪ .‬در خط اول قبل از کلم ۀ‬
‫‪ ، Subroutine‬شش ب ار ‪ space‬بزنی د ت ا اولین ح رف در مک ان هفتم‬
‫‪SDROOC‬‬
‫را‬ ‫قرار گیرد‪ .‬سپس در خط شش م کام ای بع د از ) ‪(3‬‬
‫پاک کنید‪ .‬برنامه زیر بدست خواهد آمد‪:‬‬
‫آشنایی و‬ ‫‪334‬‬
‫طرز کار با نرم افزار ‪ABAQUS‬‬

‫مانند سایر زیربرنامهها ابتدا در قسمت (‪)Variables to be defined‬‬


‫متغیره ایی را ک ه بای د تع یین ش وند بررس ی میک نیم‪ .‬در این‬
‫زیربرنامه‪ ،‬متغیر )‪ FLUX(1‬میزان شار حرارتی ‪ q‬است و )‪FLUX(2‬‬
‫‪qd‬‬
‫‪ .)θd‬در مثال فوق‪،‬‬ ‫تغییرات شار حرارتی نسبت به دما است (‬
‫در صورتی پارامترهای معادله ‪ 1‬وابسته به دما باشند‪ ،‬الزم اس ت‬
‫مقدار )‪ FLUX(2‬مشخص شود‪ .‬در غیر این صورت این مقدار برابر‬
‫با صفر خواه د ب ود‪ .‬بن ابراین در فرم ول (‪ )1‬ب هج ای ‪FLUX(1) q،‬‬
‫قرار میگیرد و با فرض مستقل بودن آن نسبت ب ه دم ا‪FLUX(2) ،‬‬
‫برابر صفر خواهد شد‪.‬‬
‫در قسمت ‪ ، Variables passed in for information‬ن ام متغیره ای‬
‫مورد نیاز فرمول ‪ 1‬و ‪ 2‬را پیدا کرده و جایگزین میک نیم‪ .‬مق ادیر‬
‫زمان و مکان مجهوالت این روابط هستند که به ترتیب ب ا ‪TIME‬و‬
‫‪ COORDS‬نشان داده شدهاند‪ .‬بنابراین برنام ه زی ر آم اده خواه د‬
‫شد‪:‬‬
‫‪SUBROUTINE DFLUX(FLUX,SOL,KSTEP,KINC,TIME,NOEL,NPT,COORDS,‬‬
‫)‪1 JLTYP,TEMP,PRESS,SNAME‬‬
‫'‪INCLUDE 'ABA_PARAM.INC‬‬
‫)‪DIMENSION FLUX(2), TIME(2), COORDS(3‬‬
‫‪CHARACTER*80 SNAME‬‬
‫‪w=1000.d0‬‬
‫‪v=83.33333d0‬‬
‫‪a=2.d0‬‬
‫‪eta=0.6d0‬‬
‫‪x=0.d0‬‬
‫)‪y=v*TIME(1‬‬
‫‪h=(COORDS(1)-x)**2+(COORDS(2)-y)**2‬‬
‫زیر برنامه نویسی در ‪ABAQUS‬‬
‫‪335‬‬

‫)‪FLUX(1)=(2*eta*w*exp(-2*h/a**2))/(3.14d0*a**2‬‬
‫‪FLUX(2)=0.d0‬‬
‫‪RETURN‬‬
‫‪END‬‬

‫مدلسازی ورق و اعمال شار معرفی شده در زیر‪ 8‬برنامه‬


‫ابتدا یک ورق ب ا ابع اد ‪ 1.5*30*30‬را ب هص ورت س ه بع دی‬
‫مدلسازی کرده سپس از طریق مسیر‬
‫‪Madule:Part → Tools → Datum… → Type: Plane; Method: Offset‬‬
‫انتخاب گزینه ‪from principale plane → YZ Plane‬‬

‫ص فحاتی ب ا فاص له ‪0‬و ‪2‬و ‪2.5‬و ‪ 3.5‬از ص فحه ‪ yz‬ایج اد‬


‫کنی د‪ .‬الزم ب ه ذک ر اس ت ک ه بای د مک ان ورق م دلس ازی ش ده‬
‫مطابق شکل ‪ 7-19‬تنظیم شود‪ .‬با کم ک ص فحات ایج اد ش ده‪،‬‬
‫جسم مورد نظر را مط ابق ش کل ‪ 7-19‬و از طری ق مس یر زی ر‬
‫قسمتبندی کنید‪.‬‬
‫‪Madule:Part‬‬ ‫→‬ ‫‪Tools‬‬ ‫→‬ ‫…‪partition‬‬ ‫→‬ ‫‪Type: cell; Method: use datum‬‬
‫‪plane‬‬

‫شکل ‪ 7-19‬تقسیم بندی قطعه‬

‫در ماژول ‪ ،Mesh‬از طریق ‪ Mesh controls‬ب رای قس مت می انی‬


‫قطعه (شماره ‪ 1‬در شکل ‪ )7-19‬گزینه ‪ Structured‬را فعال کنی د‪.‬‬
‫از طریق مسیر‬
‫آشنایی و‬ ‫‪336‬‬
‫طرز کار با نرم افزار ‪ABAQUS‬‬

‫‪Module: Mesh‬‬ ‫→‬ ‫‪Seed‬‬ ‫→‬ ‫‪Edge by size‬‬


‫ب رای این دو بخش ان دازه مش ‪ 0.5‬را انتخ اب کنی د‪ .‬ب رای‬
‫قسمتی که در شکل ‪ 7-19‬با شماره ‪ 2‬مش خص ش ده اس ت‪ ،‬از‬
‫طریق ‪ Mesh Controls‬تکنیک شبکهبن دی را مط ابق ش کل ‪، 8-19‬‬
‫‪ Sweep‬انتخاب کنید‪ .‬با کمک گزینه ‪ Redifine Sweep Path‬که در شکل‬
‫‪ 8-19‬نشان داده شده است و مطابق شکل ‪ ،9-19‬جهت ش بکه‬
‫بندی را ب رای قس مت ‪ 2‬در راس تای ع رض (جهت ‪ )y‬ورق ق رار‬
‫دهی د‪ .‬ب ه این ت رتیب آب اکوس ابت دا مش دو بع دی ب ر س طح ‪xz‬‬
‫قسمت ‪ 2‬زده و سپس در جهت عرضی آن را امتداد میدهد‪.‬‬
‫در انتها اندازه مش را برای اضالع نشان داده شده در ش کل‬
‫‪ 1.5 ،10-19‬و ‪ 0.5‬انتخاب کنید‪.‬‬

‫شکل ‪ 8-19‬تعیین روش شبکه بندی‬


‫زیر برنامه نویسی در ‪ABAQUS‬‬
‫‪337‬‬

‫شکل ‪ 9-19‬جهت جاروب شبکه‬

‫شکل ‪ 10-19‬ابعاد شبکه‬

‫برای قسمت ‪ 3‬نیز مطابق شکل ‪ 11-19‬جهت شبکه بندی را‬


‫در راستای ضخامت ورق انتخاب کنی د و تنظیم ات ش کل ‪12-19‬‬
‫را ب رای آن انج ام دهی د‪ .‬ب رای قس مت ‪ 4‬ن یز مش ‪Structured‬‬
‫انتخ اب ک رده و ان دازه مش را ‪ 1.5‬در نظ ر بگیری د‪ .‬قطع ه را‬
‫شبکهبندی کنید تا شبکه شکل ‪ 13-19‬بدست آید‪.‬‬
‫آشنایی و‬ ‫‪338‬‬
‫طرز کار با نرم افزار ‪ABAQUS‬‬

‫شکل ‪ 11-19‬جهت جاروب شبکه‬

‫شکل ‪ 12-19‬تعین روش شبکه بندی‬


‫زیر برنامه نویسی در ‪ABAQUS‬‬
‫‪339‬‬

‫شکل ‪ 13-19‬قطعه شبکه بندی شده‬

‫‪ Mesh‬نوع المان را‬ ‫در انتها از طریق مسیر ‪Element Typpe‬‬


‫→‬
‫‪ Heat Transfer‬انتخاب کنید‪.‬‬
‫در ماژول ‪ property‬و از طریق مسیرهای داده شده خواص زیر‬
‫را برای ورق مشخص میک نیم‪ .‬الزم ب ه ذک ر اس ت ک ه ابع اد ب ر‬
‫اساس میلیمتر‪ ،‬ثانیه و نیوتن انتخاب شده است‪.‬‬
‫‪Modul: Property; Material‬‬ ‫→‬ ‫‪Create‬‬ ‫→‬ ‫‪Name: Steel; Thermal‬‬ ‫→‬
‫‪Conductivity‬‬

‫شکل ‪ 14-19‬خواص رسانایی‬

‫‪Mechanical‬‬ ‫→‬ ‫‪Elasticity‬‬ ‫→‬ ‫‪Elastic‬‬


‫آشنایی و‬ 340
ABAQUS ‫طرز کار با نرم افزار‬

‫ مدول یانگ‬15-19 ‫شکل‬


Mechanical → Expansion

‫ ضریب انبساط‬16-19 ‫شکل‬

Mechanical → Plasticity → Plastic


‫زیر برنامه نویسی در ‪ABAQUS‬‬
‫‪341‬‬

‫شکل ‪ 17-19‬خواص پالستیسیته‬


‫‪Thermal‬‬ ‫→‬ ‫‪Specific Heat‬‬

‫شکل ‪ 18-19‬مقادیر گرمای ویژه‬

‫‪General‬‬ ‫→‬ ‫‪Density : 7.8e-9‬‬


‫در پایان مشخص کردن خواص‪ ،‬یک ‪ section‬س اخته و ب ه هم ه‬
‫قس مته ا ‪ Assign‬کنی د‪ .‬قطع ه را در م اژول ‪Assembly‬وارد کنی د‪.‬‬
‫سپس درماژول ‪ step‬از مسیر زیر ‪:‬‬
‫‪Step → Creat → Name: Step-1; Heat Transfer‬‬
‫تحلیل‪ Heat Transfer‬را انتخاب کرده و در قسمت ‪ Basic‬مطابق‬
‫شکل ‪ 19-19‬گزینه ‪ Transient‬را انتخ اب کنی د‪ .‬زم ان ح ل را ن یز‬
‫براب ر ‪ 0.36‬ق رار دهی د‪ .‬در قس مت ‪ Incrementation‬ن یز دادهه ای‬
‫شکل ‪ 20-19‬را وارد کنید‪.‬‬
‫آشنایی و‬ ‫‪342‬‬
‫طرز کار با نرم افزار ‪ABAQUS‬‬

‫شکل ‪ 19-19‬مدت زمان حل‬

‫شکل ‪ 20-19‬تنظیمات حل‬

‫در م اژول ‪ Load‬و از طری ق مس یر زی ر و ش کل ‪21-19‬‬


‫بارگذاری حرارتی را برای سطح فوقانی قسمت ‪1‬تعریف کنید‪:‬‬
‫‪Load‬‬ ‫→‬ ‫‪Creat‬‬ ‫→‬ ‫‪Surface Heat Flux‬‬ ‫→‬ ‫‪Continue‬‬ ‫→‬

‫انتخاب سطح فوقانی قسمت وسط (شماره ‪)1‬‬ ‫→‬ ‫‪Done‬‬ ‫→‬
‫‪Distribution: User-Defined; Magnitude: 1‬‬
‫زیر برنامه نویسی در ‪ABAQUS‬‬
‫‪343‬‬

‫شکل ‪ 21-19‬اعمال بار حرارتی از طریق زیر برنامه‬

‫در ماژول ‪ mesh‬نیز از طریق مسیر‬


‫‪Mesh‬‬ ‫→‬ ‫‪element type‬‬
‫کل جسم را انتخاب کرده و در قسمت ‪ ،Family‬نوع الم ان را‬
‫‪ Heat transfer‬انتخاب کنید‪.‬‬
‫در انته ا در هنگ ام تعری ف ‪ ، job‬همانگون ه ک ه قبال ً گفت ه ش د‬
‫(شکل ‪ ،)2-19‬زیربرنامه نوشته شده را مشخص میکنیم‪.‬‬
‫برای انجام تحلیل مکانیکی ابتدا از مسیر‬
‫‪Model‬‬ ‫→‬ ‫‪Copy Model → Model-1‬‬
‫یک کپی از مدل قبلی تهیه کرده و ن ام آن را ‪ Model-2‬انتخ اب‬
‫کنید‪ .‬سپس در ماژول ‪ Step‬نوع تحلیل را با کمک گزینه ‪ ،Replace‬از‬
‫‪ Heat Transfer‬به ‪ Static, General‬تغییر دهید‪ .‬مدت زمان حل را مشابه‬
‫قبل ‪ 0.36‬قرار داده و در سربرگ ‪ ، Incrementation‬ماکزیمم تع داد‬
‫‪ Increments‬را ‪ 1000‬ق رار دهی د‪ .‬در م اژول ‪ Load‬ن یز ص فحه ‪yz‬‬
‫(سطح سمت چپ قسمت ‪ )1‬را در راس تای ‪ x‬ببندی د‪ .‬س پس دو‬
‫نقطه از ورق را ثابت کرده تا ح رکت ص لب قطع ه ک امال ً گرفت ه‬
‫شود‪ .‬از طریق مسیر زیر‪:‬‬
‫‪Module: Load → Predefined field → create‬‬ ‫→‬ ‫;‪Step: Step-1‬‬
‫‪Category: Other; Types for selected step: temperature‬‬ ‫→‬ ‫… ‪continue‬‬
‫کل جسم را انتخاب و سپس تنظیمات زیر را انجام دهید‪:‬‬
‫‪Distribution:‬‬ ‫انتخاب گزینه ‪From results or output database file‬‬
‫‪File name:‬‬ ‫تحلیل قبل انتخاب فایل نتایج )‪(*.Odb‬‬
‫‪Begin step:‬‬ ‫‪1‬‬
‫آشنایی و‬ ‫‪344‬‬
‫طرز کار با نرم افزار ‪ABAQUS‬‬

‫‪Begin increment:‬‬ ‫‪1‬‬


‫‪.‬‬
‫‪.‬‬
‫‪.‬‬
‫در پایان در ماژول ‪ mesh‬از طریق مسیر‬
‫‪Mesh‬‬ ‫→‬ ‫‪element type‬‬
‫کل جسم را انتخاب کرده و در قسمت ‪ ،Family‬نوع المان را‬
‫‪ 3D stress‬انتخاب کنید‪ .‬ب ا س اختن ی ک ‪ job‬جدی د میت وان قس مت‬
‫مکانیکی مسئله را تحلیل نمود‪.‬‬
‫زیر برنامه نویسی در ‪ABAQUS‬‬
‫‪345‬‬

‫ساخت المان با استفاده از زیربرنامه ‪UEL‬‬


‫مقدمه‬
‫زیربرنامه ‪ ،UEL‬یکی از جامعترین زیربرنامهه ای آب اکوس می‪-‬‬
‫باشد که امکان ایجاد المان جدید را ف راهم میس ازد‪ .‬اس تفاده از‬
‫این زیربرنام ه نس بت ب ه س ایر زیربرنام هه ا س ختت ر و نیازمن د‬
‫اطالعات جانبی بیشتری است‪ .‬با توج ه ب ه اینک ه زیربرنام ه ‪UEL‬‬
‫در ‪ ABAQUS/Standard‬قابل اس تفاده اس ت‪ ،‬در این بخش ابت دا ب ه‬
‫نح وه ح ل مع ادالت غ یرخطی در ‪ ABAQUS/Standard‬پرداخت ه می‪-‬‬
‫شود‪ .‬سپس به بررسی مراح ل آم ادهس ازی زیربرنام ه خ واهیم‬
‫پ رداخت‪ .‬قس مت آم ادهس ازی زی ر برنام ه ‪ ، UEL‬ب ه دو بخش‬
‫تقسیم میگردد‪ .‬در قسمت اول به نح وه آم اده س ازی ‪ inp‬فای ل‬
‫برای استفاده از زیر برنام ه ‪ UEL‬خ واهیم پ رداخت و در قس مت‬
‫دوم با ذکر یک مثال‪ ،‬زیر برنامه ‪ UEL‬مورد بررس ی ق رار خواه د‬
‫گرفت ‪.‬‬
‫‪ABAQUS/Standard‬‬ ‫روند کلی حل در‬
‫روند کلی ح ل در ‪ ، ABAQUS/Standard‬ب ر اس اس روش نی وتن‬
‫رافسون اس ت‪ .‬ف رض کنی د میخ واهیم ‪ U‬را بگون های بی ابیم که‬
‫‪ . F (U =) 0‬در روش نیوتن رافسون‪ ،‬ابتدا برای مقدار ‪ ، U‬مقدار‬
‫فرض ی ‪ U 0‬در نظ ر گرفت ه میش ود‪ .‬بن ابراین ممکن اس ت‬
‫‪ . F (U 0≠) 0‬بر اساس بسط تیلور میتوان عبارت زیر را نوشت‪:‬‬
‫‪2‬‬
‫) ‪∂F (U‬‬ ‫) ‪1 ∂ F (U‬‬ ‫‪2‬‬
‫‪F (U =) F (U 0 )+‬‬ ‫‪|U=UUΔ +‬‬ ‫⋯‪| UΔ +‬‬
‫‪2 U=U 0‬‬
‫‪-1‬‬
‫‪∂U‬‬ ‫‪0‬‬ ‫‪2 ∂U‬‬
‫با صرفنظر کردن از عبارات با درجه باالتر از یک و با توجه به‬
‫اینکه ‪ ، F (U =) 0‬عبارت زیر حاصل میشود‪:‬‬
‫آشنایی و‬ ‫‪346‬‬
‫طرز کار با نرم افزار ‪ABAQUS‬‬

‫) ‪∂ F(U‬‬
‫‪F(U 0 )+‬‬ ‫‪|U=U ΔU=0‬‬
‫‪∂U‬‬ ‫‪0‬‬
‫‪-2‬‬
‫) ‪∂ F(U‬‬ ‫‪−1‬‬
‫( ‪or ΔU=−‬‬ ‫) ‪|U=U ) F (U 0‬‬
‫‪∂U‬‬ ‫‪0‬‬

‫‪ U‬برابر است با‪:‬‬ ‫بنابراین مقدار‬


‫) ‪∂ F(U‬‬
‫( ‪U=U 0−‬‬ ‫) ‪|U=U )−1 F(U 0‬‬ ‫‪-3‬‬
‫‪∂U‬‬ ‫‪0‬‬

‫‪ ، U =U‬ادامه‬
‫‪0‬‬ ‫روند باال تا رسیدن به نتیجه مطلوب‪ ،‬با فرض‬
‫خواهد داشت‪ .‬به طور خالصه میتون روند گفته شده را بهصورت‬
‫زیر نوشت‪:‬‬
‫‪1− U =U 0‬‬
‫) ‪∂ F (U‬‬ ‫‪−1‬‬
‫( ‪2− ΔU =−‬‬ ‫) ‪|U=U ) F (U 0‬‬
‫‪∂U‬‬ ‫‪0‬‬

‫‪3− U=U 0 + ΔU‬‬


‫‪4− if norm(F (U ))<error‬‬
‫‪break‬‬
‫‪else‬‬
‫‪U 0 =U‬‬
‫‪goto 1‬‬
‫مهمترین پارامتره ایی ک ه در ‪ ABAQUS/Standard‬بای د مش خص‬
‫) (‪∂F U‬‬
‫‪−‬‬ ‫|‬
‫است‪ .‬بر اساس اینکه تابع‬ ‫گردند‪ ،‬مقادیر ) ‪ F (U 0‬و ‪∂U U=U 0‬‬
‫) ‪ F (U‬چگونه تعیین گردد‪ ،‬روشه ای مختلفی ب رای ح ل خ واهیم‬
‫داشت‪ .‬الزم به یادآوری است که روش ح ل در واس ط گ رافیکی‬
‫‪ SUQABA‬م اژول ‪ Step‬تع یین میگ ردد‪ .‬س پس روش ح ل و‬
‫و در‬
‫‪¿pni.‬‬ ‫پارامترهای آن به هم راه س ایر مشخص ات م دل درفای ل‬
‫ذخیره شده و در نهایت حلگر روش حل را توسط آرایهای ب ا ن ام‬
‫زیر برنامه نویسی در ‪ABAQUS‬‬
‫‪347‬‬

‫‪ LFLAGS‬در اختیار زیر برنامه ‪ UEL‬قرار میگردد‪ .‬اولین قدم ب رای‬


‫) (‪∂F U‬‬
‫‪−‬‬ ‫|‬
‫ب ر‬ ‫نوشتن زیربرنامه ‪، UEL‬تعیین مقادیر ) ‪ F (U 0‬و ‪∂U U=U 0‬‬
‫اساس روش حل است‪.‬‬
‫) (‪∂F U‬‬
‫‪−‬‬ ‫|‬
‫در حل استاتیکی ‪:‬‬ ‫مثال‪ :‬مقادیر ) ‪ F (U 0‬و ‪∂U U=U 0‬‬
‫= ‪ −UK +‬م ورد نظ ر‬ ‫‪f 0‬‬ ‫در یک حل اس تاتیکی‪ ،‬ح ال معادل ه‬
‫است که در آن ‪ K‬ماتریس س ختی‪ U ،‬ب ردار جابج ایی و ‪f‬‬
‫ب ردار نیروه ای خ ارجی اس ت‪ .‬بن ابراین مق ادیر ) ‪ F (U 0‬و‬
‫) (‪∂F U‬‬
‫‪−‬‬ ‫|‬
‫بهصورت زیر تعیین میگردند‪:‬‬ ‫‪∂U U=U 0‬‬

‫‪F=−KU|t+ Δt +f |t +Δt‬‬ ‫‪-4‬‬


‫‪∂F‬‬ ‫‪-5‬‬
‫‪−‬‬ ‫‪=K‬‬
‫‪∂U‬‬

‫) (‪∂F U‬‬
‫‪−‬‬ ‫|‬
‫حل دینامیکی غیر صریح(ضمنی)‪:‬‬ ‫مثال‪ :‬مقادیر ) ‪ F (U 0‬و ‪∂U U=U 0‬‬
‫در حالت کلی‪ ،‬معادله تعادل بهصورت زیر است‪:‬‬
‫‪nm m n‬‬ ‫‪n‬‬
‫‪M Ü +I −P =0 or M Ü +I −P=0‬‬ ‫‪-6‬‬
‫نش ان دهن ده نیروه ای داخلی اس ت و براب ر‬ ‫‪I‬‬ ‫ک ه در آن‬
‫است با‪:‬‬
‫‪I=∫ BT σ d Ω‬‬ ‫‪-7‬‬
‫‪Ω0‬‬

‫‪ P‬در فرمول ‪ ،6‬مجموع نیروهای خ ارجی وارد ب ر س طح و‬


‫نیروهای حجمی است و برابر است با‪:‬‬
‫آشنایی و‬ ‫‪348‬‬
‫طرز کار با نرم افزار ‪ABAQUS‬‬

‫‪P=∫ N f b d Ω+∫ N t dΓ‬‬ ‫‪-8‬‬


‫‪Ω0‬‬ ‫‪Γ‬‬

‫این معادله معموال ً به فرم ساده زیر نوشته میشود‪:‬‬


‫‪M Ü +C U̇ +KU−P=0‬‬ ‫‪-9‬‬
‫گسس ته س ازی در‬ ‫‪rolyaT,sehguH,rebliH‬‬
‫‪ ،‬با توجه به‬ ‫در روش‬
‫حوزه زمان‪ ،‬عبارت ‪ 6‬بهصورت زیر نوشته میشود‪:‬‬
‫‪M Ü|t+Δt +(1+α )(I −P)|t+ Δt −α( I−P)|t +Lt+ Δt =0‬‬ ‫‪-10‬‬
‫که در آن ‪ L‬قیودی است که ب ا توج ه ب ه روش الگران ژ ب ه‬
‫مسئله وارد شده است‪ .‬این روش با استفاده از رابط ه نیوم ارک‬
‫برای محاسبه جابجایی و سرعت‪ ،‬بهصورت زیر تکمیل میگردد‪:‬‬
‫‪1‬‬ ‫‪-11‬‬
‫) ‪U|t + Δt =U|t + Δt U̇|t + Δt 2 (( −β ) Ü|t +β Ü|t +Δt‬‬
‫‪2‬‬

‫) ‪U̇|t+ Δt =U̇|t +Δt((1 −γ )Ü|t +γ Ü|t+ Δt‬‬ ‫‪-12‬‬


‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪-13‬‬
‫‪− ≤α ≤0 , β= ( 1−α )2 , γ = −α‬‬
‫‪3‬‬ ‫‪4‬‬ ‫‪2‬‬
‫‪F (U ) ، G= P− I‬‬ ‫بنابراین با توجه به معادل ه ‪ 10‬و ب ا ف رض‬
‫بهصورت زیر تعریف میشود‪:‬‬
‫‪F=−M Ü|t+Δt +(1+α )G|t +Δt −G|t‬‬ ‫‪-14‬‬

‫ح ذف ش ده اس ت زی را در ‪UEL‬‬
‫‪L| t+tΔ‬‬
‫در رابطه ‪ 14‬عب ارت‬
‫نیازی به ارضاء شرایط مرزی اساسی نیست‪.‬‬
‫) (‪∂F U‬‬
‫‪−‬‬ ‫|‬
‫باید ب ه این نکت ه توج ه ش ود ک ه‬ ‫برای محاسبه‬ ‫‪∂U t+tΔ‬‬

‫‪ U | t+tΔ‬هستند‪ .‬بنابراین‪:‬‬
‫| ¨‪U‬‬
‫‪ G | t+tΔ‬و ‪ t+tΔ‬توابعی از‬
‫‪∂F‬‬ ‫̈‪d U‬‬ ‫̇‪∂ G d U‬‬ ‫‪∂G‬‬ ‫‪-15‬‬
‫‪− =M −(1+α) |t+ Δt −(1+α ) |t+ Δt‬‬
‫‪∂U‬‬ ‫‪dU‬‬ ‫̇‪∂ U‬‬ ‫‪dU‬‬ ‫‪∂U‬‬
‫زیر برنامه نویسی در ‪ABAQUS‬‬
‫‪349‬‬

‫¨ ‪dU‬‬
‫‪Ud‬برابر است با‪:‬‬ ‫با توجه به معادله ‪11‬‬
‫̈‪d U‬‬ ‫‪1‬‬ ‫‪-16‬‬
‫‪= 2‬‬
‫‪dU βΔt‬‬
‫˙ ‪dU‬‬
‫‪Ud‬‬ ‫به همین ترتیب ب ا توج ه ب ه مع ادالت ‪ 11‬و ‪ 12‬مق دار‬
‫برابر است با‪:‬‬
‫‪d U̇ γ‬‬ ‫‪-17‬‬
‫=‬
‫‪dU βΔt‬‬
‫‪G‬‬ ‫در صورتی که از ف رم معادل ه ‪ 9‬اس تفاده ش ود‪ ،‬مق دار‬
‫برابر است با ‪:‬‬
‫‪G=P−C U̇−KU‬‬ ‫‪-18‬‬
‫بنابراین ‪:‬‬
‫‪∂G‬‬
‫‪−‬‬ ‫‪=K‬‬
‫‪∂U‬‬
‫‪∂G‬‬
‫‪-19‬‬
‫‪−‬‬ ‫‪=C‬‬
‫̇‪∂ U‬‬
‫‪ C‬م اتریس اس تهالک سیس تم‬ ‫م اتریس س ختی و‬
‫که‬ ‫‪K‬‬

‫است‪.‬‬
‫بطور خالصه در روش دینامی ک غ یر ص ریح (ض منی) مق ادیر‬
‫) (‪∂F U‬‬
‫‪−‬‬ ‫|‬
‫برابر است با‪:‬‬ ‫) ‪ F (U 0‬و ‪∂U U=U 0‬‬
‫‪F=−M Ü|t+Δt +(1+α )G|t +Δt −G|t‬‬
‫‪∂F‬‬ ‫‪1‬‬ ‫‪∂G‬‬ ‫‪γ‬‬ ‫‪∂G‬‬ ‫‪-20‬‬
‫‪−‬‬ ‫‪=M 2 −(1+α ) |t +Δt‬‬ ‫‪−(1+α ) |t+ Δt‬‬
‫‪∂U‬‬ ‫‪βΔt‬‬ ‫̇‪∂ U‬‬ ‫‪βΔt‬‬ ‫‪∂U‬‬
‫آشنایی و‬ ‫‪350‬‬
‫طرز کار با نرم افزار ‪ABAQUS‬‬

‫وظیفه زیربرنامه ‪ ، UEL‬تعیین سهم هر المان از ماتریسه ای‬


‫) (‪∂F U‬‬
‫‪−‬‬ ‫|‬
‫اس ت‪ .‬ب ه عب ارت دیگ ر برنام ه‬ ‫) ‪ F (U 0‬و ‪∂U U=U 0‬‬
‫‪ ABAQUS/Standard‬ب رای ه ر الم ان زیربرنام ه ‪ UEL‬را فراخ وانی‬
‫) (‪∂F U‬‬
‫‪−‬‬ ‫|‬
‫کرده و سهم آن المان را از ماتریسه ای ) ‪ F (U 0‬و ‪∂U U=U 0‬‬
‫‪e‬‬
‫) ‪∂F (U‬‬
‫‪−‬‬ ‫|‬ ‫‪e‬‬
‫) دری افت میکن د‪ .‬ب رای این منظ ور‬ ‫( ) ‪ F U( 0‬و ‪∂U U=U 0‬‬
‫برنامه ‪ ، ABAQUS/Standard‬تم امی کمیته ای م ورد نی از زیربرنام ه‬
‫‪ t+tΔ‬در اختیار این زیربرنامه ق رار میده د‪ .‬در‬ ‫‪ UEL‬را در زمان‬
‫) (‪∂F U‬‬
‫‪−‬‬ ‫|‬
‫نیازمن د کمی تی‬ ‫صورتی ک ه م اتریسه ای ) ‪ F (U 0‬و ‪∂U U=U 0‬‬
‫مربوط به بازهه ای زم انی قب ل باش د (مثال ً ‪ G | t‬در معادل ه ‪)20‬‬
‫زیربرنامه ‪ UEL‬باید این کمیتها را در آرایهای به نام ‪ SVARS‬ذخ یره‬
‫نماید‪ .‬به بی ان دیگ ر ‪ ABAQUS/Standard‬تنه ا کمیته ای ج اری را در‬
‫اختیار زیربرنامه قرار میدهد و ک اربر بای د از طری ق زی ر برنام ه‬
‫‪ UEL‬کمیتهای مربوط به بازههای زمانی قبل را ذخیره نماید‪ .‬قب ل‬
‫از پرداختن به سایر جزئی ات برنام هنویس ی در ‪ ، UEL‬الزم اس ت‬
‫که روند کلی حل در آباکوس و نحوه بک ارگیری ‪ UEL‬در آن م ورد‬
‫بررسی قرار گیرد‪.‬‬
‫آماده کردن ‪ inp‬فایل برای استفاده از زیربرنامه ‪UEL‬‬
‫در ن رم اف زار آب اکوس‪ ،‬ابت دا اطالع ات ب ه ف رم ی ک فای ل‬
‫‪ ¿⋅pni‬ذخ یره میگ ردد‪ .‬این فای ل‬ ‫‪ IICSA‬پس وند‬
‫با‬ ‫‪1‬‬
‫اطالع اتی‬
‫ح اوی اطالع ات م ورد نی از ب رای حلگ ر آب اکوس اس ت‪ .‬در ی ک‬
‫‪ ، ¿⋅pni‬مکان گ رهه ا‪ ،‬ن وع الم ان‪ ،‬نح وه اتص ال گ رهه ا در ی ک‬

‫‪1‬‬
‫‪-American Standard Code for Information Interchange‬‬
‫زیر برنامه نویسی در ‪ABAQUS‬‬
‫‪351‬‬

‫المان‪ ،‬خواص ماده‪ ،‬نوع حل‪ ،‬شرایط م رزی و ‪ ...‬موج ود اس ت‪.‬‬


‫حلگر آباکوس برخی از اطالعات فایل ‪( ¿⋅pni‬مانند خواص م اده‪،‬‬
‫نوع حل(استاتیکی‪ ،‬دینامیکی و ‪ ،)...‬مختصات نودها در الم ان) را‬
‫ب ه هم راه ب رخی از متغیره ای وابس ته ب ه ح ل (مانن د ش تاب‪،‬‬
‫جابج ایی و ‪ )...‬ب ه زی ربرنام ه مرب وط ب ه الم ان ارائ ه ک رده و‬
‫‪e‬‬
‫) ‪∂F (U‬‬
‫‪−‬‬ ‫|‬ ‫‪e‬‬
‫) دریافت میکن د‪ .‬ب ه‬ ‫اطالعات الزم را ( ) ‪ F U( 0‬و ‪∂U U=U 0‬‬
‫‪ ¿⋅pni‬زیر توجه کنید‪:‬‬ ‫فایل‬
‫‪*Heading‬‬

‫⋮‬
‫‪*Instance, name=Part-1-1, part=Part-1‬‬

‫‪*Node‬‬
‫‪1,‬‬ ‫‪0.,‬‬ ‫‪-2.‬‬
‫‪2,‬‬ ‫‪4.,‬‬ ‫‪-2.‬‬
‫‪3,‬‬ ‫‪8.,‬‬ ‫‪-2.‬‬
‫‪4,‬‬ ‫‪0.,‬‬ ‫‪0.‬‬
‫‪5,‬‬ ‫‪4.,‬‬ ‫‪0.‬‬ ‫‪ -1‬مش خص ک ردن‬
‫‪6,‬‬ ‫‪8.,‬‬ ‫‪0.‬‬ ‫مکان نودها‬
‫‪7,‬‬ ‫‪0.,‬‬ ‫‪2.‬‬
‫‪8,‬‬ ‫‪4.,‬‬ ‫‪2.‬‬
‫‪9,‬‬ ‫‪8.,‬‬ ‫‪2.‬‬

‫‪*Element, type=CPS4‬‬
‫‪1, 1, 2, 5, 4‬‬
‫‪2, 2, 3, 6, 5‬‬ ‫‪ -2‬مش خص ک ردن الم انه ا و نح وه‬
‫‪3, 4, 5, 8, 7‬‬ ‫ارتباط بین نودها در المان‬
‫‪4, 5, 6, 9, 8‬‬

‫⋮‬
‫آشنایی و‬ 352
ABAQUS ‫طرز کار با نرم افزار‬

** MATERIALS
*Material, name=steel
*Density ‫ مش خص ک ردن خ واص‬-3
7800., ‫ماده‬
*Elastic
2e+11, 0.3

** BOUNDARY CONDITIONS
**Name:BC-1Type:Displacement/Rotation ‫خص‬ ‫ مش‬-4
*Boundary ‫ردن‬ ‫ک‬
_PickedSet5, 1, 1 ‫بارگذاری(شرط‬
_PickedSet5, 2, 2
)‫مرزی اساسی‬

** STEP: Step-1
*Step, name=Step-1
*Static ‫ مشخص کردن نوع حل‬-5
1., 1., 1e-05, 1.

** LOADS
** Name: Load-1 Type: Pressure ‫ مش خص ک ردن‬-6
*Dsload ‫بارگذاری(شرط مرزی‬
_PickedSurf4, P, -1000.
)‫طبیعی‬


*End Step

‫ نش ان داده ش ده‬22-19 ‫مش مربوط به این فایل در ش کل‬


.‫است‬
‫زیر برنامه نویسی در ‪ABAQUS‬‬
‫‪353‬‬

‫شکل ‪ 22-19‬شماره گذاری شبکه‬

‫در قس مت دوم الم ان انتخ ابی ‪ CPS4‬اس ت‪ .‬در ص ورت‬


‫استفاده از زیربرنامه ‪ ، UEL‬الزم است برخی وی ژگیه ای مرب وط‬
‫به المان جدید را در ‪ - inp‬فایل مشخص کرد‪ .‬این ویژگیها عبارتن د‬
‫از‪:‬‬
‫نام المان‪ :‬نام انتخابی المان جدید به فرم ‪ Un‬است ک ه در‬ ‫‪-1‬‬
‫آن‪ n‬ع دد ص حیح بین ‪ 1‬ت ا ‪ 10000‬اس ت‪ .‬مث ل‪U1,U2, :‬‬
‫‪ . …,U10000‬عدد ‪ n‬با پارامتر ‪ JTYPE‬در اختیار زی ر برنام ه‬
‫‪ UEL‬قرار میگیرد بن ابراین میت وان چن دین الم ان در ‪- inp‬‬
‫فایل تعریف کرد‪.‬‬
‫تعداد گرههای المان‪ :‬به عنوان مثال در یک الم ان ‪ 4‬گ ره‪-‬‬ ‫‪-2‬‬
‫ای‪. NODES=4:‬‬
‫ماکزیمم تعداد مختصات مورد نیاز برای هر نود‪ .‬به عنوان‬ ‫‪-3‬‬
‫مثال در یک المان تنش ص فحهای ‪ COORDINATES=2‬البت ه‬
‫از طریق بند ‪ 7‬که در ادام ه توض یح داده خواه د ش د ن یز‬
‫قادر به تعیین این پارامترهستیم‪.‬‬
‫خواصی از ماده که عدد صحیح و یا غیر صحیح هستند‪.‬‬ ‫‪-4‬‬
‫تعداد متغیرهای مورد نیاز وابسته ب ه ح ل ک ه بای د ذخ یره‬ ‫‪-5‬‬
‫شوند‪VARIABLES=n .‬‬
‫آشنایی و‬ ‫‪354‬‬
‫طرز کار با نرم افزار ‪ABAQUS‬‬

‫‪e‬‬
‫) ‪∂F (U‬‬
‫‪−‬‬ ‫|‬
‫‪ :‬ب ه ط ور پیش ف رض‬ ‫عدم تقارن ماتریس ‪∂U U=U 0‬‬ ‫‪-6‬‬
‫‪e‬‬
‫) ‪∂F (U‬‬
‫‪−‬‬ ‫|‬
‫که در زیر برنامه ‪ UEL‬با ‪AMATRX‬‬ ‫ماتریس ‪∂U U=U 0‬‬
‫نشان داده میشود‪ ،‬متقارن فرض میشود‪ ،‬عدم تق ارن این‬
‫ماتریس باید مشخص گردد‪.‬‬
‫تعیین درجات آزادی گرهه ا در الم ان‪ :‬ه ر الم ان در فای ل‬ ‫‪-7‬‬
‫‪ ¿⋅pni‬توسط تعدادی گره تعریف میشود‪ .‬به عنوان مثال‬
‫‪3, 4, 5, 8, 7‬‬
‫نش ان میده د ک ه الم ان ‪ 3‬از گ رهه ای ‪4‬و‪ 5‬و‪ 8‬و‪7‬‬
‫تشکیل یافته است‪ .‬در این مثال گ ره ‪ ،4‬گ ره اول الم ان‪،‬‬
‫گره ‪ 5‬گره دوم المان‪ ،‬گره ‪ 8‬گ ره س وم الم ان و گ ره ‪7‬‬
‫گره چهارم المان است‪ .‬عالوه بر شماره گرههای الم ان و‬
‫چیدمان آن‪ ،‬درجه آزادی هر گره ن یز بای د مش خص ش ود‪.‬‬
‫برای این منظور باید از قرارداد آباکوس در شماره گ ذاری‬
‫درجات آزادی استفاده گردد‪ .‬جدول ‪ 1‬نحوه شماره گذاری‬
‫درجات آزادی را نشان میدهد‪ .‬با توج ه ب ه اینک ه آب اکوس‬
‫همگ رایی ح ل را ب ر اس اس این ق رارداد کن ترل میکن د‪،‬‬
‫بنابراین رعایت این قرارداد الزامی است‪.‬‬
‫تعیین درجات آزادی گ رهه ا میتوان د ب ه روشه ای مختلفی‬
‫انجام گیرد‪ .‬روش اس تاندارد و توص یه ش ده آب اکوس ب ه این‬
‫ص ورت اس ت ک ه ابت دا درج ات آزادی مش ترک بین گ رهه ا‬
‫تعریف ش ود و س پس درج ات آزادی گ ره ه ایی ک ه اس تثناء‬
‫است بیان شود‪.‬‬

‫جدول ‪ 1-19‬قرارداد شماره معادل درجات آزادی‬


‫‪Axisymmetric‬‬ ‫درج‬
ABAQUS ‫زیر برنامه نویسی در‬
355

‫ه آزادی‬
r-displacement x-displacement 1
z-displacement y-displacement 2
z-displacement 3
Rotation about the x-axis, in 4
radians
Rotation about the z- Rotation about the y-axis, in   5
axis (for axisymmetric radians
elements with twist), in
radians
Rotation in the r–z Rotation about the z-axis, in 6
plane (for axisymmetric radians
shells), in radians
Warping amplitude (for open- 7
section beam elements)
Pore pressure (or hydrostatic 8
fluid pressure)
Electric potential 9
Not used 10
Temperature (or normalized 11
concentration in mass diffusion
analysis)
Second temperature (for shells or 12
beams)
Third temperature (for shells 13
or beams)
.Etc 14
‫آشنایی و‬ ‫‪356‬‬
‫طرز کار با نرم افزار ‪ABAQUS‬‬

‫با توجه به توضیحات داده شده‪ ،‬به نح وه تنظیم اطالع ات در‬


‫‪ ¿⋅pni‬برای استفاده از زیربرنامه ‪ UEL‬میپردازیم‪ .‬برای این‬ ‫فایل‬
‫اضافه گردد‪:‬‬ ‫‪p‬‬
‫⋅¿‬ ‫‪ni‬‬ ‫منظور کافی است ‪ 3‬دستور زیر به فایل‬
‫‪ ¿⋅pni‬ابتدا دستور زیر‬ ‫‪ -1‬برای معرفی المان جدید در فایل‬
‫نوشته میشود‪:‬‬
‫‪*USER ELEMENT, TYPE=Un, NODES=n, COORDINATES=n,‬‬
‫‪IPROPERTIES=n, PROPERTIES=m, VARIABLES=n, UNSYMM‬‬

‫که البته باید در یک خط نوشته شود‪ .‬در این دستور‪:‬‬


‫‪ TYPE=Un ‬نام المان را مشخص میکند‪ n.‬عدد صحیح‬
‫‪ 1‬تا ‪ 10000‬است‪.‬‬
‫‪ NODES=n ‬تعداد گرههای المان را مشخص میکند‪.‬‬
‫‪ COORDINATES=n ‬م اکزیمم مختص ات گ رهه ا را‬
‫مشخص میکند‪.‬‬
‫‪ IPROPERTIES=n ‬تعداد خواص ماده که ع دد ص حیح‪-‬‬
‫اند را مشخص میکند‪.‬‬
‫‪ PROPERTIES=m ‬تع داد خ واص م اده ک ه ع دد غ یر‬
‫صحیحاند را مشخص میکند‪.‬‬
‫‪ VARIABLES=n ‬تع داد متغیره ای م ورد نی از در زی ر‬
‫برنامه ‪ UEL‬را مشخص میکند‪.‬‬
‫) ‪∂F e(U‬‬
‫‪−‬‬ ‫|‬
‫را مش خص‬ ‫‪∂U U=U 0‬‬ ‫‪ UNSYMM ‬عدم تق ارن‬
‫میکند‪.‬‬
‫با توجه به اینکه ممکن اس ت در ی ک الم ان از درج ات آزادی‬
‫خاصی استفاده شود‪ ،‬بنابراین بالفاصله بعد از دستور‪ ،‬بای د ف وق‬
‫درجات آزادی المان مشخص گردد‪ .‬به عنوان مثال الم ان زی ر را‬
‫در نظر بگیرید که در آن درجات آزادی گرهه ای ‪1‬ت ا ‪ ،4‬براب ر ‪1‬و‬
‫زیر برنامه نویسی در ‪ABAQUS‬‬
‫‪357‬‬

‫‪2‬و‪14‬و‪ 15‬ب وده و درج ات آزادی گ رهه ای ‪ 5‬ت ا ‪ 8‬فق ط ‪ 1‬و ‪2‬‬
‫است‪ .‬درجات آزادی ‪ 1‬و ‪ 2‬معرف جابجایی است و درجات ‪ 14‬و‬
‫‪ ،15‬درجات آزادی دلخواه است‪.‬‬

‫درجات آزادی این المان با نوشتن اعداد زیر مشخص میگردد‪:‬‬


‫‪1,2‬‬
‫‪1,14,15‬‬
‫‪2,14,15‬‬
‫‪3,14,15‬‬
‫‪4,14,15‬‬
‫‪5,‬‬
‫‪6,‬‬
‫‪7,‬‬
‫‪8‬‬
‫در خ ط اول مش خص میش ود ک ه درج ات آزادی ‪ 1‬و‪ 2‬ب رای‬
‫تمام المانها صادق است‪ .‬در خط دوم تا پنجم استثناء ب رای ن ود‪-‬‬
‫های ‪ 1‬تا ‪ 4‬مشخص شده است‪ .‬در صورتی که خطوط ششم به‬
‫بعد نوش ته نش ود‪ ،‬ف رض ب ر این خواه د ب ود ک ه درج ات آزادی‬
‫تعریف شده برای گره ‪ 4‬برای سایر نقاط همچنان ادامه خواه د‬
‫یافت‪ .‬بنابراین در خط ‪ 5‬به بع د ب ا نوش تن ن ام ن وده ا این پیش‬
‫فرض منتفی خواهد بود‪ .‬ب ه ط ور خالص ه درج ات آزادی تعری ف‬
‫شده توسط خطوط فوق بصورت زیر خواهد بود‪:‬‬
‫آشنایی و‬ ‫‪358‬‬
‫طرز کار با نرم افزار ‪ABAQUS‬‬

‫شماره گره در‬ ‫درجه آزادی براساس‬


‫درجه آزادی‬
‫المان‬ ‫جدول ‪1‬‬
‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬
‫‪2‬‬ ‫‪1‬‬ ‫‪2‬‬
‫‪3‬‬ ‫‪2‬‬ ‫‪1‬‬
‫‪4‬‬ ‫‪2‬‬ ‫‪2‬‬
‫‪....‬‬ ‫‪.....‬‬ ‫‪.....‬‬
‫‪15‬‬ ‫‪8‬‬ ‫‪1‬‬
‫‪16‬‬ ‫‪8‬‬ ‫‪2‬‬
‫‪17‬‬ ‫‪1‬‬ ‫‪14‬‬
‫‪18‬‬ ‫‪1‬‬ ‫‪15‬‬
‫‪19‬‬ ‫‪2‬‬ ‫‪14‬‬
‫‪....‬‬ ‫‪....‬‬ ‫‪.....‬‬
‫‪23‬‬ ‫‪4‬‬ ‫‪14‬‬
‫‪24‬‬ ‫‪4‬‬ ‫‪15‬‬

‫بعد از مشخص شدن نام المان و برخی ویژگیهای آن‪ ،‬باید‬ ‫‪-2‬‬
‫المان های مربوطه مشخص شوند‪ .‬برای این کار دستور زیر‬
‫نوشته میشود‪:‬‬
‫‪* ELEMENT, TYPE=Un, ELSET=name‬‬
‫‪F‬ره دوم ‪,‬‬
‫‪F‬ماره گ‪F‬‬
‫‪F‬ره اول ‪ ,‬ش‪F‬‬
‫‪F‬ماره گ‪F‬‬
‫‪F‬ان ‪ ,‬ش‪F‬‬
‫‪F‬ماره الم‪F‬‬
‫ش‪F‬‬
‫‪,...‬شماره گره سوم‬

‫در خ ط اول‪ ،‬ن وع الم ان ( ‪ ) TYPE=Un‬مش خص میگ ردد‪.‬‬


‫استفاده از نام گذاری(‪ )ELSET=name‬به منظور مشخص کردن‬
‫خواص ماده المان است‪ .‬کاربرد این نامگذاری در دستور بع د‬
‫مشخص خواهد شد‪.‬‬
‫زیر برنامه نویسی در ‪ABAQUS‬‬
‫‪359‬‬

‫در دستورات قب ل‪ ،‬تع داد خ واص م اده م ورد نی از الم ان‬ ‫‪-3‬‬
‫مش خص گردی د‪ .‬ب ا اس تفاده از دس تور زیرخ واص م اده‬
‫مشخص میگردد‪.‬‬
‫‪* UEL PROPERTY, ELSET=name‬‬
‫‪,‬مقدار ‪ ,1‬مقدار ‪ , ... ,2‬مقدار ‪8‬‬
‫‪,...‬مقدار ‪9‬‬

‫همانگون ه ک ه در ب اال مش خص ش ده اس ت‪ ،‬در ه ر خ ط‬


‫حداکثر ‪ 8‬پارامتر مشخص میگردد‪ .‬در دستور باال‪ ،‬ابتدا خواص‬
‫ماده که عدد غ یر ص حیح هس تند و س پس خواص ی ک ه ع دد‬
‫صحیح اند مش خص میش ود‪ .‬دادهه ای مش خص ش ده در این‬
‫دستور‪ ،‬ب ه ت رتیب در آرای ه ه ای ‪ PROPS‬و ‪ JPROPS‬ذخ یره می‪-‬‬
‫گردد و در اختیار زیر برنامه ‪ UEL‬قرار میگیرد‪.‬‬
‫‪ ¿⋅pni‬بدون تغیر باقی خواهن د مان د‪ .‬اص الح‬ ‫سایر دستورات‬
‫‪ ¿⋅pni‬که در ابتدای بخش توضیح داده شده اس ت در‬ ‫شده فایل‬
‫زیر آورده شده است‪:‬‬

‫‪*Heading‬‬
‫‪.‬‬
‫‪.‬‬
‫‪.‬‬

‫‪*Instance, name=Part-1-1, part=Part-1‬‬


‫‪*Node‬‬
‫‪1,‬‬ ‫‪0.,‬‬ ‫‪-2.‬‬
‫‪2,‬‬ ‫‪4.,‬‬ ‫‪-2.‬‬
‫‪3,‬‬ ‫‪8.,‬‬ ‫‪-2.‬‬
‫‪4,‬‬ ‫‪0.,‬‬ ‫‪0.‬‬
‫‪5,‬‬ ‫‪4.,‬‬ ‫‪0.‬‬
‫‪6,‬‬ ‫‪8.,‬‬ ‫‪0.‬‬
‫‪7,‬‬ ‫‪0.,‬‬ ‫‪2.‬‬
‫‪8,‬‬ ‫‪4.,‬‬ ‫‪2.‬‬
‫آشنایی و‬ 360
ABAQUS ‫طرز کار با نرم افزار‬

9, 8., 2.

*Element, type=CPS4
2, 2, 3, 6, 5
3, 4, 5, 8, 7
4, 5, 6, 9, 8

*User Element,Type=U101,Nodes=4,Coordinates=2, Properties=3


1,2

*Element, type=U101, Elset=user_element


1, 1, 2, 5, 4

*Uel Property, Elset=user_element


7800.0, 2.0e+11, 0.3
.
.
.
*Elset, elset=_PickedSet2, internal, generate
2, 4, 1
** Section: plate
*Solid Section, elset=_PickedSet2, material=steel
1.,
.
.
.
** MATERIALS
**
*Material, name=steel
*Density
7800.,
*Elastic
2e+11, 0.3
**
.
.
.
‫زیر برنامه نویسی در ‪ABAQUS‬‬
‫‪361‬‬

‫الزم به ذکر اس ت ک ه ب رای الم ان ‪ 1‬در ‪ Uel Property‬خ واص‬


‫ماده تعیین شده است‪ .‬بنابراین در *‪ ، Elset‬انتخاب مجدد المان ‪1‬‬
‫مجاز نیست‪.‬‬
‫‪ ، ¿⋅pni‬المان ‪ 1‬توس ط الم ان جدی دی ب ا ن ام‬ ‫در این فایل‬
‫‪ type=U101‬مشخص شده است‪ .‬با توجه به اینک ه فایل ‪ ¿⋅pni‬ب اال‬
‫از اصالح فایل ‪ ¿⋅pni‬ساخته شده توس ط آب اکوس بدس ت آم ده‬
‫است‪ ،‬باید خطوط مربوط به تعیین خواص المان اصالح گردد‪ .‬ب ه‬
‫این ترتیب فایل ‪ ¿⋅pni‬برای استفاده آماده میشود‪ .‬در ادام ه ب ه‬
‫بررسی زیر برنامه ‪ UEL‬خواهیم پرداخت‪.‬‬
‫‪UEL‬‬ ‫زیر برنامه‬
‫کارکرد یک زیربرنامه را میتوان با توجه به ورودیه ا و خ روجی‪-‬‬
‫های آن مشخص کرد‪ .‬بنابراین هدف اصلی این قس مت مش خص‬
‫شدن ورودیها و خروجیهای زیربرنامه ‪ UEL‬است‪ .‬برای نوشتن یک‬
‫زیربرنامه‪ ،‬لزومی به یادگیری تمامی ورودیها و خروجیه ا نیس ت‪.‬‬
‫بطور کلی سه دسته پارامتر (ورودی و خروجی) در یک زیربرنامه‬
‫وجود دارد‪ .‬برخی از خروجیهای زیربرنامه اجباری هستند ک ه بای د‬
‫نوع و وی ژگی آن ب ه دقت بررس ی ش ده و در زیربرنام ه آنه ا را‬
‫مش خص ک رد‪ .‬ب رخی دیگ ر از خ روجیه ا ممکن اس ت مش خص‬
‫ک ردن آه ا تنه ا ب رای م وارد خ اص الزم اس ت‪ .‬س ایر پارامتره ا‬
‫ورودی هایی هستند که تنها در صورت نیاز الزم است نام و وی ژگی‬
‫آنها بررسی شود‪.‬‬
‫‪ RHS‬و ‪ AMATRX‬پارامتره ای ال زامی زیربرنام ه ‪ UEL‬هس تند‪.‬‬
‫) ‪∂F e(U‬‬
‫‪−‬‬ ‫|‬ ‫‪e‬‬
‫را‬ ‫زیربرنامه بر اساس نوع حل مقادیر ) ‪ F U( 0‬و ‪∂U U=U 0‬‬
‫محاسبه و در آرای هه ای ‪ RHS‬و ‪ 2AMATRX‬ق رار میده د‪ .‬بن ابراین‬
‫یکی از مهمترین ورودیهای این زیربرنامه آرایه ‪ LFLAGS‬است ک ه‬

‫‪ - 2‬بجز در تکرار اول که ‪ AMATRX‬ماتریس جرم را بر میگرداند‪.‬‬


‫آشنایی و‬ 362
ABAQUS ‫طرز کار با نرم افزار‬

.‫اطالعات مربوط به نوع حل را در اختیار زیربرنامه ق رار میده د‬


‫ و مفه وم آن را‬LFLAGS ‫در ج دول زی ر ب رخی از مق ادیر آرای ه‬
.‫نشان میدهد‬

‫ و مفهوم‬LFLAGS ‫ مقادیر آرایه‬2-19 ‫جدول‬


LFLAGS(1)
1,2 static
11,12 Direct integration dynamics
13 Subspace-base dynamics
21 Quasi-static
31 Steady-state heat transfer
32-33 Transient heat analysys

LFLAGS(2)
0 Small displacement
1 large displacement

LFLAGS(3)
1 Normal implicit time increment
.‫ردد‬ ‫فگ‬ ‫د تعری‬ ‫ختی بای‬ ‫اتریس س‬ ‫م‬
e
2 ∂F (U )
XRTAMA = K=−
∂U
.‫ماتریس استهالک باید تعریف گردد‬
3 ∂F e (U )
XRTAMA = C=−
∂U˙
‫زیر برنامه نویسی در ‪ABAQUS‬‬
‫‪363‬‬

‫ردد‪.‬‬ ‫فگ‬ ‫د تعری‬ ‫رم بای‬ ‫اتریس ج‬ ‫م‬


‫) ‪∂F e(U‬‬
‫‪4‬‬ ‫‪XRTAMA‬‬ ‫‪=M =−‬‬
‫‪ .‬در ابت دای تحلی ل‪ ،‬حلگ ر‬ ‫¨‪∂U‬‬
‫مقدار ماتریس جرم اولیه را درخواست میکند‪.‬‬

‫)‪LFLAGS(4‬‬

‫‪0‬‬ ‫‪A general step‬‬

‫‪1‬‬ ‫‪A linear perturbation step‬‬

‫)‪LFLAGS(5‬‬
‫‪0‬‬ ‫‪ U‬بر اساس اصالح نیوتن‬
‫مشخص شده است‪.‬‬
‫‪1‬‬ ‫‪ U‬بر اساس برونیابی مشخص‬
‫شده است‪.‬‬

‫س ایر پارامتره ای زیربرنام ه ‪ UEL‬ج زء دس ته دوم و س وم‬


‫پارامترها هستند که استفاده از آنها وابسته به نی از ک اربر اس ت‪.‬‬
‫برای کاربر مناس بتر اس ت ک ه بج ای ی ادگیری تم ام پارامتره ای‬
‫آباکوس‪ ،‬تنها نام پارامترهای مورد نیاز خ ود را پی دا کن د‪ .‬در زی ر‬
‫فهرست این پارامترهای آورده شده است‪.‬‬

‫جدول ‪ 3-19‬پارامترهای زیربرنامه ‪UEL‬‬


‫توضیحات‬ ‫اندازه (‪)DIMENSION‬‬ ‫کاربرد‬ ‫آرایه‬
‫ورودی‬ ‫اسکالر‬ ‫ع‪aa‬دد(‪ )n‬بع‪aa‬د از‪ U‬در ن‪aa‬ام الم‪aa‬ان‬ ‫‪JTYPE‬‬
‫جدید(‪)Un‬‬
‫ورودی‬ ‫اسکالر‬ ‫شماره المان‬ ‫‪JELEM‬‬
‫خروجی‬ ‫‪MLVARX‬‬ ‫¿‬ ‫بردار باقیمانده‪a‬‬ ‫‪RHS‬‬
‫‪NRHS‬‬
‫آشنایی و‬ ‫‪364‬‬
‫طرز کار با نرم افزار ‪ABAQUS‬‬

‫ورودی‬ ‫اس‪aaa‬کالر( معم‪aaa‬وال براب‪aaa‬ر ‪1‬‬ ‫تعداد ستونهای ‪RHS‬‬ ‫‪NRHS‬‬


‫است)‪.‬‬
‫ورودی‬ ‫اسکالر‬ ‫تعداد سطرهای ‪RHS‬‬ ‫‪MLVARX‬‬
‫خروجی‬ ‫¿‬ ‫ابت‪aa‬دای تحلی‪aa‬ل م‪aa‬اتریس ج‪aa‬رم و در‬ ‫‪AMATRX‬‬
‫‪NDOFEL‬‬ ‫ادامه بر اساس ن‪aa‬وع تحلی‪aa‬ل م‪aa‬اتریس‬
‫‪NDOFEL‬‬ ‫سختی و یا ‪ ...‬را بر میگرداند‬
‫ورودی‬ ‫اسکالر‬ ‫تعداد درجات آزادی المان‬ ‫‪NDOFEL‬‬
‫ورودی‬ ‫‪NPROPS‬‬ ‫ویژگیه‪aaaa‬ای الم‪aaaa‬ان ( ع‪aaaa‬دد غ‪aaaa‬یر‬ ‫‪PROPS‬‬
‫صحیح )‬
‫ورودی‬ ‫اسکالر‬ ‫‪NPROPS‬‬
‫ورودی‬ ‫‪NJPROP‬‬ ‫ویژگیهای المان ( عدد صحیح )‬ ‫‪JPROPS‬‬
‫ورودی‬ ‫اسکالر‬ ‫‪NJPROP‬‬
‫خروجی‬ ‫‪8‬‬ ‫انرژی ذخیره شده در المان‬ ‫‪ENERGY‬‬
‫ورودی‪-‬‬ ‫‪NSVARS‬‬ ‫متغیری که برای انتقال پارامتری از‬ ‫‪SVARS‬‬
‫خروجی‬ ‫الم‪aa‬ان بین زمانه‪aa‬ای مختل‪aa‬ف اس‪aa‬تفاده‬
‫میشود‪.‬‬
‫ورودی‪-‬‬ ‫اسکالر‬ ‫‪NSVARS‬‬
‫خروجی‬
‫ورودی‬ ‫¿‬ ‫مختصات گرههای المان‬ ‫‪COORDS‬‬
‫‪MCRD‬‬
‫‪NNODE‬‬
‫ورودی‬ ‫اسکالر‬ ‫تعداد مختصات گرههای المان‬ ‫‪MCRD‬‬
‫ورودی‬ ‫اسکالر‬ ‫تعداد گرههای المان‬ ‫‪NNODE‬‬
‫ورودی‬ ‫‪NDOFEL‬‬ ‫بردارهای جابج‪a‬ایی‪ ،‬نم‪a‬و جابج‪a‬ایی‪،‬‬ ‫‪U,DU,V,A‬‬
‫سرعت و شتاب‬
‫ورودی‬ ‫وابسته به نوع تحلیل‬ ‫مقادیر وابسته ب‪aa‬ه ن‪aa‬وع تحلی‪aa‬ل را ب‪aa‬ه‬ ‫‪PARAMS‬‬
‫همراه دارد‪.‬‬
‫ورودی‬ ‫‪MDLOAD‬‬ ‫بارگذاریهای غیر متمرکز‪a‬‬ ‫‪ADLMAG‬‬
‫ورودی‬ ‫‪MDLOAD‬‬ ‫نوع بارگذاریهای غیر متمرکز‪a‬‬ ‫‪JDLTYP‬‬
‫ورودی‬ ‫اسکالر‬ ‫‪MDLOAD‬‬
‫ورودی‬ ‫اسکالر‬ ‫‪NDLOAD‬‬
‫ورودی‬ ‫‪PREDEF‬‬
‫ورودی‬ ‫اسکالر‬ ‫‪NPREDF‬‬
‫ورودی‬ ‫‪2‬‬ ‫‪TIME‬‬
‫ورودی‬ ‫‪DTIME‬‬
‫ورودی‪-‬‬ ‫‪PNEWDT‬‬
‫خروجی‬
‫ورودی‬ ‫‪PERIOD‬‬
‫زیر برنامه نویسی در ‪ABAQUS‬‬
‫‪365‬‬

‫ورودی‬ ‫‪KSTEP‬‬
‫ورودی‬ ‫‪KINC‬‬
‫در ادام ه ب ه بررس ی جزئی ات ی ک زیربرنام ه ‪ UEL‬خ واهیم‬
‫پرداخت‪.‬‬
‫توضیح مس ئله‪ :‬تحلی ل اس تاتیکی ی ک ورق مس تطیلی (تنش‬
‫ص فحهای) ب ا مق دار ک رنش کم م ورد نظ ر اس ت‪ .‬بن ابراین‬
‫‪SGALFL‬‬
‫خواه د ب ود‪ .‬البت ه ب ه دلی ل‬ ‫‪) 0 SGALFL‬‬
‫= ‪(2‬‬ ‫و‬ ‫‪) 1 ro 2‬‬
‫= ‪(1‬‬
‫اینکه برنامه مورد نظر کلی نیست‪ ،‬بنابراین عمال ً در این قس مت‬
‫از این پارامتره ا اس تفاده نخواه د ش د‪ .‬در ابت دای تحلی ل‬
‫‪SGALFL‬ت ک ه ب ه‬
‫اس‬ ‫‪) 1‬‬
‫= ‪(3‬‬ ‫در ادام ه تحلی ل‬‫‪SGALFL‬‬
‫و‬ ‫‪) 4‬‬
‫= ‪(3‬‬
‫دلیل تاثیر در تعریف ‪ AMATRX‬باید مورد استفاده قرار گیرن د‪ .‬ب ا‬
‫توجه به معادله ‪ 4‬و ‪ 5‬تعریف مقادیر زیر مورد نظر است‪:‬‬
‫‪RHS=−KU|t+Δt +f |t+ Δt‬‬

‫‪AMATRX =K‬‬

‫‪ U‬مق دار جابج ایی نق اط گ رهای و ‪ f‬ب ردار‬ ‫ک ه در آن‬


‫نیروهای خارجی است که ب ر ه ر گ ره اعم ال میگ ردد‪ .‬م اتریس‬
‫‪ K‬نش ان داده ش ده اس ت‪ .‬ب رای محاس به این‬ ‫سختی ن یز ب ا‬
‫پارامترها‪ ،‬مکان گرهها (‪ )COORDS‬و خواص م اده (‪ )PROPS‬م ورد‬
‫نیاز است‪ .‬مط ابق رون د عم ومی نوش تن زیربرنام ه‪ ،‬زیربرنام ه‬
‫موجود در قسمت ‪ User subroutine interface‬را در ویرایشگر فرترن‬
‫بصورت زیر اصالح کنید‪:‬‬
‫‪SUBROUTINE UEL(RHS,AMATRX,SVARS,ENERGY,NDOFEL,NRHS,NSVARS,‬‬
‫‪1 PROPS,NPROPS,COORDS,MCRD,NNODE,U,DU,V,A,JTYPE,TIME,DTIME,‬‬
‫‪2 KSTEP,KINC,JELEM,PARAMS,NDLOAD,JDLTYP,ADLMAG,PREDEF,NPREDF,‬‬
‫)‪3 LFLAGS,MLVARX,DDLMAG,MDLOAD,PNEWDT,JPROPS,NJPROP,PERIOD‬‬
‫‪C‬‬
‫'‪INCLUDE 'ABA_PARAM.INC‬‬
‫‪C‬‬
‫‪DIMENSION RHS(MLVARX,*),AMATRX(NDOFEL,NDOFEL),PROPS(*),‬‬
‫‪1 SVARS(*),ENERGY(8),COORDS(MCRD,NNODE),U(NDOFEL),‬‬
‫‪2 DU(MLVARX,*),V(NDOFEL),A(NDOFEL),TIME(2),PARAMS(*),‬‬
‫آشنایی و‬ 366
ABAQUS ‫طرز کار با نرم افزار‬

3 JDLTYP(MDLOAD,*),ADLMAG(MDLOAD,*),DDLMAG(MDLOAD,*),
4 PREDEF(2,NPREDF,NNODE),LFLAGS(*),JPROPS(*)

DOUBLE PRECISION AK,F,WEIGHT,SHAP,GP


DIMENSION WEIGHT(2,1),GP(2,1), AK(8,8), F(8,1),SHAP(2,8)
DIMENSION DE(3,3),XX(4,2),B(3,8),AJACOBIAN(2,2),AINVJ(2,2)
DIMENSION AA(8,3),CC(8,8),AB(12,1),AC(1,8),BB(1,1),DSHAP0(2,4)
DIMENSION DSHAP1(2,4),AMASS(8,8)

AK=0.D0
NG=2
WEIGHT(1,1)=1.D0
WEIGHT(2,1)=1.D0
GP(1,1)=-0.57735D0
GP(2,1)=+0.57735D0
RO = PROPS(1)
EE = PROPS(2)
ANU = PROPS(3)

DO K1 = 1, NDOFEL
RHS(K1,1) = 0.
DO K2 = 1, NDOFEL
AMATRX(K2,K1) = 0.
END DO
END DO

DE(1,1)=EE/(1.0-ANU**2)
DE(1,2)=EE*ANU/(1.0-ANU**2)
DE(2,1)=EE*ANU/(1.0-ANU**2)
DE(2,2)=EE/(1.0-ANU**2)
DE(3,3)=EE/(1.0+ANU)/2.0
DO II=1,NG
X=GP(II,1)
DO JJ=1,NG
Y=GP(JJ,1)
SHAP=0.D0
SHAP(1,1)=(1.-X)*(1.-Y)/4.
SHAP(2,2)=(1.-X)*(1.-Y)/4.
SHAP(1,3)=(1.+X)*(1.-Y)/4.
SHAP(2,4)=(1.+X)*(1.-Y)/4.
SHAP(1,5)=(1.+X)*(1.+Y)/4.
SHAP(2,6)=(1.+X)*(1.+Y)/4.
SHAP(1,7)=(1.-X)*(1.+Y)/4.
SHAP(2,8)=(1.-X)*(1.+Y)/4.
DSHAP0(1,1)=(-1.)*(1.-Y)/4.
DSHAP0(1,2)=( 1.)*(1.-Y)/4.
DSHAP0(1,3)=( 1.)*(1.+Y)/4.
DSHAP0(1,4)=(-1.)*(1.+Y)/4.
DSHAP0(2,1)=(1.-X)*(-1.)/4.
DSHAP0(2,2)=(1.+X)*(-1.)/4.
DSHAP0(2,3)=(1.+X)*( 1.)/4.
ABAQUS ‫زیر برنامه نویسی در‬
367

DSHAP0(2,4)=(1.-X)*( 1.)/4.
AJACOBIAN=MATMUL(DSHAP0,TRANSPOSE(COORDS))
DETJA=(AJACOBIAN(1,1)*AJACOBIAN(2,2)-AJACOBIAN(1,2)*AJACOBIAN(2,1))
AINVJ(1,1)= AJACOBIAN(2,2)/DETJA
AINVJ(2,2)= AJACOBIAN(1,1)/DETJA
AINVJ(1,2)=-AJACOBIAN(1,2)/DETJA
AINVJ(2,1)=-AJACOBIAN(2,1)/DETJA
DSHAP1=MATMUL(AINVJ,DSHAP0)
AMASS=MATMUL(TRANSPOSE(SHAP),SHAP)
AMASS=AMASS*RO
DO I=1,4
B(1,(I-1)*2+1)=DSHAP1(1,I)
B(2,(I-1)*2+2)=DSHAP1(2,I)
B(3,(I-1)*2+1)=DSHAP1(2,I)
B(3,(I-1)*2+2)=DSHAP1(1,I)
END DO
AA=MATMUL(TRANSPOSE(B),DE)
CC=MATMUL(AA,B)
AK=AK+CC*WEIGHT(II,1)*WEIGHT(JJ,1)*DETJA
END DO
END DO
IF (LFLAGS(3).EQ.4) THEN
AMATRX =AMASS
END IF
IF (LFLAGS(3).EQ.1) THEN
C NORMAL INCREMENTATION
IF (LFLAGS(1).EQ.1 .OR. LFLAGS(1).EQ.2) THEN
C *STATIC
AMATRX =AK
DO I=1,8
DO J=1,8
RHS(I,1)=RHS(I,1)-AMATRX(I,J)*U(J)
END DO
END DO
DO I=1,8
DO J=1,8
ENERGY(2)=ENERGY(2)+0.5*U(I)*AMATRX(I,J)*U(J)
END DO
END DO
END IF
END IF

RETURN
END

‫ به زیربرنامه باال ارج اع داده‬1 ‫ در شکل‬1 ‫در این مثال المان‬


-‫ نتایج متقارن بدست آمده در این تحلیل ب رای گ ره‬.‫شده است‬
.‫ ص حت برنام ه ف وق را تایی د میکن د‬، 9 ‫ و‬3 ‫ و ی ا‬8 ‫ و‬2 ‫ه ای‬
‫آشنایی و‬ ‫‪368‬‬
‫طرز کار با نرم افزار ‪ABAQUS‬‬

‫(بارگذاری یکنواخت در راستای ‪ x‬بر سمت راست ص فحه اعم ال‬


‫شده است و سمت چپ کامال ً ثابت است‪).‬‬

‫جدول ‪ 4-19‬نتایج تحلیل‬


‫شماره گره‬ ‫‖‪‖U‬‬ ‫‪U‬‬ ‫‪x‬‬ ‫‪U‬‬ ‫‪y‬‬

‫‪2‬‬ ‫‪1.98403E-03‬‬ ‫‪1.95182E-03‬‬ ‫‪356.035E-06‬‬

‫‪8‬‬ ‫‪1.98403E-03‬‬ ‫‪1.95182E-03‬‬ ‫‪356.035E-06-‬‬


‫‪3‬‬ ‫‪3.93014E-03‬‬ ‫‪3.91996E-03‬‬ ‫‪282.727E-06‬‬

‫‪9‬‬ ‫‪3.93014E-03‬‬ ‫‪3.91996E-03‬‬ ‫‪282.727E-06-‬‬


‫زیر برنامه نویسی در ‪ABAQUS‬‬
‫‪369‬‬

‫تعری‪88‬ف ‪ amplitude‬وابس‪88‬ته ب‪88‬ه مق‪88‬دار سنس‪88‬ور ب‪88‬ا کم‪88‬ک‬


‫زیربرنامه ‪VUAMP‬‬
‫زیربرنامه ‪ VUAMP‬برای مش خص ک ردن مق دار ‪ amplitude‬ی ک‬
‫بارگذاری بکار می رود‪ .‬امتیاز ویژه این زیربرنامه‪ ،‬توان استفاده از‬
‫سنسور است‪ .‬بنابراین با ق رار دادن سنس ور در ی ک نقط ه‪ ،‬می‪-‬‬
‫ت وان ‪ amplitude‬بارگ ذاری در ی ک نقط ه خ اص را وابس ته ب ه‬
‫پارامتری در یک نقطه دیگر کرد‪ .‬در این بخش ب ه بررس ی نک ات‬
‫مهم این زیربرنامه ک اربردی خ واهیم پ رداخت‪ .‬این بخش ش امل‬
‫دو قس مت اس ت‪ .‬در قس مت اول چگ ونگی تعری ف سنس ور و‬
‫همچ نین بک ارگیری زیربرنام ه ‪ VUAMP‬بی ان خواه د ش د و در‬
‫قسمت دوم طریقه نوشتن زیربرنامه توضیح داده خواهد شد‪.‬‬
‫‪VUAMP‬‬ ‫مشخص کردن سنسور و ‪ amplitude‬وابسته به زیربرنامه‬
‫در این بخش ب ا ارائ ه ی ک مث ال ب ه نح وه مش خص ک ردن‬
‫سنسور و ‪ amplitude‬وابسته به زیربرنامه ‪ VUAMP‬میپردازیم‪ .‬برای‬
‫این منظور ابتدا روند آماده سازی ی ک م دل توض یح داده خواه د‬
‫ش د‪ .‬س پس مراح ل تعری ف سنس ور و ‪ amplitude‬بط ور جداگان ه‬
‫توضیح داده خواهد شد‪.‬‬
‫فرض کنید که بر یک نقطه از صفحهای با ابعاد ‪ 25×25‬م تر‬
‫مربع بارگذاری متمرکز نیرویی وجود دارد ( نقطه ‪ 1‬از شکل ‪-19‬‬
‫‪ .) 23‬میخواهیم در نقطه شماره ‪ 2‬یک بارگذاری جابجایی اعمال‬
‫ک نیم ب ه گون های ک ه مق دار آن عکس مق دار جابج ایی نقط ه ‪1‬‬
‫باشد‪.‬‬

‫شکل ‪ 23-19‬بارگذاری متمرکز نیرویی و بارگذاری جابجایی‬

‫برای این منظور یک صفحه با ابعاد گفته شده در قسمت ‪Part‬‬


‫‪ module‬را کش یده و جنس آن را از ف والد تع یین کنی د‪ .‬در ‪Step‬‬
‫‪ module‬نوع ‪ Step‬را ‪ Dynamic,Explicit‬انتخ اب ک رده و ‪ Time period‬را‬
‫آشنایی و‬ ‫‪370‬‬
‫طرز کار با نرم افزار ‪ABAQUS‬‬

‫‪ 0.5‬تعیین کنید‪ .‬در ‪ Load module‬هر شش درجه آزادی سمت چپ‬


‫ص فحه را ص فر تع یین کنی د‪ .‬از مس یر زی ر ی ک ‪ amplitude‬ب ا‬
‫مشخصات نشان داده شده در شکل ‪ 24-19‬تعریف کنید‪.‬‬
‫‪Load Module: Tools→ amplitude→ Creat→ Type: Periodic‬‬

‫شکل ‪ 24-19‬تعریف ‪amplitude‬‬

‫ب ا اس تفاده از ‪ amplitude‬تعری ف ش ده ی ک ن یروی متمرک ز‬


‫‪ 10000‬نیوت نی در مک ان نش ان داده ش ده در ش کل ‪23-19‬‬
‫اعمال کنید‪.‬‬
‫در ‪ Mesh Module‬در مسیر ‪ …Mesh→ Controls‬تکنیک مشزنی را‬
‫‪ Structured‬انتخاب کرده و از مس یر ‪ …Seed→ Part‬ان دازه تقری بی‬
‫مش را ‪ 0.4‬انتخاب کنید و در انتها مشبندی را انجام دهی د‪ .‬ح ال‬
‫ب رای تعری ف سنس ور و ‪ amplitude‬وابس ته ب ه زیربرنام ه ‪VUAMP‬‬
‫مراحل زیر را انجام دهید‪.‬‬
‫تعریف سنسور برای زیر برنامه ‪VUAMP‬‬
‫در ماژول ‪ Step‬و از طریق مسیر زی ر ی ک ‪ Set‬تعری ف ک رده و‬
‫نقطه شماره ‪ 1‬ک ه در ش کل ‪ 23-19‬نش ان داده ش ده اس ت را‬
‫انتخاب کنید‪.‬‬
‫یا ‪Step module: Tools→ set→ Create …→ Name:Set-1; Type: Geometry‬‬
‫‪node‬‬
‫نوع ‪ set‬میتواند ‪ Geometry‬و یا ‪ node‬باشد‪ .‬البت ه اگ ر م دل مش‬
‫بن دی نش ده باش د نمیت وان گزین ه ‪ node‬را انتخ اب ک رد‪ .‬بع د از‬
‫تعریف ‪ ، set‬از طریق مسیر زیر و با توجه به تنظیمات شکل ‪-19‬‬
‫‪ 25‬میتوان سنسور را تعریف نمود‪:‬‬
‫زیر برنامه نویسی در ‪ABAQUS‬‬
‫‪371‬‬

‫‪Step module: Output→ History output requsts→ Create→ Name: H-Output-‬‬


‫‪2→ Countinue→ Domain: Set : Set-1; Output Variables: U3; Include sensor‬‬
‫‪when available‬‬

‫شکل ‪ 25-19‬تعریف سنسور برای زیر برنامه ‪VUAMP‬‬

‫در تنظیمات شکل ‪ 25-19‬باید دقت داشت ک ه سنس ور تنه ا‬


‫میتوان د حام ل ی ک مق دار باش د‪ .‬عالوه ب ر این مق ادیری مانن د‬
‫کرنش نمیتوانند به عنوان سنسور استفاده شوند‪.‬‬
‫با تایید پنجره شکل ‪ 25-19‬فرآیند تعری ف سنس ور پای ان می‪-‬‬
‫پذیرد‪ .‬هنگام حل‪ ،‬آباکوس مقدار پارامتر تعریف شده در خروجی‬
‫را به همراه نام خروجی به زیربرنام ه خواه د داد‪ .‬در ی ک تحلی ل‬
‫میتوان چندین سنسور تعریف کرده و از آنها استفاده نمود‪.‬‬
‫تعریف ‪ amplitude‬وابسته به زیربرنامه ‪VUAMP‬‬
‫از طریق مسیر زیر و با توجه به شکل ‪ 26-19‬ی ک ‪Amplitude‬‬
‫ایجاد کنید‪:‬‬
‫‪Load Module: Tools→ Amplitude→ Creat→ Type:User‬‬
‫آشنایی و‬ ‫‪372‬‬
‫طرز کار با نرم افزار ‪ABAQUS‬‬

‫شکل ‪ 26-19‬تعریف ‪ Amplitude‬برای استفاده از ‪VUAMP‬‬

‫در پنج ره ‪( Edit Amplitude‬ش کل ‪ )27-19‬میت وان تع داد‬


‫متغیرهایی که باید در زیربرنام ه ذخ یره ش وند را مش خص ک رد‪.‬‬
‫این امکان در برخی از کاربردهای ‪ VUAMP‬ک ه در ه ر زم ان بای د‬
‫چند متغیر برای استفاده در بازه زمانی بعد ذخیره ش وند‪ ،‬بس یار‬
‫مهم است‪ .‬در مثال مورد بررسی تعداد این متغیرها صفر است‪.‬‬
‫با تایید پنجره شکل ‪ 27-19‬فرایند تعری ف ‪ amplitude‬پای ان می‪-‬‬
‫پذیرد‪ .‬ح ال میت وان این ‪ amplitude‬را ب رای بارگ ذاری م ورد نظ ر‬
‫اس تفاده ک رد‪ .‬در مث ال م ورد بررس ی‪ ،‬در ‪ Load Module‬ی ک‬
‫بارگذاری جابجایی با کمک ‪ amplitude‬تعریف شده‪ ،‬با مقدار واحد و‬
‫در جهت ‪ 3‬تعریف کنید‪.‬‬

‫شکل ‪ 27-19‬تعریف ‪ Amplitude‬برای استفاده از ‪VUAMP‬‬

‫‪VUAMP‬‬‫نوشتن زیربرنامه‬
‫ب ه قس مت ‪ Abaqus User Subroutines Reference Manual‬در ‪help‬‬
‫نرم افزار مراجعه کرده و در بخش مربوط به ‪ ،VUAMP‬زیربرنامه‬
‫نمون ه را از قس مت ‪ User subroutine interface‬ک پی ک رده و در‬
‫زیر برنامه نویسی در ‪ABAQUS‬‬
‫‪373‬‬

‫ویرایشگر ‪ fortran‬قرار دهید‪ .‬متاسفانه متن موجود ن اقص ب وده و‬


‫برخی آرایهه ای م ورد اس تفاده در زیربرنام ه تعری ف نش دهان د‪.‬‬
‫بنابراین خطوط زیر را به زیربرنامه اضافه کنید‪.‬‬
‫)‪dimension sensorValues(nSensor), svars(nSvars‬‬
‫)‪character*80 sensorNames(nSensor‬‬
‫‪character*80 ampName‬‬
‫بنابراین فایل زیر بدست خواهد آمد‪:‬‬
‫آشنایی و‬ ‫‪374‬‬
‫طرز کار با نرم افزار ‪ABAQUS‬‬

‫قب ل از اص الح فای ل بدس ت آم ده‪ ،‬ب ه بررس ی اجم الی‬


‫پارامتره ای مهم میپ ردازیم‪ .‬مط ابق رون د گفت ه ش ده ب رای‬
‫زیربرنامهها‪ ،‬ابتدا به بررسی پارامتر ذکر شده در قسمت ‪Variable‬‬
‫‪ to be defined‬میپردازیم‪ .‬پارامتر ‪ AmpValueNew‬تنها پارامتری است‬
‫که در زیربرنامه ‪ VUAMP‬باید تعیین گ ردد‪ .‬مق دار این پ ارامتر ب ه‬
‫عنوان ‪ amplitude‬در بارگذاری (جابجایی و یا ن یرویی) اس تفاده می‪-‬‬
‫شود‪ .‬با توجه ب ه اینک ه معم وال ً از سنس ور در زیربرنامه ‪VUAMP‬‬
‫استفاده میشود‪ ،‬بنابراین بررسی متغیره ای مرب وط ب ه سنس ور‬
‫اهمیّت زیادی دارد‪.‬‬
‫همانگونه که در بخش قبل گفت ه ش د‪ ،‬سنس ور ی ک خ روجی‬
‫است که در‪ Step module→ Output→ historyoutput Requests‬تعریف می‪-‬‬
‫شود‪ .‬نام خروجی درخواست ش ده ن ام سنس ور ب وده و توس ط‬
‫آرایه ‪ sensorNames‬به زیربرنامه داده میشود‪ .‬مقدار سنسور نیز در‬
‫آرایه ‪ sensorValues‬ذخیره شده است‪.‬‬
‫ً‬
‫در هنگام اس تفاده از سنس ورها‪ ،‬معم وال مق دار سنس ور ب ر‬
‫اساس نام سنسور مورد نظ ر ک اربر اس ت‪ .‬بن ابراین در ص ورت‬
‫وجود تعداد زیاد سنس ور‪ ،‬نیازمن د ت ابعی ب رای جس تجو هس تیم‪.‬‬
‫برای این منظور آباکوس دو تابع را ک ه از نظ ر محاس باتی بهین ه‬
‫هستند برای استفاده در اختیار ک اربر ق رار داده اس ت‪ .‬ت ابع اول‬
‫ک ه ‪ IVGETSENSORID‬ن ام دارد‪ ،‬ش ماره ان دیس ی ک سنس ور را‬
‫مشخص میکند‪ .‬دستورات زی ر نح وه اس تفاده از این سنس ور را‬
‫مشخص میکنند‪:‬‬
‫) ‪" ", jSensorLookUpTable‬نام سنسور ( ‪i = IVGETSENSORID‬‬
‫)‪Value = sensorValues(i‬‬
‫در خط اول دستورات فوق‪ ،‬پوینتر ‪ jSensorLookUpTable‬توس ط‬
‫آباکوس تعیین میشود و بنابراین نیازی به تنظیم ات ک اربر ن دارد‪.‬‬
‫خروجی تابع ‪ IVGETSENSORID‬که اندیس سنسور مورد نظر است‬
‫در متغیر ‪ i‬ذخیره خواهد شد‪ .‬سپس در خ ط دوم مق دار سنس ور‬
‫از آرایه ‪ sensorValues‬بدست خواهد آمد‪.‬‬
‫تابع دوم که ‪ VGETSENSORVALUE‬نام دارد‪ ،‬مقدار یک سنسور‬
‫را مشخص میکند‪ .‬این تابع بهصورت زیر استفاده میشود‪:‬‬
‫‪", jSensorLookUpTable,‬نام سنسور "(‪Value = VGETSENSORVALUE‬‬
‫) ‪sensorValues‬‬
‫در این تابع نیز پوینتر ‪ jSensorLookUpTable‬توسط آباکوس تعیین‬
‫میشود و بنابراین نی ازی ب ه تنظیم ات ک اربر ن دارد‪ .‬خ روجی این‬
‫تابع‪ ،‬مقدار سنسوری است که نام آن مشخص شده است‪.‬‬
‫زیر برنامه نویسی در ‪ABAQUS‬‬
‫‪375‬‬

‫استفاده از س ایر پارامتره ای این زیربرنام ه وابس ته ب ه نی از‬


‫کاربر است‪ .‬به عنوان مثال در صورتی که ک اربر نی از ب ه ذخ یره‬
‫پارامتری برای استفاده در مرحله زمانی بعد داشته باشد‪ ،‬میتواند‬
‫از آرایه ‪ svars‬استفاده کند‪ .‬ابعاد این آرایه هنگام تعری ف ‪amplitude‬‬
‫در واسط گرافیکی تع یین میگ ردد(ش کل ‪ .)27-19‬س ایر م وارد‬
‫مربوط به این زیربرنامه را کاربر میتواند به کمک ‪ help‬آباکوس در‬
‫صورت نیاز مطالعه کند‪.‬‬
‫در مثال مورد بررسی‪ ،‬میزان جابجایی نقطه ‪ 1‬در جهت ‪ 3‬به‬
‫عنوان سنسور تعریف شده است‪ .‬هدف از این زیربرنامه تعری ف‬
‫‪ amplitude‬به اندازه عکس مقدار سنسور است‪ .‬بنابراین ب ا ف رض‬
‫اینکه نام سنسور ‪ H-OUTPUT-2‬است‪ ،‬برنام ه زی ر بدس ت خواه د‬
‫آمد‪.‬‬
‫آشنایی و‬ ‫‪376‬‬
‫طرز کار با نرم افزار ‪ABAQUS‬‬

‫در خ ط ‪ 31‬برنام ه ف وق‪ ،‬ت ابع ‪ VGETSENSORVALUE‬مق دار‬


‫سنسور ‪ H-OUTPUT-2‬را تعیین میکند‪ .‬به جای این ت ابع‪ ،‬میت وان از‬
‫تابع ‪ IVGETSENSORID‬نیز استفاده کرد‪.‬‬
‫با تکمیل زیربرنامه و تعری ف آدرس زیربرنام ه در پنج ره ‪Edit‬‬
‫‪ Job‬مطابق شکل ‪ ،2-19‬فرآیند استفاده از این زیر برنامه تکمی ل‬
‫خواهد شد‪.‬‬

You might also like