钢筋混凝土非线性分析第一次大作业.docx
《钢筋混凝土非线性分析第一次大作业.docx》由会员分享,可在线阅读,更多相关《钢筋混凝土非线性分析第一次大作业.docx(12页珍藏版)》请在冰豆网上搜索。
钢筋混凝土非线性分析第一次大作业
HarbinInstituteofTechnology
钢筋混凝土结构非线性分析课程作业
院系:
姓名:
学号:
时间:
©哈尔滨工业大学
基于Opensees钢混柱结构滞回曲线比较分析
一、试验资料
本实验结构如下图所示,柱净高
,截面尺寸为
,采用
混凝土材料,受力纵筋采用
,箍筋采用
。
柱子采用
根直径为
的
级钢筋,柱身箍筋采用直径
的
级钢筋,箍筋间距为
。
混凝土保护层厚度为
。
竖向施加
荷载,轴压比为
。
混凝土强度:
钢筋力学性能:
试验测得的滞回曲线:
二、Opensees建模过程
1、主程序
wipe;
sourceUnits.tcl;
sourceGeometricParameters.tcl;
sourceMaterial.tcl;
sourceFiberSection.tcl;
sourceElements.tcl;
sourceRecorderRC.tcl;
sourcePointGravityLoad.tcl;
sourceEx4.Portal2D.analyze.Static.Cycle.tcl;
2、定义量纲
setNT1.0;
setmm1.0;
setsec1.0;
setkN[expr1000.0*$NT];
setMPa[expr1.0*$NT/pow($mm,2)];
setm[expr1000.0*$mm];
setmm2[expr$mm*$mm];
setmm4[expr$mm*$mm*$mm*$mm];
setcm[expr10.0*$mm];
setPI[expr2*asin(1.0)];
setUbig1.e10;
setUsmall[expr1/$Ubig];
puts"||Unitsdefinedcompletely||"
3、定义节点
modelBasicBuilder-ndm2-ndf3;
node100;#node#,X,Y
node20$Lb;
fix1111;
fix2000;#nodeDXDYRZ
puts"||GeometricParametersandNodalcoordinatesdefinedcompletely||"
4、定义几何参数
setB[expr250.*$mm];
setH[expr250.*$mm];
setAb[expr$B*$H];
setIzb[expr1./12.*$B*pow($H,3)];
setLb[expr875.*$mm];
setCover[expr25.*$mm];
setBcore[expr($B-2*$Cover)];
setHcore[expr($H-2*$Cover)];
setAcor[expr$Bcore*$Hcore];
setNmBar_124;
setDlbar_12[expr12*$mm];
setAlbar_12[expr$PI*pow($Dlbar_12,2)/4.0];
setCAlbar_12[expr$NmBar_12*$Albar_12];
setCAlbar[expr$CAlbar_12];
setFy_12[expr380.2*$MPa];
setEs_12[expr200000.*$MPa];
setDhbar[expr6.*$mm];
setAsh[expr$PI*pow($Dhbar,2)/4.0];
setFyh[expr588.3*$MPa];
setEsh[expr210000*$MPa];
setxyt[expr$Fyh/$Esh];
setLDhb[expr2*($Bcore-$Dhbar)+2*($Hcore-$Dhbar)];
setSV[expr50*$mm];
setSVc[expr$SV-$Dhbar];
puts"||Sectiongeometrycompletelydefined||"
5、定义材料本构关系
setIDsteel_121;
setIDcoverC3;
setIDcoreC4;
setfc[expr45.4*$MPa];
setx00.002;
setft[expr$fc/10.];
setEt[expr$ft/0.002];
setfc0-$fc;
setxc0-$x0;
setfcu0[expr0.2*$fc0];
setxcu0-0.006;
setlambda0.10;
uniaxialMaterialConcrete01$IDcoverC$fc0$xc0$fcu0$xcu0;
setps[expr$CAlbar/$Ab];
setpcc[expr$CAlbar/$Acor];
setpst[expr$Ash*$LDhb*1.5/($Acor*$SV)];
setlmda[expr$pst*$Fyh/$fc];
setfcc[expr$fc0*(1+0.5*$lmda)];
setxcc[expr$xc0*(1+2.5*$lmda)];
setfcu[expr0.35*$fcc];
setxcu[expr20*$xcc];
uniaxialMaterialConcrete01$IDcoreC$fcc$xcc$fcu$xcu;
setR018.5;
setcR10.925;
setcR20.15;
sethaRatio0.0037;
uniaxialMaterialSteel02$IDsteel_12$Fy_12$Es_12$haRatio$R0$cR1$cR2;
puts"||Materialparametersdefinedcompletely||"
6、定义纤维截面
setRCSecTag1;
setb120;
setb21;
seth120;
seth21;
seths1[expr$Hcore/2-$Dhbar-$Dlbar_12/2];
setbs1[expr$Bcore/2-$Dhbar-$Dlbar_12/2];
setcoverY[expr$H/2];
setcoverZ[expr$B/2];
setcoreY[expr$Hcore/2];
setcoreZ[expr$Bcore/2];
sectionFiber$RCSecTag{;
patchquad$IDcoreC$b1$h1-$coreY$coreZ-$coreY-$coreZ$coreY-$coreZ$coreY$coreZ;
patchquad$IDcoverC$b1$h2-$coverY$coverZ-$coverY-$coverZ-$coreY-$coverZ-$coreY$coverZ;
patchquad$IDcoverC$b1$h2$coreY$coverZ$coreY-$coverZ$coverY-$coverZ$coverY$coverZ;
patchquad$IDcoverC$b2$h1-$coreY$coverZ-$coreY$coreZ$coreY$coreZ$coreY$coverZ;
patchquad$IDcoverC$b2$h1-$coreY-$coreZ-$coreY-$coverZ$coreY-$coverZ$coreY-$coreZ;
layerstraight$IDsteel_123$Albar_12$hs1$bs1$hs1-$bs1;
layerstraight$IDsteel_123$Albar_12-$hs1$bs1-$hs1-$bs1;
};
puts"||Fibersectionsdefinedcompletely||"
7、定义单元
setIDColTransf1;
setIDBeamTransf2;
geomTransfPDelta$IDColTransf;
geomTransfLinear$IDBeamTransf;
setnP4;
elementnonlinearBeamColumn112$nP$RCSecTag$IDColTransf;
puts"||Elementsdefinedcompoletely||"
8、定义输出
setdataDir1EleNode;
filemkdir$dataDir1;
for{setNodeI1}{$NodeI<=2}{incrNodeI1}{;
recorderNode-file$dataDir1/Node$NodeI.txt-time-node$NodeI-dof123disp;
};
recorderNode-file$dataDir1/RBase1.txt-time-node1-dof123reaction;
puts"||Recorderdefinedcompletely||"
9、定义荷载
setIDctrlNode2;
setFN[expr-760*$kN];
patternPlain1Linear{
load$IDctrlNode0$FN0
};
setTol1.0e-15;#convergencetolerancefortest
constraintsPlain;#howithandlesboundaryconditionsnumbererPlain;
testsystemBandGeneral;#howtostoreandsolvethetestNormDispIncr$Tol60;
algorithmNewton;
setNstepGravity10;#applygravityin10steps
setDGravity[expr1./$NstepGravity];#firstloadincrement;
integratorLoadControl$DGravity;
analysisStatic;
initialize;
analyze$NstepGravity;
#--------------maintainconstantgravityloadsandresettimetozero------------------------------------------
loadConst-time0.0
puts"||Modelbuiltcompleted||"
10、位移控制分析
variableconstraintsTypeStaticPlain;#default;
if{[infoexistsRigidDiaphragm]==1}{
if{$RigidDiaphragm=="ON"}{
variableconstraintsTypeStaticLagrange;#forlargemodel,tryTransformation
};#ifrigiddiaphragmison
};#ifrigiddiaphragmexists
constraints$constraintsTypeStatic
setnumbererTypeStaticRCM
numberer$numbererTypeStatic
setsystemTypeStaticBandGeneral;#tryUmfPackforlargemodel
system$systemTypeStatic
variableTolStatic1.e-8;#ConvergenceTest:
tolerance
variablemaxNumIterStatic6;#ConvergenceTest:
maximumnumberofiterationsthatwillbeperformedbefore"failuretoconverge"isreturned
variableprintFlagStatic0;#ConvergenceTest:
flagusedtoprintinformationonconvergence(optional)#1:
printinformationoneachstep;
variabletestTypeStaticEnergyIncr;#Convergence-testtype
test$testTypeStatic$TolStatic$maxNumIterStatic$printFlagStatic;
#forimproved-convergenceprocedure:
variablemaxNumIterConvergeStatic2000;
variableprintFlagConvergeStatic0;
variablealgorithmTypeStaticNewton
algorithm$algorithmTypeStatic;
integratorDisplacementControl$IDctrlNode$IDctrlDOF$Dincr
setanalysisTypeStaticStatic
analysis$analysisTypeStatic
setIDctrlNode2;#nodewheredisplacementisreadfordisplacementcontrol
setIDctrlDOF1;#degreeoffreedomofdisplacementreadfordisplacementcontro
#characteristicsofcyclicanalysis
setiDmax"23101520223035";#vectorofdisplacement-cyclepeaks,intermsofstoreydriftratio
setDincr[expr0.05];#displacementincrementforpushover.youwantthistobeverysmall,butnottoosmalltoslowdowntheanalysis
setFact1;#scaledriftratiobystoreyheightfordisplacementcycles
setCycleTypeFull;#youcandoFull/Push/Halfcycleswiththeproc
setNcycles2;#specifythenumberofcyclesateachpeak
#createloadpatternforlateralpushoverload
setHload[expr$FN];#definethelateralloadasaproportionoftheweightsothatthepseudotimeequalsthelateral-loadcoefficientwhenusinglinearloadpattern
setiPushNode2;#definenodeswherelateralloadisappliedinstaticlateralanalysis
patternPlain200Linear{;#defineloadpattern--generalized
foreachPushNode$iPushNode{
load$PushNode$Hload0.00.0}
}
#-----------setupanalysisparameters
sourceLibAnalysisStaticParameters.tcl;#constraintsHandler,DOFnumberer,system-ofequations,convergenceTest,solutionAlgorithm,integrator
#---------------------------------performStaticCyclicDisplacementsAnalysis
sourceLibGeneratePeaks.tcl
setfmt1"%sCyclicanalysis:
CtrlNode%.3i,dof%.1i,Disp=%.4f%s";#formatforscreen/fileoutputofDONE/PROBLEManalysis
foreachDmax$iDmax{
setiDstep[GeneratePeaks$Dmax$Dincr$CycleType$Fact];#thisprocisdefinedabove
for{seti1}{$i<=$Ncycles}{incri1}{
setzeroD0
setD00.0
foreachDstep$iDstep{
setD1$Dstep
setDincr[expr$D1-$D0]
integratorDisplacementControl$IDctrlNode$IDctrlDOF$Dincr
analysisStatic
#----------------------------------------------firstanalyzecommand------------------------
setok[analyze1]
#----------------------------------------------ifconvergencefailure-------------------------
if{$ok!
=0}{
#ifanalysisfails,wetrysomeotherstuff
#performanceisslowerinsidethisloopglobalmaxNumIterStatic;#maxno.ofiterationsperformedbefore"failuretoconverge"isret'd
if{$ok!
=0}{
puts"TryingNewtonwithInitialTangent.."
testNormDispIncr$Tol20000
algorithmNewton-initial
setok[analyze1]
test$testTypeStatic$TolStatic$maxNumIterStatic0
algorithm$algorithmTypeStatic
}
if{$ok!
=0}{
puts"TryingBroyden.."
algorithmBroyden8
setok[analyze1]
algorithm$algorithmTypeStatic
}
if{$ok!
=0}{
puts"TryingNewtonWithLineSearch.."
algorithmNewtonLineSearch0.8
setok[analyze1]
algorithm$algorithmTypeStatic
}
if{$ok!
=0}{
setputout[format$fmt1"PROBLEM"$IDctrlNode$IDctrlDOF[nodeDisp$IDctrlNode$IDctrlDOF]$LunitTXT]
puts$putout
return-1
};#endif
};#endif
#-----------------------------------------------------------------------------------------------------
setD0$D1;#movetonextstep
};#endDstep
};#endi
};#endofiDmaxCycl
#----------------------------------------------------------------------------------------------------
setLunitTXT"mm";
if{$ok!
=0}{
puts[format$fmt1"PROBLEM"$IDctrlNode$IDctrlDOF[nodeDisp$IDctrlNode$IDctrlDOF]$LunitTXT]
}else{
puts[format$fmt1"DONE"$IDctrlNode$IDct