spring-mass MDOF model using shear and flexure springs for time history analysis

Forum for OpenSees users to post questions, comments, etc. on the use of the OpenSees interpreter, OpenSees.exe

Moderators: silvia, selimgunay, Moderators

Post Reply
jodelosreyes
Posts: 1
Joined: Tue Nov 03, 2020 2:10 am

spring-mass MDOF model using shear and flexure springs for time history analysis

Post by jodelosreyes » Mon Feb 28, 2022 7:19 am

Good day!

Currently, Im doing a research for medium rise dual systems. The structure is modelled as nonlinear MDOF with concentrated mass and springs that are in series. The shear and flexure springs were modelled using two-linked nodes and make use of hysteretic material to capture nonlinearity. The properties of the hysteretic materials were computed from matlab and are consistent with the units.

Although Im producing results, the values are off by order of 10x from the expected results.


my code looks like this:
==============================================================================================================================================================
# Set up
wipe; # clear opensees model
model basic -ndm 2 -ndf 3; # 2 dimensions, 3 dof per node
file mkdir TRIAL; # create data directory
# ==============================================================================================================================================================
# MODEL DEFINITION
#---------------------------------------------------------------------------------------------------------------------------------------------------------------
# definition of nodes
#Assigning node tags to variables to facilitate the manipulation of models
#node $nodeTag (ndm $coords)
node 1 0. 0.;
node 2 0. 0.;
node 3 0. 0.;
node 4 0. 0.;
node 5 0. 0.;
node 6 0. 0.;
node 7 0. 0.;
node 8 0. 0.;


# definition of constraints
# Single point constraints -- Boundary Conditions
#fix $node (ndf $coords)
fix 1 1 1 1;

# nodal masses:
#mass $node $Mx $My $Mz (Mass=Weight/g)
mass 2 26097.03 1e-9 26097.03
mass 3 26097.03 1e-9 26097.03
mass 4 26097.03 1e-9 26097.03
mass 5 26097.03 1e-9 26097.03
mass 6 26097.03 1e-9 26097.03
mass 7 26097.03 1e-9 26097.03
mass 8 26097.03 1e-9 26097.03


#---------------------------------------------------------------------------------------------------------------------------------------------------------------
# define geometric transformation: performs a linear geometric transformation of beam stiffness and resisting force from the basic system to the global-coordinate system
geomTransf Linear 1; # associate a tag to transformation
#---------------------------------------------------------------------------------------------------------------------------------------------------------------
# definition of material
#uniaxialMaterial Hysteretic $matTag $s1p $e1p $s2p $e2p $s1n $e1n $s2n $e2n $pinchX $pinchY $damage1 $damage2

uniaxialMaterial Hysteretic 1 4509611.346124 0.006777 11274028.365311 0.016943 -4509611.346124 -0.006777 -11274028.365311 -0.016943 0.400000 0.600000 0 0
uniaxialMaterial Hysteretic 2 10248694.439889 0.015402 25621736.099721 0.038505 -10248694.439889 -0.015402 -25621736.099721 -0.038505 0.400000 0.600000 0 0
uniaxialMaterial Hysteretic 3 12500056.844530 0.018785 31250142.111325 0.046963 -12500056.844530 -0.018785 -31250142.111325 -0.046963 0.400000 0.600000 0 0
uniaxialMaterial Hysteretic 4 12564970.522462 0.018883 31412426.306155 0.047207 -12564970.522462 -0.018883 -31412426.306155 -0.047207 0.400000 0.600000 0 0
uniaxialMaterial Hysteretic 5 11323717.341583 0.017017 28309293.353957 0.042543 -11323717.341583 -0.017017 -28309293.353957 -0.042543 0.400000 0.600000 0 0
uniaxialMaterial Hysteretic 6 9519501.140365 0.014306 23798752.850912 0.035765 -9519501.140365 -0.014306 -23798752.850912 -0.035765 0.400000 0.600000 0 0
uniaxialMaterial Hysteretic 7 8027316.446481 0.012064 20068291.116203 0.030159 -8027316.446481 -0.012064 -20068291.116203 -0.030159 0.400000 0.600000 0 0

uniaxialMaterial Hysteretic 8 2407644.735279 0.002372 6019111.838198 0.005930 -2407644.735279 -0.002372 -6019111.838198 -0.005930 0.400000 0.600000 0 0
uniaxialMaterial Hysteretic 9 2407644.735279 0.002372 6019111.838198 0.005930 -2407644.735279 -0.002372 -6019111.838198 -0.005930 0.400000 0.600000 0 0
uniaxialMaterial Hysteretic 10 1492752.239060 0.001471 3731880.597650 0.003677 -1492752.239060 -0.001471 -3731880.597650 -0.003677 0.400000 0.600000 0 0
uniaxialMaterial Hysteretic 11 522902.413827 0.000515 1307256.034566 0.001288 -522902.413827 -0.000515 -1307256.034566 -0.001288 0.400000 0.600000 0 0
uniaxialMaterial Hysteretic 12 956966.264057 0.000943 2392415.660144 0.002357 -956966.264057 -0.000943 -2392415.660144 -0.002357 0.400000 0.600000 0 0
uniaxialMaterial Hysteretic 13 1226388.386584 0.001208 3065970.966459 0.003021 -1226388.386584 -0.001208 -3065970.966459 -0.003021 0.400000 0.600000 0 0
uniaxialMaterial Hysteretic 14 973715.464790 0.000959 2434288.661974 0.002398 -973715.464790 -0.000959 -2434288.661974 -0.002398 0.400000 0.600000 0 0

# definition of elements
#element twoNodeLink $eleTag $iNode $jNode -mat $matTags -dir $dirs
element twoNodeLink 1 1 2 -mat 1 8 -dir 1 3
element twoNodeLink 2 2 3 -mat 2 9 -dir 1 3
element twoNodeLink 3 3 4 -mat 3 10 -dir 1 3
element twoNodeLink 4 4 5 -mat 4 11 -dir 1 3
element twoNodeLink 5 5 6 -mat 5 12 -dir 1 3
element twoNodeLink 6 6 7 -mat 6 13 -dir 1 3
element twoNodeLink 7 7 8 -mat 7 14 -dir 1 3

# ==============================================================================================================================================================
# RECORDERS
# recorder details: https://opensees.berkeley.edu/wiki/inde ... e_Recorder
# recorder Node <-file $fileName> <-time> <-node $node1 $node2 ...> -dof ($dof1 $dof2 ...) $respType'

recorder Node -file TRIAL/RBasetrial1.out -time -node 1 9 -dof 1 2 3 reaction; # support reaction

recorder Node -file TRIAL/DFree2trial1.out -time -node 2 -dof 1 2 3 disp; # displacements of free nodes
recorder Node -file TRIAL/DFree3trial1.out -time -node 3 -dof 1 2 3 disp; # displacements of free nodes
recorder Node -file TRIAL/DFree4trial1.out -time -node 4 -dof 1 2 3 disp; # displacements of free nodes
recorder Node -file TRIAL/DFree5trial1.out -time -node 5 -dof 1 2 3 disp; # displacements of free nodes
recorder Node -file TRIAL/DFree6trial1.out -time -node 6 -dof 1 2 3 disp; # displacements of free nodes
recorder Node -file TRIAL/DFree7trial1.out -time -node 7 -dof 1 2 3 disp; # displacements of free nodes
recorder Node -file TRIAL/DFree8trial1.out -time -node 8 -dof 1 2 3 disp; # displacements of free nodes

# ==============================================================================================================================================================
# DYNAMIC GROUND-MOTION ANALYSIS
# Define ground motion parameters
set G 9.81;
set GMtag 1;
set GMfile "EQ1.txt";
set dt 0.02;
set dt_analysis 0.02;
set Scalefact $G; # scale factor for the design spectrum // Gs
set patternTag 1;
set GMdirection 1;
# set TotalNumberOfSteps 1000; # associated with the acceleration input file - manual count?
# set GMtime [expr $dt*$TotalNumberOfSteps];
set GMtime 20;
set NumSteps [expr round(($GMtime + 5.0)/$dt_analysis)];

set dampRatio 0.05;
set period 0.526; # period of the 1st mode of vibration
rayleigh 0. 0. 0. [expr 2*$dampRatio*$period];

# Creating uniform excitation from ground motion parameters
# timeSeries Path $tag -dt $dt -filePath $filePath <-factor $cFactor>
timeSeries Path $GMtag -dt $dt -filePath $GMfile -factor $Scalefact ; # define acceleration vector from file (dt=0.02 is associated with the input file gm)
# pattern UniformExcitation $patternTag $dir -accel $tsTag
pattern UniformExcitation $patternTag 1 -accel $GMtag; # define where and how (pattern tag, dof) acceleration is applied

# dynamic-analysis parameters
constraints Transformation; # how it handles boundary conditions
numberer RCM; # renumber dof's to minimize band-width (optimization), if you want to
system UmfPack; # how to store and solve the system of equations in the analysis

# convergence test
variable TolDynamic 1.e-12; # the tolerance criteria used to check for convergence
variable maxNumIterDynamic 1000; # the max number of iterations to check before returning failure condition
variable printFlagDynamic 0; # optional print flag, default is 0. valid options
variable testTypeDynamic EnergyIncr;
# test EnergyIncr $tol $iter <$pFlag> <$nType>
test $testTypeDynamic $TolDynamic $maxNumIterDynamic $printFlagDynamic; # convergence test

# for improved-convergence procedure:
variable algorithmTypeDynamic ModifiedNewton
algorithm $algorithmTypeDynamic;
integrator TRBDF2
# analysis analysisType? <-numSublevels x -numSubSteps y>
analysis VariableTransient

# perform the dynamic analysis and display whether analysis was successful
set ok [analyze $NumSteps $dt_analysis]; # ok = 0 if analysis was completed
if {$ok == 0} {
puts "Dynamic analysis complete";
} else {
puts "Dynamic analysis did not converge";
}

Post Reply