آموزش رفع Error و Warning

پیغام های صادر شده از طرف OpenSees همواره باید مورد دقت و توجه ما باشند تا متوجه شویم که آیا در روند عملیات مدلسازی و تحلیل همه چیز روبراه است، یا مشکلی وجود دارد که ما باید برای رفع آن کاری بکنیم؟

  • بعضی از این پیغام ها «صرفا جهت اطلاع»! ما صادر می شوند.

مثلا مصالح Fatigue در طول تحلیل زمانی که دچار گسیختگی شود پیغام میدهد:

“FatigueMaterial: material tag $tag failed from excessive strain”

این پیغام صرفا به ما می گوید مصالح با شناسه tag$ بدلیل وقوع کرنش بیش از حد دچار گسیختگی شده است. اما از آنجا که این اتفاق خللی در روند تحلیل بوجود نمی آورد، اجرای برنامه متوقف نمی شود. همین طور بدلیل اینکه گسیختگی این مصالح اتفاق عجیب و دور از انتظاری نیست، متن پیغام نیز کلماتی مثل Warning یا Error را که کارشان نگران کردن ماست، در خود ندارد.

  • اما دسته دوم پیغامها که به آنها هشدار یا Warning می گوییم، سعی دارند ما را از یک اتفاق غیرمنطقی و خلاف پیش بینی مطلع کنند.

به عنوان مثال، زمانی که طول یک المان zeroLength (فاصله بین گره های دو سر آن) به اندازه کافی  کوچک نباشد (به صفر نزدیک نباشد)، پیغامی به این شکل نمایش داده می شود:

“WARNING ZeroLength::setDomain(): Element $eleTag has L= $L which is greater than the tolerance”

ولی از آنجا که این وضعیت مانع ادامه روند تحلیل مدل نمی شود، اجرای برنامه همچنان ادامه می یابد.

  • دسته سوم پیغام ها، «خطاها» هستند که بدون رفع کردن آنها ادامه روند ممکن نیست و بنابراین برنامه بعد از نمایش این پیغام ها متوقف می شود.

تمرکز ما اکنون بیشتر روی خطاهای OpenSees است و سعی داریم با دسته بندی و معرفی علت و پیغام خطاهای مختلف به شما راه برطرف کردن آنها را بیاموزیم.

  • ساختار یک پیغام خطا

یک پیغام خطا معمولا شامل یک متن کلیشه ای منحصر به آن خطاست که در داخل خود اطلاعات اضافه ای نیز در خصوص مورد فعلی خطا می دهد. به همراه این متن، برنامه TCL اطلاعات دیگری به صورت سلسله مراتبی از محل وقوع خطا در داخل فایل های ما نمایش می دهد.

به مثال زیر دقت کنید:

File1.tcl

puts “b= $b”


File2.tcl

#set b 1

source File1.tcl


در صورت اجرای File2.tcl بدلیل کامنت شدن اشتباه خط اول (set b 1)، خطایی صادر می شود که طبق شکل زیر یک بخش کلیشه ای به صورت

can’t read “”: no such variable

دارد که در آن بین دو علامت “” نام متغیر مورد استفاده ما که b است قرار داده شده است تا بتوانیم مورد فعلی این خطا را به درستی شناسایی کنیم. همینطور با توجه به روند فراخوانی دستور حاوی خطا، پس از عبارت while executing، آدرس محل خطا از آخر به ابتدا (درست مثل آدرس دهی در زبان انگلیسی که در آن اول شماره پلاک، بعد نام کوچه و … و بالاخره نام شهر گفته می شود) به ما نشان داده شده است:

Command: “puts “b= $b”” –> File1.tcl, line 1 –> command: “source File1.tcl” –> File: “C:\Users\SAJalali\Desktop\tmp\File2.tcl” line: 2

برای پیدا کردن محل خطا ما باید این پیغام را از ابتدا به انتها بخوانیم:

  • برو به خط ۲ فایل “C:\Users\SAJalali\Desktop\tmp\File2.tcl”
  • از آنجا برو به خط ۱ فایل “File1.tcl”
  • دستور حاوی خطا همانجاست: puts “b= $b”

اکنون برای گفتن علت پیغام های خطا باید این پیغامها را به ۲ دسته تقسیم کنیم و در مورد هر کدام جداگانه با شما صحبت کنیم:

  • پیغام های خطای TCL

خطاهایی هستند که به دلیل وجود اشکال در دستورات برنامه نویسی TCL ظاهر می شوند و نمونه ای از آن را در بالا دیدیم.

  • پیغام های خطای OpenSees

خطاهایی هستند که به دلیل تخطی از قواعد استفاده از دستورات OpenSees صادر شده اند.