روشن کردن تکلیف دعواهای بین اینترپرترهای مختلف، یک بار برای همیشه!🌷🌷
عزیزان پرسیده بودند که "آیا به طور کلی لینک کردن نرم افزارهایی مثل اپنسیس، متلب و ... با یکدیگر خوب است یا بد است؟"
در پاسخ باید بگویم خیر، هرگز این کار را نکنید!، مگر آنکه ضعف های اینترپرترهای مختلف (Different Interpreters) را بشناسید! من چون به تمامی این ضعف های خطرناک آگاه هستم و گاها برخی از آنها را دست کاری نیز نموده ام، همیشه از این پتانسیل بالقوه استفاده بهینه می کنم!
در لحظه های آتی و جهت کمی تخصصی تر کردن مباحث، یک بلوک سطح متوسط را به دو زبان برنامه نویسی TCL و #C می نویسم و در کانال قرار می دهم. پس از آن اگر بتوانم مشکلم را با پدیده عجیب و غریب زمان حل کنم!، به تفصیل خواهم گفت که کامندهای مختلف در این دو زبان متفاوت، چگونه به زبان ماشین تبدیل می شوند؟! و چگونه برای یک کامند خاص، بنیان های اینترپرترهای دو زبان برنامه نویسی با یکدیگر تعارضاتی جدی و دعواهایی خیلی شدید دارند؟!
عزیزان پرسیده بودند که "آیا به طور کلی لینک کردن نرم افزارهایی مثل اپنسیس، متلب و ... با یکدیگر خوب است یا بد است؟"
در پاسخ باید بگویم خیر، هرگز این کار را نکنید!، مگر آنکه ضعف های اینترپرترهای مختلف (Different Interpreters) را بشناسید! من چون به تمامی این ضعف های خطرناک آگاه هستم و گاها برخی از آنها را دست کاری نیز نموده ام، همیشه از این پتانسیل بالقوه استفاده بهینه می کنم!
در لحظه های آتی و جهت کمی تخصصی تر کردن مباحث، یک بلوک سطح متوسط را به دو زبان برنامه نویسی TCL و #C می نویسم و در کانال قرار می دهم. پس از آن اگر بتوانم مشکلم را با پدیده عجیب و غریب زمان حل کنم!، به تفصیل خواهم گفت که کامندهای مختلف در این دو زبان متفاوت، چگونه به زبان ماشین تبدیل می شوند؟! و چگونه برای یک کامند خاص، بنیان های اینترپرترهای دو زبان برنامه نویسی با یکدیگر تعارضاتی جدی و دعواهایی خیلی شدید دارند؟!
بلوک های زبان برنامه نویسی TCL مختص مختصات نودها و تعریف قیود، جهت مقایسه با اینترپرتر زبان #C (پست بعدی):🌷
wipe
# Units: kip, in, sec
# ----------------------------
# Start of model generation
# ----------------------------
# Create ModelBuilder with 3 dimensions and 6 DOF/node
model BasicBuilder -ndm 3 -ndf 6
# Define geometry
# ---------------
# Set parameters for model geometry
set h 144.0; # Story height
set by 240.0; # Bay width in Y-direction
set bx 240.0; # Bay width in X-direction
# Create nodes
# tag X Y Z
node 1 [expr -$bx/2] [expr $by/2] 0
node 2 [expr $bx/2] [expr $by/2] 0
node 3 [expr $bx/2] [expr -$by/2] 0
node 4 [expr -$bx/2] [expr -$by/2] 0
node 5 [expr -$bx/2] [expr $by/2] $h
node 6 [expr $bx/2] [expr $by/2] $h
node 7 [expr $bx/2] [expr -$by/2] $h
node 8 [expr -$bx/2] [expr -$by/2] $h
node 10 [expr -$bx/2] [expr $by/2] [expr 2*$h]
node 11 [expr $bx/2] [expr $by/2] [expr 2*$h]
node 12 [expr $bx/2] [expr -$by/2] [expr 2*$h]
node 13 [expr -$bx/2] [expr -$by/2] [expr 2*$h]
node 15 [expr -$bx/2] [expr $by/2] [expr 3*$h]
node 16 [expr $bx/2] [expr $by/2] [expr 3*$h]
node 17 [expr $bx/2] [expr -$by/2] [expr 3*$h]
node 18 [expr -$bx/2] [expr -$by/2] [expr 3*$h]
# Master nodes for rigid diaphragm
# tag X Y Z
node 9 0 0 $h
node 14 0 0 [expr 2*$h]
node 19 0 0 [expr 3*$h]
# Set base constraints
# tag DX DY DZ RX RY RZ
fix 1 1 1 1 1 1 1
fix 2 1 1 1 1 1 1
fix 3 1 1 1 1 1 1
fix 4 1 1 1 1 1 1
# Define rigid diaphragm multi-point constraints
# normalDir master slaves
rigidDiaphragm 3 9 5 6 7 8
rigidDiaphragm 3 14 10 11 12 13
rigidDiaphragm 3 19 15 16 17 18
# Constraints for rigid diaphragm master nodes
# tag DX DY DZ RX RY RZ
fix 9 0 0 1 1 1 0
fix 14 0 0 1 1 1 0
fix 19 0 0 1 1 1 0
wipe
# Units: kip, in, sec
# ----------------------------
# Start of model generation
# ----------------------------
# Create ModelBuilder with 3 dimensions and 6 DOF/node
model BasicBuilder -ndm 3 -ndf 6
# Define geometry
# ---------------
# Set parameters for model geometry
set h 144.0; # Story height
set by 240.0; # Bay width in Y-direction
set bx 240.0; # Bay width in X-direction
# Create nodes
# tag X Y Z
node 1 [expr -$bx/2] [expr $by/2] 0
node 2 [expr $bx/2] [expr $by/2] 0
node 3 [expr $bx/2] [expr -$by/2] 0
node 4 [expr -$bx/2] [expr -$by/2] 0
node 5 [expr -$bx/2] [expr $by/2] $h
node 6 [expr $bx/2] [expr $by/2] $h
node 7 [expr $bx/2] [expr -$by/2] $h
node 8 [expr -$bx/2] [expr -$by/2] $h
node 10 [expr -$bx/2] [expr $by/2] [expr 2*$h]
node 11 [expr $bx/2] [expr $by/2] [expr 2*$h]
node 12 [expr $bx/2] [expr -$by/2] [expr 2*$h]
node 13 [expr -$bx/2] [expr -$by/2] [expr 2*$h]
node 15 [expr -$bx/2] [expr $by/2] [expr 3*$h]
node 16 [expr $bx/2] [expr $by/2] [expr 3*$h]
node 17 [expr $bx/2] [expr -$by/2] [expr 3*$h]
node 18 [expr -$bx/2] [expr -$by/2] [expr 3*$h]
# Master nodes for rigid diaphragm
# tag X Y Z
node 9 0 0 $h
node 14 0 0 [expr 2*$h]
node 19 0 0 [expr 3*$h]
# Set base constraints
# tag DX DY DZ RX RY RZ
fix 1 1 1 1 1 1 1
fix 2 1 1 1 1 1 1
fix 3 1 1 1 1 1 1
fix 4 1 1 1 1 1 1
# Define rigid diaphragm multi-point constraints
# normalDir master slaves
rigidDiaphragm 3 9 5 6 7 8
rigidDiaphragm 3 14 10 11 12 13
rigidDiaphragm 3 19 15 16 17 18
# Constraints for rigid diaphragm master nodes
# tag DX DY DZ RX RY RZ
fix 9 0 0 1 1 1 0
fix 14 0 0 1 1 1 0
fix 19 0 0 1 1 1 0
Media is too big
VIEW IN TELEGRAM
مهندسان در کانادا پس از فراغت از تحصيل و اخذ امتياز لازم در آزمونی خاص، در آيينی قسم تعهد میخورند و به آنان انگشتر فولادی نشان مهندسان حرفهای اعطا میشود که آن را باید در انگشت کوچک دست غالب و امضاکننده بیاندازند تا ضمن یادآوری وظایف خطیر و مسئولیت حساسشان، همواره از نقش حرفهای، اخلاقی و اجتماعی خود به عنوان یک مهندس آگاه باشند. حلقه ازدواج، هزاران بار از این حلقه فولادین حساس تر و مسئولیت زاتر است!
یکی از مکان های مورد علاقه ام، طبقه دوم یک کافی شاپ در نزدیکی آموزشگاهی است که در آنجا تدریس میکنم. پاتوقی که بیشترین سهم خاطرههایم و مطالعاتم متعلق به آنجا است! مکانی آرام، دنج و البته کمی هم رمانتیک! از این بالا میتوانم آدمهایی را ببینم که آنها نمیتوانند من را بینند! (چون معمولا موقع راه رفتن به بالا نگاه نمیکنند) با برانداز کردن میتوانم مکثهایشان، حرکتهایشان و روزمرگیهایشان را ببینم و خوب به تمامی آنها فکر کنم. در نهایت پس از تفکر و تجسمی عمیق، ذهنم را وادار کنم تا این آدمها را با کامندهایی جایگزین نماید!، و ببیند آیا الگوریتم حاصله از این حجم کامند عصبانی، کاربردی هم می تواند داشته باشد یا خیر؟! درخت پشت سرم، در پیاده روی خیابان سرو غربی واقع شده است و رایحه عجیب و غریبی دارد. همین جا بود که تعداد زیادی از الگوریتمها را رمزگشایی کردم. صاحب کافی شاپ زیبا که دوستم نیز است، خوب میداند موقع برنامه نویسی باید برایم قهوه دابل بیاورد! و خوب میداند که من دوست دارم ساعتها تنها باشم و با الگوریتمهای پیچیده کلنجار بروم. و برایم خیلی غم انگیز است که به زودی باید از این مکان برای همیشه خداحافظی نمایم!
بلوک های زبان برنامه نویسی #C مختص مختصات نودها و تعریف قیود، جهت مقایسه با اینترپرتر زبان TCL (سه پست قبل):🌷
//# Units: kip, in, sec
//# ----------------------------
//# Start of model generation
//# ----------------------------
//# Create ModelBuilder with 3 dimensions and 6 DOF/node
//model BasicBuilder -ndm 3 - ndf 6
var theModel = new OpenSees.AnalysisModelWrapper();
var theDomain = new OpenSees.Components.DomainWrapper();
//# Define geometry
//# Set parameters for model geometry
// set h 144.0; # Story height
//set by 240.0; # Bay width in Y-direction
//set bx 240.0; # Bay width in X-direction
var h = 144.0; //Story height
var by = 240.0; //Bay width in Y-direction
var bx = 240.0; //Bay width in X-direction
//# Create nodes
//# tag X Y Z
// node 1[expr -$bx / 2][expr $by / 2] 0
//node 2[expr $bx / 2][expr $by / 2] 0
//node 3[expr $bx / 2][expr -$by / 2] 0
//node 4[expr -$bx / 2][expr -$by / 2] 0
//node 5[expr -$bx / 2][expr $by / 2] $h
//node 6[expr $bx / 2][expr $by / 2] $h
//node 7[expr $bx / 2][expr -$by / 2] $h
//node 8[expr -$bx / 2][expr -$by / 2] $h
//node 10[expr -$bx / 2][expr $by / 2][expr 2 *$h]
//node 11[expr $bx / 2][expr $by / 2][expr 2 *$h]
//node 12[expr $bx / 2][expr -$by / 2][expr 2 *$h]
//node 13[expr -$bx / 2][expr -$by / 2][expr 2 *$h]
//node 15[expr -$bx / 2][expr $by / 2][expr 3 *$h]
//node 16[expr $bx / 2][expr $by / 2][expr 3 *$h]
//node 17[expr $bx / 2][expr -$by / 2][expr 3 *$h]
//node 18[expr -$bx / 2][expr -$by / 2][expr 3 *$h]
theDomain.AddNode(new OpenSees.Components.NodeWrapper(1, 6, -bx / 2, by / 2, 0));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(2, 6, bx / 2, by / 2, 0));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(3, 6, bx / 2, -by / 2, 0));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(4, 6, -bx / 2, -by / 2, 0));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(5, 6, -bx / 2, by / 2, h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(6, 6, bx / 2, by / 2, h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(7, 6, bx / 2, -by / 2, h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(8, 6, -bx / 2, -by / 2, h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(10, 6, -bx / 2, by / 2, 2 * h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(11, 6, bx / 2, by / 2, 2 * h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(12, 6, bx / 2, -by / 2, 2 * h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(13, 6, -bx / 2, -by / 2, 2 * h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(15, 6, -bx / 2, by / 2, 3 * h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(16, 6, bx / 2, by / 2, 3 * h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(17, 6, bx / 2, -by / 2, 3 * h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(18, 6, -bx / 2, -by / 2, 3 * h));
//# Master nodes for rigid diaphragm
//# tag X Y Z
//node 9 0 0 $h
//node 14 0 0[expr 2 *$h]
//node 19 0 0[expr 3 *$h]
theDomain.AddNode(new OpenSees.Components.NodeWrapper(9, 6, 0, 0, 1 * h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(14, 6, 0, 0, 2 * h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(19, 6, 0, 0, 3 * h));
//# Set base constraints
//# tag DX DY DZ RX RY RZ
// fix 1 1 1 1 1 1 1
//fix 2 1 1 1 1 1 1
//fix 3 1 1 1 1 1 1
//fix 4 1 1 1 1 1 1
foreach (var nodeId in new int[] { 1, 2, 3, 4 })
{
for (var i = 0; i < 6; i++)
{
theDomain.AddSP_Constraint(new OpenSees.Components.Constraints.SP_ConstraintWrapper(nodeId, i, 0.0, true));
}
}
//# Define rigid diaphragm multi-point constraints
//# normalDir master slaves
//rigidDiaphragm 3 9 5 6 7 8
//rigidDiaphragm 3 14 10 11 12 13
//rigidDiaphragm 3 19 15 16 17 18
//# Units: kip, in, sec
//# ----------------------------
//# Start of model generation
//# ----------------------------
//# Create ModelBuilder with 3 dimensions and 6 DOF/node
//model BasicBuilder -ndm 3 - ndf 6
var theModel = new OpenSees.AnalysisModelWrapper();
var theDomain = new OpenSees.Components.DomainWrapper();
//# Define geometry
//# Set parameters for model geometry
// set h 144.0; # Story height
//set by 240.0; # Bay width in Y-direction
//set bx 240.0; # Bay width in X-direction
var h = 144.0; //Story height
var by = 240.0; //Bay width in Y-direction
var bx = 240.0; //Bay width in X-direction
//# Create nodes
//# tag X Y Z
// node 1[expr -$bx / 2][expr $by / 2] 0
//node 2[expr $bx / 2][expr $by / 2] 0
//node 3[expr $bx / 2][expr -$by / 2] 0
//node 4[expr -$bx / 2][expr -$by / 2] 0
//node 5[expr -$bx / 2][expr $by / 2] $h
//node 6[expr $bx / 2][expr $by / 2] $h
//node 7[expr $bx / 2][expr -$by / 2] $h
//node 8[expr -$bx / 2][expr -$by / 2] $h
//node 10[expr -$bx / 2][expr $by / 2][expr 2 *$h]
//node 11[expr $bx / 2][expr $by / 2][expr 2 *$h]
//node 12[expr $bx / 2][expr -$by / 2][expr 2 *$h]
//node 13[expr -$bx / 2][expr -$by / 2][expr 2 *$h]
//node 15[expr -$bx / 2][expr $by / 2][expr 3 *$h]
//node 16[expr $bx / 2][expr $by / 2][expr 3 *$h]
//node 17[expr $bx / 2][expr -$by / 2][expr 3 *$h]
//node 18[expr -$bx / 2][expr -$by / 2][expr 3 *$h]
theDomain.AddNode(new OpenSees.Components.NodeWrapper(1, 6, -bx / 2, by / 2, 0));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(2, 6, bx / 2, by / 2, 0));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(3, 6, bx / 2, -by / 2, 0));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(4, 6, -bx / 2, -by / 2, 0));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(5, 6, -bx / 2, by / 2, h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(6, 6, bx / 2, by / 2, h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(7, 6, bx / 2, -by / 2, h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(8, 6, -bx / 2, -by / 2, h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(10, 6, -bx / 2, by / 2, 2 * h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(11, 6, bx / 2, by / 2, 2 * h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(12, 6, bx / 2, -by / 2, 2 * h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(13, 6, -bx / 2, -by / 2, 2 * h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(15, 6, -bx / 2, by / 2, 3 * h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(16, 6, bx / 2, by / 2, 3 * h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(17, 6, bx / 2, -by / 2, 3 * h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(18, 6, -bx / 2, -by / 2, 3 * h));
//# Master nodes for rigid diaphragm
//# tag X Y Z
//node 9 0 0 $h
//node 14 0 0[expr 2 *$h]
//node 19 0 0[expr 3 *$h]
theDomain.AddNode(new OpenSees.Components.NodeWrapper(9, 6, 0, 0, 1 * h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(14, 6, 0, 0, 2 * h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(19, 6, 0, 0, 3 * h));
//# Set base constraints
//# tag DX DY DZ RX RY RZ
// fix 1 1 1 1 1 1 1
//fix 2 1 1 1 1 1 1
//fix 3 1 1 1 1 1 1
//fix 4 1 1 1 1 1 1
foreach (var nodeId in new int[] { 1, 2, 3, 4 })
{
for (var i = 0; i < 6; i++)
{
theDomain.AddSP_Constraint(new OpenSees.Components.Constraints.SP_ConstraintWrapper(nodeId, i, 0.0, true));
}
}
//# Define rigid diaphragm multi-point constraints
//# normalDir master slaves
//rigidDiaphragm 3 9 5 6 7 8
//rigidDiaphragm 3 14 10 11 12 13
//rigidDiaphragm 3 19 15 16 17 18
theDomain.CreateRigidDiaphragm(9, new IDWrapper(new int[] { 5, 6, 7, 8 }), 2);
theDomain.CreateRigidDiaphragm(14, new IDWrapper(new int[] { 10, 11, 12, 13 }), 2);
theDomain.CreateRigidDiaphragm(19, new IDWrapper(new int[] { 15, 16, 17, 18 }), 2);
//# Constraints for rigid diaphragm master nodes
//# tag DX DY DZ RX RY RZ
//fix 9 0 0 1 1 1 0
//fix 14 0 0 1 1 1 0
//fix 19 0 0 1 1 1 0
foreach (var nodeId in new int[] { 9, 14, 19 })
{
for (var i = 2; i < 5; i++)
{
theDomain.AddSP_Constraint(new OpenSees.Components.Constraints.SP_ConstraintWrapper(nodeId, i, 0.0, true));
}
}
theDomain.CreateRigidDiaphragm(14, new IDWrapper(new int[] { 10, 11, 12, 13 }), 2);
theDomain.CreateRigidDiaphragm(19, new IDWrapper(new int[] { 15, 16, 17, 18 }), 2);
//# Constraints for rigid diaphragm master nodes
//# tag DX DY DZ RX RY RZ
//fix 9 0 0 1 1 1 0
//fix 14 0 0 1 1 1 0
//fix 19 0 0 1 1 1 0
foreach (var nodeId in new int[] { 9, 14, 19 })
{
for (var i = 2; i < 5; i++)
{
theDomain.AddSP_Constraint(new OpenSees.Components.Constraints.SP_ConstraintWrapper(nodeId, i, 0.0, true));
}
}
This media is not supported in your browser
VIEW IN TELEGRAM
لحظه بازكردن فواره هاي پارك پترهوف در سنت پترزبورگ، خليج فنلاند، ۲۳ مرداد ۱۳۹۸ رأس ساعت ١١
بلوک زبان برنامه نویسی TCL مختص تعریف رفتار مصالح، جهت مقایسه تخصصی با اینترپرتر زبان #C (پست بعدی):🌷
# Define materials for nonlinear columns
# --------------------------------------
# CONCRETE
# Core concrete (confined)
# tag f'c epsc0 f'cu epscu
uniaxialMaterial Concrete01 1 -5.0 -0.005 -3.5 -0.02
# Cover concrete (unconfined)
set fc 4.0
uniaxialMaterial Concrete01 2 -$fc -0.002 0.0 -0.006
# STEEL
# Reinforcing steel
# tag fy E b
uniaxialMaterial Steel01 3 60 30000 0.02
# Column width
set h 18.0
# Source in a procedure for generating an RC fiber section
source RCsection.tcl
# Column torsional stiffness
set GJ 1.0e10;
# Call the procedure to generate the column section
# id h b cover core cover steel nBars barArea nfCoreY nfCoreZ nfCoverY nfCoverZ GJ
RCsection 1 $h $h 2.5 1 2 3 3 0.79 8 8 10 10 $GJ
# Concrete elastic stiffness
set E [expr 57000.0*sqrt($fc*1000)/1000];
# Linear elastic torsion for the column
# uniaxialMaterial Elastic 10 $GJ
# Attach torsion to the RC column section
# tag uniTag uniCode secTag
# section Aggregator 2 10 T -section 1
# Define materials for nonlinear columns
# --------------------------------------
# CONCRETE
# Core concrete (confined)
# tag f'c epsc0 f'cu epscu
uniaxialMaterial Concrete01 1 -5.0 -0.005 -3.5 -0.02
# Cover concrete (unconfined)
set fc 4.0
uniaxialMaterial Concrete01 2 -$fc -0.002 0.0 -0.006
# STEEL
# Reinforcing steel
# tag fy E b
uniaxialMaterial Steel01 3 60 30000 0.02
# Column width
set h 18.0
# Source in a procedure for generating an RC fiber section
source RCsection.tcl
# Column torsional stiffness
set GJ 1.0e10;
# Call the procedure to generate the column section
# id h b cover core cover steel nBars barArea nfCoreY nfCoreZ nfCoverY nfCoverZ GJ
RCsection 1 $h $h 2.5 1 2 3 3 0.79 8 8 10 10 $GJ
# Concrete elastic stiffness
set E [expr 57000.0*sqrt($fc*1000)/1000];
# Linear elastic torsion for the column
# uniaxialMaterial Elastic 10 $GJ
# Attach torsion to the RC column section
# tag uniTag uniCode secTag
# section Aggregator 2 10 T -section 1
بلوک زبان برنامه نویسی #C مختص رفتار مصالح و تعریف مقاطع، جهت مقایسه با اینترپرتر زبان TCL (شش پست قبل):🌷
//# Define materials for nonlinear columns
//# --------------------------------------
//# CONCRETE
//# Core concrete (confined)
//# tag f'c epsc0 f'cu epscu
//uniaxialMaterial Concrete01 1 - 5.0 - 0.005 - 3.5 - 0.02
var mat1 = new OpenSees.Materials.Uniaxials.Concrete01Wrapper(1, -5.0, -0.005, -3.5, -0.02);
//# Cover concrete (unconfined)
var fc = 4.0;
var mat2 = new OpenSees.Materials.Uniaxials.Concrete01Wrapper(2, -fc, -0.002, 0, -0.006);
//# STEEL
//# Reinforcing steel
//# tag fy E b
//uniaxialMaterial Steel01 3 60 30000 0.02
var mat3 = new OpenSees.Materials.Uniaxials.Steel01Wrapper(3, 60, 30000, 0.02);
var colh = 18.0;
var colb = 18.0;
//# Concrete elastic stiffness
//set E[expr 57000.0 * sqrt($fc * 1000) / 1000];
var Ec = 57000.0 * Math.Sqrt(fc * 1000) / 1000;
var GJ = 1.0e10;
var GJMat = new OpenSees.Materials.Uniaxials.ElasticMaterialWrapper(10, GJ, 0);
OpenSees.Materials.Sections.SectionForceDeformationWrapper colSection = null;
if (!elastic)
{
colSection = CreateRCSection(1, colh, colb, 2.5,
new KeyValuePair<int, Materials.Uniaxials.UniaxialMaterialWrapper>(1, mat1),
new KeyValuePair<int, Materials.Uniaxials.UniaxialMaterialWrapper>(2, mat2),
new KeyValuePair<int, Materials.Uniaxials.UniaxialMaterialWrapper>(3, mat3),
3, 0.79, 8, 8, 10, 10, GJMat);
}
else
{
colSection = new OpenSees.Materials.Sections.ElasticSection3dWrapper(4, Ec, colb * colh, 1 / 12.0 * colb * Math.Pow(colh, 3), 1 / 12.0 * colh * Math.Pow(colb, 3), GJ, 1);
}
//# Define materials for nonlinear columns
//# --------------------------------------
//# CONCRETE
//# Core concrete (confined)
//# tag f'c epsc0 f'cu epscu
//uniaxialMaterial Concrete01 1 - 5.0 - 0.005 - 3.5 - 0.02
var mat1 = new OpenSees.Materials.Uniaxials.Concrete01Wrapper(1, -5.0, -0.005, -3.5, -0.02);
//# Cover concrete (unconfined)
var fc = 4.0;
var mat2 = new OpenSees.Materials.Uniaxials.Concrete01Wrapper(2, -fc, -0.002, 0, -0.006);
//# STEEL
//# Reinforcing steel
//# tag fy E b
//uniaxialMaterial Steel01 3 60 30000 0.02
var mat3 = new OpenSees.Materials.Uniaxials.Steel01Wrapper(3, 60, 30000, 0.02);
var colh = 18.0;
var colb = 18.0;
//# Concrete elastic stiffness
//set E[expr 57000.0 * sqrt($fc * 1000) / 1000];
var Ec = 57000.0 * Math.Sqrt(fc * 1000) / 1000;
var GJ = 1.0e10;
var GJMat = new OpenSees.Materials.Uniaxials.ElasticMaterialWrapper(10, GJ, 0);
OpenSees.Materials.Sections.SectionForceDeformationWrapper colSection = null;
if (!elastic)
{
colSection = CreateRCSection(1, colh, colb, 2.5,
new KeyValuePair<int, Materials.Uniaxials.UniaxialMaterialWrapper>(1, mat1),
new KeyValuePair<int, Materials.Uniaxials.UniaxialMaterialWrapper>(2, mat2),
new KeyValuePair<int, Materials.Uniaxials.UniaxialMaterialWrapper>(3, mat3),
3, 0.79, 8, 8, 10, 10, GJMat);
}
else
{
colSection = new OpenSees.Materials.Sections.ElasticSection3dWrapper(4, Ec, colb * colh, 1 / 12.0 * colb * Math.Pow(colh, 3), 1 / 12.0 * colh * Math.Pow(colb, 3), GJ, 1);
}
بلوک های زبان برنامه نویسی TCL مختص تعریف مقاطع و المان های غیرخطی، جهت مقایسه با اینترپرتر زبان #C (پست بعدی):🌷
set colSec 1
# Define column elements
#set PDelta "ON"
set PDelta "OFF"
# Geometric transformation for columns
if {$PDelta == "ON"} {
# tag vecxz
geomTransf LinearWithPDelta 1 1 0 0
} else {
geomTransf Linear 1 1 0 0
}
# Number of column integration points (sections)
set np 4
# Create the nonlinear column elements
# tag ndI ndJ nPts secID transf
element nonlinearBeamColumn 1 1 5 $np $colSec 1
element nonlinearBeamColumn 2 2 6 $np $colSec 1
element nonlinearBeamColumn 3 3 7 $np $colSec 1
element nonlinearBeamColumn 4 4 8 $np $colSec 1
element nonlinearBeamColumn 5 5 10 $np $colSec 1
element nonlinearBeamColumn 6 6 11 $np $colSec 1
element nonlinearBeamColumn 7 7 12 $np $colSec 1
element nonlinearBeamColumn 8 8 13 $np $colSec 1
element nonlinearBeamColumn 9 10 15 $np $colSec 1
element nonlinearBeamColumn 10 11 16 $np $colSec 1
element nonlinearBeamColumn 11 12 17 $np $colSec 1
element nonlinearBeamColumn 12 13 18 $np $colSec 1
# Define beam elements
# Define material properties for elastic beams
# Using beam depth of 24 and width of 18
# --------------------------------------------
set Abeam [expr 18*24];
# "Cracked" second moments of area
set Ibeamzz [expr 0.5*1.0/12*18*pow(24,3)];
set Ibeamyy [expr 0.5*1.0/12*24*pow(18,3)];
# Define elastic section for beams
# tag E A Iz Iy G J
section Elastic 3 $E $Abeam $Ibeamzz $Ibeamyy $GJ 1.0
set beamSec 3
# Geometric transformation for beams
# tag vecxz
geomTransf Linear 2 1 1 0
# Number of beam integration points (sections)
set np 3
# Create the beam elements
# tag ndI ndJ nPts secID transf
element nonlinearBeamColumn 13 5 6 $np $beamSec 2
element nonlinearBeamColumn 14 6 7 $np $beamSec 2
element nonlinearBeamColumn 15 7 8 $np $beamSec 2
element nonlinearBeamColumn 16 8 5 $np $beamSec 2
element nonlinearBeamColumn 17 10 11 $np $beamSec 2
element nonlinearBeamColumn 18 11 12 $np $beamSec 2
element nonlinearBeamColumn 19 12 13 $np $beamSec 2
element nonlinearBeamColumn 20 13 10 $np $beamSec 2
element nonlinearBeamColumn 21 15 16 $np $beamSec 2
element nonlinearBeamColumn 22 16 17 $np $beamSec 2
element nonlinearBeamColumn 23 17 18 $np $beamSec 2
element nonlinearBeamColumn 24 18 15 $np $beamSec 2
set colSec 1
# Define column elements
#set PDelta "ON"
set PDelta "OFF"
# Geometric transformation for columns
if {$PDelta == "ON"} {
# tag vecxz
geomTransf LinearWithPDelta 1 1 0 0
} else {
geomTransf Linear 1 1 0 0
}
# Number of column integration points (sections)
set np 4
# Create the nonlinear column elements
# tag ndI ndJ nPts secID transf
element nonlinearBeamColumn 1 1 5 $np $colSec 1
element nonlinearBeamColumn 2 2 6 $np $colSec 1
element nonlinearBeamColumn 3 3 7 $np $colSec 1
element nonlinearBeamColumn 4 4 8 $np $colSec 1
element nonlinearBeamColumn 5 5 10 $np $colSec 1
element nonlinearBeamColumn 6 6 11 $np $colSec 1
element nonlinearBeamColumn 7 7 12 $np $colSec 1
element nonlinearBeamColumn 8 8 13 $np $colSec 1
element nonlinearBeamColumn 9 10 15 $np $colSec 1
element nonlinearBeamColumn 10 11 16 $np $colSec 1
element nonlinearBeamColumn 11 12 17 $np $colSec 1
element nonlinearBeamColumn 12 13 18 $np $colSec 1
# Define beam elements
# Define material properties for elastic beams
# Using beam depth of 24 and width of 18
# --------------------------------------------
set Abeam [expr 18*24];
# "Cracked" second moments of area
set Ibeamzz [expr 0.5*1.0/12*18*pow(24,3)];
set Ibeamyy [expr 0.5*1.0/12*24*pow(18,3)];
# Define elastic section for beams
# tag E A Iz Iy G J
section Elastic 3 $E $Abeam $Ibeamzz $Ibeamyy $GJ 1.0
set beamSec 3
# Geometric transformation for beams
# tag vecxz
geomTransf Linear 2 1 1 0
# Number of beam integration points (sections)
set np 3
# Create the beam elements
# tag ndI ndJ nPts secID transf
element nonlinearBeamColumn 13 5 6 $np $beamSec 2
element nonlinearBeamColumn 14 6 7 $np $beamSec 2
element nonlinearBeamColumn 15 7 8 $np $beamSec 2
element nonlinearBeamColumn 16 8 5 $np $beamSec 2
element nonlinearBeamColumn 17 10 11 $np $beamSec 2
element nonlinearBeamColumn 18 11 12 $np $beamSec 2
element nonlinearBeamColumn 19 12 13 $np $beamSec 2
element nonlinearBeamColumn 20 13 10 $np $beamSec 2
element nonlinearBeamColumn 21 15 16 $np $beamSec 2
element nonlinearBeamColumn 22 16 17 $np $beamSec 2
element nonlinearBeamColumn 23 17 18 $np $beamSec 2
element nonlinearBeamColumn 24 18 15 $np $beamSec 2
بلوک های زبان برنامه نویسی #C مختص تعریف المان های غیرخطی، جهت مقایسه با اینترپرتر زبان TCL (دو پست قبل):🌷
//#define geometric transformation: performs a linear geometric transformation of beam stiffness and resisting force from the basic system to the global-coordinate system
//set ColTransfTag 1; # associate a tag to column transformation
//set BeamTransfTag 2; # associate a tag to beam transformation (good practice to keep col and beam separate)
//set ColTransfType Linear; # options, Linear PDelta Corotational
//geomTransf $ColTransfType $ColTransfTag; # only columns can have PDelta effects (gravity effects)
//geomTransf Linear $BeamTransfTag;
var pdelta = false;
Elements.CrdTransfs.CrdTransfWrapper colTransf = null;
if (!pdelta)
colTransf = new Elements.CrdTransfs.LinearCrdTransf3dWrapper(new VectorWrapper(new double[] { 1, 0, 0 }));
else
colTransf = new Elements.CrdTransfs.PDeltaCrdTransf3dWrapper(new VectorWrapper(new double[] { 1, 0, 0 }));
//# Number of column integration points (sections)
//set np 4
//# Create the nonlinear column elements
//# tag ndI ndJ nPts secID transf
//element nonlinearBeamColumn 1 1 5 $np $colSec 1
//element nonlinearBeamColumn 2 2 6 $np $colSec 1
//element nonlinearBeamColumn 3 3 7 $np $colSec 1
//element nonlinearBeamColumn 4 4 8 $np $colSec 1
//element nonlinearBeamColumn 5 5 10 $np $colSec 1
//element nonlinearBeamColumn 6 6 11 $np $colSec 1
//element nonlinearBeamColumn 7 7 12 $np $colSec 1
//element nonlinearBeamColumn 8 8 13 $np $colSec 1
//element nonlinearBeamColumn 9 10 15 $np $colSec 1
//element nonlinearBeamColumn 10 11 16 $np $colSec 1
//element nonlinearBeamColumn 11 12 17 $np $colSec 1
//element nonlinearBeamColumn 12 13 18 $np $colSec 1
var np = 4;
var integrationRule = new Elements.BeamIntegrations.BeamIntegrationWrapper(Elements.BeamIntegrations.BeamIntegrationType.Lobatto);
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(1, 1, 5, np, colSection, integrationRule, colTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(2, 2, 6, np, colSection, integrationRule, colTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(3, 3, 7, np, colSection, integrationRule, colTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(4, 4, 8, np, colSection, integrationRule, colTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(5, 5, 10, np, colSection, integrationRule, colTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(6, 6, 11, np, colSection, integrationRule, colTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(7, 7, 12, np, colSection, integrationRule, colTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(8, 8, 13, np, colSection, integrationRule, colTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(9, 10, 15, np, colSection, integrationRule, colTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(10, 11, 16, np, colSection, integrationRule, colTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(11, 12, 17, np, colSection, integrationRule, colTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(12, 13, 18, np, colSection, integrationRule, colTransf));
//# Define beam elements
//# --------------------
var Abeam = 18 * 24;
var Ibeamzz = 0.5 * 1.0 / 12 * 18.0 * Math.Pow(24, 3);
var Ibeamyy = 0.5 * 1.0 / 12 * 24.0 * Math.Pow(18, 3);
//# Define elastic section for beams
//# tag E A Iz Iy G J
//section Elastic 3 $E $Abeam $Ibeamzz $Ibeamyy $GJ 1.0
var beamSection = new OpenSees.Materials.Sections.ElasticSection3dWrapper(3, Ec, Abeam, Ibeamzz, Ibeamyy, GJ, 1);
//# Geometric transformation for beams
//# tag vecxz
//geomTransf Linear 2 1 1 0
Elements.CrdTransfs.LinearCrdTransf3dWrapper beamTransf = new Elements.CrdTransfs.LinearCrdTransf3dWrapper(new VectorWrapper(new double[] { 1, 1, 0 }));
var beam_np = 5;
//#define geometric transformation: performs a linear geometric transformation of beam stiffness and resisting force from the basic system to the global-coordinate system
//set ColTransfTag 1; # associate a tag to column transformation
//set BeamTransfTag 2; # associate a tag to beam transformation (good practice to keep col and beam separate)
//set ColTransfType Linear; # options, Linear PDelta Corotational
//geomTransf $ColTransfType $ColTransfTag; # only columns can have PDelta effects (gravity effects)
//geomTransf Linear $BeamTransfTag;
var pdelta = false;
Elements.CrdTransfs.CrdTransfWrapper colTransf = null;
if (!pdelta)
colTransf = new Elements.CrdTransfs.LinearCrdTransf3dWrapper(new VectorWrapper(new double[] { 1, 0, 0 }));
else
colTransf = new Elements.CrdTransfs.PDeltaCrdTransf3dWrapper(new VectorWrapper(new double[] { 1, 0, 0 }));
//# Number of column integration points (sections)
//set np 4
//# Create the nonlinear column elements
//# tag ndI ndJ nPts secID transf
//element nonlinearBeamColumn 1 1 5 $np $colSec 1
//element nonlinearBeamColumn 2 2 6 $np $colSec 1
//element nonlinearBeamColumn 3 3 7 $np $colSec 1
//element nonlinearBeamColumn 4 4 8 $np $colSec 1
//element nonlinearBeamColumn 5 5 10 $np $colSec 1
//element nonlinearBeamColumn 6 6 11 $np $colSec 1
//element nonlinearBeamColumn 7 7 12 $np $colSec 1
//element nonlinearBeamColumn 8 8 13 $np $colSec 1
//element nonlinearBeamColumn 9 10 15 $np $colSec 1
//element nonlinearBeamColumn 10 11 16 $np $colSec 1
//element nonlinearBeamColumn 11 12 17 $np $colSec 1
//element nonlinearBeamColumn 12 13 18 $np $colSec 1
var np = 4;
var integrationRule = new Elements.BeamIntegrations.BeamIntegrationWrapper(Elements.BeamIntegrations.BeamIntegrationType.Lobatto);
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(1, 1, 5, np, colSection, integrationRule, colTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(2, 2, 6, np, colSection, integrationRule, colTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(3, 3, 7, np, colSection, integrationRule, colTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(4, 4, 8, np, colSection, integrationRule, colTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(5, 5, 10, np, colSection, integrationRule, colTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(6, 6, 11, np, colSection, integrationRule, colTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(7, 7, 12, np, colSection, integrationRule, colTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(8, 8, 13, np, colSection, integrationRule, colTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(9, 10, 15, np, colSection, integrationRule, colTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(10, 11, 16, np, colSection, integrationRule, colTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(11, 12, 17, np, colSection, integrationRule, colTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(12, 13, 18, np, colSection, integrationRule, colTransf));
//# Define beam elements
//# --------------------
var Abeam = 18 * 24;
var Ibeamzz = 0.5 * 1.0 / 12 * 18.0 * Math.Pow(24, 3);
var Ibeamyy = 0.5 * 1.0 / 12 * 24.0 * Math.Pow(18, 3);
//# Define elastic section for beams
//# tag E A Iz Iy G J
//section Elastic 3 $E $Abeam $Ibeamzz $Ibeamyy $GJ 1.0
var beamSection = new OpenSees.Materials.Sections.ElasticSection3dWrapper(3, Ec, Abeam, Ibeamzz, Ibeamyy, GJ, 1);
//# Geometric transformation for beams
//# tag vecxz
//geomTransf Linear 2 1 1 0
Elements.CrdTransfs.LinearCrdTransf3dWrapper beamTransf = new Elements.CrdTransfs.LinearCrdTransf3dWrapper(new VectorWrapper(new double[] { 1, 1, 0 }));
var beam_np = 5;
//# Create the beam elements
//# tag ndI ndJ nPts secID transf
//element nonlinearBeamColumn 13 5 6 $np $beamSec 2
//element nonlinearBeamColumn 14 6 7 $np $beamSec 2
//element nonlinearBeamColumn 15 7 8 $np $beamSec 2
//element nonlinearBeamColumn 16 8 5 $np $beamSec 2
//element nonlinearBeamColumn 17 10 11 $np $beamSec 2
//element nonlinearBeamColumn 18 11 12 $np $beamSec 2
//element nonlinearBeamColumn 19 12 13 $np $beamSec 2
//element nonlinearBeamColumn 20 13 10 $np $beamSec 2
//element nonlinearBeamColumn 21 15 16 $np $beamSec 2
//element nonlinearBeamColumn 22 16 17 $np $beamSec 2
//element nonlinearBeamColumn 23 17 18 $np $beamSec 2
//element nonlinearBeamColumn 24 18 15 $np $beamSec 2
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(13, 5, 6, beam_np, beamSection, integrationRule, beamTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(14, 6, 7, beam_np, beamSection, integrationRule, beamTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(15, 7, 8, beam_np, beamSection, integrationRule, beamTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(16, 8, 5, beam_np, beamSection, integrationRule, beamTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(17, 10, 11, beam_np, beamSection, integrationRule, beamTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(18, 11, 12, beam_np, beamSection, integrationRule, beamTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(19, 12, 13, beam_np, beamSection, integrationRule, beamTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(20, 13, 10, beam_np, beamSection, integrationRule, beamTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(21, 15, 16, beam_np, beamSection, integrationRule, beamTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(22, 16, 17, beam_np, beamSection, integrationRule, beamTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(23, 17, 18, beam_np, beamSection, integrationRule, beamTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(24, 18, 15, beam_np, beamSection, integrationRule, beamTransf));
//# tag ndI ndJ nPts secID transf
//element nonlinearBeamColumn 13 5 6 $np $beamSec 2
//element nonlinearBeamColumn 14 6 7 $np $beamSec 2
//element nonlinearBeamColumn 15 7 8 $np $beamSec 2
//element nonlinearBeamColumn 16 8 5 $np $beamSec 2
//element nonlinearBeamColumn 17 10 11 $np $beamSec 2
//element nonlinearBeamColumn 18 11 12 $np $beamSec 2
//element nonlinearBeamColumn 19 12 13 $np $beamSec 2
//element nonlinearBeamColumn 20 13 10 $np $beamSec 2
//element nonlinearBeamColumn 21 15 16 $np $beamSec 2
//element nonlinearBeamColumn 22 16 17 $np $beamSec 2
//element nonlinearBeamColumn 23 17 18 $np $beamSec 2
//element nonlinearBeamColumn 24 18 15 $np $beamSec 2
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(13, 5, 6, beam_np, beamSection, integrationRule, beamTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(14, 6, 7, beam_np, beamSection, integrationRule, beamTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(15, 7, 8, beam_np, beamSection, integrationRule, beamTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(16, 8, 5, beam_np, beamSection, integrationRule, beamTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(17, 10, 11, beam_np, beamSection, integrationRule, beamTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(18, 11, 12, beam_np, beamSection, integrationRule, beamTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(19, 12, 13, beam_np, beamSection, integrationRule, beamTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(20, 13, 10, beam_np, beamSection, integrationRule, beamTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(21, 15, 16, beam_np, beamSection, integrationRule, beamTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(22, 16, 17, beam_np, beamSection, integrationRule, beamTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(23, 17, 18, beam_np, beamSection, integrationRule, beamTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(24, 18, 15, beam_np, beamSection, integrationRule, beamTransf));
umfpack2_x64.zip
704.5 KB
نکته بسیار مهم و کاربردی:
دانشجویان و پژوهشگران عزیز❤جهت انجام تحلیل های مدل های خیلی سنگین و پیچیده، می توانند از سیستم حل معادلات خارجی UmfPack2 استفاده نمایند. این اپلیکیشن با پسوند dll.، سرعت حل معادلات را ۷۰ برابر افزایش می دهد و نسخه ویندوز ۶۴ بیتی آن جهت دانلود در کانال قرار گرفت.
system umfpack2
دانشجویان و پژوهشگران عزیز❤جهت انجام تحلیل های مدل های خیلی سنگین و پیچیده، می توانند از سیستم حل معادلات خارجی UmfPack2 استفاده نمایند. این اپلیکیشن با پسوند dll.، سرعت حل معادلات را ۷۰ برابر افزایش می دهد و نسخه ویندوز ۶۴ بیتی آن جهت دانلود در کانال قرار گرفت.
system umfpack2