哈工大材料力学上机编程报告.docx
《哈工大材料力学上机编程报告.docx》由会员分享,可在线阅读,更多相关《哈工大材料力学上机编程报告.docx(21页珍藏版)》请在冰豆网上搜索。
![哈工大材料力学上机编程报告.docx](https://file1.bdocx.com/fileroot1/2023-1/31/e8b39e9e-755b-4dba-b736-7cf95d1ab414/e8b39e9e-755b-4dba-b736-7cf95d1ab4141.gif)
哈工大材料力学上机编程报告
材料力学电算实验
压杆的临界力计算
一.概述:
本程序使用MicrosoftVisualBasic编写,可以对不同材料、不同约束类型、不同截面类型的压杆进行临界力的计算。
杆件的参数可以输入,得出结果之后也可以清零。
二、问题分析及相关公式:
1、压杆稳定
当短粗杆受压时(图1),在压力F由小逐渐增大的过程中,杆件始终保持原有的直线平衡形式,直到压力F达到屈服强度载荷Fs(或抗压强度载荷Fb),杆件发生强度破坏时为止。
但是,如果用相同的材料,做一根与图1a所示的同样粗细而比较长的杆件(图1b),当压力F比较小时,这一较长的杆件尚能保持直线的平衡形式,而当压力F逐渐增大至某—数值F1时,杆件将突然变弯,不再保持原有的直线平衡形式,因而丧失了承载能力。
我们把受压直杆突然变弯的现象,称为丧失稳定或失稳。
此时,F1可能远小于Fs(或Fb)。
可见,细长杆在尚未产生强度破坏时,就因失稳而破坏。
图1
在研究压杆稳定时,我们用一微小横向干扰力使处于直线平衡状态的压杆偏离原有的位置,如图1所示。
当轴向压力F由小变大的过程中,可以观察到:
1)当压力值F1较小时,给其一横向干扰力,杆件偏离原来的平衡位置。
若去掉横向干扰力后,压杆将在直线平衡位置左右摆动,最终将恢复到原来的直线平衡位置。
2)当压力值F2超过其一限度Fcr时,平衡状态的性质发生了质变。
这时,只要有一轻微的横向干扰,压杆就会继续弯曲,不再恢复原状,。
3)界于前二者之间,存在着一种临界状态。
当压力值正好等于Fcr时,一旦去掉横向干扰力,压杆将在微弯状态下达到新的平衡,既不恢复原状,也不再继续弯曲,。
临界状态是杆件从稳定平衡向不稳定平衡转化的极限状态。
压杆处于临界状态时的轴向压力称为临界力或临界载荷,用Fcr表示。
2、两端铰支细长压杆的临界力
图2为一两端为球形铰支的细长压杆,其临界力公式为:
图2
(1)
式
(1)又称为欧拉公式。
3、不同杆端约束细长压杆的临界力
(1)一端固定另一端自由细长压杆的临界力
图3为—端固定另一端自由的压杆。
当压杆处于临界状态时,它在曲线形式下保持平衡。
将挠曲线AB对称于固定端A向下延长,如图中假想线所示。
延长后挠曲线是一条半波正弦曲线,与本章第二节中两端铰支细长压杆的挠曲线一样。
所以,对于—端固定另一端自由且长为
的压杆,其临界力等于两端铰支长为
的压杆的临界力,即
图3图4图5
(2)两端固定细长压杆的临界力
在这种杆端约束条件下,挠曲线如图4所示。
该曲线的两个拐点C和D分别在距上、下端为
处。
居于中间的
长度内,挠曲续是半波正弦曲线。
所以,对于两端固定且长为
的压杆,其临界力等于两端铰支长为
的压杆的临界力,即
(3)一端固定另一端铰支细长压杆的临界力
在这种杆端约束条件下,挠曲线形状如图5所示。
在距铰支端B为
处,该曲线有一个拐点C。
因此,在
长度内,挠曲线是一条半波正弦曲线。
所以,对于一端固定另一端铰支且长为
的压杆,其临界力等于两端铰支长为
的压杆的临界力,即
综上所述,只要引入相当长度的概念,将压杆的实际长度转化为相当长度,便可将任何杆端约束条件的临界力统一写
(2)
称为欧拉公式的一般形式。
由式
(2)可见,杆端约束对临界力的影响表现在系数
上。
称
为长度系数,
为压杆的相当长度,表示把长为
的压杆折算成两端铰支压杆后的长度。
几种常见约束情况下的长度系数
列入表1中。
表1压杆的长度系数
压杆的约束条件
长度系数
两端铰支
一端固定,另一端自由
两端固定
一端固定,另一端铰支
=1
=2
=1/2
≈0.7
三、VB程序源代码
//111Dlg.cpp:
implementationfile
//
#include"stdafx.h"
#include"111.h"
#include"111Dlg.h"
#include
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
//CAboutDlgdialogusedforAppAbout
classCAboutDlg:
publicCDialog
{
public:
CAboutDlg();
//DialogData
//{{AFX_DATA(CAboutDlg)
enum{IDD=IDD_ABOUTBOX};
//}}AFX_DATA
//ClassWizardgeneratedvirtualfunctionoverrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport
//}}AFX_VIRTUAL
//Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg:
:
CAboutDlg():
CDialog(CAboutDlg:
:
IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
voidCAboutDlg:
:
DoDataExchange(CDataExchange*pDX)
{
CDialog:
:
DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
//Nomessagehandlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
//CMy111Dlgdialog
CMy111Dlg:
:
CMy111Dlg(CWnd*pParent/*=NULL*/)
:
CDialog(CMy111Dlg:
:
IDD,pParent)
{
//{{AFX_DATA_INIT(CMy111Dlg)
m_A1=FALSE;
m_A2=FALSE;
m_A3=FALSE;
m_A4=FALSE;
m_A5=FALSE;
m_B1=FALSE;
m_B2=FALSE;
m_B3=FALSE;
m_C1=FALSE;
m_C2=FALSE;
m_C3=FALSE;
m_b=0.0f;
m_h=0.0f;
m_DD=0.0f;
m_D=0.0f;
m_d=0.0f;
m_l=0.0f;
m_r=0.0;
m_Fcr=0.0;
//}}AFX_DATA_INIT
//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32
m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
voidCMy111Dlg:
:
DoDataExchange(CDataExchange*pDX)
{
CDialog:
:
DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMy111Dlg)
DDX_Check(pDX,IDC_CHECK1,m_A1);
DDX_Check(pDX,IDC_CHECK2,m_A2);
DDX_Check(pDX,IDC_CHECK3,m_A3);
DDX_Check(pDX,IDC_CHECK4,m_A4);
DDX_Check(pDX,IDC_CHECK5,m_A5);
DDX_Check(pDX,IDC_CHECK6,m_B1);
DDX_Check(pDX,IDC_CHECK7,m_B2);
DDX_Check(pDX,IDC_CHECK8,m_B3);
DDX_Check(pDX,IDC_CHECK9,m_C1);
DDX_Check(pDX,IDC_CHECK10,m_C2);
DDX_Check(pDX,IDC_CHECK11,m_C3);
DDX_Text(pDX,IDC_EDIT1,m_b);
DDX_Text(pDX,IDC_EDIT2,m_h);
DDX_Text(pDX,IDC_EDIT3,m_DD);
DDX_Text(pDX,IDC_EDIT4,m_D);
DDX_Text(pDX,IDC_EDIT5,m_d);
DDX_Text(pDX,IDC_EDIT6,m_l);
DDX_Text(pDX,IDC_EDIT7,m_r);
DDX_Text(pDX,IDC_EDIT8,m_Fcr);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMy111Dlg,CDialog)
//{{AFX_MSG_MAP(CMy111Dlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON1,OnButton1)
ON_BN_CLICKED(IDC_BUTTON2,OnButton2)
ON_BN_CLICKED(IDC_BUTTON3,OnButton3)
ON_BN_CLICKED(IDC_CHECK1,OnCheck1)
ON_BN_CLICKED(IDC_CHECK10,OnCheck10)
ON_BN_CLICKED(IDC_CHECK11,OnCheck11)
ON_BN_CLICKED(IDC_CHECK2,OnCheck2)
ON_BN_CLICKED(IDC_CHECK3,OnCheck3)
ON_BN_CLICKED(IDC_CHECK4,OnCheck4)
ON_BN_CLICKED(IDC_CHECK5,OnCheck5)
ON_BN_CLICKED(IDC_CHECK6,OnCheck6)
ON_BN_CLICKED(IDC_CHECK7,OnCheck7)
ON_BN_CLICKED(IDC_CHECK8,OnCheck8)
ON_BN_CLICKED(IDC_CHECK9,OnCheck9)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
//CMy111Dlgmessagehandlers
BOOLCMy111Dlg:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
//Add"About..."menuitemtosystemmenu.
//IDM_ABOUTBOXmustbeinthesystemcommandrange.
ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX<0xF000);
CMenu*pSysMenu=GetSystemMenu(FALSE);
if(pSysMenu!
=NULL)
{
CStringstrAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if(!
strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);
}
}
//Settheiconforthisdialog.Theframeworkdoesthisautomatically
//whentheapplication'smainwindowisnotadialog
SetIcon(m_hIcon,TRUE);//Setbigicon
SetIcon(m_hIcon,FALSE);//Setsmallicon
//TODO:
Addextrainitializationhere
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
}
voidCMy111Dlg:
:
OnSysCommand(UINTnID,LPARAMlParam)
{
if((nID&0xFFF0)==IDM_ABOUTBOX)
{
CAboutDlgdlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog:
:
OnSysCommand(nID,lParam);
}
}
//Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow
//todrawtheicon.ForMFCapplicationsusingthedocument/viewmodel,
//thisisautomaticallydoneforyoubytheframework.
voidCMy111Dlg:
:
OnPaint()
{
if(IsIconic())
{
CPaintDCdc(this);//devicecontextforpainting
SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);
//Centericoninclientrectangle
intcxIcon=GetSystemMetrics(SM_CXICON);
intcyIcon=GetSystemMetrics(SM_CYICON);
CRectrect;
GetClientRect(&rect);
intx=(rect.Width()-cxIcon+1)/2;
inty=(rect.Height()-cyIcon+1)/2;
//Drawtheicon
dc.DrawIcon(x,y,m_hIcon);
}
else
{
CDialog:
:
OnPaint();
}
}
//Thesystemcallsthistoobtainthecursortodisplaywhiletheuserdrags
//theminimizedwindow.
HCURSORCMy111Dlg:
:
OnQueryDragIcon()
{
return(HCURSOR)m_hIcon;
}
voidCMy111Dlg:
:
OnButton1()//计算柔度
{
UpdateData();
if(m_B1)//两端固定,长度因数μ=0.5
{
if(m_C1)//矩形截面
m_r=1.732*m_l/m_h;//柔度λ=(μl)/i,其中惯性矩i=h/(2*1.732)
if(m_C2)//实心圆柱截面
m_r=2*m_l/m_DD;//惯性矩i=D/4
if(m_C3)//空心圆柱截面
m_r=2*m_l/sqrt(m_D*m_D+m_d*m_d);//惯性矩i=sqrt(D*D+d*d)/4
}
if(m_B2)//一端固定,一端铰支,长度因数μ=0.7
{
if(m_C1)
m_r=1.732*1.4*m_l/m_h;
if(m_C2)
m_r=2.8*m_l/m_DD;
if(m_C3)
m_r=2.8*m_l/sqrt(m_D*m_D+m_d*m_d);
}
if(m_B3)//两端铰支,长度因数μ=1
{
if(m_C1)
m_r=1.732*2*m_l/m_h;
if(m_C2)
m_r=4*m_l/m_DD;
if(m_C3)
m_r=4*m_l/sqrt(m_D*m_D+m_d*m_d);
}
UpdateData(FALSE);
}
voidCMy111Dlg:
:
OnButton2()//计算临界力
{
UpdateData();
if(m_A1)//材料为硅钢,λp=100,λs=60,E=150GPa,a=578MPa,b=3.744MPa
{
if(m_r>=100)//λ>=λp,为细长杆,用欧拉公式
{
if(m_C1)//矩形截面
m_Fcr=9.87*150000*m_b*m_h/(m_r*m_r);//欧拉公式бcr=π*π*E/(λ*λ),Fcr=бcr*A,其中A为截面面积
m_Fcr=7.75*150000*m_DD*m_DD/(m_r*m_r);
if(m_C3)//空心圆柱截面
m_Fcr=7.75*150000*(m_D*m_D-m_d*m_d)/(m_r*m_r);
}
if((m_r<100)&&(m_r>60))//λS<λ<λp,为中长杆,用经验公式
{
if(m_C1)//矩形截面
m_Fcr=(578-3.744*m_r)*m_b*m_h;//经验公式бcr=a-b*λ,Fcr=бcr*A,其中A为截面面积
if(m_C2)//实心圆柱截面
m_Fcr=(578-3.744*m_r)*0.785*m_DD*m_DD;
if(m_C3)//空心圆柱截面
m_Fcr=(578-3.744*m_r)*0.785*(m_D*m_D-m_d*m_d);
}
if(m_r<=60)//λ<=λs,为短粗杆,用强度理论
{
if(m_C1)//矩形截面
m_Fcr=353*m_b*m_h;//бcr=бS,其中бS为屈服极限,Fcr=бcr*A,其中A为截面面积
if(m_C2)//实心圆柱截面
m_Fcr=353*0.785*m_DD*m_DD;
if(m_C3)//空心圆柱截面
m_Fcr=353*0.785*(m_D*m_D-m_d*m_d);
}
}
if(m_A2)//材料为Q235钢,λp=100,λs=57,E=200GPa,a=304MPa,b=1.12MPa
{
if(m_r>=100)
{
if(m_C1)
m_Fcr=9.87*200000*m_b*m_h/(m_r*m_r);
if(m_C2)
m_Fcr=7.75*200000*m_DD*m_DD/(m_r*m_r);
if(m_C3)
m_Fcr=7.75*200000*(m_D*m_D-m_d*m_d)/(m_r*m_r);
}
if((m_r<100)&&(m_r>57))
{
if(m_C1)
m_Fcr=(304-1.12*m_r)*m_b*m_h;
if(m_C2)
m_Fcr=(304-1.12*m_r)*0.785*m_DD*m_DD;
if(m_C3)
m_Fcr=(304-1.12*m_r)*0.785*(m_D*m_D-m_d*m_d);
}
if(m_r<=57)
{
if(m_C1)
m_Fcr=240.16*m_b*m_h;
if(m_C2)
m_Fcr=240.16*0.785*m_DD*m_DD;
if(m_C3)
m_Fcr=240.16*0.785*(m_D*m_D-m_d*m_d);
}
}
if(m_A3)//材料为优质碳钢,λp=86,λs=60,E=200GPa,a=461MPa,b=2.568MPa
{
if(m_r>=86)
{
if(m_C1)
m_Fcr=9.87*200000*m_b*m_h/(m_r*m_r);
if(m_C2)
m_Fcr=7.75*200000*m_DD*m_DD/(m_r*m_r);
if(m_C3)
m_Fcr=7.75*200000*(m_D*m_D-m_d*m_d)/(m_r*m_r);
}
if((m_r<86)&&(m_r>60))
{
if(m_C1)
m_Fcr=(461-2.568*m_r)*m_b*m_h;
if(m_C2)
m_Fcr=(461-2.568*m_r)*0.785*m_DD*m_DD;
if(m_C3)
m_Fcr=(461-2.568*m_r)*0.785*(m_D*m_D-m_d*m_d);
}
if(m_r<=60)
{
if(m_C1)
m_Fcr=306*m_b*m_h;
if(m_C2)
m_Fcr=306*0.785*m_DD*m_DD;
if(m_C3)
m_Fcr=306*0.785*(m_D*m_D-m_d*m_d);
}
}
if(m_A4)//材料为铝合金,λp=50,λs=0,E=70GPa,a=372MPa,b=2.14MPa
{
if(m_r>=50)
{
if(m_C1)
m_Fcr=9.87*70000*m_b*m_h/(m_r*m_r);