آموزش اسکریپت نویسی در Abaqus

26 بازدید
  • ◷ 1405/06/29
  • دیدگاه‌ها برای آموزش اسکریپت نویسی در Abaqus بسته هستند

اسکریپت نویسی در Abaqus به شما اجازه می‌دهد مدل‌سازی، تعریف خواص مواد، اعمال شرایط مرزی، مش‌بندی، اجرای تحلیل و استخراج نتایج را با استفاده از زبان پایتون انجام دهید. این قابلیت زمانی اهمیت بیشتری پیدا می‌کند که بخواهید چندین تحلیل مشابه اجرا کنید، پارامترهای مختلف را بررسی کنید یا نتایج تعداد زیادی فایل را به‌صورت خودکار استخراج کنید.

در این آموزش اسکریپت نویسی در Abaqus ابتدا با ساختار اسکریپت‌نویسی در آباکوس آشنا می‌شویم و سپس یک مدل تیر سه‌بعدی را به‌طور کامل، از مرحله ایجاد هندسه تا استخراج تنش بیشینه، با کدنویسی ایجاد می‌کنیم.

اسکریپت‌نویسی در Abaqus

اسکریپت نویسی در Abaqus چیست؟

تقریباً هر کاری که در محیط گرافیکی Abaqus/CAE انجام می‌دهید، معادل یک یا چند دستور پایتون است. برای مثال، دستورهای زیر را می‌توان با پایتون اجرا کرد:

  • ایجاد قطعه و هندسه
  • تعریف ماده و مقطع
  • مونتاژ قطعات
  • ایجاد Step تحلیلی
  • تعریف تماس و قید
  • اعمال بار و شرایط مرزی
  • ایجاد مش
  • ساخت و اجرای Job
  • باز کردن فایل نتایج ODB
  • استخراج تنش، کرنش، نیرو و جابه‌جایی
  • تولید نمودار، تصویر یا گزارش
  • اجرای مطالعات پارامتریک و بهینه‌سازی

بنابراین، اسکریپت‌نویسی فقط جایگزین کلیک‌کردن نیست؛ بلکه ابزاری برای خودکارسازی، تکرارپذیری و توسعه تحلیل‌های مهندسی است.

چرا باید اسکریپت نویسی در Abaqus را یاد بگیریم؟

فرض کنید می‌خواهید یک تیر را برای ۳۰ مقدار مختلف ضخامت تحلیل کنید. در روش گرافیکی باید هر بار ابعاد مدل را تغییر دهید، مش ایجاد کنید، تحلیل را اجرا کنید و نتیجه را یادداشت کنید. این فرایند علاوه بر زمان‌بر بودن، احتمال خطای انسانی زیادی دارد.

با یک اسکریپت نویسی در Abaqus می‌توان این کار را داخل یک حلقه قرار داد:

thicknesses = [5.0, 7.5, 10.0, 12.5, 15.0]

for thickness in thicknesses:
    # ایجاد مدل
    # اجرای تحلیل
    # استخراج نتیجه
    pass

مهم‌ترین کاربردهای اسکریپت نویسی در Abaqus عبارت‌اند از:

  • تحلیل پارامتریک
  • خودکارسازی مدل‌سازی‌های تکراری
  • پردازش تعداد زیادی فایل ODB
  • استخراج خودکار خروجی‌ها
  • بهینه‌سازی سازه
  • ساخت پلاگین برای Abaqus/CAE
  • کاهش خطاهای ناشی از کار دستی
  • مستندسازی دقیق مراحل مدل‌سازی

پیش‌نیازهای یادگیری اسکریپت نویسی در Abaqus

برای شروع لازم نیست برنامه‌نویس حرفه‌ای باشید؛ اما آشنایی با موارد زیر بسیار مفید است:

  • متغیرها
  • رشته‌ها و اعداد
  • لیست و دیکشنری
  • شرط if
  • حلقه‌های for و while
  • تعریف تابع
  • خواندن و نوشتن فایل
  • مدیریت خطا با try و except

یک مثال ساده پایتون اسکریپت نویسی در Abaqus:

length = 100.0
width = 20.0
height = 10.0

volume = length * width * height

print("Volume =", volume)

نسخه پایتون اسکریپت نویسی در Abaqus

نسخه پایتون داخلی آباکوس به نسخه نرم‌افزار بستگی دارد. نسخه‌های قدیمی‌تر معمولاً از Python 2.7 استفاده می‌کنند، در حالی که نسخه‌های جدیدتر آباکوس به Python 3 مهاجرت کرده‌اند.

برای سازگاری بیشتر بهتر است:

  • از print() با پرانتز استفاده کنید.
  • در محاسبات از اعداد اعشاری مانند 2.0 استفاده کنید.
  • قبل از استفاده از کتابخانه‌های خارجی، سازگاری آن‌ها را بررسی کنید.

برای مثال، نتیجه تقسیم زیر ممکن است در Python 2 و Python 3 متفاوت باشد:

result = 5.0 / 2.0
print(result)

شناخت ساختار آباکوس

برای اسکریپت‌نویسی مؤثر باید سه مفهوم اصلی را بشناسید:

۱. پایگاه داده مدل یا mdb

متغیر mdb مخفف Model Database است و اطلاعات مربوط به مدل‌سازی را نگهداری می‌کند؛ از جمله:

  • Model
  • Part
  • Material
  • Section
  • Assembly
  • Step
  • Load
  • Boundary Condition
  • Mesh
  • Job

برای دسترسی به مدل پیش‌فرض می‌توان نوشت:

model = mdb.models['Model-1']

برای دسترسی به یک قطعه:

part = mdb.models['Model-1'].parts['Beam']

۲. متغیر session

از session بیشتر برای مدیریت نمایش و نتایج استفاده می‌شود، مانند:

  • Viewport
  • باز کردن ODB
  • ایجاد XY Data
  • تغییر نحوه نمایش کانتور
  • گرفتن تصویر از نتایج
  • تولید گزارش

مثال:

viewport = session.viewports['Viewport: 1']

۳. فایل نتایج یا odb

فایل‌هایی با پسوند .odb نتایج تحلیل را ذخیره می‌کنند. اطلاعاتی مانند موارد زیر از ODB خوانده می‌شوند:

  • تنش
  • کرنش
  • جابه‌جایی
  • نیروی عکس‌العمل
  • انرژی
  • متغیرهای تاریخچه‌ای

نمونه باز کردن یک فایل ODB:

from odbAccess import openOdb

odb = openOdb(path='BeamJob.odb')

ساختار درختی اشیاء در آباکوس

اشیاء در آباکوس ساختاری سلسله‌مراتبی دارند. برای مثال:

mdb.models['Model-1']
mdb.models['Model-1'].parts['Beam']
mdb.models['Model-1'].materials['Steel']
mdb.models['Model-1'].rootAssembly

می‌توان این مسیر را به‌صورت زیر خواند:

  • وارد پایگاه داده مدل شو.
  • مدل Model-1 را انتخاب کن.
  • مجموعه قطعات را باز کن.
  • قطعه Beam را بردار.

برای خواناتر شدن کد، بهتر است اشیاء پراستفاده را در متغیر ذخیره کنید:

model = mdb.models['Model-1']
part = model.parts['Beam']
assembly = model.rootAssembly

این روش بهتر از تکرار مسیرهای طولانی است.

ماژول‌های اصلی آباکوس

هر مرحله از مدل‌سازی در محیط CAE یک ماژول دارد:

ماژولکاربرد
Partایجاد هندسه
Propertyتعریف ماده و مقطع
Assemblyمونتاژ
Stepتعریف نوع تحلیل
Interactionتماس و قید
Loadبارگذاری و شرایط مرزی
Meshمش‌بندی
Jobاجرای تحلیل
Visualizationمشاهده و استخراج نتایج

در ابتدای بیشتر اسکریپت‌های مدل‌سازی، دستورات زیر دیده می‌شوند:

from abaqus import *
from abaqusConstants import *
from caeModules import *
import regionToolset
import mesh

ثابت‌هایی مانند THREE_D، ON، OFF و DEFORMABLE_BODY از abaqusConstants وارد می‌شوند.

dimensionality = THREE_D
type = DEFORMABLE_BODY

این ثابت‌ها نباید داخل کوتیشن قرار بگیرند.

چگونه دستورات آباکوس را پیدا کنیم؟

قرار نیست تمام توابع Abaqus Scripting را حفظ کنید. چند روش عملی برای پیدا کردن دستورات وجود دارد.

۱. فایل Replay

هنگام کار با Abaqus/CAE معمولاً فایلی با نام زیر در پوشه کاری ساخته می‌شود:

abaqus.rpy

دستورات بسیاری از فعالیت‌های شما در این فایل ثبت می‌شوند. بنابراین می‌توانید:

  • عملیات موردنظر را یک‌بار با رابط گرافیکی انجام دهید.
  • فایل abaqus.rpy را باز کنید.
  • دستورهای مرتبط را پیدا کنید.
  • خطوط اضافی مربوط به زوم، چرخش و نمایش را حذف کنید.
  • اعداد ثابت را با متغیر جایگزین کنید.

۲. فایل Journal

فایل Journal معمولاً پسوند .jnl دارد و دستورهای مربوط به تغییرات مدل را ثبت می‌کند. این فایل برای فهمیدن ساختار کد بسیار مفید است.

۳. ابزار Macro Manager

در Abaqus/CAE از مسیر زیر می‌توان یک Macro ضبط کرد:

File → Macro Manager

بعد از شروع ضبط، عملیات موردنظر را انجام دهید و ضبط را متوقف کنید. آباکوس کد پایتون مربوط به عملیات را ذخیره می‌کند.

۴. مستندات رسمی

مرجع اصلی توابع، مستندات Abaqus Scripting Reference Guide است. در این مرجع می‌توانید ورودی‌ها، خروجی‌ها و مثال‌های هر متد را پیدا کنید.

روش‌های اجرای اسکریپت

اجرا از داخل Abaqus/CAE

از مسیر زیر استفاده کنید:

File → Run Script

این روش برای یادگیری و آزمایش اولیه مناسب است.

اجرا با رابط گرافیکی

در Command Prompt یا ترمینال:

abaqus cae script=beam_script.py

در این حالت محیط CAE باز می‌شود و اسکریپت اجرا خواهد شد.

اجرا بدون رابط گرافیکی

abaqus cae noGUI=beam_script.py

این روش برای اجرای خودکار، تحلیل‌های دسته‌ای و استفاده روی سرور مناسب است.

  • بهتر است دستور را از پوشه‌ای اجرا کنید که فایل اسکریپت در آن قرار دارد یا مسیر کامل فایل را وارد کنید.

اجزای یک اسکریپت کامل آباکوس

یک اسکریپت مدل‌سازی معمولاً مراحل زیر را طی می‌کند:

  • تعریف پارامترها
  • ایجاد Model
  • ایجاد Sketch
  • ساخت Part
  • تعریف Material
  • تعریف Section
  • اختصاص Section
  • ایجاد Assembly
  • تعریف Step
  • اعمال بار و شرایط مرزی
  • مش‌بندی
  • ایجاد Job
  • اجرای تحلیل
  • باز کردن ODB
  • استخراج و ذخیره نتایج

اکنون همه این مراحل را در یک مثال عملی بررسی می‌کنیم.

مثال عملی اسکریپت نویسی در Abaqus: تحلیل یک تیر سه‌بعدی یک‌سرگیردار

در این مثال یک تیر مستطیلی فولادی ایجاد می‌کنیم. یک انتهای تیر کاملاً گیردار است و روی سطح بالایی آن فشار یکنواخت اعمال می‌شود.

مشخصات مدل

ابعاد تیر بر حسب میلی‌متر:

طول: 100 mm
ارتفاع: 10 mm
عرض: 20 mm

خواص ماده:

E = 210000 MPa
ν = 0.3

بارگذاری:

فشار روی سطح بالا: 1 MPa

با فرض استفاده از سیستم واحدهای mm-N-s:

  • طول: میلی‌متر
  • نیرو: نیوتن
  • تنش و مدول الاستیسیته: مگاپاسکال

آباکوس سیستم واحد داخلی مشخصی ندارد و مسئولیت سازگاری واحدها بر عهده کاربر است.

کد کامل تحلیل تیر

کد زیر را در فایلی مانند beam_script.py ذخیره کنید:

# -*- coding: utf-8 -*-
# -------------------------------------------------

odb_path = job_name + '.odb'
odb = openOdb(path=odb_path)

last_frame = odb.steps['LoadStep'].frames[-1]

# Stress field
stress_field = last_frame.fieldOutputs['S']
mises_field = stress_field.getScalarField(invariant=MISES)

max_mises = max(
    value.data for value in mises_field.values
)

# Displacement field
displacement_field = last_frame.fieldOutputs['U']

max_displacement = max(
    (
        value.data[0] ** 2 +
        value.data[1] ** 2 +
        value.data[2] ** 2
    ) ** 0.5
    for value in displacement_field.values
)

print('Maximum von Mises stress =', max_mises)
print('Maximum displacement =', max_displacement)

# -------------------------------------------------
# 17. Write results to text file
# -------------------------------------------------

with open('BeamResults.txt', 'w') as result_file:
    result_file.write(
        'Maximum von Mises stress = %g MPa\n' % max_mises
    )
    result_file.write(
        'Maximum displacement = %g mm\n' % max_displacement
    )

odb.close()

print('Analysis and result extraction completed.')

برای اجرای این کد از خط فرمان بنویسید:

abaqus cae noGUI=beam_script.py

پس از پایان تحلیل، فایل‌های زیر ایجاد می‌شوند:

BeamAutomation.cae
BeamJob.odb
BeamJob.inp
BeamJob.msg
BeamJob.dat
BeamJob.sta
BeamResults.txt

بررسی مرحله‌به‌مرحله مثال اسکریپت نویسی در Abaqus

ایجاد Sketch

در این قسمت یک مستطیل در صفحه XY ایجاد شده است:

sketch.rectangle(
    point1=(0.0, 0.0),
    point2=(length, height)
)

مختصات مستطیل با پارامترهای length و height مشخص شده‌اند. مزیت این روش آن است که برای تغییر ابعاد، فقط کافی است مقدار متغیرها را در ابتدای کد تغییر دهیم.

تبدیل Sketch به جسم سه‌بعدی

part.BaseSolidExtrude(
    sketch=sketch,
    depth=width
)

مستطیل به‌اندازه width در راستای عمق اکسترود می‌شود و یک تیر سه‌بعدی به وجود می‌آید.

 

تعریف خواص الاستیک

material.Elastic(
    table=((elastic_modulus, poisson_ratio),)
)

ترتیب ورودی‌های جدول الاستیک عبارت است از:

مدول یانگ، ضریب پواسون

ویرگول انتهای تاپل داخلی مهم است:

((210000.0, 0.3),)

آباکوس برای بسیاری از خواص ماده انتظار یک «جدول» دارد، حتی اگر جدول فقط یک ردیف داشته باشد.

انتخاب سطح گیردار

fixed_face = instance.faces.findAt(
    ((0.0, height / 2.0, width / 2.0),)
)

متد findAt سطحی را پیدا می‌کند که نقطه داده‌شده روی آن قرار داشته باشد. نقطه انتخابی در مرکز سطح انتهایی تیر با مختصات x=0 قرار دارد.

اعمال فشار

model.Pressure(
    name='TopPressure',
    createStepName='LoadStep',
    region=pressure_region,
    magnitude=pressure_value
)

فشار روی سطح بالای تیر اعمال شده است. جهت فشار بر اساس جهت نرمال سطح تعیین می‌شود.

اگر علامت یا جهت بار مطابق انتظار نبود، جهت نرمال سطح و استفاده از side1Faces یا side2Faces را بررسی کنید.

تعریف نوع المان

element_type = mesh.ElemType(
    elemCode=C3D8R,
    elemLibrary=STANDARD
)

المان C3D8R یک المان سه‌بعدی هشت‌گرهی با انتگرال‌گیری کاهش‌یافته است.

  • C: المان پیوسته
  • 3D: سه‌بعدی
  • 8: دارای هشت گره
  • R: انتگرال‌گیری کاهش‌یافته

برای مسائل حساس باید کیفیت مش، پدیده Hourglass و استقلال پاسخ از اندازه مش بررسی شود.

انتخاب هندسه در اسکریپت؛ یکی از مهم‌ترین مباحث

در اسکریپت‌های آباکوس معمولاً باید Face، Edge، Cell، Node یا Element انتخاب شود. چند روش متداول وجود دارد.

انتخاب با findAt

face = part.faces.findAt(
    ((50.0, 10.0, 10.0),)
)

این روش ساده است، اما نقطه باید دقیقاً روی هندسه قرار داشته باشد.

انتخاب با Bounding Box

faces = part.faces.getByBoundingBox(
    xMin=-0.001,
    xMax=0.001,
    yMin=-1.0,
    yMax=height + 1.0,
    zMin=-1.0,
    zMax=width + 1.0
)

این روش تمام سطوح داخل محدوده مشخص‌شده را انتخاب می‌کند و در مدل‌های پارامتریک معمولاً از شماره‌گذاری هندسی پایدارتر است.

چرا استفاده از شماره Face خطرناک است؟

کدی مانند زیر ممکن است در مدل اولیه کار کند:

face = part.faces[3]

اما با تغییر ابعاد، ایجاد Partition یا اصلاح هندسه، ترتیب Faceها ممکن است تغییر کند. در نتیجه اسکریپت سطح اشتباهی را انتخاب می‌کند.

بهتر است انتخاب بر اساس یکی از موارد زیر باشد:

  • مختصات هندسی
  • Bounding Box
  • Setهای از قبل تعریف‌شده
  • ویژگی‌های توپولوژیک

استفاده از Set و Surface

در مدل‌های بزرگ بهتر است نواحی مهم را نام‌گذاری کنید:

part.Set(
    name='ALL_CELLS',
    cells=part.cells[:]
)

ایجاد مجموعه برای سطح گیردار:

fixed_faces = part.faces.getByBoundingBox(
    xMin=-0.001,
    xMax=0.001,
    yMin=-0.001,
    yMax=height + 0.001,
    zMin=-0.001,
    zMax=width + 0.001
)

part.Set(
    name='FIXED_FACE',
    faces=fixed_faces
)

Setها مزایای زیادی دارند:

  • خوانایی بیشتر کد
  • استفاده مجدد در بارگذاری و خروجی‌گیری
  • کاهش احتمال انتخاب اشتباه
  • دسترسی ساده‌تر در فایل ODB

استخراج نتایج از فایل ODB

ساختار کلی فایل نتایج به این صورت است:

ODB
└── Step
    └── Frame
        └── FieldOutput
            └── Value

برای دسترسی به آخرین فریم:

step = odb.steps['LoadStep']
last_frame = step.frames[-1]

برای خواندن جابه‌جایی:

displacement = last_frame.fieldOutputs['U']

برای خواندن تنش:

stress = last_frame.fieldOutputs['S']

استخراج بیشینه تنش ون‌میزز

mises = stress.getScalarField(invariant=MISES)

maximum_stress = max(
    value.data for value in mises.values
)

استخراج بیشینه مؤلفه جابه‌جایی عمودی

اگر راستای عمودی مدل محور Y باشد، مؤلفه دوم بردار جابه‌جایی یعنی U2 موردنظر است:

u_field = last_frame.fieldOutputs['U']

maximum_u2 = max(
    abs(value.data[1]) for value in u_field.values
)

print('Maximum absolute U2 =', maximum_u2)

استخراج نتیجه از یک Set مشخص

اگر در ODB یک Node Set به نام TIP_NODES وجود داشته باشد:

tip_set = odb.rootAssembly.nodeSets['TIP_NODES']

tip_displacement = u_field.getSubset(
    region=tip_set
)

این روش بهتر از بررسی تمام گره‌های مدل است.

 

تبدیل مثال به تحلیل پارامتریک

برای بررسی چند مقدار فشار می‌توان بخش ساخت و اجرای تحلیل را داخل تابع قرار داد:

pressure_values = [0.5, 1.0, 1.5, 2.0]

for pressure in pressure_values:
    job_name = 'Beam_P_' + str(pressure).replace('.', '_')

    print(
        'Running analysis for pressure =',
        pressure
    )

    # ایجاد مدل، تعریف فشار، اجرای Job
    # و استخراج نتیجه

روش حرفه‌ای‌تر این است که مدل‌سازی را به چند تابع تقسیم کنیم:

def create_geometry(model, length, height, width):
    pass


def define_material(model, elastic_modulus, poisson_ratio):
    pass


def apply_loads(model, pressure):
    pass


def create_mesh(part, mesh_size):
    pass


def extract_results(odb_path):
    pass

تقسیم کد به تابع باعث می‌شود:

  • خطایابی ساده‌تر شود.
  • بتوان بخش‌های مختلف را دوباره استفاده کرد.
  • تغییر پارامترها راحت‌تر باشد.
  • اسکریپت خوانایی بیشتری داشته باشد.

دریافت ورودی از خط فرمان

به‌جای تغییر دستی متغیرهای داخل کد، می‌توان پارامترها را هنگام اجرا ارسال کرد:

abaqus cae noGUI=beam_script.py -- 100 20 10 1

در کد:

import sys

length = float(sys.argv[-4])
width = float(sys.argv[-3])
height = float(sys.argv[-2])
pressure_value = float(sys.argv[-1])

استفاده از ایندکس‌های منفی به این دلیل مفید است که Abaqus ممکن است آرگومان‌های دیگری را نیز به sys.argv اضافه کند.

برای جلوگیری از خطا بهتر است تعداد آرگومان‌ها را کنترل کنید:

if len(sys.argv) < 5:
    raise ValueError(
        'Length, width, height and pressure are required.'
    )

مدیریت خطا در اسکریپت نویسی در Abaqus

در تحلیل‌های خودکار ممکن است Job به دلایل مختلف شکست بخورد. بنابراین بهتر است بخش‌های حساس را در try و except قرار دهید:

try:
    job.submit(consistencyChecking=OFF)
    job.waitForCompletion()

    odb = openOdb(path=job_name + '.odb')

except Exception as error:
    print('Analysis failed:')
    print(error)

همچنین قبل از باز کردن ODB وجود فایل را بررسی کنید:

odb_path = job_name + '.odb'

if not os.path.exists(odb_path):
    raise IOError(
        'ODB file was not created: ' + odb_path
    )

توجه کنید که ساخته‌شدن فایل ODB همیشه به معنی موفقیت کامل تحلیل نیست. وضعیت Job و فایل‌های زیر را نیز بررسی کنید:

  • .sta
  • .msg
  • .dat
  • .log

خطاهای رایج در اسکریپت نویسی در Abaqus

۱. پیدا نشدن سطح با findAt

خطای احتمالی:

The point could not be found

راه‌حل‌ها:

  • مطمئن شوید مختصات روی سطح قرار دارد.
  • به‌جای لبه یا رأس، نقطه‌ای در داخل سطح انتخاب کنید.
  • از getByBoundingBox استفاده کنید.
  • ترتیب محورهای هندسه را بررسی کنید.

۲. استفاده از نام اشتباه Model یا Part

mdb.models['model-1']

نام اشیاء به حروف بزرگ و کوچک حساس است. نام پیش‌فرض صحیح معمولاً چنین است:

mdb.models['Model-1']

۳. وجود Job قبلی

اگر Job هم‌نام از قبل در mdb.jobs وجود داشته باشد، ایجاد مجدد آن خطا می‌دهد:

if job_name in mdb.jobs:
    del mdb.jobs[job_name]

ممکن است فایل‌های Job قبلی نیز در پوشه موجود باشند. در پروژه‌های پارامتریک بهتر است برای هر تحلیل نام منحصربه‌فرد تولید شود.

۴. ناسازگاری واحدها

آباکوس واحدها را تشخیص نمی‌دهد. برای مثال اگر طول را بر حسب میلی‌متر وارد کنید ولی مدول یانگ را بر حسب پاسکال بدهید، جواب اشتباه خواهد بود.

یک دستگاه واحد متداول:

کمیتواحد
طولmm
نیروN
تنشMPa یا N/mm²
مدول یانگMPa
جرمtonne
زمانs

۵. استخراج نتیجه از Frame اشتباه

فریم صفر معمولاً مربوط به ابتدای Step است:

frame = odb.steps['LoadStep'].frames[0]

برای نتیجه نهایی معمولاً باید آخرین فریم را بخوانید:

frame = odb.steps['LoadStep'].frames[-1]

۶. تغییر توپولوژی مدل

اگر هندسه یا Partition تغییر کند، شماره Face، Edge و Cell ممکن است عوض شود. به همین دلیل انتخاب‌هایی مانند faces[4] در مدل‌های پارامتریک قابل اعتماد نیستند.

اصول نوشتن یک اسکریپت نویسی در Abaqus حرفه‌ای

پارامترها را در ابتدای فایل قرار دهید

LENGTH = 100.0
WIDTH = 20.0
HEIGHT = 10.0
MESH_SIZE = 5.0

از نام‌های معنادار استفاده کنید

نام مناسب:

fixed_face
top_pressure_region
maximum_mises_stress

نام نامناسب:

a
f1
temp2

کد را بخش‌بندی کنید

# Geometry
# Material
# Assembly
# Step
# Loads
# Mesh
# Job
# Post-processing

خروجی‌ها را ذخیره کنید

نتایج را فقط در کنسول چاپ نکنید. آن‌ها را در فایل متنی یا CSV بنویسید:

with open('results.csv', 'w') as output:
    output.write('Pressure,MaxStress,MaxDisplacement\n')
    output.write(
        '%g,%g,%g\n' %
        (pressure_value, max_mises, max_displacement)
    )

نام‌گذاری Job را مدیریت کنید

job_name = 'Beam_L%d_P%g' % (
    int(length),
    pressure_value
)

این کار مانع بازنویسی نتایج تحلیل‌های مختلف می‌شود.

همگرایی مش را فراموش نکنید

اسکریپت‌نویسی باعث نمی‌شود نتایج به‌طور خودکار معتبر باشند. برای بررسی همگرایی مش می‌توان چند اندازه مش را تحلیل کرد:

mesh_sizes = [10.0, 7.5, 5.0, 3.0, 2.0]

سپس تنش یا جابه‌جایی را برای هر اندازه مش ذخیره و مقایسه کنید.

مسیر پیشنهادی برای یادگیری

مرحله اول: پایتون پایه

  • متغیرها
  • لیست و دیکشنری
  • حلقه
  • شرط
  • تابع
  • فایل‌خوانی
  • مدیریت خطا

مرحله دوم: ساخت مدل ساده

  • Sketch
  • Part
  • Material
  • Section
  • Assembly
  • Step
  • Load
  • Mesh
  • Job

مرحله سوم: استخراج نتایج

  • باز کردن ODB
  • دسترسی به Step و Frame
  • خواندن Field Output
  • استخراج تنش و جابه‌جایی
  • ذخیره در CSV

مرحله چهارم: تحلیل پارامتریک

  • تغییر ابعاد
  • تغییر بار
  • تغییر ماده
  • تغییر اندازه مش
  • اجرای چند Job
  • جمع‌آوری خودکار نتایج

مرحله پنجم: مباحث پیشرفته

  • تماس
  • مدل‌سازی غیرخطی
  • تحلیل Explicit
  • ایجاد Partition خودکار
  • Subroutineها
  • اتصال آباکوس به الگوریتم‌های بهینه‌سازی
  • ساخت پلاگین و رابط گرافیکی

✅ بیشتر بخوانید: پکیج آموزشی اسکریپت نویسی در Abaqus

جمع‌بندی

اسکریپت نویسی در Abaqus ابزاری قدرتمند برای خودکارسازی تحلیل‌های اجزای محدود است. برای شروع، لازم نیست تمام دستورات API را حفظ کنید. یک مدل ساده را در محیط گرافیکی بسازید، کد ایجادشده در فایل Replay یا Macro را بررسی کنید و سپس آن را به یک اسکریپت پارامتریک تبدیل کنید.

سه مفهوم اصلی را همیشه به خاطر داشته باشید:

  • mdb برای ایجاد و مدیریت مدل
  • session برای نمایش و پردازش نتایج در CAE
  • odb برای دسترسی به خروجی‌های تحلیل

پس از تسلط بر ساخت یک مدل ساده اسکریپت نویسی در Abaqus، مهم‌ترین گام بعدی یادگیری انتخاب پایدار نواحی هندسی، اجرای تحلیل‌های پارامتریک و استخراج خودکار نتایج است. این سه مهارت، اسکریپت‌نویسی را از یک تمرین آموزشی به ابزاری کاربردی برای پروژه‌های واقعی تبدیل می‌کنند.

تماس با ما Contact us

مطالب مرتبط


0

شبکه های اجتماعی

دانشنامه تخصصی مهندسی ایران را در شبکه های اجتماعی دنبال کنید

0 0
درخواست نرم افزار
در صورتی که نیاز به مشاوره در مورد اطلاعات و اخبار نرم افزارها دارید، با ما تماس بگیرید.
    همکاران ما در سریع ترین زمان ممکن پاسخگو شما خواهند بود.