rigid body 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
ionsergis
Posts: 8
Joined: Mon Jan 19, 2015 3:36 pm
Location: ENPC

rigid body analysis

Post by ionsergis »

Dear all users,

I am new to the Opensees so i would really need some help in order to start working in a better way. I want to represent a rigid body isolated in different bearings. In order to begin with i have used a zero length link with an element of elastic behaviour. I have placed a mass in the center of gravity of my structure and created a very rigid frame. Unfortunateley when i use both an horizontal and a vertical spring i cannot find the shapes of a rigid body motion. I am sure that it's a problem of the equal degrees of freedom that i use or not use. Could you please help me with that.

Thanks in advance :


#
wipe all; # clear memory of all past model definitions

# Define the model builder
model BasicBuilder -ndm 2 -ndf 3
# Utilisation des unitées du système international
file mkdir modes;
set m 1
set N 1
set kg 1
set m2 [expr $m*$m]
set m3 [expr $m*$m*$m]
set m4 [expr $m2*$m2]
set Pa [expr $N/$m2]
set MPa [expr 1e+6*$Pa]
set mm [expr 1e-3*$m]
set tonnes [expr 1e+3*$kg]
set MN [expr 1e+6*$N]

# déclaration des variables
# Gravitational constant
set g 9.81
# centre de gravite hauteur
set hg [expr 7.5*1*$m]
# direction x
set xg [expr 2.5*$m]
# distance entre les appuis x
set Lx [expr 5*$m]
# masse total
set M [expr 160*$tonnes]
set Iz [expr 2000*$tonnes/$m2]
#rigidité horizonal
set Kh [expr 0.636*$MN]
set Kv [expr 1.61*$MN]
set numModes 1

# nodes
node 1 0 0
node 2 $Lx 0
node 3 0 $hg
node 4 $Lx $hg
# cdg
node 5 $xg $hg
# double nodes pour les isolateurs
node 6 0 0
node 7 $Lx 0

#assign mass
mass 5 [expr 1*$M] [expr 1*$M] $Iz


#equal DOF - MP constraints
equalDOF 3 4 1 3



#fix points
fix 6 1 1 1
fix 7 1 1 1




# define geometric transformation:
set TransfTag 1;
geomTransf Linear $TransfTag ;

set E [expr 1000*21000*$MPa]
set Ic [expr 1000000*$m4]
set Ac [expr 10*$m2]

element elasticBeamColumn 1 1 3 $Ac $E $Ic $TransfTag;
element elasticBeamColumn 2 2 4 $Ac $E $Ic $TransfTag;
element elasticBeamColumn 3 3 5 $Ac $E $Ic $TransfTag;
element elasticBeamColumn 4 5 4 $Ac $E $Ic $TransfTag;

uniaxialMaterial Elastic 1 [expr 2*$Kh]
uniaxialMaterial Elastic 2 [expr 2*$Kv]
element zeroLength 5 6 1 -mat 1 2 -dir 1 2
element zeroLength 6 7 2 -mat 1 2 -dir 1 2



for { set k 1 } { $k <= $numModes } { incr k } {
recorder Node -file [format "modes/mode%i.out" $k] -node 1 2 3 4 5 -dof 1 2 3 "eigen $k"
}

# perform eigen analysis
#-----------------------------
set lambda [eigen $numModes];

# calculate frequencies and periods of the structure
#---------------------------------------------------
set omega {}
set f {}
set T {}
set pi 3.141593

foreach lam $lambda {
lappend omega [expr sqrt($lam)]
lappend f [expr sqrt($lam)/(2*$pi)]
lappend T [expr (2*$pi)/sqrt($lam)]
}

puts "periods are $T"

# write the output file cosisting of periods
#--------------------------------------------
set period "Periods.txt"
set Periods [open $period "w"]
foreach t $T {
puts $Periods " $t"
}
close $Periods
record
recorder Node -file deplacement.out -time -node 1 2 5 -dof 1 2 5 disp
recorder Node -file reaction.out -time -node 1 2 -dof 1 2 3 reaction
recorder Element -file element.out -time -ele 5 6 localForce ; # element forces -- column


#
set Wz [expr $M*$g];
pattern Plain 1 "Linear" {
# nd FX
load 5 100 100 0

}
#


# ------------------------------------------------- apply gravity load
set Tol 1.0e-8; # convergence tolerance for test
constraints Plain; # how it handles boundary conditions
numberer RCM; # renumber dof's to minimize band-width (optimization), if you want to
system ProfileSPD; # how to store and solve the system of equations in the analysis
test NormDispIncr $Tol 6 ; # determine if convergence has been achieved at the end of an iteration step
algorithm Newton; # use Newton's solution algorithm: updates tangent stiffness at every iteration
set NstepGravity 10; # apply gravity in 10 steps
set DGravity [expr 1./$NstepGravity]; # first load increment;
integrator LoadControl $DGravity; # determine the next time step for an analysis
analysis Static; # define type of analysis static or transient
analyze $NstepGravity; # apply gravity
# ------------------------------------------------- maintain constant gravity loads and reset time to zero
loadConst -time 0.0
Post Reply