I'm trying to model a reinforced concrete shear wall system using OpenSees, I'm in the stage of performing a nonlinear static analysis, already have a reference output for the analysis for the prolem I'm testing.
I'm using the multi-layer shell element to model shear walls in OpenSees. I'm getting good results and agreement between the two solutions till the point where the loss of strength is expected, in the analysis using OpenSees I don't get this loss of strength, the curve keeps going up and the iteration steps stops. I doubled checked the material models for concrete and steel and they seem ok and I reduced the size of iteration steps and refined the solution algorithm but the results are still the same. If anybody have an idea where to go from here or have other suggestions, please share
multi-layer shell element for shear walls
Moderators: silvia, selimgunay, mhscott, Moderators
Re: multi-layer shell element
please send the multilayer shell element code
Re: multi-layer shell element for shear walls
These are the code lines, thank you for help
#Main File
model basic -ndm 3 -ndf 6; set numModes 4;
# metric units m, kg, N, sec
# length of wall is 3.5m., width is 4.5, thickness 0.25m.
wipe;
#Define nodes
node 1 0. 0. 0.; node 2 1.125 0. 0.; node 3 2.25 0. 0.; node 4 3.375 0. 0.; node 5 4.5 0. 0.;
node 6 0. 0.7 0.; node 7 1.125 0.7 0.; node 8 2.25 0.7 0.; node 9 3.375 0.7 0.; node 10 4.5 0.7 0.;
node 11 0. 1.4 0.; node 12 1.125 1.4 0.; node 13 2.25 1.4 0.; node 14 3.375 1.4 0.; node 15 4.5 1.4 0.;
node 16 0. 2.1 0.; node 17 1.125 2.1 0.; node 18 2.25 2.1 0.; node 19 3.375 2.1 0.; node 20 4.5 2.1 0.;
node 21 0. 2.8 0.; node 22 1.125 2.8 0.; node 23 2.25 2.8 0.; node 24 3.375 2.8 0.; node 25 4.5 2.8 0.;
node 26 0. 3.5 0.; node 27 1.125 3.5 0.; node 28 2.25 3.5 0.; node 29 3.375 3.5 0.; node 30 4.5 3.5 0.;
node 31 0. 4.2 0.; node 32 1.125 4.2 0.; node 33 2.25 4.2 0.; node 34 3.375 4.2 0.; node 35 4.5 4.2 0.; #
node 36 0. 4.9 0.; node 37 1.125 4.9 0.; node 38 2.25 4.9 0.; node 39 3.375 4.9 0.; node 40 4.5 4.9 0.;
node 41 0. 5.6 0.; node 42 1.125 5.6 0.; node 43 2.25 5.6 0.; node 44 3.375 5.6 0.; node 45 4.5 5.6 0.;
node 46 0. 6.3 0.; node 47 1.125 6.3 0.; node 48 2.25 6.3 0.; node 49 3.375 6.3 0.; node 50 4.5 6.3 0.;
node 51 0. 7.0 0.; node 52 1.125 7. 0.; node 53 2.25 7. 0.; node 54 3.375 7. 0.; node 55 4.5 7. 0.;
node 56 0. 7.7 0.; node 57 1.125 7.7 0.; node 58 2.25 7.7 0.; node 59 3.375 7.7 0.; node 60 4.5 7.7 0.; #
node 61 0. 8.4 0.; node 62 1.125 8.4 0.; node 63 2.25 8.4 0.; node 64 3.375 8.4 0.; node 65 4.5 8.4 0.;
node 66 0. 9.1 0.; node 67 1.125 9.1 0.; node 68 2.25 9.1 0.; node 69 3.375 9.1 0.; node 70 4.5 9.1 0.;
node 71 0. 9.8 0.; node 72 1.125 9.8 0.; node 73 2.25 9.8 0.; node 74 3.375 9.8 0.; node 75 4.5 9.8 0.;
node 76 0. 10.5 0.; node 77 1.125 10.5 0.; node 78 2.25 10.5 0.; node 79 3.375 10.5 0.; node 80 4.5 10.5 0.;
node 81 0. 11.2 0.; node 82 1.125 11.2 0.; node 83 2.25 11.2 0.; node 84 3.375 11.2 0.; node 85 4.5 11.2 0.; #
node 86 0. 11.9 0.; node 87 1.125 11.9 0.; node 88 2.25 11.9 0.; node 89 3.375 11.9 0.; node 90 4.5 11.9 0.;
node 91 0. 12.6 0.; node 92 1.125 12.6 0.; node 93 2.25 12.6 0.; node 94 3.375 12.6 0.; node 95 4.5 12.6 0.;
node 96 0. 13.3 0.; node 97 1.125 13.3 0.; node 98 2.25 13.3 0.; node 99 3.375 13.3 0.; node 100 4.5 13.3 0.;
node 101 0. 14. 0.; node 102 1.125 14. 0.; node 103 2.25 14. 0.; node 104 3.375 14. 0.; node 105 4.5 14. 0.;
puts "Done Node"
#Define mass
#the correspondent masses of the walls are lumped
mass 28 205210. 0. 0. 0. 0. 0.;
mass 53 199900. 0. 0. 0. 0. 0.;
mass 78 198900. 0. 0. 0. 0. 0.;
mass 103 128450. 0. 0. 0. 0. 0.;
#Boundary condition
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;
puts "Done Boundary condition"
# Concrete Material Properties
# nDMaterial PlaneStressUserMaterial $matTag $nStatevs $nProps $Prop1 ... $ Propn fc ft fcu epsc0 epscu epstu stc
nDMaterial PlaneStressUserMaterial 1 40 7 28e6 2.2e6 -6e6 -0.002 -0.006 8.83e-05 0.08;
# nDMaterial PlateFromPlaneStress matTag PlaneStressMatTag $OutOfPlaneShearModulus= E/2(1+v) ?30147
nDMaterial PlateFromPlaneStress 4 1 1.256e10;
#Steel Material Properties
uniaxialMaterial Steel02 7 500.e6 2.e11 0.005 18.5 0.925 0.15;
# STEEL ...........................................................
# uniaxialMaterial SteelMPF $mattag $fyp $fyn $E0 $bp $bn $R0 $a1 $a2
# steel X
set fyX 400e6; # fy
set bx 0.005; # strain hardening
# steel Y web
set fyYw 500e6; # fy
set byw 0.005; # strain hardening
# steel Y boundary
set fyYb 500e6; # fy
set byb 0.005; # strain hardening
# steel misc
set Esy 2e11; # Young's modulus
set Esx $Esy; # Young's modulus
set R0 18.5; # initial value of curvature parameter
set A1 0.925; # curvature degradation parameter
set A2 0.15; # curvature degradation parameter
# Build steel materials
uniaxialMaterial SteelMPF 501 $fyX $fyX $Esx $bx $bx $R0 $A1 $A2; # steel X
uniaxialMaterial SteelMPF 502 $fyYw $fyYw $Esy $byw $byw $R0 $A1 $A2; # steel Y web
uniaxialMaterial SteelMPF 503 $fyYb $fyYb $Esy $byb $byb $R0 $A1 $A2; # steel Y boundary
#Reinforcement rebars
#angle=90 longitudinal reinforced steel
nDMaterial PlateRebar 9 502 90;
#angle=0 transverse reinforced steel
nDMaterial PlateRebar 11 501 0;
#absolute thickness= (total area of the bars in one floor)/(length of the region in y-direction or height of the wall)
#N.B. The thickness is calculted in mm and then converted to m in the section layer
# main vertical reinforcemnt is D16@250, transverse reinforcement D10@250
# section LayeredShell $sectionTag $nLayers $matTag1 $thickness1...$matTagn $thickness
#1stfloor
section LayeredShell 1 10 4 0.035 11 0.0002772 9 0.00080424 4 0.045 4 0.045 4 0.045 4 0.045 9 0.00080424 11 0.0002772 4 0.035;
#2ndfloor
section LayeredShell 2 10 4 0.035 11 0.0002772 9 0.00080424 4 0.045 4 0.045 4 0.045 4 0.045 9 0.00080424 11 0.0002772 4 0.035;
#3rdfloor and 4thfloor
section LayeredShell 3 10 4 0.035 11 0.0002772 9 0.00080424 4 0.045 4 0.045 4 0.045 4 0.045 9 0.00080424 11 0.0002772 4 0.035;
section LayeredShell 4 10 4 0.035 11 0.0002772 9 0.00080424 4 0.045 4 0.045 4 0.045 4 0.045 9 0.00080424 11 0.0002772 4 0.035;
puts "Done Section"
#define element
#element ShellMITC4 $eleTag $iNode $jNode $kNode $lNode $secTag
element ShellMITC4 1 1 2 7 6 1
element ShellMITC4 2 2 3 8 7 1
element ShellMITC4 3 3 4 9 8 1
element ShellMITC4 4 4 5 10 9 1
element ShellMITC4 5 6 7 12 11 1
element ShellMITC4 6 7 8 13 12 1
element ShellMITC4 7 8 9 14 13 1
element ShellMITC4 8 9 10 15 14 1
element ShellMITC4 9 11 12 17 16 1
element ShellMITC4 10 12 13 18 17 1
element ShellMITC4 11 13 14 19 18 1
element ShellMITC4 12 14 15 20 19 1
element ShellMITC4 13 16 17 22 21 1
element ShellMITC4 14 17 18 23 22 1
element ShellMITC4 15 18 19 24 23 1
element ShellMITC4 16 19 20 25 24 1
element ShellMITC4 17 21 22 27 26 1
element ShellMITC4 18 22 23 28 27 1
element ShellMITC4 19 23 24 29 28 1
element ShellMITC4 20 24 25 30 29 1
element ShellMITC4 21 26 27 32 31 2
element ShellMITC4 22 27 28 33 32 2
element ShellMITC4 23 28 29 34 33 2
element ShellMITC4 24 29 30 35 34 2
element ShellMITC4 25 31 32 37 36 2
element ShellMITC4 26 32 33 38 37 2
element ShellMITC4 27 33 34 39 38 2
element ShellMITC4 28 34 35 40 39 2
element ShellMITC4 29 36 37 42 41 2
element ShellMITC4 30 37 38 43 42 2
element ShellMITC4 31 38 39 44 43 2
element ShellMITC4 32 39 40 45 44 2
element ShellMITC4 33 41 42 47 46 2
element ShellMITC4 34 42 43 48 47 2
element ShellMITC4 35 43 44 49 48 2
element ShellMITC4 36 44 45 50 49 2
element ShellMITC4 37 46 47 52 51 2
element ShellMITC4 38 47 48 53 52 2
element ShellMITC4 39 48 49 54 53 2
element ShellMITC4 40 49 50 55 54 2
element ShellMITC4 41 51 52 57 56 3
element ShellMITC4 42 52 53 58 57 3
element ShellMITC4 43 53 54 59 58 3
element ShellMITC4 44 54 55 60 59 3
element ShellMITC4 45 56 57 62 61 3
element ShellMITC4 46 57 58 63 62 3
element ShellMITC4 47 58 59 64 63 3
element ShellMITC4 48 59 60 65 64 3
element ShellMITC4 49 61 62 67 66 3
element ShellMITC4 50 62 63 68 67 3
element ShellMITC4 51 63 64 69 68 3
element ShellMITC4 52 64 65 70 69 3
element ShellMITC4 53 66 67 72 71 3
element ShellMITC4 54 67 68 73 72 3
element ShellMITC4 55 68 69 74 73 3
element ShellMITC4 56 69 70 75 74 3
element ShellMITC4 57 71 72 77 76 3
element ShellMITC4 58 72 73 78 77 3
element ShellMITC4 59 73 74 79 78 3
element ShellMITC4 60 74 75 80 79 3
element ShellMITC4 61 76 77 82 81 4
element ShellMITC4 62 77 78 83 82 4
element ShellMITC4 63 78 79 84 83 4
element ShellMITC4 64 79 80 85 84 4
element ShellMITC4 65 81 82 87 86 4
element ShellMITC4 66 82 83 88 87 4
element ShellMITC4 67 83 84 89 88 4
element ShellMITC4 68 84 85 90 89 4
element ShellMITC4 69 86 87 92 91 4
element ShellMITC4 70 87 88 93 92 4
element ShellMITC4 71 88 89 94 93 4
element ShellMITC4 72 89 90 95 94 4
element ShellMITC4 73 91 92 97 96 4
element ShellMITC4 74 92 93 98 97 4
element ShellMITC4 75 93 94 99 98 4
element ShellMITC4 76 94 95 100 99 4
element ShellMITC4 77 96 97 102 101 4
element ShellMITC4 78 97 98 103 102 4
element ShellMITC4 79 98 99 104 103 4
element ShellMITC4 80 99 100 105 104 4
puts "Done Element"
equalDOF 28 26 1; equalDOF 28 27 1; equalDOF 28 29 1; equalDOF 28 30 1;
equalDOF 53 51 1; equalDOF 53 52 1; equalDOF 53 54 1; equalDOF 53 55 1;
equalDOF 78 76 1; equalDOF 78 77 1; equalDOF 78 79 1; equalDOF 78 80 1;
equalDOF 103 101 1; equalDOF 103 102 1; equalDOF 103 104 1; equalDOF 103 105 1;
puts "Diaphragm constraints done"
#Gravity loads
# gravity loads on walls
pattern Plain 1 Linear {
load 28 0. -500000 0. 0. 0. 0.;
load 53 0. -500000 0. 0. 0. 0.;
load 78 0. -500000 0. 0. 0. 0.;
load 103 0. -500000 0. 0. 0. 0.;
}
#Analysis Gravity Load
set TestType EnergyIncr;
set Tol 1.e-5;
set maxNumIter 150;
test $TestType $Tol $maxNumIter;
constraints Plain;
numberer Plain; system BandGeneral;
algorithm Newton; set NstepGravity 100;
set DGravity [expr 1./$NstepGravity];
integrator LoadControl $DGravity;
analysis Static; set Gravity [analyze $NstepGravity];
if {$Gravity != 0} {puts "Gravity loads not OK"}
loadConst -time 0.0
if {$Gravity == 0} {puts "Model including gravity loads has been built."}
recorder Node -file 1.txt -time -node 1 -dof 2 reaction
recorder Node -file 2.txt -time -node 2 -dof 2 reaction
recorder Node -file 3.txt -time -node 3 -dof 2 reaction
recorder Node -file 4.txt -time -node 4 -dof 2 reaction
recorder Node -file 5.txt -time -node 5 -dof 2 reaction
#set DisplacementCheck1 [nodeDisp 101 2];
#set node1Rxn1 [nodeReaction 3];
#puts $DisplacementCheck1
#puts $node1Rxn1
# create data directory
file mkdir modes;
#Perform eigenvalue analysis and store periods into a file
for { set k 1 } { $k <= $numModes } { incr k } {
recorder Node -file [format "modes/mode%i.out" $k] -node 3 28 53 78 103 -dof 1 "eigen $k"
}
#Perform eigenvalue analysis and store periods into a file
set lambda [eigen -fullGenLapack $numModes];
# calculate frequencies and periods of the structure
# ---------------------------------------------------
set omega {}
set f {}
set T {}
set pi 3.141593
foreach lam $lambda {
lappend omega [expr sqrt($lam)]
lappend f [expr sqrt($lam)/(2*$pi)]
lappend T [expr (2*$pi)/sqrt($lam)]
}
#puts "periods are $T"
# write the output file cosisting of periods
# --------------------------------------------
set period "modes/Periods.txt"
set Periods [open $period "w"]
foreach t $T {
puts $Periods " $t"
}
close $Periods
record
#source Record.tcl
#****Record Data****
#***********************************************************
set dataDir Results;
file mkdir $dataDir
# record Base Shear
recorder Node -file $dataDir/BaseShear.out -node 1 2 3 4 5 -dof 1 reaction;
# Displacements
recorder Node -file $dataDir/ControlDisp4th.out -time -node 103 -dof 1 disp;
recorder Node -file $dataDir/ControlDisp3rd.out -time -node 78 -dof 1 disp;
recorder Node -file $dataDir/ControlDisp2nd.out -time -node 53 -dof 1 disp;
recorder Node -file $dataDir/ControlDisp1st.out -time -node 28 -dof 1 disp;
#
# Drift ratio
recorder Drift -file $dataDir/Drift4th.out -time -iNode 78 -jNode 103 -dof 1 -perpDirn2;
recorder Drift -file $dataDir/Drift3rd.out -time -iNode 53 -jNode 78 -dof 1 -perpDirn2;
recorder Drift -file $dataDir/Drift2nd.out -time -iNode 28 -jNode 53 -dof 1 -perpDirn2;
recorder Drift -file $dataDir/Drift1st.out -time -iNode 3 -jNode 28 -dof 1 -perpDirn2;
#source PA.tcl
# **** Non-linear static analysis****
#***********************************************************
#****Constraints****
constraints Plain;
#****Numberer****
numberer RCM;
#****System****
system BandGeneral;
#****Convergence criteria****
set TestType NormDispIncr ;
set Tol 1.e-5;
set maxNumIter 2000;
set printFlag 0;
test $TestType $Tol $maxNumIter;
#****Algorithm selection****
set algorithmType KrylovNewton
algorithm $algorithmType ;
#algorithm $algorithmType ;
#****Integrator****
set ControlDisplacementNode 103;
set ControlDisplacementDOF 1; ;
set Dmax 0.1;
#set Dincr [expr (1/1000.)];
#integrator DisplacementControl $ControlDisplacementNode $ControlDisplacementDOF $Dincr;
integrator LoadControl 0.1 10 0.05 20.0
#****Load pattern****
pattern Plain 992 Linear {
load 103 1. 0.0 0.0 0.0 0.0 0.0;
load 78 0.66 0.0 0.0 0.0 0.0 0.0;
load 53 0.35 0.0 0.0 0.0 0.0 0.0;
load 28 0.11 0.0 0.0 0.0 0.0 0.0;
}
#****Perform non-linear static analysis****
analysis Static;
set NSA 0;
set controlDisp 0.0;
while { $controlDisp < $Dmax && $NSA == 0 } {
set NSA [analyze 1]
set controlDisp [nodeDisp $ControlDisplacementNode $ControlDisplacementDOF]
if {$NSA != 0} {
puts "Trying SecantNewton"
algorithm SecantNewton -iterate current -increment current 150
set NSA [analyze 1 ]
algorithm $algorithmType
}
if {$NSA != 0} {
puts "Trying NewtonWithLineSearch"
algorithm NewtonLineSearch .8 4000
set NSA [analyze 1 ]
algorithm $algorithmType
}
if {$NSA != 0} {
puts "Trying BFGS"
algorithm BFGS
set NSA [analyze 1 ]
algorithm $algorithmType
}
if {$NSA != 0} {
puts "Trying Newton with Initial Tangent"
test NormDispIncr $Tol 4000 0
algorithm Newton -initial
set NSA [analyze 1 ]
test $TestType $Tol $maxNumIter 0
algorithm $algorithmType
}
if {$NSA != 0} {
puts "Trying Broyden"
algorithm Broyden
set NSA [analyze 1 ]
algorithm $algorithmType
}
set fileId [open tmp.txt w]
puts $fileId $controlDisp
close $fileId
}
set DisplacementCheck [nodeDisp 103 1];
puts $DisplacementCheck
wipe
#Main File
model basic -ndm 3 -ndf 6; set numModes 4;
# metric units m, kg, N, sec
# length of wall is 3.5m., width is 4.5, thickness 0.25m.
wipe;
#Define nodes
node 1 0. 0. 0.; node 2 1.125 0. 0.; node 3 2.25 0. 0.; node 4 3.375 0. 0.; node 5 4.5 0. 0.;
node 6 0. 0.7 0.; node 7 1.125 0.7 0.; node 8 2.25 0.7 0.; node 9 3.375 0.7 0.; node 10 4.5 0.7 0.;
node 11 0. 1.4 0.; node 12 1.125 1.4 0.; node 13 2.25 1.4 0.; node 14 3.375 1.4 0.; node 15 4.5 1.4 0.;
node 16 0. 2.1 0.; node 17 1.125 2.1 0.; node 18 2.25 2.1 0.; node 19 3.375 2.1 0.; node 20 4.5 2.1 0.;
node 21 0. 2.8 0.; node 22 1.125 2.8 0.; node 23 2.25 2.8 0.; node 24 3.375 2.8 0.; node 25 4.5 2.8 0.;
node 26 0. 3.5 0.; node 27 1.125 3.5 0.; node 28 2.25 3.5 0.; node 29 3.375 3.5 0.; node 30 4.5 3.5 0.;
node 31 0. 4.2 0.; node 32 1.125 4.2 0.; node 33 2.25 4.2 0.; node 34 3.375 4.2 0.; node 35 4.5 4.2 0.; #
node 36 0. 4.9 0.; node 37 1.125 4.9 0.; node 38 2.25 4.9 0.; node 39 3.375 4.9 0.; node 40 4.5 4.9 0.;
node 41 0. 5.6 0.; node 42 1.125 5.6 0.; node 43 2.25 5.6 0.; node 44 3.375 5.6 0.; node 45 4.5 5.6 0.;
node 46 0. 6.3 0.; node 47 1.125 6.3 0.; node 48 2.25 6.3 0.; node 49 3.375 6.3 0.; node 50 4.5 6.3 0.;
node 51 0. 7.0 0.; node 52 1.125 7. 0.; node 53 2.25 7. 0.; node 54 3.375 7. 0.; node 55 4.5 7. 0.;
node 56 0. 7.7 0.; node 57 1.125 7.7 0.; node 58 2.25 7.7 0.; node 59 3.375 7.7 0.; node 60 4.5 7.7 0.; #
node 61 0. 8.4 0.; node 62 1.125 8.4 0.; node 63 2.25 8.4 0.; node 64 3.375 8.4 0.; node 65 4.5 8.4 0.;
node 66 0. 9.1 0.; node 67 1.125 9.1 0.; node 68 2.25 9.1 0.; node 69 3.375 9.1 0.; node 70 4.5 9.1 0.;
node 71 0. 9.8 0.; node 72 1.125 9.8 0.; node 73 2.25 9.8 0.; node 74 3.375 9.8 0.; node 75 4.5 9.8 0.;
node 76 0. 10.5 0.; node 77 1.125 10.5 0.; node 78 2.25 10.5 0.; node 79 3.375 10.5 0.; node 80 4.5 10.5 0.;
node 81 0. 11.2 0.; node 82 1.125 11.2 0.; node 83 2.25 11.2 0.; node 84 3.375 11.2 0.; node 85 4.5 11.2 0.; #
node 86 0. 11.9 0.; node 87 1.125 11.9 0.; node 88 2.25 11.9 0.; node 89 3.375 11.9 0.; node 90 4.5 11.9 0.;
node 91 0. 12.6 0.; node 92 1.125 12.6 0.; node 93 2.25 12.6 0.; node 94 3.375 12.6 0.; node 95 4.5 12.6 0.;
node 96 0. 13.3 0.; node 97 1.125 13.3 0.; node 98 2.25 13.3 0.; node 99 3.375 13.3 0.; node 100 4.5 13.3 0.;
node 101 0. 14. 0.; node 102 1.125 14. 0.; node 103 2.25 14. 0.; node 104 3.375 14. 0.; node 105 4.5 14. 0.;
puts "Done Node"
#Define mass
#the correspondent masses of the walls are lumped
mass 28 205210. 0. 0. 0. 0. 0.;
mass 53 199900. 0. 0. 0. 0. 0.;
mass 78 198900. 0. 0. 0. 0. 0.;
mass 103 128450. 0. 0. 0. 0. 0.;
#Boundary condition
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;
puts "Done Boundary condition"
# Concrete Material Properties
# nDMaterial PlaneStressUserMaterial $matTag $nStatevs $nProps $Prop1 ... $ Propn fc ft fcu epsc0 epscu epstu stc
nDMaterial PlaneStressUserMaterial 1 40 7 28e6 2.2e6 -6e6 -0.002 -0.006 8.83e-05 0.08;
# nDMaterial PlateFromPlaneStress matTag PlaneStressMatTag $OutOfPlaneShearModulus= E/2(1+v) ?30147
nDMaterial PlateFromPlaneStress 4 1 1.256e10;
#Steel Material Properties
uniaxialMaterial Steel02 7 500.e6 2.e11 0.005 18.5 0.925 0.15;
# STEEL ...........................................................
# uniaxialMaterial SteelMPF $mattag $fyp $fyn $E0 $bp $bn $R0 $a1 $a2
# steel X
set fyX 400e6; # fy
set bx 0.005; # strain hardening
# steel Y web
set fyYw 500e6; # fy
set byw 0.005; # strain hardening
# steel Y boundary
set fyYb 500e6; # fy
set byb 0.005; # strain hardening
# steel misc
set Esy 2e11; # Young's modulus
set Esx $Esy; # Young's modulus
set R0 18.5; # initial value of curvature parameter
set A1 0.925; # curvature degradation parameter
set A2 0.15; # curvature degradation parameter
# Build steel materials
uniaxialMaterial SteelMPF 501 $fyX $fyX $Esx $bx $bx $R0 $A1 $A2; # steel X
uniaxialMaterial SteelMPF 502 $fyYw $fyYw $Esy $byw $byw $R0 $A1 $A2; # steel Y web
uniaxialMaterial SteelMPF 503 $fyYb $fyYb $Esy $byb $byb $R0 $A1 $A2; # steel Y boundary
#Reinforcement rebars
#angle=90 longitudinal reinforced steel
nDMaterial PlateRebar 9 502 90;
#angle=0 transverse reinforced steel
nDMaterial PlateRebar 11 501 0;
#absolute thickness= (total area of the bars in one floor)/(length of the region in y-direction or height of the wall)
#N.B. The thickness is calculted in mm and then converted to m in the section layer
# main vertical reinforcemnt is D16@250, transverse reinforcement D10@250
# section LayeredShell $sectionTag $nLayers $matTag1 $thickness1...$matTagn $thickness
#1stfloor
section LayeredShell 1 10 4 0.035 11 0.0002772 9 0.00080424 4 0.045 4 0.045 4 0.045 4 0.045 9 0.00080424 11 0.0002772 4 0.035;
#2ndfloor
section LayeredShell 2 10 4 0.035 11 0.0002772 9 0.00080424 4 0.045 4 0.045 4 0.045 4 0.045 9 0.00080424 11 0.0002772 4 0.035;
#3rdfloor and 4thfloor
section LayeredShell 3 10 4 0.035 11 0.0002772 9 0.00080424 4 0.045 4 0.045 4 0.045 4 0.045 9 0.00080424 11 0.0002772 4 0.035;
section LayeredShell 4 10 4 0.035 11 0.0002772 9 0.00080424 4 0.045 4 0.045 4 0.045 4 0.045 9 0.00080424 11 0.0002772 4 0.035;
puts "Done Section"
#define element
#element ShellMITC4 $eleTag $iNode $jNode $kNode $lNode $secTag
element ShellMITC4 1 1 2 7 6 1
element ShellMITC4 2 2 3 8 7 1
element ShellMITC4 3 3 4 9 8 1
element ShellMITC4 4 4 5 10 9 1
element ShellMITC4 5 6 7 12 11 1
element ShellMITC4 6 7 8 13 12 1
element ShellMITC4 7 8 9 14 13 1
element ShellMITC4 8 9 10 15 14 1
element ShellMITC4 9 11 12 17 16 1
element ShellMITC4 10 12 13 18 17 1
element ShellMITC4 11 13 14 19 18 1
element ShellMITC4 12 14 15 20 19 1
element ShellMITC4 13 16 17 22 21 1
element ShellMITC4 14 17 18 23 22 1
element ShellMITC4 15 18 19 24 23 1
element ShellMITC4 16 19 20 25 24 1
element ShellMITC4 17 21 22 27 26 1
element ShellMITC4 18 22 23 28 27 1
element ShellMITC4 19 23 24 29 28 1
element ShellMITC4 20 24 25 30 29 1
element ShellMITC4 21 26 27 32 31 2
element ShellMITC4 22 27 28 33 32 2
element ShellMITC4 23 28 29 34 33 2
element ShellMITC4 24 29 30 35 34 2
element ShellMITC4 25 31 32 37 36 2
element ShellMITC4 26 32 33 38 37 2
element ShellMITC4 27 33 34 39 38 2
element ShellMITC4 28 34 35 40 39 2
element ShellMITC4 29 36 37 42 41 2
element ShellMITC4 30 37 38 43 42 2
element ShellMITC4 31 38 39 44 43 2
element ShellMITC4 32 39 40 45 44 2
element ShellMITC4 33 41 42 47 46 2
element ShellMITC4 34 42 43 48 47 2
element ShellMITC4 35 43 44 49 48 2
element ShellMITC4 36 44 45 50 49 2
element ShellMITC4 37 46 47 52 51 2
element ShellMITC4 38 47 48 53 52 2
element ShellMITC4 39 48 49 54 53 2
element ShellMITC4 40 49 50 55 54 2
element ShellMITC4 41 51 52 57 56 3
element ShellMITC4 42 52 53 58 57 3
element ShellMITC4 43 53 54 59 58 3
element ShellMITC4 44 54 55 60 59 3
element ShellMITC4 45 56 57 62 61 3
element ShellMITC4 46 57 58 63 62 3
element ShellMITC4 47 58 59 64 63 3
element ShellMITC4 48 59 60 65 64 3
element ShellMITC4 49 61 62 67 66 3
element ShellMITC4 50 62 63 68 67 3
element ShellMITC4 51 63 64 69 68 3
element ShellMITC4 52 64 65 70 69 3
element ShellMITC4 53 66 67 72 71 3
element ShellMITC4 54 67 68 73 72 3
element ShellMITC4 55 68 69 74 73 3
element ShellMITC4 56 69 70 75 74 3
element ShellMITC4 57 71 72 77 76 3
element ShellMITC4 58 72 73 78 77 3
element ShellMITC4 59 73 74 79 78 3
element ShellMITC4 60 74 75 80 79 3
element ShellMITC4 61 76 77 82 81 4
element ShellMITC4 62 77 78 83 82 4
element ShellMITC4 63 78 79 84 83 4
element ShellMITC4 64 79 80 85 84 4
element ShellMITC4 65 81 82 87 86 4
element ShellMITC4 66 82 83 88 87 4
element ShellMITC4 67 83 84 89 88 4
element ShellMITC4 68 84 85 90 89 4
element ShellMITC4 69 86 87 92 91 4
element ShellMITC4 70 87 88 93 92 4
element ShellMITC4 71 88 89 94 93 4
element ShellMITC4 72 89 90 95 94 4
element ShellMITC4 73 91 92 97 96 4
element ShellMITC4 74 92 93 98 97 4
element ShellMITC4 75 93 94 99 98 4
element ShellMITC4 76 94 95 100 99 4
element ShellMITC4 77 96 97 102 101 4
element ShellMITC4 78 97 98 103 102 4
element ShellMITC4 79 98 99 104 103 4
element ShellMITC4 80 99 100 105 104 4
puts "Done Element"
equalDOF 28 26 1; equalDOF 28 27 1; equalDOF 28 29 1; equalDOF 28 30 1;
equalDOF 53 51 1; equalDOF 53 52 1; equalDOF 53 54 1; equalDOF 53 55 1;
equalDOF 78 76 1; equalDOF 78 77 1; equalDOF 78 79 1; equalDOF 78 80 1;
equalDOF 103 101 1; equalDOF 103 102 1; equalDOF 103 104 1; equalDOF 103 105 1;
puts "Diaphragm constraints done"
#Gravity loads
# gravity loads on walls
pattern Plain 1 Linear {
load 28 0. -500000 0. 0. 0. 0.;
load 53 0. -500000 0. 0. 0. 0.;
load 78 0. -500000 0. 0. 0. 0.;
load 103 0. -500000 0. 0. 0. 0.;
}
#Analysis Gravity Load
set TestType EnergyIncr;
set Tol 1.e-5;
set maxNumIter 150;
test $TestType $Tol $maxNumIter;
constraints Plain;
numberer Plain; system BandGeneral;
algorithm Newton; set NstepGravity 100;
set DGravity [expr 1./$NstepGravity];
integrator LoadControl $DGravity;
analysis Static; set Gravity [analyze $NstepGravity];
if {$Gravity != 0} {puts "Gravity loads not OK"}
loadConst -time 0.0
if {$Gravity == 0} {puts "Model including gravity loads has been built."}
recorder Node -file 1.txt -time -node 1 -dof 2 reaction
recorder Node -file 2.txt -time -node 2 -dof 2 reaction
recorder Node -file 3.txt -time -node 3 -dof 2 reaction
recorder Node -file 4.txt -time -node 4 -dof 2 reaction
recorder Node -file 5.txt -time -node 5 -dof 2 reaction
#set DisplacementCheck1 [nodeDisp 101 2];
#set node1Rxn1 [nodeReaction 3];
#puts $DisplacementCheck1
#puts $node1Rxn1
# create data directory
file mkdir modes;
#Perform eigenvalue analysis and store periods into a file
for { set k 1 } { $k <= $numModes } { incr k } {
recorder Node -file [format "modes/mode%i.out" $k] -node 3 28 53 78 103 -dof 1 "eigen $k"
}
#Perform eigenvalue analysis and store periods into a file
set lambda [eigen -fullGenLapack $numModes];
# calculate frequencies and periods of the structure
# ---------------------------------------------------
set omega {}
set f {}
set T {}
set pi 3.141593
foreach lam $lambda {
lappend omega [expr sqrt($lam)]
lappend f [expr sqrt($lam)/(2*$pi)]
lappend T [expr (2*$pi)/sqrt($lam)]
}
#puts "periods are $T"
# write the output file cosisting of periods
# --------------------------------------------
set period "modes/Periods.txt"
set Periods [open $period "w"]
foreach t $T {
puts $Periods " $t"
}
close $Periods
record
#source Record.tcl
#****Record Data****
#***********************************************************
set dataDir Results;
file mkdir $dataDir
# record Base Shear
recorder Node -file $dataDir/BaseShear.out -node 1 2 3 4 5 -dof 1 reaction;
# Displacements
recorder Node -file $dataDir/ControlDisp4th.out -time -node 103 -dof 1 disp;
recorder Node -file $dataDir/ControlDisp3rd.out -time -node 78 -dof 1 disp;
recorder Node -file $dataDir/ControlDisp2nd.out -time -node 53 -dof 1 disp;
recorder Node -file $dataDir/ControlDisp1st.out -time -node 28 -dof 1 disp;
#
# Drift ratio
recorder Drift -file $dataDir/Drift4th.out -time -iNode 78 -jNode 103 -dof 1 -perpDirn2;
recorder Drift -file $dataDir/Drift3rd.out -time -iNode 53 -jNode 78 -dof 1 -perpDirn2;
recorder Drift -file $dataDir/Drift2nd.out -time -iNode 28 -jNode 53 -dof 1 -perpDirn2;
recorder Drift -file $dataDir/Drift1st.out -time -iNode 3 -jNode 28 -dof 1 -perpDirn2;
#source PA.tcl
# **** Non-linear static analysis****
#***********************************************************
#****Constraints****
constraints Plain;
#****Numberer****
numberer RCM;
#****System****
system BandGeneral;
#****Convergence criteria****
set TestType NormDispIncr ;
set Tol 1.e-5;
set maxNumIter 2000;
set printFlag 0;
test $TestType $Tol $maxNumIter;
#****Algorithm selection****
set algorithmType KrylovNewton
algorithm $algorithmType ;
#algorithm $algorithmType ;
#****Integrator****
set ControlDisplacementNode 103;
set ControlDisplacementDOF 1; ;
set Dmax 0.1;
#set Dincr [expr (1/1000.)];
#integrator DisplacementControl $ControlDisplacementNode $ControlDisplacementDOF $Dincr;
integrator LoadControl 0.1 10 0.05 20.0
#****Load pattern****
pattern Plain 992 Linear {
load 103 1. 0.0 0.0 0.0 0.0 0.0;
load 78 0.66 0.0 0.0 0.0 0.0 0.0;
load 53 0.35 0.0 0.0 0.0 0.0 0.0;
load 28 0.11 0.0 0.0 0.0 0.0 0.0;
}
#****Perform non-linear static analysis****
analysis Static;
set NSA 0;
set controlDisp 0.0;
while { $controlDisp < $Dmax && $NSA == 0 } {
set NSA [analyze 1]
set controlDisp [nodeDisp $ControlDisplacementNode $ControlDisplacementDOF]
if {$NSA != 0} {
puts "Trying SecantNewton"
algorithm SecantNewton -iterate current -increment current 150
set NSA [analyze 1 ]
algorithm $algorithmType
}
if {$NSA != 0} {
puts "Trying NewtonWithLineSearch"
algorithm NewtonLineSearch .8 4000
set NSA [analyze 1 ]
algorithm $algorithmType
}
if {$NSA != 0} {
puts "Trying BFGS"
algorithm BFGS
set NSA [analyze 1 ]
algorithm $algorithmType
}
if {$NSA != 0} {
puts "Trying Newton with Initial Tangent"
test NormDispIncr $Tol 4000 0
algorithm Newton -initial
set NSA [analyze 1 ]
test $TestType $Tol $maxNumIter 0
algorithm $algorithmType
}
if {$NSA != 0} {
puts "Trying Broyden"
algorithm Broyden
set NSA [analyze 1 ]
algorithm $algorithmType
}
set fileId [open tmp.txt w]
puts $fileId $controlDisp
close $fileId
}
set DisplacementCheck [nodeDisp 103 1];
puts $DisplacementCheck
wipe
-
- Posts: 160
- Joined: Mon Feb 02, 2015 6:32 pm
Re: multi-layer shell element for shear walls
I converted your file into -ndm 2 -ndf 2 and plotted the graph from file ControlDisp4th .Is the result same?
https://1drv.ms/u/s!AuCoXBhjXOhkh883K6m2RWdBpeZ9Pg
Send me the reference result. if the result is ok . I can post you the code
you have posted in different group under reliability analysis. So that you might not get response. Post in Opensees.exe user
https://1drv.ms/u/s!AuCoXBhjXOhkh883K6m2RWdBpeZ9Pg
Send me the reference result. if the result is ok . I can post you the code
you have posted in different group under reliability analysis. So that you might not get response. Post in Opensees.exe user
Prafulla Malla, Nepal
Praf_malla@hotmail.com
Praf_malla@hotmail.com
Re: multi-layer shell element for shear walls
Reference solution
https://www.dropbox.com/s/7xuayvuo4g0ru ... t.png?dl=0
if it worked, please forward the code. Thank you
https://www.dropbox.com/s/7xuayvuo4g0ru ... t.png?dl=0
if it worked, please forward the code. Thank you