Opensees Community
1.11K subscribers
500 photos
158 videos
62 files
166 links
The Largest OpenSees Community of Iran (LOCI). Channel is managed by Dr. Afshin Alborzi.

https://www.instagram.com/ledocteurafshina

YouTube: LOCI Community

Contact with administratorπŸ‘‡

@OpenSeesCommunity_pm
Download Telegram
As i accounted for a new special way, to consider rigid offsets a little while ago, take example 4 for instance:πŸ‘‡πŸ‘‡πŸ‘‡
(Part 1);
# Units: N , Meter , seconds;
model BasicBuilder -ndm 3 -ndf 6; # Define the model builder,
# Define Building Geometry, Nodes, and Constraints
set NStories 1; # number of stories
set NBaysX 3; # number of frame bays in Direction X
set WBayX [expr 4.5]; # bay width in Direction X (meter)
set NBaysY 3; # number of frame bays in Direction X
set WBayY [expr 4.5]; # bay width in Direction Y (meter)
set HStory1 [expr 5.0]; # First story height in meter
set PierX1 0.0; # leftmost column line
set PierX2 [expr $PierX1 + $WBayX];
set PierX3 [expr $PierX2 + $WBayX];
set PierX4 [expr $PierX3 + $WBayX];
set PierY1 0.0; # leftmost column line
set PierY2 [expr $PierY1 + $WBayY];
set PierY3 [expr $PierY2 + $WBayY];
set PierY4 [expr $PierY3 + $WBayY];
set ground 0.0; # ground floor
set Floor1 [expr $ground + $HStory1];
# calculate nodal masses -- lump floor masses at frame nodes
set SquareG [expr 9.81 * 9.81]; # convert to mass value ,
acceleration due to gravity;
# Exterior Beams;
# W1 = 15 kN/m x 104 = 1560 kN
# Interior Beams;
# W2 = 10 kN/m x 63 = 630 kN
# Floor1Weight = W1 + W2 = 2190 kN
set FloorWeight 2190000; # weight of Floor 1 in N;
set NodalMassX [expr ($FloorWeight/$SquareG) / (16.0)]; # massX at each node on Floors
set NodalMassY [expr ($FloorWeight/$SquareG) / (16.0)]; # massY at each node on Floors
set NodalMassZ [expr ($FloorWeight/$SquareG) / (16.0)]; # massY at each node on Floors
set Negligible 1e-9; # a very smnumber to avoid problems with zero ;
node 1 $PierX1 $PierY1 $ground ;
node 2 $PierX2 $PierY1 $ground ;
node 3 $PierX3 $PierY1 $ground ;
node 4 $PierX4 $PierY1 $ground ;
node 5 $PierX1 $PierY2 $ground ;
node 6 $PierX2 $PierY2 $ground ;
node 7 $PierX3 $PierY2 $ground ;
node 8 $PierX4 $PierY2 $ground ;
node 9 $PierX1 $PierY3 $ground ;
node 10 $PierX2 $PierY3 $ground ;
node 11 $PierX3 $PierY3 $ground ;
node 12 $PierX4 $PierY3 $ground ;
node 13 $PierX1 $PierY4 $ground ;
node 14 $PierX2 $PierY4 $ground ;
node 15 $PierX3 $PierY4 $ground ;
node 16 $PierX4 $PierY4 $ground ;
node 101 $PierX1 $PierY1 $Floor1 -mass $NodalMassX $NodalMassY $NodalMassZ $Negligible $Negligible $Negligible;
node 102 $PierX2 $PierY1 $Floor1 -mass $NodalMassX $NodalMassY $NodalMassZ $Negligible $Negligible $Negligible;
node 103 $PierX3 $PierY1 $Floor1 -mass $NodalMassX $NodalMassY $NodalMassZ $Negligible $Negligible $Negligible;
node 104 $PierX4 $PierY1 $Floor1 -mass $NodalMassX $NodalMassY $NodalMassZ $Negligible $Negligible $Negligible;
node 105 $PierX1 $PierY2 $Floor1 -mass $NodalMassX $NodalMassY $NodalMassZ $Negligible $Negligible $Negligible;
node 106 $PierX2 $PierY2 $Floor1 -mass $NodalMassX $NodalMassY $NodalMassZ $Negligible $Negligible $Negligible;
node 107 $PierX3 $PierY2 $Floor1 -mass $NodalMassX $NodalMassY $NodalMassZ $Negligible $Negligible $Negligible;
node 108 $PierX4 $PierY2 $Floor1 -mass $NodalMassX $NodalMassY $NodalMassZ $Negligible $Negligible $Negligible;
node 109 $PierX1 $PierY3 $Floor1 -mass $NodalMassX $NodalMassY $NodalMassZ $Negligible $Negligible $Negligible;
node 110 $PierX2 $PierY3 $Floor1 -mass $NodalMassX $NodalMassY $NodalMassZ $Negligible $Negligible $Negligible;
node 111 $PierX3 $PierY3 $Floor1 -mass $NodalMassX $NodalMassY $NodalMassZ $Negligible $Negligible $Negligible;
node 112 $PierX4 $PierY3 $Floor1 -mass $NodalMassX $NodalMassY $NodalMassZ $Negligible $Negligible $Negligible;
node 113 $PierX1 $PierY4 $Floor1 -mass $NodalMassX $NodalMassY $NodalMassZ $Negligible $Negligible $Negligible;
node 114 $PierX2 $PierY4 $Floor1 -mass $NodalMassX $NodalMassY $NodalMassZ $Negligible $Negligible $Negligible;
node 115 $PierX3 $PierY4 $Floor1 -mass $NodalMassX $NodalMassY $NodalMassZ $Negligible $Negligible $Negligible;
node 116 $PierX4 $PierY4 $Floor1 -mass $NodalMassX $NodalMassY $NodalMassZ $Negligible $Negligible $Negligible;

πŸ†” https://t.me/OpenSeesCommunity
(Part 2);
set dof1 1; # constrain movement in dof 1 (X-direction);
for {set i 1} {$i <= $NStories} {incr i} {
equalDOF [expr ($i*100) + 1] [expr ($i*100) + 2] $dof1;
equalDOF [expr ($i*100) + 1] [expr ($i*100) + 3] $dof1;
equalDOF [expr ($i*100) + 1] [expr ($i*100) + 4] $dof1;
equalDOF [expr ($i*100) + 5] [expr ($i*100) + 6] $dof1;
equalDOF [expr ($i*100) + 5] [expr ($i*100) + 7] $dof1;
equalDOF [expr ($i*100) + 5] [expr ($i*100) + 8] $dof1;
equalDOF [expr ($i*100) + 9] [expr ($i*100) + 10] $dof1;
equalDOF [expr ($i*100) + 9] [expr ($i*100) + 11] $dof1;
equalDOF [expr ($i*100) + 9] [expr ($i*100) + 12] $dof1;
equalDOF [expr ($i*100) + 13] [expr ($i*100) + 14] $dof1;
equalDOF [expr ($i*100) + 13] [expr ($i*100) + 15] $dof1;
equalDOF [expr ($i*100) + 13] [expr ($i*100) + 16] $dof1;
};
set dof2 2; # constrain movement in dof 2 (Y-direction);
for {set i 1} {$i <= $NStories} {incr i} {
equalDOF [expr ($i*100) + 1] [expr ($i*100) + 5] $dof2;
equalDOF [expr ($i*100) + 1] [expr ($i*100) + 9] $dof2;
equalDOF [expr ($i*100) + 1] [expr ($i*100) + 13] $dof2;
equalDOF [expr ($i*100) + 2] [expr ($i*100) + 6] $dof2;
equalDOF [expr ($i*100) + 2] [expr ($i*100) + 10] $dof2;
equalDOF [expr ($i*100) + 2] [expr ($i*100) + 14] $dof2;
equalDOF [expr ($i*100) + 3] [expr ($i*100) + 7] $dof2;
equalDOF [expr ($i*100) + 3] [expr ($i*100) + 11] $dof2;
equalDOF [expr ($i*100) + 3] [expr ($i*100) + 15] $dof2;
equalDOF [expr ($i*100) + 4] [expr ($i*100) + 8] $dof2;
equalDOF [expr ($i*100) + 4] [expr ($i*100) + 12] $dof2;
equalDOF [expr ($i*100) + 4] [expr ($i*100) + 16] $dof2;
} ;
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;
fix 5 1 1 1 1 1 1;
fix 6 1 1 1 1 1 1;
fix 7 1 1 1 1 1 1;
fix 8 1 1 1 1 1 1;
fix 9 1 1 1 1 1 1;
fix 10 1 1 1 1 1 1;
fix 11 1 1 1 1 1 1;
fix 12 1 1 1 1 1 1;
fix 13 1 1 1 1 1 1;
fix 14 1 1 1 1 1 1;
fix 15 1 1 1 1 1 1;
fix 16 1 1 1 1 1 1;
set CoreID 1; # material ID tag -- confined cover concrete
set CoverID 2; # material ID tag -- unconfined cover
set ReinfID 3; # material ID tag -- reinforcement
set fc -30700000 ; # Samples test , (N/m^2) ;
set Econ 21384000000 ; # (N/m^2)
set Fy 275000000 ; # (N/m^2)
set EtsConcrete [expr $Econ/10.]; # (N/m^2), tension softening stiffness for Concrete, also recommend to Consider as ($ft/0.002);
set Esteel 200000000000 ; # (N/m^2) #
################ Confined Concrete ##########
set fccore [expr (1.26394 * $fc)]; # Core Compressive Strength
(N/m^2)(+Tension, -Compression) ;
set epsc1 [expr (2 * $fccore / $Econ)];
set epsc2 [expr (5 * $epsc1)];
set fucore $fc;
########## Concrete02 variables ########### ;
set lambda 0.1 ; # ratio between unloading slope at
$epsc2 and initial slope ;
set ftc [expr (-0.1 *$fccore)]; # (N/m^2) , this value
always should be positive (Tension is +) and recommend to Consider as (- 0.1 * $fccore);
set b 0.02; # post-yield stiffness ratio of steel;
################ UnConfined Concrete ########## ;
set fccover $fc ; # (N/m^2);
set fucover [expr (0.1 * $fccover)]; # (N/m^2);
set ftucover [expr (-0.1 * $fccover)]; # (N/m^2);
uniaxialMaterial Concrete02 $CoreID $fccore $epsc1 $fucore $epsc2 $lambda $ftc $EtsConcrete; # CORE CONCRETE;
uniaxialMaterial Concrete02 $CoverID $fccover -0.003 $fucover -0.006 $lambda $ftucover $EtsConcrete ; #Cover CONCRETE;
set matTagReinforcingSteel $ReinfID ;
set fyReinforcingSteel $Fy ;
set fuReinforcingSteel 375000000 ;
set EsReinforcingSteel 200000000000 ;
set EshReinforcingSteel 50000000000 ;
set eshReinforcingSteel 0.024
set eultReinforcingSteel 0.053
set LsrReinforcingSteel 25 ;
set betaReinforcingSteel 1 ;
set rReinforcingSteel 0.4 ;
set gamaReinforcingSteel 0.5
uniaxialMaterial ReinforcingSteel $matTagReinforcingSteel
$fyReinforcingSteel $fuReinforcingSteel $EsReinforcingSteel
$EshReinforcingSteel $eshReinforcingSteel $eultReinforcingSteel -GABuck
$LsrReinforcingSteel $betaReinforcingSteel $rReinforcingSteel
$gamaReinforcingSteel ;
πŸ†” https://t.me/OpenSeesCommunity
(Part 3);
## This Part is only to Define Material of Columns Story 1 ;
set ColStOneCoreID 6; # material ID tag -- confined
set ColStOneCoverID 7; # material ID tag -- unconfined
set ColStOneReinfID 8; # material ID tag -- reinforcement
set ColStOnefc -45700000 ; # Samples test , (N/m^2) ;
set ColStOneEcon 21384000000 ; # (N/m^2)
set ColStOneFy 275000000 ; # (N/m^2)
set ColStOneEtsConcrete [expr $ColStOneEcon/10.]; # (N/m^2), tension softening stiffness for Concrete, also recommend to Consider as ($ft/0.002);
set ColStOneEsteel 200000000000 ; # (N/m^2) #
################ Confined Concrete ##########
set ColStOnefccore [expr (1.26394 * $ColStOnefc)]; # Core Compressive Strength (N/m^2)(+Tension, -Compression)
set ColStOneepsc1 [expr (2 * $ColStOnefccore / $ColStOneEcon)];
set ColStOneepsc2 [expr (5 * $ColStOneepsc1)];
set ColStOnefucore $ColStOnefc;
########## Concrete02 variables ;
set ColStOnelambda 0.1 ; # ratio between unloading
slope at $epsc2 and initial slope ;
set ColStOneftc [expr (-0.1 *$ColStOnefccore)]; # (N/m^2) ,
this value always should be positive (Tension is +) and recommend to Consider as (-0.1 * $fccore);
set ColStOneb 0.02; # post-yield stiffness ratio of steel;
################ UnConfined Concrete ########## ;
set ColStOnefccover $ColStOnefc ; # (N/m^2);
set ColStOnefucover [expr (0.1 * $ColStOnefccover)]; #
(N/m^2);
set ColStOneftucover [expr (-0.1 * $ColStOnefccover)]; #
(N/m^2);
uniaxialMaterial Concrete02 $ColStOneCoreID $ColStOnefccore $ColStOneepsc1 $ColStOnefucore $ColStOneepsc2 $ColStOnelambda $ColStOneftc $ColStOneEtsConcrete; # CORE CONCRETE;
uniaxialMaterial Concrete02 $ColStOneCoverID $ColStOnefccover -0.003 $ColStOnefucover -0.006 $ColStOnelambda $ColStOneftucover $ColStOneEtsConcrete ; #Cover CONCRETE;
uniaxialMaterial ReinforcingSteel $ColStOneReinfID $fyReinforcingSteel
$fuReinforcingSteel $EsReinforcingSteel $EshReinforcingSteel
$eshReinforcingSteel $eultReinforcingSteel -GABuck $LsrReinforcingSteel $betaReinforcingSteel $rReinforcingSteel $gamaReinforcingSteel ;
set FrpID 9;
uniaxialMaterial Elastic 77 230000000000.0
uniaxialMaterial MinMax $FrpID 77 -min 0.0 -max 1.8e-2 ;
### ********************** ;

set tFrp 0.001 ; # 3 layer frp = 1 mm = 0.001 m ;
proc FRPColumn_Sec {id Hsec Bsec tcover ColStOneReinfID BarNum1 BarNum2
BarArea ColStOneCoreID ColStOneCoverID tFrp} { ;
section Fiber $id {
set FrpID 9;
#Core
.
#bottom cover
.
#top cover
.
#left cover

#Right cover
.
# Bottom frp
.
#Top frp
.
#Right frp
.
#Left frp
.
# bottom bars
.
# top bars
.
# left bars
.
# Right bars
.
}
} ;
proc BeamsXdirection_Sec {id Hsec Bsec tcover ReinfID BarNumtop
BarNumbottom BarAreatop BarAreabottom CoreID CoverID} { ;
section Fiber $id {
# Core
.
# bottom cover
.
# top cover
.
# left cover
.
# Right cover
.
# bottom bars
.
# top bars
.
}
} ;
proc BeamsYdirection_Sec {id Hsec Bsec tcover ReinfID BarNumtopsery1 BarNumbottomsery1 BarAreatopsery1 BarAreabottomsery1 BarNumtopsery2 BarNumbottomsery2 BarAreatopsery2 BarAreabottomsery2 CoreID CoverID} { ;
section Fiber $id {
#Core
.
#bottom cover
.
#top cover
.
#left cover
.
#Right cover
.
# bottom bars sery 1
.
# top bars sery 1
.
# bottom bars sery 2
.
# top bars sery 2
.
}
} ;

FRPColumn_Sec 70 0.35 0.35 0.04 8 5 3 0.000314 6 7 0.001 ;
# columnsStoryOne ;
BeamsXdirection_Sec 90 0.4 0.3 0.04 3 4 4 0.0002 0.0002 1 2;
BeamsYdirection_Sec 95 0.4 0.3 0.04 3 4 3 0.0002 0.0002 3 2
0.0002 0.0002 1 2;
set SecTagTorsion 71
set Ubig 1.e10; # a really large number
set Usmall [expr 1/$Ubig]; # a really small number
set nu 0.2; # Poisson's ratio
set Gc [expr $Econ/2./[expr 1+$nu]]; # Torsional stiffness
Modulus ;
set J $Ubig; # set large torsional stiffnes
# assign torsional Stiffness for 3D Model
uniaxialMaterial Elastic $SecTagTorsion $Ubig

πŸ†” https://t.me/OpenSeesCommunity
(Part 4);

section Aggregator 700 $SecTagTorsion T -section 70
section Aggregator 900 $SecTagTorsion T -section 90
section Aggregator 950 $SecTagTorsion T -section 95

# set up geometric transformations of elements ;

geomTransf PDelta 1 0.0 0.0 -1.0 -jntOffset 0.17 0.0 0.0 0.17 0.0 0.0 ; # PDelta transformation for all beams Directon X ;

geomTransf PDelta 2 0.0 0.0 -1.0 -jntOffset 0.0 0.17 0.0 0.0 0.17 0.0 ; # PDelta transformation for all beams Directon Y ;

geomTransf PDelta 3 1.0 0.0 0.0 -jntOffset 0.0 0.0 0.17 0.0 0.0 0.17 ; # PDelta transformation for all Columns ;

# define nonlinear column elements using "element" command ;

# # Columns ;
element nonlinearBeamColumn 101 1 101 5 700 3
element nonlinearBeamColumn 102 2 102 5 700 3
element nonlinearBeamColumn 103 3 103 5 700 3
...
...
# Beams direction X ;
element nonlinearBeamColumn 1001 101 102 5 900 1
element nonlinearBeamColumn 1002 102 103 5 900 1
element nonlinearBeamColumn 1003 103 104 5 900 1
...
...
# Beams direction Y ;
element nonlinearBeamColumn 1013 101 105 5 950 2
element nonlinearBeamColumn 1014 105 109 5 950 2
element nonlinearBeamColumn 1015 109 113 5 950 2
...
...
puts " Congratulation !!! , Columns & Beams elements defined !!!."
puts " "
puts " "

πŸ†” https://t.me/OpenSeesCommunity
Forwarded from Opensees Community
According to growth of the channel Contents, you can also join here:πŸ‘‡πŸ‘‡πŸ‘‡

https://www.instagram.com/openseescommunity
The OpenSees applications allows developers to use their own material modules to the application. Unlike most other programs, the materials are added at run time and not at compile time. The advantage of this is the developers:
1- Do not need the OpenSees source files or libraries to compile and link the application.
2- Can share their modules with others without having to provide the source code.
For those new to programming NEVER EVER NEVER start with an empty file. Take something similar that works and make changes to that file. So, for the purpose of adding your code to OpenSees, C++, C and Fortran examples are provided here:
http://opensees.berkeley.edu/OpenSees/developer/ πŸ‘‡πŸ‘‡πŸ‘‡

πŸ†” https://t.me/OpenSeesCommunity
A powerful 7.3 magnitude earthquake near the Iran-Iraq border killed over 400 people and injured thousands, sent residents fleeing their homes into the night and was felt as far away as the Mediterranean coast. The quake was centered 19 miles (31 kilometers) outside the eastern Iraqi city of Halabja, according to the most recent measurements from the U.S. Geological Survey. It struck at 9:48 p.m. Iran time, just as people began retiring for the night. The quake's worst damage appeared to be in the town of Sarpol-e-Zahab in Kermanshah province, which sits in the Zagros Mountains that divide Iran and Iraq.
May peace be on them and condolences to their dear families, for this loss.πŸ‘‡πŸ‘‡πŸ‘‡

πŸ†” https://t.me/OpenSeesCommunity
Forwarded from d d d d
Prof. Jack Baker (Stanford University) discusses methods of ground motion simulation and approaches for simulation validation.πŸ‘‡πŸ‘‡πŸ‘‡

πŸ†” https://t.me/OpenSeesCommunity2
Forwarded from d d d d
Gm-02_(new).mp4
47 MB
It is established beyond doubt that a structure’s behavior forms by selecting appreciable elements in modeling process. It takes a little practice to know when to use the different commands for different behaviors. I denominate this skill " Main Idea of Simulation ".
From my own perspective, the SFI_MVLEM command has a more profound impact on the accuracy growth of a RC Wall simulation. The SFI_MVLEM command is used to construct a Shear-Flexure Interaction Multiple-Vertical-Line-Element Model (SFI-MVLEM, Kolozvari et al., 2015a, b, c), which captures interaction between axial/flexural and shear behavior of RC structural walls and columns under cyclic loading. So, what you need is to know an important point, in case of using this command. In near future, i will aptly elucidate my viewpoint through one outstanding reason/idea.πŸ‘‡πŸ‘‡πŸ‘‡

πŸ†” https://t.me/OpenSeesCommunity
Let me close today’s discussion with suggesting two appreciable points which i denominate them " Blue-Green Ideas ":
1-Do not panic for changing place of the RC Wall, in case of using SFI_MVLEM command. From my own perspective, either RC Wall is located in bay-1 or bay-2 or bay-3, you should consider it in bay-1. In other words, using this way you divide the structure’s behavior into two parts; " RC Wall’s behavior " and " RC Frame’s behavior ".
2- As may seem in the figure, bay-2 is unreal (Rigid diaphragms) and considered for connecting two mentioned parts of structure, in simulation process.πŸ‘‡πŸ‘‡πŸ‘‡

πŸ†” https://t.me/OpenSeesCommunity
As the longest night of the year ends, we are hopeful that beautiful, bright and successful days are going to come our way.
With that thought, I wish you a very warm and "Happy Yalda Night."
Install Opensees 2.5.0 + Active Tcl 8.5 + Tcl Editor (Windows 64-bit):


First uninstall all versions of ActiveTcl and Opensees which is existed in your Computer. Also erase Tcl and tcleditor folders in local Disk (C).
Then unzip attached file and accomplish steps1 to 3:
1. Copy tcleditor folder into Disk (C).
2. Install "ActiveTcl8.5.18.0.298892-win32-x86_64-threaded.exe".
3. Copy and replace OpenSees 2.5.0 (rev 6536) into "Disk C/tcleditor/bin".
4. Now, use it and enjoy!!

πŸ†” https://t.me/OpenSeesCommunity
Prof. Julio Garcia discusses Earhquake simulation of Soil-Structure Interaction. The motion is produced by a harmonic shaker. A total of six frequencies of excitation are reached and displayed.
Frequency No 1: the system moves with such a frequency, that the whole system reacts almost as a rigid body.
Frequency No. 2: the excitation frequency increases and the frequency of the site is reached. The horizontal springs react. There is almost no reaction from the pendulums.
Frequency No.3: the excitation approaches the vibration frequency of the soil-structure model.
Frequency No. 4: the system reaches the fundamental frequency of the fixed base model. The soil-structure model does not react.
Frequency No. 5: the vibration frequency increases up to the second frequency of the fixed base model. The soil-structure model does not react.
Frequency No. 6: the vibration frequency decreases until the rest condition is reached.
Watch it and enjoy!!πŸ‘‡πŸ‘‡πŸ‘‡

πŸ†” https://t.me/OpenSeesCommunity
❀1
In this video, Prof. Terje RΓΈlvΓ₯g discusses how you calculate and apply mass and stiffness proportional (Rayleigh) damping to FE models. He also explains why you should be careful with mass proportional damping!!πŸ‘‡πŸ‘‡πŸ‘‡

πŸ†” https://t.me/OpenSeesCommunity