Opensees Community
umfpack2_x64.zip
نکته تکمیلی پیرامون نحوه استفاده از سیستم حل معادلات خارجی UmfPack2 (درخواستی ۷۲ نفر از عزیزان کانال):
فایل dll. بایستی در فولدر کدنویسی مربوطه باشد و UmfPack2 نیز از طریق کامند ذیل در کد اصلی سورس شود:
loadPackage umfpack2 ; # load the dll with the new commands
فایل dll. بایستی در فولدر کدنویسی مربوطه باشد و UmfPack2 نیز از طریق کامند ذیل در کد اصلی سورس شود:
loadPackage umfpack2 ; # load the dll with the new commands
Media is too big
VIEW IN TELEGRAM
هشدار که عالم به مویی بند است!🌷
سفر با ترن زندگی فراز و نشیبهای زیادی دارد،
انسان گاهی در میانهی این راه، سخت دلش میگیرد و از رفتن باز میماند!
گردنهای که هیچ، انتظارش را نداشتیم!
شاید در این لحظات، باید یادمان نرود و به یاد آوریم که زندگی، نمیتواند همیشه همان مسیر مستقیم و روشن و بی پیچ و خم باشد!
شاید باید بدانیم که بدون این پیچ و خمها؛ زندگی، اصلا زندگی نیست!
و شاید بهتر باشد تا به جای دلگیر شدن از این پیچ و خمهای پر از مه، عبور از آنها را بیاموزیم و بکوشیم تا راه خود را گم نکنیم!
سفر با ترن زندگی فراز و نشیبهای زیادی دارد،
انسان گاهی در میانهی این راه، سخت دلش میگیرد و از رفتن باز میماند!
گردنهای که هیچ، انتظارش را نداشتیم!
شاید در این لحظات، باید یادمان نرود و به یاد آوریم که زندگی، نمیتواند همیشه همان مسیر مستقیم و روشن و بی پیچ و خم باشد!
شاید باید بدانیم که بدون این پیچ و خمها؛ زندگی، اصلا زندگی نیست!
و شاید بهتر باشد تا به جای دلگیر شدن از این پیچ و خمهای پر از مه، عبور از آنها را بیاموزیم و بکوشیم تا راه خود را گم نکنیم!
فایلهای DLL، کلوچههای خوشمزهای برای برنامه نویسان حرفهای!🌷
فرمت فایل DLL مربوط به کتابخانههایی است که شامل توابع، کدها و دادههایی هستند که میتوانند به صورت همزمان توسط چندین برنامه مورد استفاده قرار بگیرند. فایل DLL یک فرمت استاندارد برای ویندوز مایکروسافت بوده و مخفف عبارت Dynamic-Link Library است. فایلهای lib و ocx و drv هم تقریبا مشابه DLL هستند. یک فایل DLL شامل توابع، کدها، منابع (تصویر، آیکون و ...) و دادههایی است که برای برنامه نویسان امکان لینک کردن و استفاده از توابع خیلی پیشرفته در کدنویسی هایشان را میسر میکند. یکی از خواص مهم فایلهای کتابخانهای DLL آن است که در یک زمان چندین برنامه میتوانند از آنها استفاده کنند درحالی که کدهایش در یک مکان ثابت قرار داشته و نیازی به گرفتن فضای بیشتر برای هر برنامه نیست. بگذارید برایتان مثالی بزنم: یک کتابخانه عمومی را فرض کنید که پر از کتابهای آشپزی و در هر یک از این کتابهای آشپزی یک دستور پخت خاصی برای قورمه سبزی نوشته شده است. افراد به کتابخانه سر زده و از آن کتابها استفاده میکنند و در نهایت چندین خورشت با طعمهایی متفاوت به دست خواهند آمد. فایلهای DLL نیز این چنین هستند؛ یعنی پر از توابع مختلف با کاربردهای متفاوتی هستند که هر یک کار خاصی را انجام میدهند و تمامی برنامهها میتوانند از آنها استفاده کنند. برنامه نویس در ابتدای برنامه تعریف میکند که با استفاده از تابع LoadLibrary خود ویندوز، کتابخانه مورد نظر را در برنامه بارگذاری کند. به همین دلیل است که اگر فایل dll مورد نظر وجود نداشته باشد، در همان ابتدا برنامه با خطا مواجه خواهد شد. وی با استفاده از تابع GetProcAddress ویندوز، فانکشن یا تابع مورد نظر خود را از فایل DLL بارگذاری کرده و یا با تابع LoadResource ویندوز، یک منبع (مثلا کدنویسی OpenSees) را از فایل DLL بارگذاری میکند. برنامه آن تابع را اجرا نموده یا از منابع فایل استفاده میکند. در نهایت با استفاده از تابع FreeLibrary ویندوز، پس از آن که کارش تمام شد، فایل DLL را Unload میکند.
توابع DLL تنها با استفاده از برنامهها و فایلهای EXE میتوانند اجرا شوند و در آنها میتوان از توابع نام برده ویندوز (LoadLibrary و ...) استفاده کرد. بنابراین نمیتوان به صورت مستقیم و بدون هیچ چیزی از توابع و منابع فایل DLL استفاده نمود. اما ویندوز برای این مشکل راه کاری را در نظر گرفته و آن ساخت یک برنامه برای اجرای این تابعها است. اسم این برنامه در ویندوز
RUNDLL.EXE یا RUNDLL32.EXE
است. این برنامه از تابع گفته شده در ویندوز به عنوان یک ورودی استفاده کرده و تابع فایل DLL که قابلیت اجرا شدن بدون مشکل را داشته باشد، فراخوانی میکند. نحوه استفاده از این ابزار به این صورت است:
Rundll32.exe <DLLName>,<Function> <Optional Arguments>
این دستور را میتوان در دیالوگ Run یا خط فرمان CMD نیز اجرا کرد. به نحوی که به جای <DLLName> آدرس کامل فایل DLL و یا اگر در پوشه سیستم بود، فقط نام آن نوشته شود. همچنین بایستی به جای <Function> تابع دلخواه و بجای <Optional Arguments> هم پارامترهای دلخواه برای تابع انتخاب شده را وارد نمود.
برای مثال، تابع OpenAs_RunDLL در کتابخانه shell32.dll باعث اجرا شدن دیالوگ Open With میشود. برای اجرای این دیالوگ در مسیر دلخواه فایل از دستور زیر استفاده میکنیم:
rundll32.exe shell32.dll,OpenAs_RunDLL C:\Users\Afshina\Desktop\afshina.html
فرمت فایل DLL مربوط به کتابخانههایی است که شامل توابع، کدها و دادههایی هستند که میتوانند به صورت همزمان توسط چندین برنامه مورد استفاده قرار بگیرند. فایل DLL یک فرمت استاندارد برای ویندوز مایکروسافت بوده و مخفف عبارت Dynamic-Link Library است. فایلهای lib و ocx و drv هم تقریبا مشابه DLL هستند. یک فایل DLL شامل توابع، کدها، منابع (تصویر، آیکون و ...) و دادههایی است که برای برنامه نویسان امکان لینک کردن و استفاده از توابع خیلی پیشرفته در کدنویسی هایشان را میسر میکند. یکی از خواص مهم فایلهای کتابخانهای DLL آن است که در یک زمان چندین برنامه میتوانند از آنها استفاده کنند درحالی که کدهایش در یک مکان ثابت قرار داشته و نیازی به گرفتن فضای بیشتر برای هر برنامه نیست. بگذارید برایتان مثالی بزنم: یک کتابخانه عمومی را فرض کنید که پر از کتابهای آشپزی و در هر یک از این کتابهای آشپزی یک دستور پخت خاصی برای قورمه سبزی نوشته شده است. افراد به کتابخانه سر زده و از آن کتابها استفاده میکنند و در نهایت چندین خورشت با طعمهایی متفاوت به دست خواهند آمد. فایلهای DLL نیز این چنین هستند؛ یعنی پر از توابع مختلف با کاربردهای متفاوتی هستند که هر یک کار خاصی را انجام میدهند و تمامی برنامهها میتوانند از آنها استفاده کنند. برنامه نویس در ابتدای برنامه تعریف میکند که با استفاده از تابع LoadLibrary خود ویندوز، کتابخانه مورد نظر را در برنامه بارگذاری کند. به همین دلیل است که اگر فایل dll مورد نظر وجود نداشته باشد، در همان ابتدا برنامه با خطا مواجه خواهد شد. وی با استفاده از تابع GetProcAddress ویندوز، فانکشن یا تابع مورد نظر خود را از فایل DLL بارگذاری کرده و یا با تابع LoadResource ویندوز، یک منبع (مثلا کدنویسی OpenSees) را از فایل DLL بارگذاری میکند. برنامه آن تابع را اجرا نموده یا از منابع فایل استفاده میکند. در نهایت با استفاده از تابع FreeLibrary ویندوز، پس از آن که کارش تمام شد، فایل DLL را Unload میکند.
توابع DLL تنها با استفاده از برنامهها و فایلهای EXE میتوانند اجرا شوند و در آنها میتوان از توابع نام برده ویندوز (LoadLibrary و ...) استفاده کرد. بنابراین نمیتوان به صورت مستقیم و بدون هیچ چیزی از توابع و منابع فایل DLL استفاده نمود. اما ویندوز برای این مشکل راه کاری را در نظر گرفته و آن ساخت یک برنامه برای اجرای این تابعها است. اسم این برنامه در ویندوز
RUNDLL.EXE یا RUNDLL32.EXE
است. این برنامه از تابع گفته شده در ویندوز به عنوان یک ورودی استفاده کرده و تابع فایل DLL که قابلیت اجرا شدن بدون مشکل را داشته باشد، فراخوانی میکند. نحوه استفاده از این ابزار به این صورت است:
Rundll32.exe <DLLName>,<Function> <Optional Arguments>
این دستور را میتوان در دیالوگ Run یا خط فرمان CMD نیز اجرا کرد. به نحوی که به جای <DLLName> آدرس کامل فایل DLL و یا اگر در پوشه سیستم بود، فقط نام آن نوشته شود. همچنین بایستی به جای <Function> تابع دلخواه و بجای <Optional Arguments> هم پارامترهای دلخواه برای تابع انتخاب شده را وارد نمود.
برای مثال، تابع OpenAs_RunDLL در کتابخانه shell32.dll باعث اجرا شدن دیالوگ Open With میشود. برای اجرای این دیالوگ در مسیر دلخواه فایل از دستور زیر استفاده میکنیم:
rundll32.exe shell32.dll,OpenAs_RunDLL C:\Users\Afshina\Desktop\afshina.html
umfpack2_x86.zip
223.9 KB
درخواستی عزیزان کانال❤️:
سیستم حل معادلات خارجی UmfPack2 مختص نسخه ویندوز 32 بیتی
system umfpack2
کرک این dll تا سال ۲۰۲۴ فعال می باشد🌷
سیستم حل معادلات خارجی UmfPack2 مختص نسخه ویندوز 32 بیتی
system umfpack2
کرک این dll تا سال ۲۰۲۴ فعال می باشد🌷
MacWeedrSpectrum.rar
427.4 KB
زمانی که به یک فایل دی ال ال دسترسی دارید، دیگر نیازی به نوشتن هزاران خط کد و الگوریتم پیچیده نخواهید داشت. در واقع دی ال ال ها کدهای آمادهای هستند که تمامی دادههای مورد نیازتان را در اختیار شما قرار میدهند🌷
فایل دی ال الی مختص تحلیل دینامیکی طیفی، محاسبه ضرایب مشارکت جرمی، ایجاد الگوهای بار با استفاده از نیروهای مودال و اطلاعات طیفی، و اعمال روش ترکيب نتايج مودهای مختلف (این فایل فقط مختص ویندوز ۶۴ بیتی و OpenSees ورژن ۲.۵.۰ است)
دو کمپانی برنامه نویسی بزرگ به نامهای مک ویید و ساول ویید وجود دارند که کار اصلی آنها تهیه بانکهای ارزشمند دی ال ال است. کلمه "ویید" یعنی "علف هرز"، و برایم بسیار عجیب است که این محتویات خیلی ارزشمند را چرا این گونه بد سلیقه نامگذاری کردهاند؟!
فایل دی ال الی مختص تحلیل دینامیکی طیفی، محاسبه ضرایب مشارکت جرمی، ایجاد الگوهای بار با استفاده از نیروهای مودال و اطلاعات طیفی، و اعمال روش ترکيب نتايج مودهای مختلف (این فایل فقط مختص ویندوز ۶۴ بیتی و OpenSees ورژن ۲.۵.۰ است)
دو کمپانی برنامه نویسی بزرگ به نامهای مک ویید و ساول ویید وجود دارند که کار اصلی آنها تهیه بانکهای ارزشمند دی ال ال است. کلمه "ویید" یعنی "علف هرز"، و برایم بسیار عجیب است که این محتویات خیلی ارزشمند را چرا این گونه بد سلیقه نامگذاری کردهاند؟!
رازهای تلخ و پنهان برنامه نویسان بیمار:🌷🌷
سه هفته قبل زمانی که مشغول اسباب کشی منزلم و وسط کارتنهای خیلی بزرگ غوطهور بودم، تلفنم هم مرتبا زنگ میزد و چون سالها است که زنگ موبایلم آهنگ "آی ویل لاو اگین از لارا فابین" است، لذا تعمدا آن را بر نمیداشتم تا از هنر نابش لذت ببرم! (بگذریم که بعد هم که خواستم تلفن را جواب بدهم پیدایش نمیکردم!)
از آنجایی که در این دنیای بزرگ، معدود افرادی وجود دارند که به من زنگ بزنند خیلی کنجکاو بودم زودتر تلفن را پاسخ بدهم. از طرفی لارا هم داشت فاز صدای سه اکتاوی اش را شدیدا به رخم میکشید و برایم قطع کردن این شاهکار تاریخی کمی غم انگیز بود. یکی از اعضای گروه ۱۷ نفره برنامه نویسان کشور بود و می خواست به من قرار نشست علمی هفته آخر ماه را گوشزد کند. فردای آن روز در حالی که پرسنل موسسه باربری مشغول حمل اثاثیه به منزل جدیدم بودند، من در آن نشست گفتم که ۹۹ درصد برنامه نویسان حرفه ای دنیا بیمار هستند! با وجودی که ما ۱۷ نفر سه سال است با یکدیگر دوست هستیم، برای صبحانه و ورزش به کوه می رویم، و ماهی یک بار هم نشستهایی علمی داشتیم و داریم، ولی از این صحبت تندم چندین نفر متعجب شدند و تعداد بیشتری هم حسابی قاطی کردند. آنها اعتراض کردند که "این چه صحبتی است که شما مطرح می کنید؟!" و البته من خودم هم به آنها حق دادم و حق می دهم. تک تک آنها از بهترین برنامه نویسان کشور عزیزمان هستند. یکی از مسنترین های این تیم حرفهایها از من پرسید "افشین منظورت بیماری های قلبی و ... است؟" و من پاسخ دادم "خیر!، منظورم بیماری های روانی است!"
نمی دانم چه راز عجیب و غریبی در ارتباطات بین برخی رویدادهای طبیعی نهفته است که سه روز بعد یکی از خانمهای عضو کانال، سوالی مرتبط از من پرسیدند. من شش ماه قبل عکس یک آقا و یک خانم آمریکایی را در کانال قرار دادم و اعلام داشتم که طبق بیانیه AAPI این دو بزرگوار، برترین برنامه نویسان دنیا هستند، به خاطر سبک خاصشان توی نوشتن الگوریتمهای نیمه موازی (موازی مبتنی بد پرایریتی) و ...
این خانم عزیز عضو کانال از من پرسیدند که "آیا این دو دانشمند بزرگوار بیمارانی روانی هستند؟!" و من تصمیم گرفتم که یک بار برای همیشه بیان کنم که ۹۹ درصد برنامه نویسان بزرگ و خیلی حرفه ای دنیا از بیماری بازداری نهفته سطح پایین (Low latent inhibition-LLI) رنج می برند! ساختار مغزی و ذهنی انسان طوری شکل گرفته است که از رسیدن اطلاعات نامربوط به سطح هوشیار ذهن جلوگیری میکند و به تعبیری مواظب حد اطلاعات ورودی به ذهن است. این غربال با این هدف صورت می گیرد تا اضافه بار اطلاعاتی بر روی ذهن به وجود نیاید یا اصطلاحا ذهن Overload نکند تا بتواند تمرکز خود را بر روی محور اصلی تفکر حفظ نماید. اگرچه فرایند کاری این فیلتر کاملا به شکل ناخودآگاه صورت میگیرد اما مقدار فیلتری که هر شخص اعمال میکند با دیگری متفاوت است. به عنوان مثال وقتی یک انسان سالم برای اولین بار دستگیره درب را مشاهده مینماید و اندکی نسبت به آن کنجکاو میشود ذهن او یک بار بر روی طرز کار دستگیره درب تمرکز میکند و اطلاعات آن را به سطح هوشیار مغزش میآورد و بعد از درک کامل ماهیت دستگیره (مثلا درب اتاق یا منزل)، از این به بعد موقع باز کردن دربها دوباره خودش را درگیر جرئیات دستگیرههای در نمیکند تا بفهمد آنها چه هستند و چه مکانیزمهایی دارند. حتی اگر قدری هم متفاوت باشند (مثلا دستگیره درب کوپه قطار و ...) اما در انسان های دارای LLI اطلاعات مرتبط با دستگیرههای در مکررا به سطح هوشیار مغز میرسد و میتوانند به راحتی ذهن را مکررا درگیر نمایند. در حقیقت در انسان های دارای LLI فیلتر latent inhibition در سطح پایینتری نسبت به انسانهای معمولی کار میکند و این باعث میشود محرکهای مختلف اطلاعات حجمیمتری را به سمت مغز ارسال کنند. به عنوان مثالی دیگر، زمانی که شما در منزل مشغول استراحت هستید ذهن شما به طور خودآگاه اطلاعات صداهای تکراری و بی ربط مانند صدای تیک تیک ساعت های عقربه ای را که محرکهای آن توسط گوش دریافت میشود را وارد چرخه پردازشی ذهن شما نمیکند و این باعث میشود که شما فارغ از صدای تیک تیک ساعت بتوانید استراحت کنید. اما در انسانهای دارای LLI تک تک محرکهای دریافتی از ورودیهای مختلف بدن (شنوایی،دیداری،لامسه،چشایی،بویایی) با ضریب احتمالا بالاتری با کمترین فیلتر وارد چرخه پردازشی ذهن میشوند و ذهن و تفکر فرد LLI را به خود مشغول میکنند.
سه هفته قبل زمانی که مشغول اسباب کشی منزلم و وسط کارتنهای خیلی بزرگ غوطهور بودم، تلفنم هم مرتبا زنگ میزد و چون سالها است که زنگ موبایلم آهنگ "آی ویل لاو اگین از لارا فابین" است، لذا تعمدا آن را بر نمیداشتم تا از هنر نابش لذت ببرم! (بگذریم که بعد هم که خواستم تلفن را جواب بدهم پیدایش نمیکردم!)
از آنجایی که در این دنیای بزرگ، معدود افرادی وجود دارند که به من زنگ بزنند خیلی کنجکاو بودم زودتر تلفن را پاسخ بدهم. از طرفی لارا هم داشت فاز صدای سه اکتاوی اش را شدیدا به رخم میکشید و برایم قطع کردن این شاهکار تاریخی کمی غم انگیز بود. یکی از اعضای گروه ۱۷ نفره برنامه نویسان کشور بود و می خواست به من قرار نشست علمی هفته آخر ماه را گوشزد کند. فردای آن روز در حالی که پرسنل موسسه باربری مشغول حمل اثاثیه به منزل جدیدم بودند، من در آن نشست گفتم که ۹۹ درصد برنامه نویسان حرفه ای دنیا بیمار هستند! با وجودی که ما ۱۷ نفر سه سال است با یکدیگر دوست هستیم، برای صبحانه و ورزش به کوه می رویم، و ماهی یک بار هم نشستهایی علمی داشتیم و داریم، ولی از این صحبت تندم چندین نفر متعجب شدند و تعداد بیشتری هم حسابی قاطی کردند. آنها اعتراض کردند که "این چه صحبتی است که شما مطرح می کنید؟!" و البته من خودم هم به آنها حق دادم و حق می دهم. تک تک آنها از بهترین برنامه نویسان کشور عزیزمان هستند. یکی از مسنترین های این تیم حرفهایها از من پرسید "افشین منظورت بیماری های قلبی و ... است؟" و من پاسخ دادم "خیر!، منظورم بیماری های روانی است!"
نمی دانم چه راز عجیب و غریبی در ارتباطات بین برخی رویدادهای طبیعی نهفته است که سه روز بعد یکی از خانمهای عضو کانال، سوالی مرتبط از من پرسیدند. من شش ماه قبل عکس یک آقا و یک خانم آمریکایی را در کانال قرار دادم و اعلام داشتم که طبق بیانیه AAPI این دو بزرگوار، برترین برنامه نویسان دنیا هستند، به خاطر سبک خاصشان توی نوشتن الگوریتمهای نیمه موازی (موازی مبتنی بد پرایریتی) و ...
این خانم عزیز عضو کانال از من پرسیدند که "آیا این دو دانشمند بزرگوار بیمارانی روانی هستند؟!" و من تصمیم گرفتم که یک بار برای همیشه بیان کنم که ۹۹ درصد برنامه نویسان بزرگ و خیلی حرفه ای دنیا از بیماری بازداری نهفته سطح پایین (Low latent inhibition-LLI) رنج می برند! ساختار مغزی و ذهنی انسان طوری شکل گرفته است که از رسیدن اطلاعات نامربوط به سطح هوشیار ذهن جلوگیری میکند و به تعبیری مواظب حد اطلاعات ورودی به ذهن است. این غربال با این هدف صورت می گیرد تا اضافه بار اطلاعاتی بر روی ذهن به وجود نیاید یا اصطلاحا ذهن Overload نکند تا بتواند تمرکز خود را بر روی محور اصلی تفکر حفظ نماید. اگرچه فرایند کاری این فیلتر کاملا به شکل ناخودآگاه صورت میگیرد اما مقدار فیلتری که هر شخص اعمال میکند با دیگری متفاوت است. به عنوان مثال وقتی یک انسان سالم برای اولین بار دستگیره درب را مشاهده مینماید و اندکی نسبت به آن کنجکاو میشود ذهن او یک بار بر روی طرز کار دستگیره درب تمرکز میکند و اطلاعات آن را به سطح هوشیار مغزش میآورد و بعد از درک کامل ماهیت دستگیره (مثلا درب اتاق یا منزل)، از این به بعد موقع باز کردن دربها دوباره خودش را درگیر جرئیات دستگیرههای در نمیکند تا بفهمد آنها چه هستند و چه مکانیزمهایی دارند. حتی اگر قدری هم متفاوت باشند (مثلا دستگیره درب کوپه قطار و ...) اما در انسان های دارای LLI اطلاعات مرتبط با دستگیرههای در مکررا به سطح هوشیار مغز میرسد و میتوانند به راحتی ذهن را مکررا درگیر نمایند. در حقیقت در انسان های دارای LLI فیلتر latent inhibition در سطح پایینتری نسبت به انسانهای معمولی کار میکند و این باعث میشود محرکهای مختلف اطلاعات حجمیمتری را به سمت مغز ارسال کنند. به عنوان مثالی دیگر، زمانی که شما در منزل مشغول استراحت هستید ذهن شما به طور خودآگاه اطلاعات صداهای تکراری و بی ربط مانند صدای تیک تیک ساعت های عقربه ای را که محرکهای آن توسط گوش دریافت میشود را وارد چرخه پردازشی ذهن شما نمیکند و این باعث میشود که شما فارغ از صدای تیک تیک ساعت بتوانید استراحت کنید. اما در انسانهای دارای LLI تک تک محرکهای دریافتی از ورودیهای مختلف بدن (شنوایی،دیداری،لامسه،چشایی،بویایی) با ضریب احتمالا بالاتری با کمترین فیلتر وارد چرخه پردازشی ذهن میشوند و ذهن و تفکر فرد LLI را به خود مشغول میکنند.
وقتی انسانهای عادی با یک بیمار LLI برخورد میکنند تصور میکنند که او دچار "نوعی بیماری وسواس فکری" است. ولی واقعیت این است که تشخیص تفاوتهای LLI و وسواس فکری حتی برای بهترین پزشکان متخصص مغز و اعصاب هم کار بسیار دشواری است. احتمالا الان دارید فکر میکنید چه طور یک بیمار روانی میتواند نابغه هم باشد؟! واقعیت این است که امروزه درمان این بیماری خیلی آسان و دست یافتنی است. اما پزشکان فقط افراد بیمار با پتانسیل مغزی پایین را درمان میکنند. حدود یک دهه است که پس از تهیه اسکنهای مغزی پیشرفته و نیز تستهای شخصیت شناسی خاص، اگر پزشکان متوجه شوند که بیمارشان "مغزی با پتانسیل خون رسانی بالا" دارد دیگر به هیچ وجه او را درمان نمیکنند. بلکه از او میخواهند به مشاغلی سخت همچون برنامه نویسی مشغول شود. شخص دارای LLI از قدرت پردازش و تخیل ذهنی معادل ۷۰ برابر پتانسیل مغز افراد عادی برخوردار است. به عبارت دیگر این بیماری در این قبیل افراد تبدیل میشود به یک نوعی از نبوغ خاص و عجیب! نبوغی مثال زدنی که هر شخصی آرزوی داشتنش را دارد!
پروسیجر محاسبه Modal Participation Factors به زبان ++C (امیدوارم که جامعه علمی کشور ظرفیت دسترسی کامل به این داده های علمی خیلی ارزشمند را داشته باشند)🌷
# C ++ Code
The class added under Globals for nodeeigen comand is:
int
nodeEigen(ClientData clientData, Tcl_Interp *interp, int argc, TCL_Char **argv)
{
if (argc < 3) {
opserr << "WARNING want - nodeEigen nodeTag? dof?\n";
return TCL_ERROR;
}
int tag, dof;
if (Tcl_GetInt(interp, argv[1], &tag) != TCL_OK) {
opserr << "WARNING nodeEigen nodeTag? dof? - could not read nodeTag? \n";
return TCL_ERROR;
}
if (Tcl_GetInt(interp, argv[2], &dof) != TCL_OK) {
opserr << "WARNING nodeEigen nodeTag? dof? - could not read dof? \n";
return TCL_ERROR;
}
Node *theNode = theDomain.getNode(tag);
double value = 0.0;
if (theNode != 0) {
const Matrix dispe = theNode->getEigenvectors();
value = dispe(0,dof-1); // RETURNS only first 3 modes
}
sprintf(interp->result,"%35.20f",value);
return TCL_OK;
}
# before using "nodeeigen" command call the [eigen] in opensees
# C ++ Code
The class added under Globals for nodeeigen comand is:
int
nodeEigen(ClientData clientData, Tcl_Interp *interp, int argc, TCL_Char **argv)
{
if (argc < 3) {
opserr << "WARNING want - nodeEigen nodeTag? dof?\n";
return TCL_ERROR;
}
int tag, dof;
if (Tcl_GetInt(interp, argv[1], &tag) != TCL_OK) {
opserr << "WARNING nodeEigen nodeTag? dof? - could not read nodeTag? \n";
return TCL_ERROR;
}
if (Tcl_GetInt(interp, argv[2], &dof) != TCL_OK) {
opserr << "WARNING nodeEigen nodeTag? dof? - could not read dof? \n";
return TCL_ERROR;
}
Node *theNode = theDomain.getNode(tag);
double value = 0.0;
if (theNode != 0) {
const Matrix dispe = theNode->getEigenvectors();
value = dispe(0,dof-1); // RETURNS only first 3 modes
}
sprintf(interp->result,"%35.20f",value);
return TCL_OK;
}
# before using "nodeeigen" command call the [eigen] in opensees
پروسیجر محاسبه Modal Participation Factors به زبان TCL (امیدوارم که جامعه علمی کشور ظرفیت دسترسی کامل به این داده های علمی خیلی ارزشمند را داشته باشند)🌷
proc calculate_modalmass { modeNum dir } {
#################################################
#Calcuates modal masses in $modeNum at $dir with:
#
#(fi_transpose * M * fi)^2
#fi: eigenvector
#M: mass diagonal matrix
#################################################
# Calculate modal mass in actual direction
set NODES [getNodeTags]
set modalMassUP 0.0
set modalMassDOWN 0.0
set totalMass 0.0
foreach node $NODES {
set actualMass [nodeMass $node $dir]
set totalMass [expr $totalMass + $actualMass]
}
foreach node $NODES {
set m [nodeMass $node $dir]
set fi [nodeEigenvector $node $modeNum $dir]
set iota 1.0
set modalMassUP [expr $modalMassUP + $m*$fi*$iota]
for {set dof 1} {$dof < 7} {incr dof} {
set fi_dof [nodeEigenvector $node $modeNum $dof]
set m_dof [nodeMass $node $dof]
set modalMassDOWN [expr $modalMassDOWN + $fi_dof**2*$m_dof]
}
}
set modalMass [expr $modalMassUP**2 / $modalMassDOWN]
return [expr $modalMass/$totalMass]
}
# USAGE
set modeShapes 4
eigen $modeShapes
puts "X\tY\tZ"
for {set mode 1} {$mode < $modeShapes} {incr mode} {
puts "[calculate_modalmass $mode 1] [calculate_modalmass $mode 2] [calculate_modalmass $mode 3]"
}
proc calculate_modalmass { modeNum dir } {
#################################################
#Calcuates modal masses in $modeNum at $dir with:
#
#(fi_transpose * M * fi)^2
#fi: eigenvector
#M: mass diagonal matrix
#################################################
# Calculate modal mass in actual direction
set NODES [getNodeTags]
set modalMassUP 0.0
set modalMassDOWN 0.0
set totalMass 0.0
foreach node $NODES {
set actualMass [nodeMass $node $dir]
set totalMass [expr $totalMass + $actualMass]
}
foreach node $NODES {
set m [nodeMass $node $dir]
set fi [nodeEigenvector $node $modeNum $dir]
set iota 1.0
set modalMassUP [expr $modalMassUP + $m*$fi*$iota]
for {set dof 1} {$dof < 7} {incr dof} {
set fi_dof [nodeEigenvector $node $modeNum $dof]
set m_dof [nodeMass $node $dof]
set modalMassDOWN [expr $modalMassDOWN + $fi_dof**2*$m_dof]
}
}
set modalMass [expr $modalMassUP**2 / $modalMassDOWN]
return [expr $modalMass/$totalMass]
}
# USAGE
set modeShapes 4
eigen $modeShapes
puts "X\tY\tZ"
for {set mode 1} {$mode < $modeShapes} {incr mode} {
puts "[calculate_modalmass $mode 1] [calculate_modalmass $mode 2] [calculate_modalmass $mode 3]"
}
پروسیجر بسیار دقیق مختص محاسبه Modal Participation Factors به زبان TCL، این پروسیجر برای یک ستون کانتیلور با رفتار خطی نوشته شده است (امیدوارم که جامعه علمی کشور ظرفیت دسترسی کامل به این داده های علمی خیلی ارزشمند را داشته باشند)🌷
# Purpose: To show modal transient & transient analysis for elastic problems
# result in similar answer. Model is a cantilever column, constant
# cross section and mass distribution, elastic material modeeled
# using a bunch of elastic elements along the length.
# Notation&Theory: straight out of A. K. Chopra's book, 'Dynamics of Structures'
# Requires: ReadSMDFIle.tcl and some .at2 files to test (currently ARL360.at2)
# Note: to use more eigen values you have to add more nodes.
# you can uncomment disp recorders, plot in matlab disp.out versus sum(disp$i.out)
# The proc to read those .at2 files
source ReadSMDFile.tcl
# The motion name
set motion ARL360
#set motion IELC180
# Read in the motion
ReadSMDFile $motion.at2 $motion.acc dt
# Some constants
set PI 3.14159265
set g 386.4
# Cantilever Parameters
set M 200.0; # total mass
set L 10.0; # total length
set A 100.0; # cross-section area
set I 1000.0; # cross-section I
set E 2000.0; # column material E
set numNode 20; # num nodes to use to model column
set numEigen 9; # num modes to use
#
# the Cantilever Model Analysis
#
puts "Cantilever Model ($numNode nodes and $motion record)"
model basic -ndm 2 -ndf 3
set dL [expr $L/($numNode -1)];
set dM [expr $M/$L*$dL]
set currentHeight 0.0;
for {set i 1} {$i < $numNode} {incr i 1} {
node $i 0.0 $currentHeight -mass $dM $dM 0.0
set currentHeight [expr $currentHeight + $dL]
}
node $numNode 0.0 $L -mass [expr $dM/2.0] [expr $dM/2.0] 0.0
fix 1 1 1 1
geomTransf Linear 1
for {set i 1; set j 2} {$i < $numNode} {incr i 1; incr j 1} {
element elasticBeamColumn $i $i $j $A $E $I 1
}
set eigenvalues "[eigen $numEigen]"
set accelSeries "Path -filePath $motion.acc -dt $dt -factor $g"
pattern UniformExcitation 2 1 -accel $accelSeries
recorder EnvelopeNode -file envelope.out -node $numNode -dof 1 disp
recorder Node -time -file disp.out -node $numNode -dof 1 disp
system ProfileSPD
constraints Plain
numberer Plain
algorithm Linear
integrator Newmark 0.5 0.25
analysis Transient
analyze 2000 $dt;
remove recorders
if [catch {open envelope.out r} InFileID] {
puts "ERROR - cannot open envelope.out"
}
set min [gets $InFileID]
set max [gets $InFileID]
set absMax [gets $InFileID]
close $InFileID
puts "\tMax Tip Disp: $absMax"
puts "\tEigenValues : $eigenvalues"
#
# get participation factors & Eigenvector Values
# corresponding to tip displacement
#
remove recorders
set nodes " "
for {set i 1} {$i <= $numNode} {incr i 1} {
lappend nodes $i
}
# get eigenvectors & eigenvalues & participation factors for tip
for {set i 1} {$i <= $numEigen} {incr i 1} {
set eig "eigen $i"
set recorderCommand "recorder Node -file Eigenvector$i.out -node $nodes -dof 1 2 3 {eigen $i}"
eval $recorderCommand
}
analyze 1 0.01
# mass matrix; diagonal
set M ""
for {set i 1} {$i < $numNode} {incr i 1} {
lappend M $dM
lappend M $dM
lappend M 0.0
}
lappend M [expr $dM/2.0]
lappend M [expr $dM/2.0]
lappend M 0.0
# determine particpation factors
set participationFactors ""
set phisTopFloorDirnX ""
for {set i 1} {$i <= $numEigen} {incr i 1} {
if [catch {open Eigenvector$i.out r} InFileID] {
puts "ERROR - cannot open envelope.out"
}
set eigenVector [gets $InFileID]
set Ln 0.0;
set Mn 0.0;
for {set j 0} {$j < [expr $numNode*3]} {incr j 1} {
set mJ [lindex $M $j];
set phiJ [lindex $eigenVector $j];
set Ln [expr $Ln + $mJ * $phiJ];
set Mn [expr $Mn + $mJ * $phiJ * $phiJ];
}
set participationFactor [expr $Ln / $Mn]
set phiTopFloor [lindex $eigenVector [expr ($numNode*3 -3)]]
lappend participationFactors $participationFactor
lappend phisTopFloorDirnX $phiTopFloor
}
puts "\tParticipation Factors: $participationFactors"
puts "\tEigenvector Values Tip X Dirn: $phisTopFloorDirnX"
# Purpose: To show modal transient & transient analysis for elastic problems
# result in similar answer. Model is a cantilever column, constant
# cross section and mass distribution, elastic material modeeled
# using a bunch of elastic elements along the length.
# Notation&Theory: straight out of A. K. Chopra's book, 'Dynamics of Structures'
# Requires: ReadSMDFIle.tcl and some .at2 files to test (currently ARL360.at2)
# Note: to use more eigen values you have to add more nodes.
# you can uncomment disp recorders, plot in matlab disp.out versus sum(disp$i.out)
# The proc to read those .at2 files
source ReadSMDFile.tcl
# The motion name
set motion ARL360
#set motion IELC180
# Read in the motion
ReadSMDFile $motion.at2 $motion.acc dt
# Some constants
set PI 3.14159265
set g 386.4
# Cantilever Parameters
set M 200.0; # total mass
set L 10.0; # total length
set A 100.0; # cross-section area
set I 1000.0; # cross-section I
set E 2000.0; # column material E
set numNode 20; # num nodes to use to model column
set numEigen 9; # num modes to use
#
# the Cantilever Model Analysis
#
puts "Cantilever Model ($numNode nodes and $motion record)"
model basic -ndm 2 -ndf 3
set dL [expr $L/($numNode -1)];
set dM [expr $M/$L*$dL]
set currentHeight 0.0;
for {set i 1} {$i < $numNode} {incr i 1} {
node $i 0.0 $currentHeight -mass $dM $dM 0.0
set currentHeight [expr $currentHeight + $dL]
}
node $numNode 0.0 $L -mass [expr $dM/2.0] [expr $dM/2.0] 0.0
fix 1 1 1 1
geomTransf Linear 1
for {set i 1; set j 2} {$i < $numNode} {incr i 1; incr j 1} {
element elasticBeamColumn $i $i $j $A $E $I 1
}
set eigenvalues "[eigen $numEigen]"
set accelSeries "Path -filePath $motion.acc -dt $dt -factor $g"
pattern UniformExcitation 2 1 -accel $accelSeries
recorder EnvelopeNode -file envelope.out -node $numNode -dof 1 disp
recorder Node -time -file disp.out -node $numNode -dof 1 disp
system ProfileSPD
constraints Plain
numberer Plain
algorithm Linear
integrator Newmark 0.5 0.25
analysis Transient
analyze 2000 $dt;
remove recorders
if [catch {open envelope.out r} InFileID] {
puts "ERROR - cannot open envelope.out"
}
set min [gets $InFileID]
set max [gets $InFileID]
set absMax [gets $InFileID]
close $InFileID
puts "\tMax Tip Disp: $absMax"
puts "\tEigenValues : $eigenvalues"
#
# get participation factors & Eigenvector Values
# corresponding to tip displacement
#
remove recorders
set nodes " "
for {set i 1} {$i <= $numNode} {incr i 1} {
lappend nodes $i
}
# get eigenvectors & eigenvalues & participation factors for tip
for {set i 1} {$i <= $numEigen} {incr i 1} {
set eig "eigen $i"
set recorderCommand "recorder Node -file Eigenvector$i.out -node $nodes -dof 1 2 3 {eigen $i}"
eval $recorderCommand
}
analyze 1 0.01
# mass matrix; diagonal
set M ""
for {set i 1} {$i < $numNode} {incr i 1} {
lappend M $dM
lappend M $dM
lappend M 0.0
}
lappend M [expr $dM/2.0]
lappend M [expr $dM/2.0]
lappend M 0.0
# determine particpation factors
set participationFactors ""
set phisTopFloorDirnX ""
for {set i 1} {$i <= $numEigen} {incr i 1} {
if [catch {open Eigenvector$i.out r} InFileID] {
puts "ERROR - cannot open envelope.out"
}
set eigenVector [gets $InFileID]
set Ln 0.0;
set Mn 0.0;
for {set j 0} {$j < [expr $numNode*3]} {incr j 1} {
set mJ [lindex $M $j];
set phiJ [lindex $eigenVector $j];
set Ln [expr $Ln + $mJ * $phiJ];
set Mn [expr $Mn + $mJ * $phiJ * $phiJ];
}
set participationFactor [expr $Ln / $Mn]
set phiTopFloor [lindex $eigenVector [expr ($numNode*3 -3)]]
lappend participationFactors $participationFactor
lappend phisTopFloorDirnX $phiTopFloor
}
puts "\tParticipation Factors: $participationFactors"
puts "\tEigenvector Values Tip X Dirn: $phisTopFloorDirnX"
#
# the Modal Analysis
#
puts "\n\nModal Analysis (for ground motion * participation factor * eigenvector value for tip x disp)"
# reset some param
set M 1.0;
set A 1.0;
set L 1.0;
set loc 0;
set modalResults "";
for {set i 0} {$i < $numEigen} {incr i 1} {
set eigenvalue [lindex $eigenvalues $i]
set participationFactor [lindex $participationFactors $i]
set phiTopFloor [lindex $phisTopFloorDirnX $i]
set accelSeries "Path -filePath $motion.acc -dt $dt -factor [expr $g * $participationFactor * $phiTopFloor]"
wipe
model basic -ndm 1 -ndf 1
set K [expr $eigenvalue * $M];
set E [expr $K * $L / $A];
node 1 0.0
node 2 $L -mass $M
fix 1 1
uniaxialMaterial Elastic 1 $E
element truss 1 1 2 $A 1
pattern UniformExcitation 2 1 -accel $accelSeries
recorder EnvelopeNode -file envelope.out -node 2 -dof 1 disp
recorder Node -time -file disp$loc.out -node 2 -dof 1 disp
system ProfileSPD
constraints Plain
numberer Plain
algorithm Linear
integrator Newmark 0.5 0.25
analysis Transient
analyze 2000 $dt;
remove recorders
if [catch {open envelope.out r} InFileID] {
puts "ERROR - cannot open envelope.out"
}
set min [gets $InFileID]
set max [gets $InFileID]
set absMax [gets $InFileID]
close $InFileID
puts "\teigenvalue: $eigenvalue max disp: $absMax"
lappend modalResults $absMax;
}
set absSum 0.0;
set srss 0.0;
for {set i 0} {$i < $numEigen} {incr i 1} {
set responseI [lindex $modalResults $i];
set absSum [expr $absSum + $responseI]
set srss [expr $srss + $responseI * $responseI]
}
set srss [expr sqrt($srss)]
puts "\nCombination of Modal Responses:"
puts "\tAbsolute Sum combination: $absSum"
puts "\tSquare Root of Sum Of Squares (SRSS) combination: $srss"
# the Modal Analysis
#
puts "\n\nModal Analysis (for ground motion * participation factor * eigenvector value for tip x disp)"
# reset some param
set M 1.0;
set A 1.0;
set L 1.0;
set loc 0;
set modalResults "";
for {set i 0} {$i < $numEigen} {incr i 1} {
set eigenvalue [lindex $eigenvalues $i]
set participationFactor [lindex $participationFactors $i]
set phiTopFloor [lindex $phisTopFloorDirnX $i]
set accelSeries "Path -filePath $motion.acc -dt $dt -factor [expr $g * $participationFactor * $phiTopFloor]"
wipe
model basic -ndm 1 -ndf 1
set K [expr $eigenvalue * $M];
set E [expr $K * $L / $A];
node 1 0.0
node 2 $L -mass $M
fix 1 1
uniaxialMaterial Elastic 1 $E
element truss 1 1 2 $A 1
pattern UniformExcitation 2 1 -accel $accelSeries
recorder EnvelopeNode -file envelope.out -node 2 -dof 1 disp
recorder Node -time -file disp$loc.out -node 2 -dof 1 disp
system ProfileSPD
constraints Plain
numberer Plain
algorithm Linear
integrator Newmark 0.5 0.25
analysis Transient
analyze 2000 $dt;
remove recorders
if [catch {open envelope.out r} InFileID] {
puts "ERROR - cannot open envelope.out"
}
set min [gets $InFileID]
set max [gets $InFileID]
set absMax [gets $InFileID]
close $InFileID
puts "\teigenvalue: $eigenvalue max disp: $absMax"
lappend modalResults $absMax;
}
set absSum 0.0;
set srss 0.0;
for {set i 0} {$i < $numEigen} {incr i 1} {
set responseI [lindex $modalResults $i];
set absSum [expr $absSum + $responseI]
set srss [expr $srss + $responseI * $responseI]
}
set srss [expr sqrt($srss)]
puts "\nCombination of Modal Responses:"
puts "\tAbsolute Sum combination: $absSum"
puts "\tSquare Root of Sum Of Squares (SRSS) combination: $srss"
This media is not supported in your browser
VIEW IN TELEGRAM
کشف استخر پر از آب با عمق ۲۰ متر در زیر هرم کوکولکان متعلق به یکی از فرمانروایان مایاها:🌷
مایاها قبایل سرخ پوستی بودند که در جنوب مکزیک و شمال آمریکای مرکزی زندگی میکردند و شهرهایشان را در دل جنگلهای بارانی میساختند. آنها پدیدآورنده یکی از تمدنهای بسیار پیشرفته آمریکای مرکزی بودند که دستآوردهای بسیار چشمگیری در هنر، معماری، ستارهشناسی و ریاضیات داشته است. مایاها با بهرهگیری از تمدنهای گذشته خود نظیر اولمک توانستند در خلال سالهای۲۵۰ تا ۹۰۰ پس از میلاد تمدنی عظیم را در آمریکای مرکزی پایهگذاری نمایند. تمدن مایا به دست اقوام مجاور ضعیف شد و سرانجام با هجوم اسپانیاییها از میان رفت. پیش از این اضمحلال، مایاها به یکباره تمدن و شهرهای عظیم را رها کردند و به دامان کوهستانها پناه بردند، که دلیل این رویداد به سبب از میان رفتن آثار مکتوب آن دوره و طرح نظریات گوناگون، هنوز مشخص نیست. پس از آن تمدن مایا رها شد و اقتدار مایاهای کوهستان نیز ابتدا به دست آزتکها و سپس اسپانیاییها از میان رفت. جمعیت مایاهای امروزی که از بازماندگان فرمانروایان دوران باستان آمریکای مرکزی میباشند، حدود هفت میلیون نفر است.
مایاها قبایل سرخ پوستی بودند که در جنوب مکزیک و شمال آمریکای مرکزی زندگی میکردند و شهرهایشان را در دل جنگلهای بارانی میساختند. آنها پدیدآورنده یکی از تمدنهای بسیار پیشرفته آمریکای مرکزی بودند که دستآوردهای بسیار چشمگیری در هنر، معماری، ستارهشناسی و ریاضیات داشته است. مایاها با بهرهگیری از تمدنهای گذشته خود نظیر اولمک توانستند در خلال سالهای۲۵۰ تا ۹۰۰ پس از میلاد تمدنی عظیم را در آمریکای مرکزی پایهگذاری نمایند. تمدن مایا به دست اقوام مجاور ضعیف شد و سرانجام با هجوم اسپانیاییها از میان رفت. پیش از این اضمحلال، مایاها به یکباره تمدن و شهرهای عظیم را رها کردند و به دامان کوهستانها پناه بردند، که دلیل این رویداد به سبب از میان رفتن آثار مکتوب آن دوره و طرح نظریات گوناگون، هنوز مشخص نیست. پس از آن تمدن مایا رها شد و اقتدار مایاهای کوهستان نیز ابتدا به دست آزتکها و سپس اسپانیاییها از میان رفت. جمعیت مایاهای امروزی که از بازماندگان فرمانروایان دوران باستان آمریکای مرکزی میباشند، حدود هفت میلیون نفر است.
تراژدی نبرد ذهنهای آشفته:🌷
خیلی سخته که آدم نتواند با ذهنهای پیچیده دیگران ارتباط برقرار کند! اگر از حدود هفت میلیارد انسانی که بر روی کره زمین زندگی میکنند بپرسید "سختترین کار چیست؟"، احتمالا خیلی از آنها به مشاغلی همچون برنامه نویسی، فضانوردی و یا اسکی روی آب اشاره میکنند! خیلیها هم مثل همسایه طبقه پایین منزل جدیدم، شدیدا مصر هستند که کارهای جسمی و فیزیکی اصلا سخت نیستند بلکه این کارهای فکری هستند که حسابی روزگار آدمیزاد را به هم میریزند! انصافا پیرمرد طبقه پایینی تا حدی راست میگوید! چیزی که همه ما آن را به نام "مغز انسان" میشناسیم در واقع ترکیبی است از دو زیربخش به نامهای "مغز و ذهن" که اولی یک سیستم نیمه اتوماتیک مخصوص تمامی فعالیتهای فیزیکی است، و دومی یک سیستم تمام اتوماتیک مربوط به چیزهای پیچیدهتری از جمله شناخت حسها، دردها و زخمهای روحی، روانی و..
دیروز وقتی خسته از آموزشگاه به سمت خانه برمیگشتم، سر راه رفتم همان کافیشاپ همیشگی نبش سرو غربی، که قبلا به طور مفصل تعریفش را کردهام. صاحبش گفته بود که "قهوه تای دابل" جدید آورده است. قهوه را که خوردم دیدم راست میگوید، تلخیاش به عربیکا و ترشیاش به روبوستای هندی میماند و البته عطر و بویش هم واقعا دیوانه کننده بود! از همه اینها بگذریم قهوه که تمام میشود، چشیدن مخلوط شیر و عسل به جای مانده در کف فنجان خودش عوالمی دارد! پس از خوردن قهوه تای دابل، در یک لحظه پاسخ پرسشی که قرار بود شما از هفت میلیارد نفر بپرسید، را خودم یافتم و فهمیدم که سختترین کار روی زمین "ارتباط برقرار کردن با ذهنهای آشفته دیگران" است و البته از آن سختتر هم، آموختن یک مطلب علمی به حدود هزار نفر از عزیزان کانال (به طور همزمان) است!
من بعضی وقتها عذاب وجدان میگیرم، و با خودم فکر میکنم که آخر مگر اساتید دیگر، نویسنده های دیگر و اصلا آدمهای دیگر چه گناهی کردهاند که من مرتبا باید اشتباهات علمیشان را نقد کنم، و یا تا این حد عصبانیشان کنم! این قبیل زمانها با خودم عهد میکنم که "دیگر از فردا صبح از هیچ احدی نقد علمی نخواهم کرد" اما واقعا نمیدانم چرا روز بعد همه چیز یادم میرود! تازه همه اینها یک طرف، جدیدا یاد گرفتهام که با ذهنهای آدمهای بیچاره اطرافم هم کلنجار بروم! مثلا دیروز لادن (یکی از دانشجویانم) الگوریتمی ده خطی آورده بود که پاسخ مساله "هشت ملکه" را اشتباه حل میکرد. میگفت نحوه نگارش الگوریتمش صحیح است ولی پاسخهای آن اشتباهی محاسبه میشوند! با همان نگاه اول متوجه شدم که دو عدد از لوپهای استفاده شده در مختصاتهای قطری صفحه شطرنج با یکدیگر تداخل دارند! البته نه تنها قضیه را به او نگفتم، بلکه وانمود کردم هیچ مشکل جدی هم وجود ندارد! سپس تعمدا دو خط الگوریتم را جابهجا و کار را خرابتر کردم، و حالا شد تداخل توی تداخل! نکته جالب توجه آن بود که خرابتر شدن کارکرد الگوریتم، باعث شد لادن متوجه مشکلش شود! در واقع من فقط مشکل الگوریتم او را پررنگتر کردم تا خودش بتواند آن را حل کند. این هم یک تکنیک آموزشی است دیگر! راستش را بخواهید، خودم هم نمیدانم چه رمز و رازی توی مغزم وجود دارد که باعث میشود این طوری به الگوریتمها، به زمین و زمان، و حتی به ذهنهای آشفته دیگران گیر بدهم!
خیلی سخته که آدم نتواند با ذهنهای پیچیده دیگران ارتباط برقرار کند! اگر از حدود هفت میلیارد انسانی که بر روی کره زمین زندگی میکنند بپرسید "سختترین کار چیست؟"، احتمالا خیلی از آنها به مشاغلی همچون برنامه نویسی، فضانوردی و یا اسکی روی آب اشاره میکنند! خیلیها هم مثل همسایه طبقه پایین منزل جدیدم، شدیدا مصر هستند که کارهای جسمی و فیزیکی اصلا سخت نیستند بلکه این کارهای فکری هستند که حسابی روزگار آدمیزاد را به هم میریزند! انصافا پیرمرد طبقه پایینی تا حدی راست میگوید! چیزی که همه ما آن را به نام "مغز انسان" میشناسیم در واقع ترکیبی است از دو زیربخش به نامهای "مغز و ذهن" که اولی یک سیستم نیمه اتوماتیک مخصوص تمامی فعالیتهای فیزیکی است، و دومی یک سیستم تمام اتوماتیک مربوط به چیزهای پیچیدهتری از جمله شناخت حسها، دردها و زخمهای روحی، روانی و..
دیروز وقتی خسته از آموزشگاه به سمت خانه برمیگشتم، سر راه رفتم همان کافیشاپ همیشگی نبش سرو غربی، که قبلا به طور مفصل تعریفش را کردهام. صاحبش گفته بود که "قهوه تای دابل" جدید آورده است. قهوه را که خوردم دیدم راست میگوید، تلخیاش به عربیکا و ترشیاش به روبوستای هندی میماند و البته عطر و بویش هم واقعا دیوانه کننده بود! از همه اینها بگذریم قهوه که تمام میشود، چشیدن مخلوط شیر و عسل به جای مانده در کف فنجان خودش عوالمی دارد! پس از خوردن قهوه تای دابل، در یک لحظه پاسخ پرسشی که قرار بود شما از هفت میلیارد نفر بپرسید، را خودم یافتم و فهمیدم که سختترین کار روی زمین "ارتباط برقرار کردن با ذهنهای آشفته دیگران" است و البته از آن سختتر هم، آموختن یک مطلب علمی به حدود هزار نفر از عزیزان کانال (به طور همزمان) است!
من بعضی وقتها عذاب وجدان میگیرم، و با خودم فکر میکنم که آخر مگر اساتید دیگر، نویسنده های دیگر و اصلا آدمهای دیگر چه گناهی کردهاند که من مرتبا باید اشتباهات علمیشان را نقد کنم، و یا تا این حد عصبانیشان کنم! این قبیل زمانها با خودم عهد میکنم که "دیگر از فردا صبح از هیچ احدی نقد علمی نخواهم کرد" اما واقعا نمیدانم چرا روز بعد همه چیز یادم میرود! تازه همه اینها یک طرف، جدیدا یاد گرفتهام که با ذهنهای آدمهای بیچاره اطرافم هم کلنجار بروم! مثلا دیروز لادن (یکی از دانشجویانم) الگوریتمی ده خطی آورده بود که پاسخ مساله "هشت ملکه" را اشتباه حل میکرد. میگفت نحوه نگارش الگوریتمش صحیح است ولی پاسخهای آن اشتباهی محاسبه میشوند! با همان نگاه اول متوجه شدم که دو عدد از لوپهای استفاده شده در مختصاتهای قطری صفحه شطرنج با یکدیگر تداخل دارند! البته نه تنها قضیه را به او نگفتم، بلکه وانمود کردم هیچ مشکل جدی هم وجود ندارد! سپس تعمدا دو خط الگوریتم را جابهجا و کار را خرابتر کردم، و حالا شد تداخل توی تداخل! نکته جالب توجه آن بود که خرابتر شدن کارکرد الگوریتم، باعث شد لادن متوجه مشکلش شود! در واقع من فقط مشکل الگوریتم او را پررنگتر کردم تا خودش بتواند آن را حل کند. این هم یک تکنیک آموزشی است دیگر! راستش را بخواهید، خودم هم نمیدانم چه رمز و رازی توی مغزم وجود دارد که باعث میشود این طوری به الگوریتمها، به زمین و زمان، و حتی به ذهنهای آشفته دیگران گیر بدهم!
Forwarded from Opensees Community (afshina)
استراتژی پیشرفته (End to End) یا E2E:🌷🌷
در دانش برنامه نویسی یک تکنیک پیشرفته ای وجود دارد به نام استراتژی (End to End) یا E2E.
این تکنیک که اولین بار در سال ۲۰۰۱ مطرح شد، به این صورت است که ابتدا خروجی های یک الگوریتم را به دست آورده و سپس این خروجی ها عینا می شوند ورودی های جدید الگوریتم! دستور شالو فوندیشن جن نیز از این تکنیک تبعیت می کند! به این نحو که شماره های (تگ های) گره های اضافی ساخته شده (توسط نرم افزار) واقع بر تراز صفر، عینا می شوند ابزاری برای تعریف ورودی های جدید!
node 100 $PierX1 $ground ;
node 400 $PierX4 $ground ;
node 190 1.25 $ground ;
node 490 13.75 $ground ;
equalDOF 100 190 1 2 3
equalDOF 400 490 1 2 3
equalDOF 1025 2001 1 2 3
equalDOF 2025 3001 1 2 3
equalDOF 3025 4001 1 2 3
در دانش برنامه نویسی یک تکنیک پیشرفته ای وجود دارد به نام استراتژی (End to End) یا E2E.
این تکنیک که اولین بار در سال ۲۰۰۱ مطرح شد، به این صورت است که ابتدا خروجی های یک الگوریتم را به دست آورده و سپس این خروجی ها عینا می شوند ورودی های جدید الگوریتم! دستور شالو فوندیشن جن نیز از این تکنیک تبعیت می کند! به این نحو که شماره های (تگ های) گره های اضافی ساخته شده (توسط نرم افزار) واقع بر تراز صفر، عینا می شوند ابزاری برای تعریف ورودی های جدید!
node 100 $PierX1 $ground ;
node 400 $PierX4 $ground ;
node 190 1.25 $ground ;
node 490 13.75 $ground ;
equalDOF 100 190 1 2 3
equalDOF 400 490 1 2 3
equalDOF 1025 2001 1 2 3
equalDOF 2025 3001 1 2 3
equalDOF 3025 4001 1 2 3
Forwarded from Opensees Community
فوت نوت شماره ۵۴ از مجموعه نکات کلیدی کدنویسی در نرم افزار OpenSees:🌷
دستورهای کلیدی OpenSees به دو بخش اساسی تفکیک می شوند: دستورهای مبتنی بر درجه های آزادی
(load, mass, fix, equalDOF)
و دستورهایی با ساختارهایی مبتنی بر جهت های مختصاتی
(element zerolength, element twoNodeLink)
برای بیشتر کامندهای مربوط به دسته دوم OpenSees، تعداد جهت های مختصاتی (در مدل های دو بعدی و سه بعدی) شش جهت مختصاتی
X, Y, Z, RotX, RotY, RotZ
هستند که به ترتیب با برچسب های ۱، ۲، ۳، ۴، ۵ و ۶ تعریف می شوند. ولی المان element twoNodeLink در مدل های دوبعدی، ساز مخالف می زند و فقط سه جهت مختصاتی RotZ ،Y ،X را می شناسد!!🌷
دستورهای کلیدی OpenSees به دو بخش اساسی تفکیک می شوند: دستورهای مبتنی بر درجه های آزادی
(load, mass, fix, equalDOF)
و دستورهایی با ساختارهایی مبتنی بر جهت های مختصاتی
(element zerolength, element twoNodeLink)
برای بیشتر کامندهای مربوط به دسته دوم OpenSees، تعداد جهت های مختصاتی (در مدل های دو بعدی و سه بعدی) شش جهت مختصاتی
X, Y, Z, RotX, RotY, RotZ
هستند که به ترتیب با برچسب های ۱، ۲، ۳، ۴، ۵ و ۶ تعریف می شوند. ولی المان element twoNodeLink در مدل های دوبعدی، ساز مخالف می زند و فقط سه جهت مختصاتی RotZ ،Y ،X را می شناسد!!🌷
Forwarded from Opensees Community
ساختار کلی دستورهای کلیدی OpenSees: 🌷🌷
در یک تقسیم بندی کلی، می توان دستورهای کلیدی OpenSees را به دو بخش مهم تفکیک نمود: دسته اول دستورهایی با ساختاری مبتنی بر درجه های آزادی هستند، مثل load، fix، equalDOF و ...
و دسته دوم دستورهایی با ساختاری مبتنی بر جهت های مختصاتی هستند، مثل element zerolength و ...
فرضیات اساسی مدل های دو بعدی:
تعداد محورهای مختصات: دو محور X و Y
تعداد درجه های آزادی در هر گره:
سه درجه آزادی dofy ،dofx و Rotxy که به ترتیب برای OpenSees با برچسب های 1، 2 و 3 تعریف می شوند.
تعداد جهت های مختصاتی:
شش جهت مختصاتی RotZ ، RotY، RotX ، Z ، Y ، X هستند که به ترتیب برای OpenSees با برچسب های 1، 2، 3، 4، 5 و 6 تعریف می شوند.
فرضیات اساسی مدل های سه بعدی:
تعداد محورهای مختصات: سه محور Y ، X و Z
تعداد درجه های آزادی در هر گره:
شش درجه آزادی RotZ ، RotY، RotX ، Z ، Y ، X که به ترتیب برای OpenSees با برچسب های 1، 2، 3، 4، 5 و 6 تعریف می شوند.
تعداد جهت های مختصاتی:
شش جهت مختصاتی RotZ ، RotY، RotX ، Z ، Y ، X هستند که به ترتیب برای OpenSees با برچسب های 1، 2، 3، 4، 5 و 6 تعریف می شوند.🌷🌷
در یک تقسیم بندی کلی، می توان دستورهای کلیدی OpenSees را به دو بخش مهم تفکیک نمود: دسته اول دستورهایی با ساختاری مبتنی بر درجه های آزادی هستند، مثل load، fix، equalDOF و ...
و دسته دوم دستورهایی با ساختاری مبتنی بر جهت های مختصاتی هستند، مثل element zerolength و ...
فرضیات اساسی مدل های دو بعدی:
تعداد محورهای مختصات: دو محور X و Y
تعداد درجه های آزادی در هر گره:
سه درجه آزادی dofy ،dofx و Rotxy که به ترتیب برای OpenSees با برچسب های 1، 2 و 3 تعریف می شوند.
تعداد جهت های مختصاتی:
شش جهت مختصاتی RotZ ، RotY، RotX ، Z ، Y ، X هستند که به ترتیب برای OpenSees با برچسب های 1، 2، 3، 4، 5 و 6 تعریف می شوند.
فرضیات اساسی مدل های سه بعدی:
تعداد محورهای مختصات: سه محور Y ، X و Z
تعداد درجه های آزادی در هر گره:
شش درجه آزادی RotZ ، RotY، RotX ، Z ، Y ، X که به ترتیب برای OpenSees با برچسب های 1، 2، 3، 4، 5 و 6 تعریف می شوند.
تعداد جهت های مختصاتی:
شش جهت مختصاتی RotZ ، RotY، RotX ، Z ، Y ، X هستند که به ترتیب برای OpenSees با برچسب های 1، 2، 3، 4، 5 و 6 تعریف می شوند.🌷🌷
Forwarded from Opensees Community
سوال:
با سلام جناب مهندس
من از دانشجویان Phd پروفسور مارستون بودم و تز پایان نامه ام در زمینه کنترل فعال سازه ها بود که البته الان دریافته ام که در انتخاب این موضوع سنگین اشتباه کرده ام. دکتر مارستون گفتند که "چون شما قبلا Active Control کار کردین و نیز چون هم وطن من و ایرانی هستین، من از شما کمک بگیرم."
خلاصه ای از مدل پایان نامه ام:
سیمیولیشن من برج بانک لس آنجلس (U.S. Bank Tower) به ارتفاع ۳۱۰ متر و با تعداد طبقات ۷۳ طبقه است. بر روی این برج، آنالیزهای IDA تحت ۱۴ رکورد دور از گسل فیما، در دو حالت حلقه بسته (Closed-loop) و حلقه باز (Open-loop) انجام دادم. مشکل بزرگ من این است که در حالت حلقه بسته جوابهایم غیرمنطقی و در حالت حلقه باز کاملا منطقی و مناسب است و استاد راهنمایم از این رخداد ایراد گرفته اند. متاسفانه شما خیلی کم لطف هستین و پیامها را اصلا پاسخگو نیستین. لطفا راهنمایی فرمایید. چون من مهلت ویزایم رو به اتمام است و مسافرم. با سپاس
ادمین ۱: از چه نوع الگوریتمی یا ایده ای برای Active Control استفاده کردین؟
پاسخ: من ۲۴ نقطه Master در کل سازه تعریف کردم و الگوریتم به نحوی تعریف شد که هروقت قدر مطلق جابجایی افقی هر یک از این ۲۴ نقطه از مقدار حاصل ضرب ارتفاع هر نقطه (Level) در β بیشتر شود Actuatorها وارد عمل شده و Active Tendon مربوطه فعال می شود. β هم با توجه به محتوای فرکانسی رکورد مربوطه تعیین می شود و همیشه کمتر از 0.005 است. جهت در نظر گرفتن Delay در پروسه انتقال داده ها از سنسورها به جک ها و نیز در پروسه انتقال فرمان از جک ها به کابل ها، آنالیزها تحت هر رکورد دو بار انجام و تکرار می شوند. تحلیل های بار اول فقط برای شناسایی نقاط مفصل و یا نقاط با جابجایی های بزرگ و زمان های هایلایت هستند و در تحلیل های دوم ۲ تا ۵ ثانیه قبل از زمانهای هایلایت، جک های مربوطه فعال می شوند (Prediction).
ادمین ۱: با تشکر، پاسخ شما را در کانال قرار می دهم.
🌷شما یک کارهایی انجام داده اید که مشخص است در این زمینه مطالعاتی داشتید. اما من دو مشکل بزرگ با شبیه سازی شما دارم:
مشکل اولی که من با شبیه سازی "کنترل فعال سازه ها" شما دارم این است که شما هم مثل بقیه دانشجویان مفهوم ایده و الگوریتم را درک نکردید. بعضی کارها است که من می توانم انجامشان دهم اما نمی توانم توضیحشان بدهم. مثلا من هیچ وقت نتوانستم برای واژه "ایده" در برنامه نویسی، کلمه معادلی پیدا کنم. وقتی خیلی جوانتر بودم هروقت دانشجویان از من می پرسیدند منظورت از "ایده" چیست؟ نمی دانستم چه بگویم. اخیرا یاد گرفته ام که برای دانشجویان زیاد توضیح و تفسیر ندهم و خودم و خودشان را دچار سردرد نکنم. بلکه چند مثال بزنم و بگویم "ایده" یعنی این. الان هم قصد دارم همین کلک را بزنم. ببینید معادله حرکت برج شما این است:
(M + DM1) X'' (t) + (C + DC1) X' (t) + (K + DK1) X (t) = (E+DE1) F(t)
کاری که شما باید انجام می دادید و اصلا فراموش کردید که انجام بدهید، این بود که کدی بنویسید که m1 ، c1 و k1 را طبق توصیه پروفسور تاکوجی کابوری، فقط از طریق یکی از ۶ ایده ذیل به دست آورد:
۱_ الگوریتم تخصیص قطب (فرکانس سیستم): مطرح بودن فقط بحث پایداری و نه بهینه سازی، Pole Assignment
۲_ الگوریتم کنترل بهینه کلاسیک
۳_ الگوریتم کنترل آنی بهینه Instantaneous Optimal Control
۴_ الگوریتم کنترل فضای مودی مستقل IMSC
۵_ الگوریتم کنترل ضربه ای
۶_ الگوریتم کنترل پیش بین
مشکل دوم بنده با کد شما این است که شما باید به جای کنترل ۲۴ نقطه در کدنویسی، فقط یک نقطه را در ۲۴ حالت یا جایگاه کنترل کنید. من اگر قرار بود این کد را بنویسم مثل شما ۲۴ سنسور در ۲۴ نقطه قرار می دادم، اما در کدنویسی من هیچکدام از این سنسورها همزمان کار نمی کردند. شما باید اونقدر هنر برنامه نویسی داشته باشید که بتوانید در کل زمان ارتعاش، در Run اول ۲۴ نقطه-زمان بحرانی را پیدا کنید و در Run دوم سنسورهایشان در پارت زمانی خودشان روشن باشند.
کنترل حلقه-بسته یعنی شما متغیرهای پاسخ سازه را اندازه گیری و کنترل می کنید و حلقه-باز یعنی شما میزان تحریک خارجی را کنترل می کنید. قطعا روش حلقه- بسته از روش حلقه-باز دقیق تر است. در واقع در سیستم حلقه بسته شما، یا جک ها اصلا عمل نمی کنند و یا جک ها هم زمان عمل می کنند چون سنسورها با هم تلاقی دارند.🌷
با سلام جناب مهندس
من از دانشجویان Phd پروفسور مارستون بودم و تز پایان نامه ام در زمینه کنترل فعال سازه ها بود که البته الان دریافته ام که در انتخاب این موضوع سنگین اشتباه کرده ام. دکتر مارستون گفتند که "چون شما قبلا Active Control کار کردین و نیز چون هم وطن من و ایرانی هستین، من از شما کمک بگیرم."
خلاصه ای از مدل پایان نامه ام:
سیمیولیشن من برج بانک لس آنجلس (U.S. Bank Tower) به ارتفاع ۳۱۰ متر و با تعداد طبقات ۷۳ طبقه است. بر روی این برج، آنالیزهای IDA تحت ۱۴ رکورد دور از گسل فیما، در دو حالت حلقه بسته (Closed-loop) و حلقه باز (Open-loop) انجام دادم. مشکل بزرگ من این است که در حالت حلقه بسته جوابهایم غیرمنطقی و در حالت حلقه باز کاملا منطقی و مناسب است و استاد راهنمایم از این رخداد ایراد گرفته اند. متاسفانه شما خیلی کم لطف هستین و پیامها را اصلا پاسخگو نیستین. لطفا راهنمایی فرمایید. چون من مهلت ویزایم رو به اتمام است و مسافرم. با سپاس
ادمین ۱: از چه نوع الگوریتمی یا ایده ای برای Active Control استفاده کردین؟
پاسخ: من ۲۴ نقطه Master در کل سازه تعریف کردم و الگوریتم به نحوی تعریف شد که هروقت قدر مطلق جابجایی افقی هر یک از این ۲۴ نقطه از مقدار حاصل ضرب ارتفاع هر نقطه (Level) در β بیشتر شود Actuatorها وارد عمل شده و Active Tendon مربوطه فعال می شود. β هم با توجه به محتوای فرکانسی رکورد مربوطه تعیین می شود و همیشه کمتر از 0.005 است. جهت در نظر گرفتن Delay در پروسه انتقال داده ها از سنسورها به جک ها و نیز در پروسه انتقال فرمان از جک ها به کابل ها، آنالیزها تحت هر رکورد دو بار انجام و تکرار می شوند. تحلیل های بار اول فقط برای شناسایی نقاط مفصل و یا نقاط با جابجایی های بزرگ و زمان های هایلایت هستند و در تحلیل های دوم ۲ تا ۵ ثانیه قبل از زمانهای هایلایت، جک های مربوطه فعال می شوند (Prediction).
ادمین ۱: با تشکر، پاسخ شما را در کانال قرار می دهم.
🌷شما یک کارهایی انجام داده اید که مشخص است در این زمینه مطالعاتی داشتید. اما من دو مشکل بزرگ با شبیه سازی شما دارم:
مشکل اولی که من با شبیه سازی "کنترل فعال سازه ها" شما دارم این است که شما هم مثل بقیه دانشجویان مفهوم ایده و الگوریتم را درک نکردید. بعضی کارها است که من می توانم انجامشان دهم اما نمی توانم توضیحشان بدهم. مثلا من هیچ وقت نتوانستم برای واژه "ایده" در برنامه نویسی، کلمه معادلی پیدا کنم. وقتی خیلی جوانتر بودم هروقت دانشجویان از من می پرسیدند منظورت از "ایده" چیست؟ نمی دانستم چه بگویم. اخیرا یاد گرفته ام که برای دانشجویان زیاد توضیح و تفسیر ندهم و خودم و خودشان را دچار سردرد نکنم. بلکه چند مثال بزنم و بگویم "ایده" یعنی این. الان هم قصد دارم همین کلک را بزنم. ببینید معادله حرکت برج شما این است:
(M + DM1) X'' (t) + (C + DC1) X' (t) + (K + DK1) X (t) = (E+DE1) F(t)
کاری که شما باید انجام می دادید و اصلا فراموش کردید که انجام بدهید، این بود که کدی بنویسید که m1 ، c1 و k1 را طبق توصیه پروفسور تاکوجی کابوری، فقط از طریق یکی از ۶ ایده ذیل به دست آورد:
۱_ الگوریتم تخصیص قطب (فرکانس سیستم): مطرح بودن فقط بحث پایداری و نه بهینه سازی، Pole Assignment
۲_ الگوریتم کنترل بهینه کلاسیک
۳_ الگوریتم کنترل آنی بهینه Instantaneous Optimal Control
۴_ الگوریتم کنترل فضای مودی مستقل IMSC
۵_ الگوریتم کنترل ضربه ای
۶_ الگوریتم کنترل پیش بین
مشکل دوم بنده با کد شما این است که شما باید به جای کنترل ۲۴ نقطه در کدنویسی، فقط یک نقطه را در ۲۴ حالت یا جایگاه کنترل کنید. من اگر قرار بود این کد را بنویسم مثل شما ۲۴ سنسور در ۲۴ نقطه قرار می دادم، اما در کدنویسی من هیچکدام از این سنسورها همزمان کار نمی کردند. شما باید اونقدر هنر برنامه نویسی داشته باشید که بتوانید در کل زمان ارتعاش، در Run اول ۲۴ نقطه-زمان بحرانی را پیدا کنید و در Run دوم سنسورهایشان در پارت زمانی خودشان روشن باشند.
کنترل حلقه-بسته یعنی شما متغیرهای پاسخ سازه را اندازه گیری و کنترل می کنید و حلقه-باز یعنی شما میزان تحریک خارجی را کنترل می کنید. قطعا روش حلقه- بسته از روش حلقه-باز دقیق تر است. در واقع در سیستم حلقه بسته شما، یا جک ها اصلا عمل نمی کنند و یا جک ها هم زمان عمل می کنند چون سنسورها با هم تلاقی دارند.🌷