Hi,
I have modeled a 3D RC structure, similar to the example provided in the software's manual, to record the global stiffness matrix. I used the static analysis and printA command. The problem is that although my structure has 96 DOFs, the output K matrix is 45*45.
I couldn’t figure out what’s wrong with my model.
Your help would be highly appreciated.
Here is the code:
# Units: kn, m, sec
# ----------------------------
# Start of model generation
# ----------------------------
# Create ModelBuilder with 3 dimensions and 6 DOF/node
model BasicBuilder -ndm 3 -ndf 6;
puts "the Model has been built"
# set up name of data directory
set DataDir 3Dmodel;
#create data directory
file mkdir $DataDir;
# Define geometry
# ---------------
# Set parameters for model geometry
set h 3.0; # Story height
set by 5.0; # Bay width in Y-direction
set bx 5.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
puts "Nodal coordinates, Nodal Masses, and Boundary Conditions have been defined"
# Define materials for nonlinear columns
# --------------------------------------
puts "Begin material defnition"
# CONCRETE
# Core concrete (confined)
# tag f'c epsc0 f'cu epscu
uniaxialMaterial Concrete01 1 -40000 -0.005 -23000 -0.02
# Cover concrete (unconfined)
set fc 29430;
uniaxialMaterial Concrete01 2 -$fc -0.002 0.0 -0.006
# STEEL
# Reinforcing steel
# tag fy E b
uniaxialMaterial Steel01 3 392400 2.06e+8 0.02
puts "All materials have been defined"
puts "Begin Column cross-section definition"
# Column width
set h 0.35;
# Source in a procedure for generating an RC fiber section
source RCsection.tcl
# Call the procedure to generate the column section
# id h b cover core cover steel nBars barArea nfCoreY nfCoreZ nfCoverY nfCoverZ
RCsection 1 $h $h 0.05 1 2 3 3 0.000314 8 1 10 1
puts "column section has been defined"
puts "Begin column conectivity"
# Concrete elastic stiffness
set E [expr 57000.0*sqrt($fc*1000)/1000];
set E 24855585.89304;
# Column torsional stiffness
set GJ 1.0e10;
# 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
set colSec 2;
puts "All has been aggregated"
# 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
puts "End of column definition"
puts "Begin Beam cross-section definition"
# Define beam elements
# --------------------
# Define material properties for elastic beams
# Using beam depth of 0.3 and width of 0.3
# --------------------------------------------
set Abeam [expr 0.3*0.3];
# "Cracked" second moments of area
set Ibeamzz [expr 0.5*1.0/12*0.3*pow(0.3,3)];
set Ibeamyy [expr 0.5*1.0/12*0.3*pow(0.3,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
puts "End of beam definition"
# Define gravity loads
# --------------------
puts "Begin Gravity Loads"
# Gravity load applied at each corner node
# 10% of column capacity
set p [expr 0.1*$fc*$h*$h];
# Mass lumped at master nodes
set g 9.8; # Gravitational constant
set m [expr (4*$p)/$g];
# Rotary inertia of floor about master node
set i [expr $m*($bx*$bx+$by*$by)/12.0];
# Set mass at the master nodes
# tag MX MY MZ RX RY RZ
mass 9 $m $m 0 0 0 $i
mass 14 $m $m 0 0 0 $i
mass 19 $m $m 0 0 0 $i
# Define gravity loads
pattern Plain 1 Constant {
foreach node {5 6 7 8 10 11 12 13 15 16 17 18} {
load $node 0.0 0.0 -$p 0.0 0.0 0.0
}
}
puts "Gravity load pattern has been defined"
# ----------------------------
# Start of analysis generation
# ----------------------------
puts "Start of analysis generation"
wipeAnalysis ;
constraints Transformation ;
numberer RCM ;
system FullGeneral ;
test EnergyIncr 1e-7 25 ;
algorithm ModifiedNewton ;
integrator LoadControl 1 ;
analysis Static ;
analyze 1 ;
loadConst -time 0.0 ;
# -----------------------
# End of model generation
# -----------------------
puts "End of Static Analysis"
printA -file tmp1.out
Recorded stiffness matrix doen't comply with structure's DOF
Moderators: silvia, selimgunay, Moderators
Re: Recorded stiffness matrix doen't comply with structure's
you have only 45 dof! .. each of the free nodes is constrained in a rigid diaphragm and thus has only 3 dof that are not described by the displacements of the master nodes (12 nodes * 3dof = 36dof ) .. the 3 master node each have 3 free dof (3nodes * 3dof = 9dof). 36+9 = 45.
Re: Recorded stiffness matrix doen't comply with structure's DOF
Hi~
I want to know what the elements mean in the K and M matrix outputed from OpenSees by printA.
Could you please tell me ?
I want to know what the elements mean in the K and M matrix outputed from OpenSees by printA.
Could you please tell me ?