About 2DOF model

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

Moderators: silvia, selimgunay, Moderators

Post Reply
shiro
Posts: 59
Joined: Tue May 26, 2020 1:19 am

About 2DOF model

Post by shiro » Sat Nov 14, 2020 12:29 am

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"

mhscott
Posts: 872
Joined: Tue Jul 06, 2004 3:38 pm
Location: Corvallis, Oregon USA
Contact:

Re: About 2DOF model

Post by mhscott » Sat Nov 14, 2020 3:31 pm

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.

shiro
Posts: 59
Joined: Tue May 26, 2020 1:19 am

Re: About 2DOF model

Post by shiro » Sat Nov 14, 2020 6:58 pm

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 >

mhscott
Posts: 872
Joined: Tue Jul 06, 2004 3:38 pm
Location: Corvallis, Oregon USA
Contact:

Re: About 2DOF model

Post by mhscott » Sun Nov 15, 2020 8:02 am

The rotational DOFs at the nodes have zero stiffness with -ndf 3 and truss elements. That's still a problem.

shiro
Posts: 59
Joined: Tue May 26, 2020 1:19 am

Re: About 2DOF model

Post by shiro » Sun Nov 15, 2020 3:08 pm

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

shiro
Posts: 59
Joined: Tue May 26, 2020 1:19 am

Re: About 2DOF model

Post by shiro » Sun Nov 22, 2020 2:04 pm

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.

selimgunay
Posts: 913
Joined: Mon Sep 09, 2013 8:50 pm
Location: University of California, Berkeley

Re: About 2DOF model

Post by selimgunay » Mon Nov 23, 2020 11:21 am

The best way would be to use some test results

shiro
Posts: 59
Joined: Tue May 26, 2020 1:19 am

Re: About 2DOF model

Post by shiro » Wed Nov 25, 2020 2:26 am

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.

Post Reply