وقتی انسانهای عادی با یک بیمار 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 دوم سنسورهایشان در پارت زمانی خودشان روشن باشند.
کنترل حلقه-بسته یعنی شما متغیرهای پاسخ سازه را اندازه گیری و کنترل می کنید و حلقه-باز یعنی شما میزان تحریک خارجی را کنترل می کنید. قطعا روش حلقه- بسته از روش حلقه-باز دقیق تر است. در واقع در سیستم حلقه بسته شما، یا جک ها اصلا عمل نمی کنند و یا جک ها هم زمان عمل می کنند چون سنسورها با هم تلاقی دارند.🌷
MacWeedrSpectrum.rar
380.4 KB
فایل دی ال الی مختص تحلیل دینامیکی طیفی، محاسبه ضرایب مشارکت جرمی، ایجاد الگوهای بار با استفاده از نیروهای مودال و اطلاعات طیفی، و اعمال روش ترکيب نتايج مودهای مختلف (این فایل فقط مختص ویندوز ۳۲ بیتی و OpenSees ورژن ۲.۵.۰ است)
زمانی که به یک فایل دی ال ال دسترسی دارید، دیگر نیازی به نوشتن هزاران خط کد و الگوریتم پیچیده نخواهید داشت. در واقع دی ال ال ها کدهای آمادهای هستند که تمامی دادههای مورد نیازتان را در اختیار شما قرار میدهند🌷
دو کمپانی برنامه نویسی بزرگ به نامهای مک ویید و ساول ویید وجود دارند که کار اصلی آنها تهیه بانکهای ارزشمند دی ال ال است. کلمه "ویید" یعنی "علف هرز"، و برایم بسیار عجیب است که این محتویات خیلی ارزشمند را چرا این گونه بد سلیقه نامگذاری کردهاند؟!
زمانی که به یک فایل دی ال ال دسترسی دارید، دیگر نیازی به نوشتن هزاران خط کد و الگوریتم پیچیده نخواهید داشت. در واقع دی ال ال ها کدهای آمادهای هستند که تمامی دادههای مورد نیازتان را در اختیار شما قرار میدهند🌷
دو کمپانی برنامه نویسی بزرگ به نامهای مک ویید و ساول ویید وجود دارند که کار اصلی آنها تهیه بانکهای ارزشمند دی ال ال است. کلمه "ویید" یعنی "علف هرز"، و برایم بسیار عجیب است که این محتویات خیلی ارزشمند را چرا این گونه بد سلیقه نامگذاری کردهاند؟!
This media is not supported in your browser
VIEW IN TELEGRAM
تاریخ که ورق میخورد به نامهای ماندگار که میرسد، متوقف میشود...
با سپاس فراوان از استاد بزرگوار ❤️🌷فرستنده این ویدئوی خیلی ارزشمند🙏🙏
با سپاس فراوان از استاد بزرگوار ❤️🌷فرستنده این ویدئوی خیلی ارزشمند🙏🙏