About 2DOF model
Moderators: silvia, selimgunay, Moderators
About 2DOF model
Dear Users
I created a two-story 2DOF model.
The Truss element was rigid between nodes 1-2, 3-4-5, 6-7,
and SAWS shear springs were inserted at nodes 2-3, 5-6 in the X direction.
When I execute the code of ①, I get the error of ②.
I would appreciate it if you could point out what is wrong.
I would like to write a code to analyze 2DOF of a two-mass system
with a nonlinear spring.
①【Code】
# All the units are in kN, m, sec
model BasicBuilder -ndm 2 -ndf 3
source DisplayModel2D.tcl;
source DisplayPlane.tcl;
source units.tcl;
set GMdir "./GMfiles/"; # ground-motion file directory
#####################################################################
# Define Analysis Type #
######################################################################
# Define type of analysis: "pushover" = pushover; "dynamic" = dynamic
set analysisType "dynamic";
#set analysisType "cyclic";
#set analysisType "pushover";
#set analysisType "static";
if {$analysisType == "static"} {
set dataDir Concentrated-Static-Output; # name of output folder
file mkdir $dataDir; # create output folder
}
if {$analysisType == "pushover"} {
set dataDir Concentrated-Pushover-Output; # name of output folder
file mkdir $dataDir; # create output folder
}
if {$analysisType == "cyclic"} {
set dataDir Concentrated-Cyclic-Output; # name of output folder
file mkdir $dataDir; # create output folder
}
if {$analysisType == "dynamic"} {
set dataDir Concentrated-Dynamic-Output; # name of output folder
file mkdir $dataDir; # create output folder
}
# Define geometry for model
# -------------------------
set g 9.81 ; # m/sec2
set P1 134.83 ; # kN
set P2 35.40 ; # kN
set mass1 [expr $P1/$g] ; # ton
set mass2 [expr $P2/$g] ; # ton
# tag xCrd yCrd mass
node 1 0.0 0.0
node 2 0.0 1.5
node 3 0.0 1.5
node 4 0.0 3.0 -mass 0.0 $mass1 0.0
node 5 0.0 4.35
node 6 0.0 4.35
node 7 0.0 5.7 -mass 0.0 $mass2 0.0
# set the boundary conditions
# tag DX DY RZ
fix 1 1 1 1
fix 2 0 1 1
fix 3 0 1 1
fix 4 0 1 1
fix 5 0 1 1
fix 6 0 1 1
fix 7 0 1 1
# Define material models
# Physical and mechanical characteristics of SWP :
set F0 24.46636 ;# kN
set FI 3.66995 ;# kN
set DU 0.1 ;# m
set S0 911.6 ;# kN/m
set R1 0.058
set R2 -0.050
set R3 1.00
set R4 0.020
set alph 0.60
set bet 1.10
# material ID
set matID 1
# add the material to domain through the use of a procedure
uniaxialMaterial SAWS $matID $F0 $FI $DU $S0 $R1 $R2 $R3 $R4 $alph $bet
set F0 8.31656 ;# kN
set FI 1.24748 ;# kN
set DU 0.09 ;# m
set S0 304.0 ;# kN/m
set R1 0.058
set R2 -0.050
set R3 1.00
set R4 0.020
set alph 0.60
set bet 1.10
# material ID
set matID2 2
# add the material to domain through the use of a procedure
uniaxialMaterial SAWS $matID2 $F0 $FI $DU $S0 $R1 $R2 $R3 $R4 $alph $bet
# define material properties
set Es 29000.0; # steel Young's modulus
# define p-delta columns and rigid links
set TrussMatID 600; # define a material ID
set Arigid 1000.0; # define area of truss section (make much larger than A of frame elements)
set Irigid 100000.0; # moment of inertia for p-delta columns (make much larger than I of frame elements)
uniaxialMaterial Elastic $TrussMatID $Es; # define truss material
# rigid links
# command: element truss $eleID $iNode $jNode $A $materialID
# Define geometric transformations
# --------------------------------
# geomTransf type tag
geomTransf Linear 1
# Define elements
# ---------------
element zeroLength 1 2 3 -mat 1 -dir 1
element zeroLength 2 5 6 -mat 2 -dir 1
element truss 12 1 2 $Arigid $TrussMatID; # Floor 1
element truss 34 3 4 $Arigid $TrussMatID; # Floor 1
element truss 45 4 5 $Arigid $TrussMatID; # Floor 2
element truss 67 6 7 $Arigid $TrussMatID; # Floor 2
# ------------------------------
# End of model generation
# ------------------------------
# ------------------------------
# Start of analysis generation
# ------------------------------
# create the system of equation
system BandGeneral
# create the DOF numberer
numberer Plain
# create the constraint handler
constraints Plain
# create the convergence test
test NormDispIncr 1.0e-12 10
# create the integration scheme
integrator LoadControl 0.1
# create the solution algorithm
algorithm Newton
# create the analysis object
analysis Static
# ------------------------------
# End of analysis generation
# ------------------------------
# set the gravity loads to be constant & reset the time in the domain
loadConst -time 0.0
remove recorders
# ------------------------------
# Start of recorder generation
# ------------------------------
# create a Recorder object for the nodal displacements at node 2
recorder Node -file $dataDir/Node_Disp.out -time -node 4 7 -dof 1 disp
recorder Element -file $dataDir/Elmt_Force.out -time -ele 1 2 localForce
recorder Element -file $dataDir/Elmt_localForce.out -time -ele 1 2 localForce
set Tol 1e-8;
#######################################################################################
# #
# Analysis Section #
# #
#######################################################################################
######################################################################
# Time History/Dynamic Analysis #
######################################################################
if {$analysisType == "dynamic"} {
puts "Running dynamic analysis..."
# display deformed shape:
# set ViewScale 2; # amplify display of deformed shape
# DisplayModel2D DeformedShape $ViewScale;
set maxNumIter 100;
set printFlag 0;
set NewmarkGamma 0.5;
set NewmarkBeta 0.25;
set TestType EnergyIncr;
set algorithmType NewtonLineSearch;
# source in procedures
source ReadSMDfile.tcl; # procedure for reading GM file and converting it to proper format
# Uniform Earthquake ground motion (uniform acceleration input at all support nodes)
set GMdirection 1; # ground-motion direction
#set GMfile "H-e12140" ; # ground-motion filenames
set GMfile "BCJ-L2" ; # ground-motion filenames
#set GMfact 1.5; # ground-motion scaling factor
#set GMfact 0.0085; # ground-motion scaling factor :1-story=0.8 , 2-story=0.85 , 3-story=0.9
set GMfact 0.01; # ground-motion scaling factor :1-story=0.8 , 2-story=0.85 , 3-story=0.9
# set up ground-motion-analysis parameters
set DtAnalysis [expr 0.01*$sec]; # time-step Dt for lateral analysis
#set TmaxAnalysis [expr 10. *$sec]; # maximum duration of ground-motion analysis -- should be 50*$sec
set TmaxAnalysis [expr 120.00 *$sec]; # maximum duration of ground-motion analysis -- should be 50*$sec
# ----------- set up analysis parameters
source LibAnalysisDynamicParameters.tcl; # constraintsHandler,DOFnumberer,system-ofequations,convergenceTest,solutionAlgorithm,integrator
# display deformed shape:
set ViewScale 5;
DisplayModel2D DeformedShape $ViewScale ; # display deformed shape, the scaling factor needs to be adjusted for each model
# ------------ define & apply damping
# RAYLEIGH damping parameters, Where to put M/K-prop damping, switches (http://opensees.berkeley.edu/OpenSees/m ... l/1099.htm)
# D=$alphaM*M + $betaKcurr*Kcurrent + $betaKcomm*KlastCommit + $beatKinit*$Kinitial
set xDamp 0.02; # damping ratio
set MpropSwitch 1.0;
set KcurrSwitch 0.0;
set KcommSwitch 1.0;
set KinitSwitch 0.0;
set nEigenI 1; # mode 1
#set nEigenJ 3; # mode 3
set nEigenJ 6; # mode 2
#set lambdaN [eigen [expr $nEigenJ]]; # eigenvalue analysis for nEigenJ modes
set lambdaN [eigen -fullGenLapack [expr $nEigenJ]]
set lambdaI [lindex $lambdaN [expr $nEigenI-1]]; # eigenvalue mode i
set lambdaJ [lindex $lambdaN [expr $nEigenJ-1]]; # eigenvalue mode j
set omegaI [expr pow($lambdaI,0.5)];
set omegaJ [expr pow($lambdaJ,0.5)];
set alphaM [expr $MpropSwitch*$xDamp*(2*$omegaI*$omegaJ)/($omegaI+$omegaJ)]; # M-prop. damping; D = alphaM*M
set betaKcurr [expr $KcurrSwitch*2.*$xDamp/($omegaI+$omegaJ)]; # current-K; +beatKcurr*KCurrent
set betaKcomm [expr $KcommSwitch*2.*$xDamp/($omegaI+$omegaJ)]; # last-committed K; +betaKcomm*KlastCommitt
set betaKinit [expr $KinitSwitch*2.*$xDamp/($omegaI+$omegaJ)]; # initial-K; +beatKinit*Kini
rayleigh $alphaM $betaKcurr $betaKinit $betaKcomm; # RAYLEIGH damping
# --------------------------------- perform Dynamic Ground-Motion Analysis
# the following commands are unique to the Uniform Earthquake excitation
set IDloadTag 400; # for uniformSupport excitation
# Uniform EXCITATION: acceleration input
set inFile $GMdir$GMfile.at2
set outFile $GMdir$GMfile.g3; # set variable holding new filename (PEER files have .at2/dt2 extension)
ReadSMDFile $inFile $outFile dt; # call procedure to convert the ground-motion file
#set GMfatt [expr $g*$GMfact]; # data in input file is in g Unifts -- ACCELERATION TH
set GMfatt [expr 1.0*$GMfact]; # data in input file is in gal Unifts -- ACCELERATION TH
#set GMfatt [expr -1.0*$GMfact]; # data in input file is in gal Unifts -- ACCELERATION TH
set AccelSeries "Series -dt $dt -filePath $outFile -factor $GMfatt"; # time series information
pattern UniformExcitation $IDloadTag $GMdirection -accel $AccelSeries ; # create Unifform excitation
set Nsteps [expr int($TmaxAnalysis/$DtAnalysis)];
set ok [analyze $Nsteps $DtAnalysis]; # actually perform analysis; returns ok=0 if analysis was successful
if {$ok != 0} { ; # analysis was not successful.
# --------------------------------------------------------------------------------------------------
# change some analysis parameters to achieve convergence
# performance is slower inside this loop
# Time-controlled analysis
set ok 0;
set controlTime [getTime];
while {$controlTime < $TmaxAnalysis && $ok == 0} {
set controlTime [getTime]
set ok [analyze 1 $DtAnalysis]
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
# test NormDispIncr $Tol 1000 0
test NormDispIncr $Tol 4000 0
algorithm Newton -initial
set ok [analyze 1 $DtAnalysis]
test $testTypeDynamic $TolDynamic $maxNumIterDynamic 0
algorithm $algorithmTypeDynamic
}
if {$ok != 0} {
puts "Trying Broyden .."
# algorithm Broyden 8
algorithm Broyden 500
set ok [analyze 1 $DtAnalysis]
algorithm $algorithmTypeDynamic
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch .8
set ok [analyze 1 $DtAnalysis]
algorithm $algorithmTypeDynamic
}
# Convergence
if {$ok != 0} {
puts "Trying Bisection ...";
algorithm NewtonLineSearch <-type Bisection>;
set ok [analyze 1 $DtAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying Secant ...";
algorithm NewtonLineSearch <-type Secant>;
set ok [analyze 1 $DtAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying RegulaFalsi ...";
algorithm NewtonLineSearch <-type RegulaFalsi>;
set ok [analyze 1 $DtAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying KrylovNewton ...";
algorithm KrylovNewton;
set ok [analyze 1 $DtAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying Newton ...";
algorithm Newton;
set ok [analyze 1 $DtAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying BFGS ...";
algorithm BFGS;
set ok [analyze 1 $DtAnalysis]
algorithm $algorithmType;
};
#if {$ok != 0} {
#puts "Trying Broyden ...";
#algorithm Broyden;
#set ok [analyze 1 $DtAnalysis]
#algorithm $algorithmType;
#};
if {$ok != 0} {
puts "Trying HHT 0.9 ...";
integrator HHT 0.9;
set ok [analyze 1 $DtAnalysis]
# integrator TRBDF2;
integrator Newmark $NewmarkGamma $NewmarkBeta;
};
#if {$ok != 0} {
#puts "Trying OS ...";
#integrator AlphaOS 1.00;
#algorithm Linear;
#set ok [analyze 1 $DtAnalysis]
# integrator TRBDF2;
#integrator Newmark $NewmarkGamma $NewmarkBeta;
#algorithm $algorithmType;
#};
#if {$ok != 0} {
#puts "Trying OSG ...";
#integrator AlphaOSGeneralized 1.00;
#algorithm Linear;
#set ok [analyze 1 $DtAnalysis]
# integrator TRBDF2;
#integrator Newmark $NewmarkGamma $NewmarkBeta;
#algorithm $algorithmType;
#};
if {$ok != 0} {
puts "Trying more iterations...";
test $TestType $Tol 1000 $printFlag;
set ok [analyze 1 $DtAnalysis]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-7 ...";
test $TestType 1.0e-7 $maxNumIter 0;
set ok [analyze 1 $DtAnalysis]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-6 ...";
test $TestType 1.0e-6 $maxNumIter 0;
set ok [analyze 1 $DtAnalysis]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-5 ...";
test $TestType 1.0e-5 $maxNumIter 0;
set ok [analyze 1 $DtAnalysis]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $DtAnalysis]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $DtAnalysis/2.0]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $DtAnalysis/4.0]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $DtAnalysis/8.0]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $DtAnalysis/16.0]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $DtAnalysis/32.0]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $DtAnalysis/64.0]
test $TestType $Tol $maxNumIter $printFlag;
};
}
}; # end if ok !0
puts "Ground Motion Done. End Time: [getTime]"
};
②【Error】
SAWSMaterial unaxial material - Written by Paxti Uriz, Exponent 2009
Running dynamic analysis...
WARNING: analysis .. existing StaticAnalysis exists => wipeAnalysis not invoked, problems may arise
FullGenEigenSolver::solve() - the eigenvalue 1 is numerically undetermined or infinite
FullGenEigenSolver::solve() - the eigenvalue 2 is numerically undetermined or infinite
FullGenEigenSolver::solve() - the eigenvalue 3 is numerically undetermined or infinite
FullGenEigenSolver::solve() - the eigenvalue 4 is numerically undetermined or infinite
FullGenEigenSolver::solve() - the eigenvalue 5 is numerically undetermined or infinite
FullGenEigenSolver::solve() - the eigenvalue 6 is numerically undetermined or infinite
WARNING BandGenLinLapackSolver::solve() -factorization failed, matrix singular U(i,i) = 0, i= 1
WARNING ModifiedNewton::solveCurrentStep() -the LinearSysOfEqn failed in solve()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.01
OpenSees > analyze failed, returned: -3 error flag
WARNING BandGenLinLapackSolver::solve() -factorization failed, matrix singular U(i,i) = 0, i= 1
WARNING ModifiedNewton::solveCurrentStep() -the LinearSysOfEqn failed in solve()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.01
OpenSees > analyze failed, returned: -3 error flag
Trying Newton with Initial Tangent ..
WARNING BandGenLinLapackSolver::solve() -factorization failed, matrix singular U(i,i) = 0, i= 1
WARNING NewtonRaphson::solveCurrentStep() -the LinearSysOfEqn failed in solve()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.01
OpenSees > analyze failed, returned: -3 error flag
Trying Broyden ..
WARNING BandGenLinLapackSolver::solve() -factorization failed, matrix singular U(i,i) = 0, i= 1
WARNING Broyden::solveCurrentStep() -the LinearSysOfEqn failed in solve()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.01
OpenSees > analyze failed, returned: -3 error flag
Trying NewtonWithLineSearch ..
WARNING BandGenLinLapackSolver::solve() -factorization failed, matrix singular U(i,i) = 0, i= 1
WARNING NewtonLineSearch::solveCurrentStep() -the LinearSysOfEqn failed in solve()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.01
OpenSees > analyze failed, returned: -3 error flag
Trying Bisection ...
WARNING BandGenLinLapackSolver::solve() -factorization failed, matrix singular U(i,i) = 0, i= 1
WARNING NewtonLineSearch::solveCurrentStep() -the LinearSysOfEqn failed in solve()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.01
OpenSees > analyze failed, returned: -3 error flag
Trying Secant ...
WARNING BandGenLinLapackSolver::solve() -factorization failed, matrix singular U(i,i) = 0, i= 1
WARNING NewtonLineSearch::solveCurrentStep() -the LinearSysOfEqn failed in solve()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.01
OpenSees > analyze failed, returned: -3 error flag
Trying RegulaFalsi ...
WARNING BandGenLinLapackSolver::solve() -factorization failed, matrix singular U(i,i) = 0, i= 1
WARNING NewtonLineSearch::solveCurrentStep() -the LinearSysOfEqn failed in solve()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.01
OpenSees > analyze failed, returned: -3 error flag
Trying KrylovNewton ...
WARNING BandGenLinLapackSolver::solve() -factorization failed, matrix singular U(i,i) = 0, i= 1
WARNING AcceleratedNewton::solveCurrentStep() -the LinearSysOfEqn failed in solve()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.01
OpenSees > analyze failed, returned: -3 error flag
Trying Newton ...
WARNING BandGenLinLapackSolver::solve() -factorization failed, matrix singular U(i,i) = 0, i= 1
WARNING NewtonRaphson::solveCurrentStep() -the LinearSysOfEqn failed in solve()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.01
OpenSees > analyze failed, returned: -3 error flag
Trying BFGS ...
WARNING BandGenLinLapackSolver::solve() -factorization failed, matrix singular U(i,i) = 0, i= 1
WARNING BFGS::solveCurrentStep() -the LinearSysOfEqn failed in solve()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.01
OpenSees > analyze failed, returned: -3 error flag
Trying HHT 0.9 ...
WARNING BandGenLinLapackSolver::solve() -factorization failed, matrix singular U(i,i) = 0, i= 1
WARNING NewtonLineSearch::solveCurrentStep() -the LinearSysOfEqn failed in solve()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.009
OpenSees > analyze failed, returned: -3 error flag
Trying more iterations...
WARNING BandGenLinLapackSolver::solve() -factorization failed, matrix singular U(i,i) = 0, i= 1
WARNING NewtonLineSearch::solveCurrentStep() -the LinearSysOfEqn failed in solve()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.01
OpenSees > analyze failed, returned: -3 error flag
Trying tolerance 1.0e-7 ...
WARNING BandGenLinLapackSolver::solve() -factorization failed, matrix singular U(i,i) = 0, i= 1
WARNING NewtonLineSearch::solveCurrentStep() -the LinearSysOfEqn failed in solve()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.01
OpenSees > analyze failed, returned: -3 error flag
Trying tolerance 1.0e-6 ...
WARNING BandGenLinLapackSolver::solve() -factorization failed, matrix singular U(i,i) = 0, i= 1
WARNING NewtonLineSearch::solveCurrentStep() -the LinearSysOfEqn failed in solve()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.01
OpenSees > analyze failed, returned: -3 error flag
Trying tolerance 1.0e-5 ...
WARNING BandGenLinLapackSolver::solve() -factorization failed, matrix singular U(i,i) = 0, i= 1
WARNING NewtonLineSearch::solveCurrentStep() -the LinearSysOfEqn failed in solve()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.01
OpenSees > analyze failed, returned: -3 error flag
Trying tolerance 1.0e-3 ...
WARNING BandGenLinLapackSolver::solve() -factorization failed, matrix singular U(i,i) = 0, i= 1
WARNING NewtonLineSearch::solveCurrentStep() -the LinearSysOfEqn failed in solve()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.01
OpenSees > analyze failed, returned: -3 error flag
Trying tolerance 1.0e-3 ...
expected floating-point number but got "0.01/2.0"
I created a two-story 2DOF model.
The Truss element was rigid between nodes 1-2, 3-4-5, 6-7,
and SAWS shear springs were inserted at nodes 2-3, 5-6 in the X direction.
When I execute the code of ①, I get the error of ②.
I would appreciate it if you could point out what is wrong.
I would like to write a code to analyze 2DOF of a two-mass system
with a nonlinear spring.
①【Code】
# All the units are in kN, m, sec
model BasicBuilder -ndm 2 -ndf 3
source DisplayModel2D.tcl;
source DisplayPlane.tcl;
source units.tcl;
set GMdir "./GMfiles/"; # ground-motion file directory
#####################################################################
# Define Analysis Type #
######################################################################
# Define type of analysis: "pushover" = pushover; "dynamic" = dynamic
set analysisType "dynamic";
#set analysisType "cyclic";
#set analysisType "pushover";
#set analysisType "static";
if {$analysisType == "static"} {
set dataDir Concentrated-Static-Output; # name of output folder
file mkdir $dataDir; # create output folder
}
if {$analysisType == "pushover"} {
set dataDir Concentrated-Pushover-Output; # name of output folder
file mkdir $dataDir; # create output folder
}
if {$analysisType == "cyclic"} {
set dataDir Concentrated-Cyclic-Output; # name of output folder
file mkdir $dataDir; # create output folder
}
if {$analysisType == "dynamic"} {
set dataDir Concentrated-Dynamic-Output; # name of output folder
file mkdir $dataDir; # create output folder
}
# Define geometry for model
# -------------------------
set g 9.81 ; # m/sec2
set P1 134.83 ; # kN
set P2 35.40 ; # kN
set mass1 [expr $P1/$g] ; # ton
set mass2 [expr $P2/$g] ; # ton
# tag xCrd yCrd mass
node 1 0.0 0.0
node 2 0.0 1.5
node 3 0.0 1.5
node 4 0.0 3.0 -mass 0.0 $mass1 0.0
node 5 0.0 4.35
node 6 0.0 4.35
node 7 0.0 5.7 -mass 0.0 $mass2 0.0
# set the boundary conditions
# tag DX DY RZ
fix 1 1 1 1
fix 2 0 1 1
fix 3 0 1 1
fix 4 0 1 1
fix 5 0 1 1
fix 6 0 1 1
fix 7 0 1 1
# Define material models
# Physical and mechanical characteristics of SWP :
set F0 24.46636 ;# kN
set FI 3.66995 ;# kN
set DU 0.1 ;# m
set S0 911.6 ;# kN/m
set R1 0.058
set R2 -0.050
set R3 1.00
set R4 0.020
set alph 0.60
set bet 1.10
# material ID
set matID 1
# add the material to domain through the use of a procedure
uniaxialMaterial SAWS $matID $F0 $FI $DU $S0 $R1 $R2 $R3 $R4 $alph $bet
set F0 8.31656 ;# kN
set FI 1.24748 ;# kN
set DU 0.09 ;# m
set S0 304.0 ;# kN/m
set R1 0.058
set R2 -0.050
set R3 1.00
set R4 0.020
set alph 0.60
set bet 1.10
# material ID
set matID2 2
# add the material to domain through the use of a procedure
uniaxialMaterial SAWS $matID2 $F0 $FI $DU $S0 $R1 $R2 $R3 $R4 $alph $bet
# define material properties
set Es 29000.0; # steel Young's modulus
# define p-delta columns and rigid links
set TrussMatID 600; # define a material ID
set Arigid 1000.0; # define area of truss section (make much larger than A of frame elements)
set Irigid 100000.0; # moment of inertia for p-delta columns (make much larger than I of frame elements)
uniaxialMaterial Elastic $TrussMatID $Es; # define truss material
# rigid links
# command: element truss $eleID $iNode $jNode $A $materialID
# Define geometric transformations
# --------------------------------
# geomTransf type tag
geomTransf Linear 1
# Define elements
# ---------------
element zeroLength 1 2 3 -mat 1 -dir 1
element zeroLength 2 5 6 -mat 2 -dir 1
element truss 12 1 2 $Arigid $TrussMatID; # Floor 1
element truss 34 3 4 $Arigid $TrussMatID; # Floor 1
element truss 45 4 5 $Arigid $TrussMatID; # Floor 2
element truss 67 6 7 $Arigid $TrussMatID; # Floor 2
# ------------------------------
# End of model generation
# ------------------------------
# ------------------------------
# Start of analysis generation
# ------------------------------
# create the system of equation
system BandGeneral
# create the DOF numberer
numberer Plain
# create the constraint handler
constraints Plain
# create the convergence test
test NormDispIncr 1.0e-12 10
# create the integration scheme
integrator LoadControl 0.1
# create the solution algorithm
algorithm Newton
# create the analysis object
analysis Static
# ------------------------------
# End of analysis generation
# ------------------------------
# set the gravity loads to be constant & reset the time in the domain
loadConst -time 0.0
remove recorders
# ------------------------------
# Start of recorder generation
# ------------------------------
# create a Recorder object for the nodal displacements at node 2
recorder Node -file $dataDir/Node_Disp.out -time -node 4 7 -dof 1 disp
recorder Element -file $dataDir/Elmt_Force.out -time -ele 1 2 localForce
recorder Element -file $dataDir/Elmt_localForce.out -time -ele 1 2 localForce
set Tol 1e-8;
#######################################################################################
# #
# Analysis Section #
# #
#######################################################################################
######################################################################
# Time History/Dynamic Analysis #
######################################################################
if {$analysisType == "dynamic"} {
puts "Running dynamic analysis..."
# display deformed shape:
# set ViewScale 2; # amplify display of deformed shape
# DisplayModel2D DeformedShape $ViewScale;
set maxNumIter 100;
set printFlag 0;
set NewmarkGamma 0.5;
set NewmarkBeta 0.25;
set TestType EnergyIncr;
set algorithmType NewtonLineSearch;
# source in procedures
source ReadSMDfile.tcl; # procedure for reading GM file and converting it to proper format
# Uniform Earthquake ground motion (uniform acceleration input at all support nodes)
set GMdirection 1; # ground-motion direction
#set GMfile "H-e12140" ; # ground-motion filenames
set GMfile "BCJ-L2" ; # ground-motion filenames
#set GMfact 1.5; # ground-motion scaling factor
#set GMfact 0.0085; # ground-motion scaling factor :1-story=0.8 , 2-story=0.85 , 3-story=0.9
set GMfact 0.01; # ground-motion scaling factor :1-story=0.8 , 2-story=0.85 , 3-story=0.9
# set up ground-motion-analysis parameters
set DtAnalysis [expr 0.01*$sec]; # time-step Dt for lateral analysis
#set TmaxAnalysis [expr 10. *$sec]; # maximum duration of ground-motion analysis -- should be 50*$sec
set TmaxAnalysis [expr 120.00 *$sec]; # maximum duration of ground-motion analysis -- should be 50*$sec
# ----------- set up analysis parameters
source LibAnalysisDynamicParameters.tcl; # constraintsHandler,DOFnumberer,system-ofequations,convergenceTest,solutionAlgorithm,integrator
# display deformed shape:
set ViewScale 5;
DisplayModel2D DeformedShape $ViewScale ; # display deformed shape, the scaling factor needs to be adjusted for each model
# ------------ define & apply damping
# RAYLEIGH damping parameters, Where to put M/K-prop damping, switches (http://opensees.berkeley.edu/OpenSees/m ... l/1099.htm)
# D=$alphaM*M + $betaKcurr*Kcurrent + $betaKcomm*KlastCommit + $beatKinit*$Kinitial
set xDamp 0.02; # damping ratio
set MpropSwitch 1.0;
set KcurrSwitch 0.0;
set KcommSwitch 1.0;
set KinitSwitch 0.0;
set nEigenI 1; # mode 1
#set nEigenJ 3; # mode 3
set nEigenJ 6; # mode 2
#set lambdaN [eigen [expr $nEigenJ]]; # eigenvalue analysis for nEigenJ modes
set lambdaN [eigen -fullGenLapack [expr $nEigenJ]]
set lambdaI [lindex $lambdaN [expr $nEigenI-1]]; # eigenvalue mode i
set lambdaJ [lindex $lambdaN [expr $nEigenJ-1]]; # eigenvalue mode j
set omegaI [expr pow($lambdaI,0.5)];
set omegaJ [expr pow($lambdaJ,0.5)];
set alphaM [expr $MpropSwitch*$xDamp*(2*$omegaI*$omegaJ)/($omegaI+$omegaJ)]; # M-prop. damping; D = alphaM*M
set betaKcurr [expr $KcurrSwitch*2.*$xDamp/($omegaI+$omegaJ)]; # current-K; +beatKcurr*KCurrent
set betaKcomm [expr $KcommSwitch*2.*$xDamp/($omegaI+$omegaJ)]; # last-committed K; +betaKcomm*KlastCommitt
set betaKinit [expr $KinitSwitch*2.*$xDamp/($omegaI+$omegaJ)]; # initial-K; +beatKinit*Kini
rayleigh $alphaM $betaKcurr $betaKinit $betaKcomm; # RAYLEIGH damping
# --------------------------------- perform Dynamic Ground-Motion Analysis
# the following commands are unique to the Uniform Earthquake excitation
set IDloadTag 400; # for uniformSupport excitation
# Uniform EXCITATION: acceleration input
set inFile $GMdir$GMfile.at2
set outFile $GMdir$GMfile.g3; # set variable holding new filename (PEER files have .at2/dt2 extension)
ReadSMDFile $inFile $outFile dt; # call procedure to convert the ground-motion file
#set GMfatt [expr $g*$GMfact]; # data in input file is in g Unifts -- ACCELERATION TH
set GMfatt [expr 1.0*$GMfact]; # data in input file is in gal Unifts -- ACCELERATION TH
#set GMfatt [expr -1.0*$GMfact]; # data in input file is in gal Unifts -- ACCELERATION TH
set AccelSeries "Series -dt $dt -filePath $outFile -factor $GMfatt"; # time series information
pattern UniformExcitation $IDloadTag $GMdirection -accel $AccelSeries ; # create Unifform excitation
set Nsteps [expr int($TmaxAnalysis/$DtAnalysis)];
set ok [analyze $Nsteps $DtAnalysis]; # actually perform analysis; returns ok=0 if analysis was successful
if {$ok != 0} { ; # analysis was not successful.
# --------------------------------------------------------------------------------------------------
# change some analysis parameters to achieve convergence
# performance is slower inside this loop
# Time-controlled analysis
set ok 0;
set controlTime [getTime];
while {$controlTime < $TmaxAnalysis && $ok == 0} {
set controlTime [getTime]
set ok [analyze 1 $DtAnalysis]
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
# test NormDispIncr $Tol 1000 0
test NormDispIncr $Tol 4000 0
algorithm Newton -initial
set ok [analyze 1 $DtAnalysis]
test $testTypeDynamic $TolDynamic $maxNumIterDynamic 0
algorithm $algorithmTypeDynamic
}
if {$ok != 0} {
puts "Trying Broyden .."
# algorithm Broyden 8
algorithm Broyden 500
set ok [analyze 1 $DtAnalysis]
algorithm $algorithmTypeDynamic
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch .8
set ok [analyze 1 $DtAnalysis]
algorithm $algorithmTypeDynamic
}
# Convergence
if {$ok != 0} {
puts "Trying Bisection ...";
algorithm NewtonLineSearch <-type Bisection>;
set ok [analyze 1 $DtAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying Secant ...";
algorithm NewtonLineSearch <-type Secant>;
set ok [analyze 1 $DtAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying RegulaFalsi ...";
algorithm NewtonLineSearch <-type RegulaFalsi>;
set ok [analyze 1 $DtAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying KrylovNewton ...";
algorithm KrylovNewton;
set ok [analyze 1 $DtAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying Newton ...";
algorithm Newton;
set ok [analyze 1 $DtAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying BFGS ...";
algorithm BFGS;
set ok [analyze 1 $DtAnalysis]
algorithm $algorithmType;
};
#if {$ok != 0} {
#puts "Trying Broyden ...";
#algorithm Broyden;
#set ok [analyze 1 $DtAnalysis]
#algorithm $algorithmType;
#};
if {$ok != 0} {
puts "Trying HHT 0.9 ...";
integrator HHT 0.9;
set ok [analyze 1 $DtAnalysis]
# integrator TRBDF2;
integrator Newmark $NewmarkGamma $NewmarkBeta;
};
#if {$ok != 0} {
#puts "Trying OS ...";
#integrator AlphaOS 1.00;
#algorithm Linear;
#set ok [analyze 1 $DtAnalysis]
# integrator TRBDF2;
#integrator Newmark $NewmarkGamma $NewmarkBeta;
#algorithm $algorithmType;
#};
#if {$ok != 0} {
#puts "Trying OSG ...";
#integrator AlphaOSGeneralized 1.00;
#algorithm Linear;
#set ok [analyze 1 $DtAnalysis]
# integrator TRBDF2;
#integrator Newmark $NewmarkGamma $NewmarkBeta;
#algorithm $algorithmType;
#};
if {$ok != 0} {
puts "Trying more iterations...";
test $TestType $Tol 1000 $printFlag;
set ok [analyze 1 $DtAnalysis]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-7 ...";
test $TestType 1.0e-7 $maxNumIter 0;
set ok [analyze 1 $DtAnalysis]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-6 ...";
test $TestType 1.0e-6 $maxNumIter 0;
set ok [analyze 1 $DtAnalysis]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-5 ...";
test $TestType 1.0e-5 $maxNumIter 0;
set ok [analyze 1 $DtAnalysis]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $DtAnalysis]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $DtAnalysis/2.0]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $DtAnalysis/4.0]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $DtAnalysis/8.0]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $DtAnalysis/16.0]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $DtAnalysis/32.0]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $DtAnalysis/64.0]
test $TestType $Tol $maxNumIter $printFlag;
};
}
}; # end if ok !0
puts "Ground Motion Done. End Time: [getTime]"
};
②【Error】
SAWSMaterial unaxial material - Written by Paxti Uriz, Exponent 2009
Running dynamic analysis...
WARNING: analysis .. existing StaticAnalysis exists => wipeAnalysis not invoked, problems may arise
FullGenEigenSolver::solve() - the eigenvalue 1 is numerically undetermined or infinite
FullGenEigenSolver::solve() - the eigenvalue 2 is numerically undetermined or infinite
FullGenEigenSolver::solve() - the eigenvalue 3 is numerically undetermined or infinite
FullGenEigenSolver::solve() - the eigenvalue 4 is numerically undetermined or infinite
FullGenEigenSolver::solve() - the eigenvalue 5 is numerically undetermined or infinite
FullGenEigenSolver::solve() - the eigenvalue 6 is numerically undetermined or infinite
WARNING BandGenLinLapackSolver::solve() -factorization failed, matrix singular U(i,i) = 0, i= 1
WARNING ModifiedNewton::solveCurrentStep() -the LinearSysOfEqn failed in solve()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.01
OpenSees > analyze failed, returned: -3 error flag
WARNING BandGenLinLapackSolver::solve() -factorization failed, matrix singular U(i,i) = 0, i= 1
WARNING ModifiedNewton::solveCurrentStep() -the LinearSysOfEqn failed in solve()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.01
OpenSees > analyze failed, returned: -3 error flag
Trying Newton with Initial Tangent ..
WARNING BandGenLinLapackSolver::solve() -factorization failed, matrix singular U(i,i) = 0, i= 1
WARNING NewtonRaphson::solveCurrentStep() -the LinearSysOfEqn failed in solve()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.01
OpenSees > analyze failed, returned: -3 error flag
Trying Broyden ..
WARNING BandGenLinLapackSolver::solve() -factorization failed, matrix singular U(i,i) = 0, i= 1
WARNING Broyden::solveCurrentStep() -the LinearSysOfEqn failed in solve()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.01
OpenSees > analyze failed, returned: -3 error flag
Trying NewtonWithLineSearch ..
WARNING BandGenLinLapackSolver::solve() -factorization failed, matrix singular U(i,i) = 0, i= 1
WARNING NewtonLineSearch::solveCurrentStep() -the LinearSysOfEqn failed in solve()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.01
OpenSees > analyze failed, returned: -3 error flag
Trying Bisection ...
WARNING BandGenLinLapackSolver::solve() -factorization failed, matrix singular U(i,i) = 0, i= 1
WARNING NewtonLineSearch::solveCurrentStep() -the LinearSysOfEqn failed in solve()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.01
OpenSees > analyze failed, returned: -3 error flag
Trying Secant ...
WARNING BandGenLinLapackSolver::solve() -factorization failed, matrix singular U(i,i) = 0, i= 1
WARNING NewtonLineSearch::solveCurrentStep() -the LinearSysOfEqn failed in solve()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.01
OpenSees > analyze failed, returned: -3 error flag
Trying RegulaFalsi ...
WARNING BandGenLinLapackSolver::solve() -factorization failed, matrix singular U(i,i) = 0, i= 1
WARNING NewtonLineSearch::solveCurrentStep() -the LinearSysOfEqn failed in solve()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.01
OpenSees > analyze failed, returned: -3 error flag
Trying KrylovNewton ...
WARNING BandGenLinLapackSolver::solve() -factorization failed, matrix singular U(i,i) = 0, i= 1
WARNING AcceleratedNewton::solveCurrentStep() -the LinearSysOfEqn failed in solve()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.01
OpenSees > analyze failed, returned: -3 error flag
Trying Newton ...
WARNING BandGenLinLapackSolver::solve() -factorization failed, matrix singular U(i,i) = 0, i= 1
WARNING NewtonRaphson::solveCurrentStep() -the LinearSysOfEqn failed in solve()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.01
OpenSees > analyze failed, returned: -3 error flag
Trying BFGS ...
WARNING BandGenLinLapackSolver::solve() -factorization failed, matrix singular U(i,i) = 0, i= 1
WARNING BFGS::solveCurrentStep() -the LinearSysOfEqn failed in solve()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.01
OpenSees > analyze failed, returned: -3 error flag
Trying HHT 0.9 ...
WARNING BandGenLinLapackSolver::solve() -factorization failed, matrix singular U(i,i) = 0, i= 1
WARNING NewtonLineSearch::solveCurrentStep() -the LinearSysOfEqn failed in solve()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.009
OpenSees > analyze failed, returned: -3 error flag
Trying more iterations...
WARNING BandGenLinLapackSolver::solve() -factorization failed, matrix singular U(i,i) = 0, i= 1
WARNING NewtonLineSearch::solveCurrentStep() -the LinearSysOfEqn failed in solve()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.01
OpenSees > analyze failed, returned: -3 error flag
Trying tolerance 1.0e-7 ...
WARNING BandGenLinLapackSolver::solve() -factorization failed, matrix singular U(i,i) = 0, i= 1
WARNING NewtonLineSearch::solveCurrentStep() -the LinearSysOfEqn failed in solve()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.01
OpenSees > analyze failed, returned: -3 error flag
Trying tolerance 1.0e-6 ...
WARNING BandGenLinLapackSolver::solve() -factorization failed, matrix singular U(i,i) = 0, i= 1
WARNING NewtonLineSearch::solveCurrentStep() -the LinearSysOfEqn failed in solve()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.01
OpenSees > analyze failed, returned: -3 error flag
Trying tolerance 1.0e-5 ...
WARNING BandGenLinLapackSolver::solve() -factorization failed, matrix singular U(i,i) = 0, i= 1
WARNING NewtonLineSearch::solveCurrentStep() -the LinearSysOfEqn failed in solve()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.01
OpenSees > analyze failed, returned: -3 error flag
Trying tolerance 1.0e-3 ...
WARNING BandGenLinLapackSolver::solve() -factorization failed, matrix singular U(i,i) = 0, i= 1
WARNING NewtonLineSearch::solveCurrentStep() -the LinearSysOfEqn failed in solve()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.01
OpenSees > analyze failed, returned: -3 error flag
Trying tolerance 1.0e-3 ...
expected floating-point number but got "0.01/2.0"
Re: About 2DOF model
Looks like you have only two dynamic DOFs (DOFs with mass) but you're asking the eigen command for six modes. You may also have rigid body modes in your model, e.g., due to improper constraints.
Re: About 2DOF model
Dear mhscott
Thank you for your answer.
I tried to fix the pointed out part as follows, but I get an error.
I would appreciate it if you could give me some advice if you noticed anything.
node 1 0.0 0.0
node 2 0.0 1.5
node 3 0.0 1.5
node 4 0.0 3.0 -mass $mass1 0.0 0.0
node 5 0.0 4.35
node 6 0.0 4.35
node 7 0.0 5.7 -mass $mass2 0.0 0.0
# set the boundary conditions
# tag DX DY RZ
fix 1 1 1 1
#fix 2 0 1 1
#fix 3 0 1 1
#fix 4 0 1 1
#fix 5 0 1 1
#fix 6 0 1 1
#fix 7 0 1 1
equalDOF 2 3 2 3
equalDOF 5 6 2 3
set nEigenI 1; # mode 1
#set nEigenJ 3; # mode 3
set nEigenJ 2; # mode 2
【error】
SAWSMaterial unaxial material - Written by Paxti Uriz, Exponent 2009
Running dynamic analysis...
WARNING: analysis .. existing StaticAnalysis exists => wipeAnalysis not invoked, problems may arise
domain error: argument not in valid range
OpenSees >
Thank you for your answer.
I tried to fix the pointed out part as follows, but I get an error.
I would appreciate it if you could give me some advice if you noticed anything.
node 1 0.0 0.0
node 2 0.0 1.5
node 3 0.0 1.5
node 4 0.0 3.0 -mass $mass1 0.0 0.0
node 5 0.0 4.35
node 6 0.0 4.35
node 7 0.0 5.7 -mass $mass2 0.0 0.0
# set the boundary conditions
# tag DX DY RZ
fix 1 1 1 1
#fix 2 0 1 1
#fix 3 0 1 1
#fix 4 0 1 1
#fix 5 0 1 1
#fix 6 0 1 1
#fix 7 0 1 1
equalDOF 2 3 2 3
equalDOF 5 6 2 3
set nEigenI 1; # mode 1
#set nEigenJ 3; # mode 3
set nEigenJ 2; # mode 2
【error】
SAWSMaterial unaxial material - Written by Paxti Uriz, Exponent 2009
Running dynamic analysis...
WARNING: analysis .. existing StaticAnalysis exists => wipeAnalysis not invoked, problems may arise
domain error: argument not in valid range
OpenSees >
Re: About 2DOF model
The rotational DOFs at the nodes have zero stiffness with -ndf 3 and truss elements. That's still a problem.
Re: About 2DOF model
Dear mhscott
Thank you for your answer.
I changed to a model that joins mass points with zeroLength as follows.
When compared with other MDOF software, the response on the first floor was good.
However, the response on the second floor was significantly dissociated.
With general MDOF software, even if the rigidity of the first and second floors is input separately, it will be processed inside the software.
In the case of OpenSees, is it necessary to enter 「K1 + K2」 for the 2nd floor?
When I typed it that way, the response on the second floor was also consistent.
The model is Multi-degree-of-freedom system, which has 2 lumped masses and nonlinear-shear-springs SAWS. I
node 1 0.0 0.0
node 2 0.0 0.0 -mass $mass1 0.0 0.0
node 3 0.0 0.0 -mass $mass2 0.0 0.0
# set the boundary conditions
# tag DX DY RZ
fix 1 1 1 1
fix 2 0 1 1
fix 3 0 1 1
# Define elements
# ---------------
element zeroLength 1 1 2 -mat 1 -dir 1
element zeroLength 2 2 3 -mat 2 -dir 1
Thank you for your answer.
I changed to a model that joins mass points with zeroLength as follows.
When compared with other MDOF software, the response on the first floor was good.
However, the response on the second floor was significantly dissociated.
With general MDOF software, even if the rigidity of the first and second floors is input separately, it will be processed inside the software.
In the case of OpenSees, is it necessary to enter 「K1 + K2」 for the 2nd floor?
When I typed it that way, the response on the second floor was also consistent.
The model is Multi-degree-of-freedom system, which has 2 lumped masses and nonlinear-shear-springs SAWS. I
node 1 0.0 0.0
node 2 0.0 0.0 -mass $mass1 0.0 0.0
node 3 0.0 0.0 -mass $mass2 0.0 0.0
# set the boundary conditions
# tag DX DY RZ
fix 1 1 1 1
fix 2 0 1 1
fix 3 0 1 1
# Define elements
# ---------------
element zeroLength 1 1 2 -mat 1 -dir 1
element zeroLength 2 2 3 -mat 2 -dir 1
Re: About 2DOF model
In the saws model, since the rigidity at 1/120 rad was input to SO,
it was found that the cause was that the displacement increased
even if the maximum displacement DU was exceeded.
If there is a formula to calculate the appropriate SO, DU, FI, FO, R1, R2, etc.
from the layer's restoring force characteristic graph,
I would appreciate it if you could tell me.
it was found that the cause was that the displacement increased
even if the maximum displacement DU was exceeded.
If there is a formula to calculate the appropriate SO, DU, FI, FO, R1, R2, etc.
from the layer's restoring force characteristic graph,
I would appreciate it if you could tell me.
-
- Posts: 913
- Joined: Mon Sep 09, 2013 8:50 pm
- Location: University of California, Berkeley
Re: About 2DOF model
The best way would be to use some test results
Re: About 2DOF model
Thank you for your advice.
After verifying the results with other MDOF software in more than dozens of cases,
I was able to confirm the validity of the SAWS setting method.
The question has been resolved.
Thank you.
After verifying the results with other MDOF software in more than dozens of cases,
I was able to confirm the validity of the SAWS setting method.
The question has been resolved.
Thank you.