Hello,
I am trying to simulate a column loaded axially with a constant axial force, and with 2 lateral loads (in the X and Z directions) and with an imposed top rotation along the Z-direction.
The load controlled axial load is fine, however, I have some problems when trying to add the 3 different displacement in displacement control (I need displacement control because the response exhibits softening). I have tried creating 3 different load patterns for each imposed displacement, as shown here:
while {$okTot == 0 && $i < $LoopLength} {
set index [expr $i]
#Lateral load X
pattern Plain [expr $LoopLength+$i] Linear {
load 2 1.0 0.0 0.0 0.0 0.0 0.0;
}
# We need to relative deformation of the loading protocol
# Subtract dUi+1 - dUi
set D1X [lindex $lateralDispX $index];
set D2X [lindex $lateralDispX $index-1];
#set dU1 [expr ($D1-$D2)*$L];
set dU1X [expr ($D1X-$D2X)];
# Create Nsteps from Amplitude to Amplitude
set dUX [expr ($dU1X)/$NSteps]
# Displacement Control Integrator
integrator DisplacementControl $CtrlNode $CtrlDOFLatX $dUX
puts "increment = [expr {$i}] / [expr {$LoopLength}] - Lateral X load";
set ok1 [ analyze $NSteps]
loadConst -time 0.0
# Lateral load Z
if {$ok1==0} {
pattern Plain [expr 2*$LoopLength+$i] Linear {
load 2 0.0 0.0 1.0 0.0 0.0 0.0;
}
# We need to relative deformation of the loading protocol
# Subtract dUi+1 - dUi
set D1Z [lindex $lateralDispZ $index];
set D2Z [lindex $lateralDispZ $index-1];
#set dU1 [expr ($D1-$D2)*$L];
set dU1Z [expr ($D1Z-$D2Z)];
# Create Nsteps from Amplitude to Amplitude
set dUZ [expr ($dU1Z)/$NSteps]
# Displacement Control Integrator
integrator DisplacementControl $CtrlNode $CtrlDOFLatZ $dUZ
puts "increment = [expr {$i}] / [expr {$LoopLength}] - Lateral Z load";
set ok2 [ analyze $NSteps]
loadConst -time 0.0
} else {
set ok2 1;
}
# Lateral rotation
if {$ok1==0 && $ok2==0} {
pattern Plain [expr 3*$LoopLength+$i] Linear {
load 2 0.0 0.0 0.0 0.0 0.0 1.0;
}
# We need to relative deformation of the loading protocol
# Subtract dUi+1 - dUi
set theta1Z [lindex $topRotation $index];
set theta2Z [lindex $topRotation $index-1];
#set dU1 [expr ($D1-$D2)*$L];
set dtheta1Z [expr ($theta1Z-$theta2Z)];
# Create Nsteps from Amplitude to Amplitude
set dthetaZ [expr ($dtheta1Z)/$NSteps]
# Displacement Control Integrator
integrator DisplacementControl $CtrlNode $CtrlDOFRotZ $dthetaZ
puts "increment = [expr {$i}] / [expr {$LoopLength}] - Rot Z load";
set ok3 [ analyze $NSteps]
loadConst -time 0.0
} else {
set ok3 1;
}
set okTot [expr $ok1 + $ok2 +$ok3]
set i [expr $i + 1 ]
}
However, the problem is that at each index i, the lateral displacement and the rotation in the z direction do not correspond to the one I want to impose. Because a displacement in the z direction creates a rotation in the z direction and vice-versa.
Can anyone help me with this? I appreciate it
How to: Static analysis with displacement in multiple DOFs
Moderators: silvia, selimgunay, Moderators