I added an arch to the frame bridge, why was it so wrong
#copyright @ Zhong Jian, Hefei University of technology
proc geometry {SpanLength SpanWidth UnitWeight PierHeight1 PierHeight2 WaveNumber} {
# UnitWeight is the weight per area
# unit: m kN
wipe
model basic -ndm 3 -ndf 6
geomTransf Linear 10086 0 0 1
geomTransf Linear 20086 1 0 0
set g 9.81
set LengthMass [expr $SpanWidth*$UnitWeight/$g];
puts "每段梁的重量为 $LengthMass"
set ElementLength 3
set N_GirderNode [expr int($SpanLength/$ElementLength+1)]
source fiber.tcl
#======================================================================================================================
puts "建立主梁点"
# ----------------------------------------------------------------------------------------------------------------------
for {set i 1} {$i<=$N_GirderNode} {incr i 1} {
set GirderNode($i) [expr $i+1000]
set GirderCoorX($i) [expr $ElementLength*($i-1)]
set GirderCoorY($i) 0
set GirderCoorZ($i) 1
set GirderNodalMass($i) [expr $LengthMass*$ElementLength]
node $GirderNode($i) $GirderCoorX($i) $GirderCoorY($i) $GirderCoorZ($i)
mass $GirderNode($i) $GirderNodalMass($i) $GirderNodalMass($i) $GirderNodalMass($i) 0.0 0.0 0.0
puts "$GirderNode($i) $GirderCoorX($i) $GirderCoorY($i) $GirderCoorZ($i)"
}
set Girder_Section 1; #Tag
set A1 6.4289; #A主梁横截面积
set E1 3.25e7; #弹性模量
set G1 [expr 0.4*$E1]; #剪切模量
set J1 [expr 24.2319]; #转动惯量
set Iz1 [expr 1158.24]; #Iz
set Iy1 [expr 8.3242]; #Iy
for {set i 1} {$i<$N_GirderNode} {incr i 1} {
set GirderElement($i) [expr $i+1000]
element elasticBeamColumn $GirderElement($i) $GirderNode($i) $GirderNode([expr $i+1]) $A1 $E1 $G1 $J1 $Iy1 $Iz1 10086
}
puts "主梁单元----OK"
#*********************************************************************************************************************
#======================================================================================================================
puts "建立桥墩点"
#---------------------------------------------------------------------------------------------------------------------
set Area_Pier [expr 4*3.8];
puts "桥墩面积为 $Area_Pier"
set N_PierNode4 [expr int($PierHeight1/$ElementLength+1)]
for {set i 1} {$i<=$N_PierNode4} {incr i 1} {
set Pier1Node($i) [expr $i+110]
set Pier1CoorX($i) 0
set Pier1CoorY($i) -20.5
set Pier1CoorZ($i) [expr $ElementLength*($i-$N_PierNode4)]
set Pier1NodalMass($i) [expr 2.5*$Area_Pier*$ElementLength];
puts "桥墩1$Pier1Node($i) $Pier1CoorX($i) $Pier1CoorY($i) $Pier1CoorZ($i)"
node $Pier1Node($i) $Pier1CoorX($i) $Pier1CoorY($i) $Pier1CoorZ($i)
mass $Pier1Node($i) $Pier1NodalMass($i) $Pier1NodalMass($i) $Pier1NodalMass($i) 0.0 0.0 0.0
puts "质量 $Pier1NodalMass($i)"
}
for {set i 1} {$i<=$N_PierNode4} {incr i 1} {
set Pier2Node($i) [expr $i+220]
set Pier2CoorX($i) 0
set Pier2CoorY($i) 20.5
set Pier2CoorZ($i) [expr $ElementLength*($i-$N_PierNode4)]
set Pier2NodalMass($i) [expr 2.5*$Area_Pier*$ElementLength];
puts "桥墩2$Pier1Node($i) $Pier2CoorX($i) $Pier2CoorY($i) $Pier2CoorZ($i)"
node $Pier2Node($i) $Pier2CoorX($i) $Pier2CoorY($i) $Pier2CoorZ($i)
mass $Pier2Node($i) $Pier2NodalMass($i) $Pier2NodalMass($i) $Pier2NodalMass($i) 0.0 0.0 0.0
puts "质量 $Pier2NodalMass($i)"
}
set N_PierNode5 [expr int($PierHeight2/$ElementLength+1)]
for {set i 1} {$i<=$N_PierNode5} {incr i 1} {
set Pier3Node($i) [expr $i+330]
set Pier3CoorX($i) $SpanLength
set Pier3CoorY($i) -20.5
set Pier3CoorZ($i) [expr $ElementLength*($i-$N_PierNode5)]
set Pier3NodalMass($i) [expr 2.5*$Area_Pier*$ElementLength];
puts "桥墩3$Pier1Node($i) $Pier3CoorX($i) $Pier3CoorY($i) $Pier3CoorZ($i)"
node $Pier3Node($i) $Pier3CoorX($i) $Pier3CoorY($i) $Pier3CoorZ($i)
mass $Pier3Node($i) $Pier3NodalMass($i) $Pier3NodalMass($i) $Pier3NodalMass($i) 0.0 0.0 0.0
puts "质量 $Pier3NodalMass($i)"
}
for {set i 1} {$i<=$N_PierNode5} {incr i 1} {
set Pier4Node($i) [expr $i+440]
set Pier4CoorX($i) $SpanLength
set Pier4CoorY($i) 20.5
set Pier4CoorZ($i) [expr $ElementLength*($i-$N_PierNode5)]
set Pier4NodalMass($i) [expr 2.5*$Area_Pier*$ElementLength];
puts "桥墩4$Pier4Node($i) $Pier4CoorX($i) $Pier4CoorY($i) $Pier4CoorZ($i)"
node $Pier4Node($i) $Pier4CoorX($i) $Pier4CoorY($i) $Pier4CoorZ($i)
mass $Pier4Node($i) $Pier4NodalMass($i) $Pier4NodalMass($i) $Pier4NodalMass($i) 0.0 0.0 0.0
puts "质量 $Pier4NodalMass($i)"
}
node 10001 0 0 0
node 10002 0 -20.5 0
node 10003 0 20.5 0
node 10004 $SpanLength 0 0
node 10005 $SpanLength -20.5 0
node 10006 $SpanLength 20.5 0
equalDOF 10001 $GirderNode(1) 1 2 3 4 5 6
equalDOF 10001 10002 1 2 3 4 5 6
equalDOF 10001 10003 1 2 3 4 5 6
equalDOF 10004 $GirderNode($N_GirderNode) 1 2 3 4 5 6
equalDOF 10004 10005 1 2 3 4 5 6
equalDOF 10004 10006 1 2 3 4 5 6
puts "墩顶固结----OK"
# --------------------------------------------------------------------------
fix $Pier1Node(1) 1 1 1 1 1 1
fix $Pier2Node(1) 1 1 1 1 1 1
fix $Pier3Node(1) 1 1 1 1 1 1
fix $Pier4Node(1) 1 1 1 1 1 1
#*********************************************************************************************************************************
puts "桥墩点----OK"
set SecTag1 1
set Row 0.012; #纵向配筋率
set a 0.05; #保护层厚度
set Cover $C40_Cover(1); #保护层混凝土
set Core $C40_Core(1); #核心混凝土
set Bar $HRB400(1); #纵向钢筋
set D 1.8
Rect $SecTag1 $D $D $a $Row $Cover $Core $Bar
set GJ 1.0e10;
uniaxialMaterial Elastic 101 $GJ; # Define torsional stiffness
set SecTag2 2
set AggSecTag 3
section Aggregator $AggSecTag 101 T -section $SecTag1;
#************************************************************
#============================================================
#------------------------------------------------------------
for {set i 1} {$i<$N_PierNode4} {incr i 1} {
set Pier1Element($i) [expr 110+$i]
element nonlinearBeamColumn $Pier1Element($i) $Pier1Node($i) $Pier1Node([expr $i+1]) 4 $AggSecTag 20086
set Pier2Element($i) [expr 220+$i]
element nonlinearBeamColumn $Pier2Element($i) $Pier2Node($i) $Pier2Node([expr $i+1]) 4 $AggSecTag 20086
}
for {set i 1} {$i<$N_PierNode5} {incr i 1} {
set Pier3Element($i) [expr 330+$i]
element nonlinearBeamColumn $Pier3Element($i) $Pier3Node($i) $Pier3Node([expr $i+1]) 4 $AggSecTag 20086
set Pier4Element($i) [expr 440+$i]
element nonlinearBeamColumn $Pier4Element($i) $Pier4Node($i) $Pier4Node([expr $i+1]) 4 $AggSecTag 20086
}
puts "支座"
uniaxialMaterial Steel01 501 535 9720 0.1
uniaxialMaterial Elastic 502 1.0e10
element zeroLength 5000 $Pier1Node($N_PierNode4) 10002 -mat 501 501 502 502 -dir 1 2 3 4
element zeroLength 5001 $Pier2Node($N_PierNode4) 10003 -mat 501 501 502 502 -dir 1 2 3 4
element zeroLength 5002 $Pier3Node($N_PierNode5) 10005 -mat 501 501 502 502 -dir 1 2 3 4
element zeroLength 5003 $Pier4Node($N_PierNode5) 10006 -mat 501 501 502 502 -dir 1 2 3 4
puts "支座----OK"
puts "建立拱肋,风撑"
node 1 1.360E+002 -8.500E+000 5.100E+001
node 2 1.360E+002 8.500E+000 5.100E+001
node 3 6.800E+001 -8.500E+000 5.100E+001
node 4 6.800E+001 8.500E+000 5.100E+001
node 5 0.000E+000 2.050E+001 0.000E+000
node 6 4.000E+000 1.980E+001 3.000E+000
node 7 2.040E+002 -2.050E+001 0.000E+000
node 8 2.000E+002 -1.980E+001 3.000E+000
node 9 0.000E+000 -2.050E+001 0.000E+000
node 10 4.000E+000 -1.980E+001 3.000E+000
node 11 2.040E+002 2.050E+001 0.000E+000
node 12 2.000E+002 1.980E+001 3.000E+000
puts "node--ok"
mass 1 3.526E+002 3.526E+002 0.000E+000 0.000E+000 0.000E+000 0.000E+000
mass 2 3.526E+002 3.526E+002 0.000E+000 0.000E+000 0.000E+000 0.000E+000
mass 3 3.526E+002 3.526E+002 0.000E+000 0.000E+000 0.000E+000 0.000E+000
mass 4 3.526E+002 3.526E+002 0.000E+000 0.000E+000 0.000E+000 0.000E+000
mass 5 1.136E+001 1.136E+001 0.000E+000 0.000E+000 0.000E+000 0.000E+000
mass 6 1.931E+002 1.931E+002 0.000E+000 0.000E+000 0.000E+000 0.000E+000
mass 7 1.136E+001 1.136E+001 0.000E+000 0.000E+000 0.000E+000 0.000E+000
mass 8 1.931E+002 1.931E+002 0.000E+000 0.000E+000 0.000E+000 0.000E+000
mass 9 1.136E+001 1.136E+001 0.000E+000 0.000E+000 0.000E+000 0.000E+000
mass 10 1.931E+002 1.931E+002 0.000E+000 0.000E+000 0.000E+000 0.000E+000
mass 11 1.136E+001 1.136E+001 0.000E+000 0.000E+000 0.000E+000 0.000E+000
mass 12 1.931E+002 1.931E+002 0.000E+000 0.000E+000 0.000E+000 0.000E+000
puts "mass--ok"
geomTransf Linear 1 0.000 0.000 1.000
geomTransf Linear 2 0.000 0.000 1.000
geomTransf Linear 3 -0.585 0.103 0.804
geomTransf Linear 4 0.000 0.000 1.000
geomTransf Linear 5 0.000 0.000 1.000
geomTransf Linear 6 0.585 -0.103 0.804
geomTransf Linear 7 -0.585 -0.103 0.804
geomTransf Linear 8 0.585 0.103 0.804
geomTransf Linear 9 -0.585 0.102 0.804
geomTransf Linear 10 0.585 -0.102 0.804
geomTransf Linear 11 -0.585 -0.102 0.804
geomTransf Linear 12 0.585 0.102 0.804
puts "transformation--ok"
element elasticBeamColumn 1 1 2 0.000E+000 1.999E+008 7.690E+007 0.000E+000 0.000E+000 0.000E+000 1
element elasticBeamColumn 2 3 4 0.000E+000 1.999E+008 7.690E+007 0.000E+000 0.000E+000 0.000E+000 2
element elasticBeamColumn 3 6 4 0.000E+000 1.999E+008 7.690E+007 0.000E+000 0.000E+000 0.000E+000 3
element elasticBeamColumn 4 4 2 0.000E+000 1.999E+008 7.690E+007 0.000E+000 0.000E+000 0.000E+000 4
element elasticBeamColumn 5 3 1 0.000E+000 1.999E+008 7.690E+007 0.000E+000 0.000E+000 0.000E+000 5
element elasticBeamColumn 6 8 1 0.000E+000 1.999E+008 7.690E+007 0.000E+000 0.000E+000 0.000E+000 6
element elasticBeamColumn 7 10 3 0.000E+000 1.999E+008 7.690E+007 0.000E+000 0.000E+000 0.000E+000 7
element elasticBeamColumn 8 12 2 0.000E+000 1.999E+008 7.690E+007 0.000E+000 0.000E+000 0.000E+000 8
element elasticBeamColumn 9 5 6 0.000E+000 1.999E+008 7.690E+007 0.000E+000 0.000E+000 0.000E+000 9
element elasticBeamColumn 10 7 8 0.000E+000 1.999E+008 7.690E+007 0.000E+000 0.000E+000 0.000E+000 10
element elasticBeamColumn 11 9 10 0.000E+000 1.999E+008 7.690E+007 0.000E+000 0.000E+000 0.000E+000 11
element elasticBeamColumn 12 11 12 0.000E+000 1.999E+008 7.690E+007 0.000E+000 0.000E+000 0.000E+000 12
puts "element--ok"
puts "拱肋,风撑和吊杆----OK"
#拱梁结合处建立耦合
equalDOF 9 10002 1 2 3 4 5 6
equalDOF 5 10003 1 2 3 4 5 6
equalDOF 7 10005 1 2 3 4 5 6
equalDOF 11 10006 1 2 3 4 5 6
puts "施加重力"
pattern Plain 1 Linear {
for {set i 1} {$i<=$N_GirderNode} {incr i 1} {
load $GirderNode($i) 0.0 0.0 [expr -$GirderNodalMass($i)*$g] 0.0 0.0 0.0
#puts "主梁$GirderNodalMass($i)"
}
for {set i 1} {$i<=$N_PierNode4} {incr i 1} {
load $Pier1Node($i) 0.0 0.0 [expr -$Pier1NodalMass($i)*$g] 0.0 0.0 0.0
#puts "一号$Pier1NodalMass($i)"
}
for {set i 1} {$i<=$N_PierNode4} {incr i 1} {
load $Pier2Node($i) 0.0 0.0 [expr -$Pier2NodalMass($i)*$g] 0.0 0.0 0.0
#puts "二号$Pier2NodalMass($i)"
}
for {set i 1} {$i<=$N_PierNode5} {incr i 1} {
load $Pier3Node($i) 0.0 0.0 [expr -$Pier3NodalMass($i)*$g] 0.0 0.0 0.0
#puts "三号$Pier3NodalMass($i)"
}
for {set i 1} {$i<=$N_PierNode5} {incr i 1} {
load $Pier4Node($i) 0.0 0.0 [expr -$Pier4NodalMass($i)*$g] 0.0 0.0 0.0
#puts "四号$Pier4NodalMass($i)"
}
for {set i 1} {$i<=12} {incr i 1} {
load $i 0.0 0.0 -1000 0.0 0.0 0.0
}
}
puts "重力----OK"
puts "主梁总重 $N_GirderNode * $GirderNodalMass(1)= [expr $N_GirderNode * $GirderNodalMass(1)]"
puts "桥墩总重 4 * $N_PierNode4 * $Pier1NodalMass(1)= [expr 4 * 3 * $Pier1NodalMass(1)]"
puts "总重[expr $N_GirderNode * $GirderNodalMass(1) + 4 * 3 * $Pier1NodalMass(1)]"
file mkdir recorder/Momentgravity
file mkdir recorder/Curvaturegravity
recorder Element -file recorder/Curvaturegravity/$WaveNumber.out -time -ele $Pier1Element(1) section 1 deformation
recorder Element -file recorder/Momentgravity/Zonzhong.out -time -ele $Pier1Element(1) section 1 force
recorder Node -file node.out -time -node $Pier1Node(1) -dof 3 reaction
source gravity.tcl
#remove recorders
#source period.tcl #计算周期
#file mkdir recorder
#file mkdir recorder/Moment
#file mkdir recorder/Curvature
#recorder Element -file recorder/Curvature/$WaveNumber.out -time -ele $Pier1Element(1) section 1 deformation
#recorder Element -file recorder/Moment/$WaveNumber.out -time -ele $Pier1Element(1) section 1 force
#source PSDM.tcl #计算地震响应
#PSDM $WaveNumber
}
puts "done"
set SpanLength 204.5
set SpanWidth 40.5
set UnitWeight 19.13
set PierHeight1 11.0
set PierHeight2 16.5
geometry $SpanLength $SpanWidth $UnitWeight $PierHeight1 $PierHeight1 1
WARNING RandGenLinLapackSolver::solue() -LAPACK routine returned 487
Moderators: silvia, selimgunay, Moderators
-
- Posts: 2
- Joined: Mon May 24, 2021 4:53 pm
Re: WARNING RandGenLinLapackSolver::solue() -LAPACK routine returned 487
error codes returned from lapack at start of analysis indicate the model is incorrect .. try a ProfileSPD solver and a PlainNumberer to see what dof has a problem, example:
when run will show:
which as you see shows a problem with a 0 being on diagonal of dof=2, which fom the printed node id is node 2's vertical dof. This from your knowledge of structural analysis and gaussian elimination should be expected.
Code: Select all
model basic -ndm 2
node 1 0 0
node 2 0 10
geomTransf Linear 1
element elasticBeamColumn 1 1 2 10 100 1000 1
fix 1 1 0 1
timeSeries Linear 1
pattern Plain 1 1 {
load 2 10.0 0 0
}
constraints Plain
numberer Plain
algorithm Linear
system ProfileSPD
integrator LoadControl 1.0
analysis Static
analyze 10
print node
Code: Select all
ProfileSPDLinDirectSolver::solve() - aii < 0 (i, aii): (2, 0)
WARNING Linear::solveCurrentStep() -the LinearSOE failed in solve()
StaticAnalysis::analyze() - the Algorithm failed at step: 0 with domain at load factor 1
OpenSees > analyze failed, returned: -3 error flag
Node: 1
Coordinates : 0 0
Disps: 0 0 0
unbalanced Load: 0 0 0
ID : -1 0 -1
Node: 2
Coordinates : 0 10
Disps: 0 0 0
unbalanced Load: 0 0 0
ID : 1 2 3