zeroLengthContact Element

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

Moderators: silvia, selimgunay, Moderators

civilso
Posts: 35
Joined: Mon Oct 25, 2010 1:37 pm
Location: mohaghegh ardabili university

zeroLengthContact Element

Post by civilso »

how can i use zeroLengthContact Element?i need some information and examples about it.
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Re: zeroLengthContact Element

Post by vesna »

here is explanation of the element:
http://opensees.berkeley.edu/wiki/index ... ct_Element

The developer of the element did not follow up with the examples so at the moment we do not have any. If you want to use it you have to be aware that the contact and slave nodes for this emenet in 2D have 2 DOFs and in 3D have 3DOFs. So, if you want to combine this nodes with beam-column elements you will have to define model builder command for beam-column elements and then another one for contact elements. At the end you should tie them together using equalDOF command.
civilso
Posts: 35
Joined: Mon Oct 25, 2010 1:37 pm
Location: mohaghegh ardabili university

Re: zeroLengthContact Element

Post by civilso »

sorry i didn't understand.can you explain these sentences with examples.(just the part of zerolengthcontact element)
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Re: zeroLengthContact Element

Post by vesna »

Here is an example:

wipe;
file mkdir Data;

model basic -ndm 3 -ndf 6;
#nodes
node 1 0 0 0;
node 2 0 0 10;
node 3 0 0 10;
# Single point constraints -- Boundary Conditions
fix 1 1 1 1 1 1 1;
fix 3 1 1 1 1 1 1;
#mass
mass 2 100 100 100 10e-10 10e-10 10e-10;

# Define ELEMENTS -----------------------------------------------------------
geomTransf Linear 1 0 -1 0;
element elasticBeamColumn 1 1 2 0.01 3.29e10 1.0e20 2.0e-5 1.0e-5 1.0e-5 1;

#contact element
model basic -ndm 3 -ndf 3;
node 12 0 0 10;
node 13 0 0 10;

equalDOF 3 13 1 2 3;
equalDOF 2 12 1 2 3;

element zeroLengthContact3D 3 12 13 1.0e+5 0.5e+5 0.5 0 3;

# Define RECORDERS ---------------------------------------------------------
recorder Node -file data/nodevel.out -time -node 2 -dof 1 vel;
recorder Node -file data/nodeDisp.out -time -node 2 -dof 1 disp;
recorder Node -file data/nodeaccel.out -time -node 2 -dof 1 accel;

# define load and analysis -----------------------------------------------------------
set dt 0.02;
set Scale 1.0;
set accelSeries "Path -filePath elcentro.txt -dt $dt -factor [expr 1*$Scale]";
pattern UniformExcitation 1 1 -accel $accelSeries;

constraints Penalty 10e15 10e15;
numberer RCM;
system BandGeneral;
test NormDispIncr 1.0e-6 100
algorithm Newton
integrator Newmark 0.5 0.25;
analysis Transient;

set tFinal [expr 2000 * 0.02];
set tCurrent [getTime];
set ok 0;
while {$ok == 0 && $tCurrent < $tFinal} {
set ok [analyze 1 0.002]
if {$ok != 0} {
puts "regular newton failed .. lets try an initail stiffness for this step"
test NormDispIncr 1.0e-6 100
algorithm ModifiedNewton -initial
set ok [analyze 1 0.002]
if {$ok == 0} {puts "that worked .. back to regular newton"}
test NormDispIncr 1.0e-6 100
algorithm Newton
}
set tCurrent [getTime]
}
# Print a message to indicate if analysis succesfull or not
if {$ok == 0} {
puts "Transient analysis completed SUCCESSFULLY";
} else {
puts "Transient analysis completed FAILED";
};
puts "Done!"
civilso
Posts: 35
Joined: Mon Oct 25, 2010 1:37 pm
Location: mohaghegh ardabili university

Re: zeroLengthContact Element

Post by civilso »

excuse me .i tried your example in my model.but unfortunately it doesn't work.
would you please check my model?

wipe
file mkdir sample1
model basic -ndm 2 -ndf 3;


# Define node
#frame
# x y
node 1 0.0 0.0
node 2 251.0 100.0
node 3 251.0 -100.0
node 21 251.0 100.0
node 31 251.0 -100.0
node 6 251.0 0.0
node 61 251.0 0.0
node 62 231.0 0.0
node 63 230.0 0.0
node 4 -251.0 100.0
node 5 -251.0 -100.0
node 41 -251.0 100.0
node 51 -251.0 -100.0
node 7 -251.0 0.0
node 71 -251.0 0.0
node 72 -231.0 0.0
node 73 -230.0 0.0

# Boundary Condition
fix 2 1 1 1;
fix 21 1 1 1;
fix 3 1 1 1;
fix 31 1 1 1;
fix 4 1 1 1;
fix 41 1 1 1;
fix 5 1 1 1;
fix 51 1 1 1;

# Define Geomtransf element
geomTransf Corotational 1

#define material
uniaxialMaterial Steel02 1 2100 2e6 0.02
uniaxialMaterial ENT 2 2.000000E+006

#define section

proc Wsection { secID matID d bf tf tw nfdw nftw nfbf nftf} {
# ###################################################################
# Wsection $secID $matID $d $bf $tf $tw $nfdw $nftw $nfbf $nftf
# ###################################################################
# create a standard W section given the nominal section properties
# written: Remo M. de Souza
# date: 06/99
# modified: 08/99 (according to the new general modelbuilder)
# input parameters
# secID - section ID number
# matID - material ID number
# d = nominal depth
# tw = web thickness
# bf = flange width
# tf = flange thickness
# nfdw = number of fibers along web depth
# nftw = number of fibers along web thickness
# nfbf = number of fibers along flange width
# nftf = number of fibers along flange thickness

set dw [expr $d - 2 * $tf]
set y1 [expr -$d/2]
set y2 [expr -$dw/2]
set y3 [expr $dw/2]
set y4 [expr $d/2]

set z1 [expr -$bf/2]
set z2 [expr -$tw/2]
set z3 [expr $tw/2]
set z4 [expr $bf/2]

section fiberSec $secID {
# nfIJ nfJK yI zI yJ zJ yK zK yL zL
patch quadr $matID $nfbf $nftf $y1 $z4 $y1 $z1 $y2 $z1 $y2 $z4
patch quadr $matID $nftw $nfdw $y2 $z3 $y2 $z2 $y3 $z2 $y3 $z3
patch quadr $matID $nfbf $nftf $y3 $z4 $y3 $z1 $y4 $z1 $y4 $z4
}
}

# knee sections: W60*60*5*5
set secID 1;
set matID 1;
set d 6; # depth
set bf 6; # flange width
set tf 0.5; # flange thickness
set tw 0.5; # web thickness
set nfdw 16; # number of fibers along dw
set nftw 2; # number of fibers along tw
set nfbf 16; # number of fibers along bf
set nftf 4; # number of fibers along tf
Wsection $secID $matID $d $bf $tf $tw $nfdw $nftw $nfbf $nftf
# brace sections: W100*100*10*10
set secID 2;
set matID 1;
set d 10; # depth
set bf 10; # flange width
set tf 1; # flange thickness
set tw 1; # web thickness
set nfdw 16; # number of fibers along dw
set nftw 2; # number of fibers along tw
set nfbf 16; # number of fibers along bf
set nftf 4; # number of fibers along tf
Wsection $secID $matID $d $bf $tf $tw $nfdw $nftw $nfbf $nftf

# Gusset Plate Section (0.5cm thick, 15cm wide)
section Fiber 3 {
patch quad 1 4 4 -7.5 -0.25 7.5 -0.25 7.5 0.25 -7.5 0.25
}


##########################define element##########################################

#element nonlinearBeamColumn $eleTag $iNode $jNode $numIntgrPts $secTag $transfTag
element nonlinearBeamColumn 1 1 63 10 2 1
element nonlinearBeamColumn 2 63 62 10 3 1
#Rigid offset
element elasticBeamColumn 3 62 61 28 2E11 449.3 1
#
element nonlinearBeamColumn 4 21 61 10 1 1
element nonlinearBeamColumn 5 31 61 10 1 1

#
element nonlinearBeamColumn 7 2 6 10 1 1
element nonlinearBeamColumn 8 3 6 10 1 1

element nonlinearBeamColumn 9 1 73 10 2 1
element nonlinearBeamColumn 10 73 72 10 3 1
#Rigid offset
element elasticBeamColumn 11 71 72 28 2E11 449.3 1
#
element nonlinearBeamColumn 12 41 71 10 1 1
element nonlinearBeamColumn 13 31 71 10 1 1
#
element nonlinearBeamColumn 15 4 7 10 1 1
element nonlinearBeamColumn 16 5 7 10 1 1

#contac element
model basic -ndm 2 -ndf 1;

node 612 251.0 0.0
node 622 251.0 0.0
node 712 -251.0 0.0
node 722 -251.0 0.0

equalDOF 61 612 1 2 ;
equalDOF 6 622 1 2 ;
equalDOF 71 712 1 2 ;
equalDOF 7 722 1 2 ;

#element zeroLengthContact2D $eleTag $sNode $mNode $Kn $Kt $mu -normal $Nx $Ny
element zeroLengthContact2D 6 612 622 1e5 1e5 0.5 -normal 1 0
element zeroLengthContact2D 14 712 722 1e5 1e5 0.5 -normal 1 0





#########################################################################
#-# Create Recorders #-#

# Reaction of supports
recorder Node -file sample1/Displacement1.out -node 1 -dof 1 disp
recorder Node -file sample1/Displacement6.out -node 6 -dof 1 disp
recorder Node -file sample1/Displacement7.out -node 7 -dof 1 disp
recorder Node -file sample1/Displacement61.out -node 61 -dof 1 disp
recorder Node -file sample1/Displacement71.out -node 71 -dof 1 disp
#########################################################################
####################### STATIC ANALYSIS #################################

## Define LATERAL load ---------------------------------------------------

pattern Plain 2 Linear {
load 1 1.0 0.0 0.0 0;
}

# Set up analysis parameters
constraints Transformation ;
numberer RCM ;
system BandGeneral ;
test EnergyIncr 1e-6 1000 0 ;
algorithm Newton ;
integrator DisplacementControl 1 1 0.0 ;
analysis Static ;

set controlnode 1
set loaddirection 1
set currentDisp 0.0


foreach Dincr {
0.04 -0.08 0.04} {
integrator DisplacementControl $controlnode $loaddirection $Dincr
analysis Static
set nSteps 200
if { $Dincr > 0 } {
set Dmax [expr $Dincr*$nSteps]
set ok 0
while {$ok == 0 && $currentDisp < $Dmax} {
set ok [analyze 1]
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test NormDispIncr 1.0e-6 2000 0
algorithm Newton -initial
set ok [analyze 1]
test NormDispIncr 1.0e-6 6 2
algorithm Newton
}
if {$ok != 0} {
puts "Trying Broyden .."
algorithm Broyden 8
set ok [analyze 1 ]
algorithm Newton
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch 0.8
set ok [analyze 1]
algorithm Newton
}
set currentDisp [nodeDisp $controlnode $loaddirection]
}
} elseif { $Dincr < 0 } {
set Dmax [expr $Dincr*$nSteps/2]
set ok 0
while {$ok == 0 && $currentDisp > $Dmax} {
set ok [analyze 1]
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test NormDispIncr 1.0e-6 2000 0
algorithm Newton -initial
set ok [analyze 1]
test NormDispIncr 1.0e-6 6 2
algorithm Newton
}
if {$ok != 0} {
puts "Trying Broyden .."
algorithm Broyden 8
set ok [analyze 1 ]
algorithm Newton
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch 0.8
set ok [analyze 1]
algorithm Newton
}
set currentDisp [nodeDisp $controlnode $loaddirection]
}
}

puts "$Dincr Is Done"
}

puts "******************************************************"
puts "Cyclic Analysis For Braced Frame Is Successfully Done!"
puts "******************************************************"
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Re: zeroLengthContact Element

Post by vesna »

To be able to run my file you just have to add a ground motion to the folder where you saved the file I sent you and to specify the name of that ground motion when you define time history.

Is your file working?
civilso
Posts: 35
Joined: Mon Oct 25, 2010 1:37 pm
Location: mohaghegh ardabili university

Re: zeroLengthContact Element

Post by civilso »

excuse me .it is not my problem.i used static analysis in my model and i didn't use ground motion.when i want to run the model it is jumped.this is my problem.would you please take look in my model?
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Re: zeroLengthContact Element

Post by vesna »

If you follow the example I posted you should be able to make your own model no matter what the load is. Your model is to big to look for errors. You should do it yourself.
civilso
Posts: 35
Joined: Mon Oct 25, 2010 1:37 pm
Location: mohaghegh ardabili university

Re: zeroLengthContact Element

Post by civilso »

so sorry.your example is 3d model.can you make an example for 2d model?
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Re: zeroLengthContact Element

Post by vesna »

Here is a 2D example:

wipe;
file mkdir Data;

model basic -ndm 2 -ndf 3;
#nodes
node 1 0 0;
node 2 0 10;
node 3 0 10;
# Single point constraints -- Boundary Conditions
fix 1 1 1 1 ;
fix 3 1 1 1 ;
#mass
mass 2 100 100 10e-10;

# Define ELEMENTS -----------------------------------------------------------
geomTransf Linear 1;
element elasticBeamColumn 1 1 2 0.01 3.29e10 1.0e-5 1;

#contact element
model basic -ndm 2 -ndf 2;
node 12 0 10;
node 13 0 10;

equalDOF 3 13 1 2;
equalDOF 2 12 1 2;

element zeroLengthContact2D 3 12 13 1.0e+5 0.5e+5 0.5 -normal 0 1;

# Define RECORDERS ---------------------------------------------------------
recorder Node -file data/nodevel.out -time -node 2 -dof 1 vel;
recorder Node -file data/nodeDisp.out -time -node 2 -dof 1 disp;
recorder Node -file data/nodeaccel.out -time -node 2 -dof 1 accel;

# define load and analysis -----------------------------------------------------------
set dt 0.02;
set Scale 1.0;
set accelSeries "Path -filePath A10000.acc -dt $dt -factor [expr 1*$Scale]";
pattern UniformExcitation 1 1 -accel $accelSeries;

constraints Penalty 10e15 10e15;
numberer RCM;
system BandGeneral;
test NormDispIncr 1.0e-6 100
algorithm Newton
integrator Newmark 0.5 0.25;
analysis Transient;

set tFinal [expr 2000 * 0.02];
set tCurrent [getTime];
set ok 0;
while {$ok == 0 && $tCurrent < $tFinal} {
set ok [analyze 1 0.002]
if {$ok != 0} {
puts "regular newton failed .. lets try an initail stiffness for this step"
test NormDispIncr 1.0e-6 100
algorithm ModifiedNewton -initial
set ok [analyze 1 0.002]
if {$ok == 0} {puts "that worked .. back to regular newton"}
test NormDispIncr 1.0e-6 100
algorithm Newton
}
set tCurrent [getTime]
}
# Print a message to indicate if analysis succesfull or not
if {$ok == 0} {
puts "Transient analysis completed SUCCESSFULLY";
} else {
puts "Transient analysis completed FAILED";
};
puts "Done!"
civilso
Posts: 35
Joined: Mon Oct 25, 2010 1:37 pm
Location: mohaghegh ardabili university

Re: zeroLengthContact Element

Post by civilso »

What does this error mean?
Node: :add unable load – load to add of incorrect size 2 should be 3
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Re: zeroLengthContact Element

Post by vesna »

When defining the load you have specified 2 values instead of 3.
civilso
Posts: 35
Joined: Mon Oct 25, 2010 1:37 pm
Location: mohaghegh ardabili university

Re: zeroLengthContact Element

Post by civilso »

excuse me. i didn't know how can i solve this error
model basic -ndm 2 -ndf 3 for all nodes
model basic -ndm 2 -ndf 2 for zero contact nodes
this is " define lateral load" part

## Define LATERAL load
pattern Plain 2 Linear {
load 4 1.0 0.0 0.0 ;
}

# Set up analysis parameters
constraints Transformation ;
numberer RCM ;
system BandGeneral ;
test EnergyIncr 1e-6 1000 0 ;
algorithm Newton ;
integrator DisplacementControl 4 1 0.0 ;
analysis Static ;

set controlnode 4
set loaddirection 1
set currentDisp 0.0

foreach Dincr {
0.1 -0.2 0.1} {
integrator DisplacementControl $controlnode $loaddirection $Dincr
analysis Static
set nSteps 200
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Re: zeroLengthContact Element

Post by vesna »

Does node 4 have 2 or 3 dofs?
civilso
Posts: 35
Joined: Mon Oct 25, 2010 1:37 pm
Location: mohaghegh ardabili university

Re: zeroLengthContact Element

Post by civilso »

3
Post Reply