Making SODF model for 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
suusie
Posts: 30
Joined: Mon May 21, 2012 4:16 am

Making SODF model for analysis

Post by suusie »

Hello, I am a beginner of OpenSees.

Currently, I am working on making Mass Shear Spring Damper Model of a single degree of freedom, which has 1 Mass, 1 shear spring (linear or non-linear), and 1 damper. The response of the model against input accelaration is determined by the shear stiffness, Mass, and Natural period. I would like to make such a model by using OpenSees. In this case, which element (or probably other command?) should I use to connect 2 nodes (1 node for Mass and the other is for ground)? Or is it possible to build such model by OpenSees?

If possible, I would be very grateful if you write down some scripts or hints of making the model here.
(I would like to develop this SDOF model to the multi-DOF model later)

I have already practiced OpenSees by downloading examples of .tcl and reading OpenSees Command Language Manual.

The models presented in "Ex1a.Canti2D.EQ.mod.tcl" and "Ex2a.Canti2D.ElasticElement.EQ.tcl" on OpenSees' website are very similar to the model I want to make, but these example models consider cross-sectional area and column moment of inertia to build the model. I do NOT want to consider such factors.


The model I want to make is like this ...

http://ars.sciencedirect.com/content/im ... 21-gr1.gif


I hope I will hear from you soon.
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Re: Making SODF model for analysis

Post by vesna »

You can do it by using a zeroLenght element to which you are going to assign material that will consist of following:

uniaxialMaterial Elastic $matTag1 $K
uniaxialMaterial Viscous $matTag2 $C $alpha
uniaxialMaterial Parallel $matTag $matTag1 $matTag2

Check the arguments of these materials here: http://opensees.berkeley.edu/wiki/index ... al_Command
suusie
Posts: 30
Joined: Mon May 21, 2012 4:16 am

Dear vesna (Re: Making SODF model for analysis)

Post by suusie »

Thank you for your reply.

I re-made the script of "SDOF.tcl" for the analysis of SDOF model based on your advice, but unfortunately error has appeared.
I write down the script of "SDOF.tcl" and the resultant error below. I would be grateful if you told me which part and how I should change the script.

Thanks for your helping, and I hope I will hear from you soon.

### "SDOF.tcl" ###
# Define units: N, m, sec --------
set N 1.; # Define basic unit -- weight (or force)
set sec 1.; # Define basic unit -- time
set m 1.; # Define basic unit -- length (meter)
set g 9.8; # Gravity [m/s2]
set kg 1.; # Mass [kg*m/s2]
set U 1.e10; # A very large number
set u [expr 1./$U]; # A very small number

# Set up -----------------------------
file mkdir Data; # Make folder for output files
model BasicBuilder -ndm 2 -ndf 3

# Nodal coordinates ---
node 2 0 0; # Roof Level
node 1 0 0; # Ground Level

# Calculated parameters ---
set Mass [expr 3.*1.e4*$kg]; # Set Nodal Mass
mass 2 $Mass $u 0.; # Assign Nodal Mass

# Constraint ---
fix 1 1 1 1; # Node 1 -> All fixed

# Material parameters ---
set E [expr 2.94*1.e7*$N/$m]; # Linear Tangent for shear spring
uniaxialMaterial Elastic 1 $E; # Shear Spring
set C 0.02; # Damping Coeficient
set Alpha 1.; # Alpha=1.--> Linear Damping
uniaxialMaterial Viscous 2 $C $Alpha; # Viscous Damper
uniaxialMaterial Parallel 3 1 2; # Construct a parallel material object

# Element connectivity ---
element zeroLength 1 1 2 -mat 1 2 3 -dir 1 1 1; # Compose Materials and Nodes

# Define Records --------------------------------------
recorder Node -file Data/a_Node2.out -time -node 2 -dof 1 accel; # Resp Acc
recorder Node -file Data/v_Node2.out -time -node 2 -dof 1 vel; # Resp Vel
recorder Node -file Data/d_Node2.out -time -node 2 -dof 1 disp; # Resp Dis

# Say Model Built - - - - - - - - - - - - - - - - - - - - -
puts " ! ! ! Model Built ! ! ! "
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

# Transient(Dynamic) Analysis --------------------------------------
# Constraints handler ---
constraints Transformation
numberer Plain
system SparseGeneral -piv
set maxNumIter 10
set printFlag 0
set TestType EnergyIncr
set Tol 1.e-8; # Convergence tolerance for test
test $TestType $Tol $maxNumIter $printFlag
set algorithmType ModifiedNewton
algorithm $algorithmType
set NewmarkGamma 0.5; # Coefficient for Newmark
set NewmarkBeta 0.25; # Coefficient for Newmark
integrator Newmark $NewmarkGamma $NewmarkBeta; # Transient integrator
analysis Transient; # Define type of analysis

# Dynamic EQ Analysis ---
set GMdirection 1
set GMfile "jma-kobe-ns.txt"; # Ground Motion (Accelaration) data file
set GMfact 0.01; # Ground-Motion scale factor

# Set-up ground motion analysis parameters ---
set DtAnalysis [expr 0.01]; # Time step Dt for lateral analysis
set ND [expr 8192]; # Number of Data in the GMfile
set TmaxAnalysis [expr $DtAnalysis*$ND]; # Max Duration of GM analysis

# Acceleration input ---
set IDloadTag 500
set dt 0.01; # Time step for input ground motion

set AccelSeries "Series -dt $dt -filePath $GMfile -factor $GMfact";
# Time series information
pattern UniformExcitation $IDloadTag $GMdirection -accel $AccelSeries;
# Create Uniform excitation
set Nsteps [expr int($TmaxAnalysis/$DtAnalysis)]
set ok [analyze $Nsteps $DtAnalysis]

if {$ok != 0} {
set ok 0
set controlTime [getTime]
while {$controlTime < $TmaxAnalysis && $ok ==0} {
set ok [analyze 1 $DtAnalysis]
set controlTime [getTime]
set ok [analyze 1 $DtAnalysis]
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test NormDispIncr $Tol 1000 0
algorithm Newton -initial
set ok [analyze 1 $DtAnalysis]
test $TestType $Tol $maxNumIter 0
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying Broyden .."
algorithm Broyden 8
set ok [analyze 1 $DtAnalysis]
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch .8
set ok [analyze 1 $DtAnalysis]
algorithm $algorithmType
}
}
}

puts "Ground Motion Done. End Time: [getTime]"

---------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------

### ERROR ###
OpenSees > source SDOF.tcl
! ! ! Model Built ! ! !
WARNING SuperLU::solve(void)- Error 3 returned in factorization dgstrf()
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 SuperLU::solve(void)- Error 3 returned in factorization dgstrf()
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 SuperLU::solve(void)- Error 3 returned in factorization dgstrf()
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 SuperLU::solve(void)- Error 3 returned in factorization dgstrf()
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 SuperLU::solve(void)- Error 3 returned in factorization dgstrf()
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 SuperLU::solve(void)- Error 3 returned in factorization dgstrf()
WARNING NewtonLineSearch::solveCurrentStep() -the LinearSysOfEqn failed in solve
()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.01
OpenSees > analyze failed, returned: -3 error flag
Ground Motion Done. End Time: 0.000000
suusie
Posts: 30
Joined: Mon May 21, 2012 4:16 am

Dear vesna 2

Post by suusie »

I have struggled to make the "SDOF.tcl" source without any error, and after I changed the sentence "element zeroLength 1 1 2 -mat 1 2 3 -dir 1 1 1; " into "element zeroLength 1 1 2 -mat 1 -dir 1" (pls see the script above and/or below), the "SDOF.tcl" went through WITHOUT any error. But the resultant response accelaration (and velocity and displacement) got no reduction from the viscous damping (2%, C=0.02). I changed the value of the damping to larger one and smaller one, but the results were same.

Could you please give me any advice to solve this problem? I write down the new "SDOF.tcl" script below.

I hope I will hear from you soon, and thanks for your help.

### "SDOF.tcl" ###
wipe
# Define units: N, m, sec --------
set N 1.; # Define basic unit -- weight (or force)
set sec 1.; # Define basic unit -- time
set m 1.; # Define basic unit -- length (meter)
set g 9.8; # Gravity [m/s2]
set kg 1.; # Mass [kg*m/s2]
set U 1.e10; # A very large number
set u [expr 1./$U]; # A very small number

# Set up -----------------------------
file mkdir Data; # Make folder for output files
model BasicBuilder -ndm 2 -ndf 3

# Nodal coordinates ---
node 2 0 0; # Roof Level
node 1 0 0; # Ground Level

# Calculated parameters ---
set Mass [expr 3.*1.e4*$kg]; # Set Nodal Mass
mass 2 $Mass $u 0.; # Assign Nodal Mass

# Constraint ---
fix 1 1 1 1; # Node 1 -> All fixed
fix 2 0 1 1; # Node 1 -> All fixed

# Material parameters ---
set E [expr 2.94*1.e7*$N/$m]; # Linear Tangent for shear spring
uniaxialMaterial Elastic 1 $E; # Shear Spring
set C 0.02; # Damping Coeficient
set Alpha 1.; # Alpha=1.--> Linear Damping
uniaxialMaterial Viscous 2 $C $Alpha; # Viscous Damper
uniaxialMaterial Parallel 3 1 2; # Construct a parallel material object

# Element connectivity ---
element zeroLength 1 1 2 -mat 3 -dir 1; # Compose Materials and Nodes

# Define Records --------------------------------------
recorder Node -file Data/a_Node2.out -time -node 2 -dof 1 accel; # Resp Acc
recorder Node -file Data/v_Node2.out -time -node 2 -dof 1 vel; # Resp Vel
recorder Node -file Data/d_Node2.out -time -node 2 -dof 1 disp; # Resp Dis

# Say Model Built - - - - - - - - - - - - - - - - - - - - -
puts " ! ! ! Model Built ! ! ! "
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

# Transient(Dynamic) Analysis --------------------------------------
# Constraints handler ---
constraints Transformation
numberer Plain
system SparseGeneral -piv
set maxNumIter 10
set printFlag 0
set TestType EnergyIncr
set Tol 1.e-8; # Convergence tolerance for test
test $TestType $Tol $maxNumIter $printFlag
set algorithmType ModifiedNewton
algorithm $algorithmType
set NewmarkGamma 0.5; # Coefficient for Newmark
set NewmarkBeta 0.25; # Coefficient for Newmark
integrator Newmark $NewmarkGamma $NewmarkBeta; # Transient integrator
analysis Transient; # Define type of analysis

# Dynamic EQ Analysis ---
set GMdirection 1
set GMfile "jma-kobe-ns.txt"; # Ground Motion (Accelaration) data file
set GMfact 0.01; # Ground-Motion scale factor

# Set-up ground motion analysis parameters ---
set DtAnalysis [expr 0.01]; # Time step Dt for lateral analysis
set ND [expr 8192]; # Number of Data in the GMfile
set TmaxAnalysis [expr $DtAnalysis*$ND]; # Max Duration of GM analysis

# Acceleration input ---
set IDloadTag 500
set dt 0.01; # Time step for input ground motion

set AccelSeries "Series -dt $dt -filePath $GMfile -factor $GMfact";
# Time series information
pattern UniformExcitation $IDloadTag $GMdirection -accel $AccelSeries;
# Create Uniform excitation
set Nsteps [expr int($TmaxAnalysis/$DtAnalysis)]
set ok [analyze $Nsteps $DtAnalysis]

if {$ok != 0} {
set ok 0
set controlTime [getTime]
while {$controlTime < $TmaxAnalysis && $ok ==0} {
set ok [analyze 1 $DtAnalysis]
set controlTime [getTime]
set ok [analyze 1 $DtAnalysis]
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test NormDispIncr $Tol 1000 0
algorithm Newton -initial
set ok [analyze 1 $DtAnalysis]
test $TestType $Tol $maxNumIter 0
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying Broyden .."
algorithm Broyden 8
set ok [analyze 1 $DtAnalysis]
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch .8
set ok [analyze 1 $DtAnalysis]
algorithm $algorithmType
}
}
}

puts "Ground Motion Done. End Time: [getTime]"
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Re: Making SODF model for analysis

Post by vesna »

C is not a damping ratio, but damping coefficient. If you want to study the effect of different damping ratios on the response you should calculate the damping coefficient in the following way: c=2*(damping ratio)*(omega)*m
suusie
Posts: 30
Joined: Mon May 21, 2012 4:16 am

Re: Making SODF model for analysis

Post by suusie »

Thank you very much for your response, vesna.
By changing the value of C, I could get the response that I was expecting.
Now I can proceed to the next step!
Thanks again!!
naba077
Posts: 34
Joined: Mon May 28, 2012 9:38 pm
Location: Saitama University

Re: Making SODF model for analysis

Post by naba077 »

Hi,
I'm very much interested in your SDOF model. I've a similar model to which I want to simulate in OPENSEES. So, could you please upload jma-kobe-ns.txt file, so that I can run you program and can have some idea?
sugandha
Posts: 8
Joined: Tue Sep 22, 2015 11:07 am
Location: North Carolina State University

Re: Making SODF model for analysis

Post by sugandha »

Hi,

I am trying to do code almost same model but with non linear stiffness. I am having trouble as to which material type should I use for defining stiffness?

Thanks,
Sugandha
fmk
Site Admin
Posts: 5884
Joined: Fri Jun 11, 2004 2:33 pm
Location: UC Berkeley
Contact:

Re: Making SODF model for analysis

Post by fmk »

any nonlinear uniaxial material will work .. just pick one that closes resemobles what you want.
http://opensees.berkeley.edu/wiki/index ... al_Command
sugandha
Posts: 8
Joined: Tue Sep 22, 2015 11:07 am
Location: North Carolina State University

Re: Making SODF model for analysis

Post by sugandha »

Thank you very much sir. I used multilinear model which lets my model built but still my analysis is giving error which may be due to the method I have defined the load. It is blast load at the node defined at different times for which I have used path time series and assigned reference load value 1.0 (as suggested in another post at forum). I have posted my code below, please let me know where I am going wrong.

#Nonlinear Analysis of Single Degree of Freedom System
#user defined parameters
set c 0.2;
set m 0.1;
set T 0.8;
set h 0.1;
set n [expr int($T/$h)]
#create model
file mkdir Data;
model BasicBuilder -ndm 2 -ndf 3;
node 1 0 0;
node 2 0 0;
mass 2 $m 0 0;
fix 1 1 1 1;
fix 2 0 1 1;
#define material- Multilinear for spring and viscous for damping
uniaxialMaterial MultiLinear 1 0 0 0.6 4.544 1.2 7.552 1.5 8 2.4 8;
uniaxialMaterial Viscous 2 $c 1;
#uniaxialMaterial Parallel 3 1 2 - I did not use this as suggested as OpenSeesWiki mentions viscous material cannot be used in parallel or series
#define elements- zerolength to represent spring
element zeroLength 1 1 2 -mat 1 -dir 1
element zeroLength 2 1 2 -mat 2 -dir 1
#define recorders
recorder Node -file Response.out -time -node 2 -dof 1 disp vel accel incrDisp
recorder Element -file ForceDisp.out -time -ele 1 force stiffness
puts "Model Built!"
#define load pattern
timeSeries Path 1 -dt $h -values {0 1 4 9 9 6 0 0}
#pattern UniformExcitation 1 1 -accel 1
pattern Plain 1 1 {
load 2 1 1 0
}
#set analysis
constraints Transformation
numberer Plain
system SparseGeneral -piv
test EnergyIncr 1.0e-8 10 0;
algorithm Newton -initial;
integrator Newmark 0.5 0.25;
analysis Transient;
analyze $n $h

WARNING SuperLU::solve(void)- Error 1 returned in factorization dgstrf()
WARNING NewtonRaphson::solveCurrentStep() -the LinearSysofEqn failed in solve()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.1
OpenSees > analyze failed, returned: -3 error flag
-3

Thanks,
Sugandha
fmk
Site Admin
Posts: 5884
Joined: Fri Jun 11, 2004 2:33 pm
Location: UC Berkeley
Contact:

Re: Making SODF model for analysis

Post by fmk »

it does not like the first 0 0 in the multilinear material, 0 0 is there by default .. you are adding another point, the material thinks it is in the state between the first 2 points 0 0 (the default) and 0 0 (the point you specified) .. as such it will return a 0 tangent and hence the solver will fail
Post Reply