有限元上机报告

上传人:M****1 文档编号:496528241 上传时间:2023-02-08 格式:DOC 页数:18 大小:573.50KB
返回 下载 相关 举报
有限元上机报告_第1页
第1页 / 共18页
有限元上机报告_第2页
第2页 / 共18页
有限元上机报告_第3页
第3页 / 共18页
有限元上机报告_第4页
第4页 / 共18页
有限元上机报告_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《有限元上机报告》由会员分享,可在线阅读,更多相关《有限元上机报告(18页珍藏版)》请在金锄头文库上搜索。

1、弹性力学及有限元基础上机实践报告 在以常应变三角形单元计算弹性力学平面问题原理的基础上,编写可计算平面应力问题,亦可计算平面应变问题的通用程序。给出程序设计的流程图,程序源代码和程序应用的工程算例及其结果分析。一、程序流程图此程序采用本人比较熟悉C语言编写。C语言相比于FORTRAN语言拥有更强大的实用编程环境,同时由于提供了指针变量、动态内存分配函数和结构体变量等,使其编写的软件在维护性、可读性和内存利用效率方面具有明显的优势。1. 程序总框图图1 程序总框图 整个程序由一个主调主程序(主函数main( ))和七个子程序组成,其中数据子程序DATA( )用来接受输入的参数和变量。单刚子程序E

2、LEST( )为含有参数的函数,功能控制参数iask可取1、2、3,分别计算相应单元的面积、应力矩阵和单元刚度矩阵,主程序不直接调用它,而通过总刚子程序、载荷子程序和求应力子程序间接调用。总刚子程序TOTSTI( )用来合成总刚矩阵,载荷子程序LOAD( )用来计算合成载荷,支承子程序SUPPOR( )用来引入约束,解方程子程序SOLVEQ( )用来求解并输出各个结点的位移,求应力子程序STRESS( )用来计算和输出应力、主应力及主平面角。2.主函数及各子程序流程图图2 void main( )和void DATA( )图3 void ELEST(int meo,int iask) 图4 v

3、oid TOTSTI( ) 图5 void LOAD( )图6 void SUPPOR( )图7 void SOLVEQ( )图8 void STRESS( )二、程序源代码/* 有限元计算程序 */#include #include int nj,ne,nz,ndd,ind,nj2;int jm1003,nzc200,npj1,npj;float eo,un,gama,te,ae;float cjz1002,pj1002;float b36,d33,s36,eke66,tkz20020,p200;void DATA() /*数据输入函数*/ int i,j; printf(Qing shu

4、ru 6 ge can shun); scanf(%d,%d,%d,%d,%d,%d,&nj,&ne,&nz,&ndd,&npj,&ind); nj2=nj*2; npj1=npj+1; getchar(); printf(Qing shu ru 4 ge ji suan can shun); scanf(%f,%f,%f,%f,&eo,&un,&gama,&te); getchar(); printf(nj=%d ne=%d nz=%d ndd=%d npj=%d ind=%dn,nj,ne,nz,ndd,npj,ind); printf(eo=%f un=%f gama=%f te=%fn

5、,eo,un,gama,te); getchar(); printf(Qing shu ru JM ju zhengn); for(i=0;ine;i+) for(j=0;j3;j+) scanf(%d,&jmij); getchar(); printf(Qing shu ru CJZ ju zhengn); for(i=0;inj;i+) for(j=0;j2;j+) scanf(%f,&cjzij); getchar(); printf(Qing shu ru NZC ju zhengn); for(i=0;inz;i+) scanf(%d,&nzci); getchar(); print

6、f(Qing shu ru PJ ju zhengn); for(i=0;inpj1;i+) for(j=0;j2;j+) scanf(%f,&pjij); getchar(); getchar(); printf(CJZ ju zheng ru xian); for(i=0;inj;i+) for(j=0;j1) for(i=0;i3;i+) for(j=0;j6;j+) bij=0; b00=-bj-bm; b02=bj; b04=bm; b11=-cj-cm; b13=cj; b15=cm; b20=-cj-cm; b21=-bj-bm; b22=cj; b23=bj; b24=cm;

7、b25=bm; for(i=0;i3;i+) for(j=0;j6;j+) bij=bij/(2*ae); d00=eo/(1-un*un); d01=eo*un/(1-un*un); d02=0; d10=eo*un/(1-un*un); d11=eo/(1-un*un); d12=0; d20=0; d21=0; d22=eo/(2*(1+un); for(i=0;i3;i+) for(j=0;j6;j+) sij=0; for(k=0;k2) for(i=0;i6;i+) for(j=0;j6;j+) ekeij=0; for(k=0;k3;k+) ekeij=ekeij+ski*bkj

8、*ae*te; void TOTSTI(void) /*总的刚度矩阵*/int i,j,ii,jj,meo,lii,l,lz,ldh,ld; for(i=0;inj2;i+) for(j=0;jndd;j+) tkzij=0; for(meo=1;meo=ne;meo+) ELEST(meo,3); for(i=1;i4;i+) for(ii=1;ii3;ii+) lii=2*(i-1)+ii; ldh=2*(jmmeo-1i-1-1)+ii; for(j=1;j4;j+) for(jj=1;jj0) tkzldh-1ld-1=tkzldh-1ld-1+ekelii-1l-1; void LO

9、AD() /*添加载荷*/int i,j,meo,ie,je,me; float p0; for(i=0;i0) for(i=1;i0) for(meo=1;meo=ne;meo+) ELEST(meo,1); p0=-gama*ae*te/3; ie=jmmeo-10; je=jmmeo-11; me=jmmeo-12; p2*ie-1=p2*ie-1+p0; p2*je-1=p2*je-1+p0; p2*me-1=p2*me-1+p0; void SUPPOR() /*添加约束*/int i,j,mz,j0; for(i=1;i=nz;i+) mz=nzci-1; tkzmz-10=1; for(j=1;jndd;j+) tkzmz-1j=0; if(mzndd) j0=mz; else j0=ndd; for(j=2;j=j0;j+) tkzmz-jj-1=0; pmz-1=0; void SOLVEQ() /*求解过程*/int k,i,j,im,l,m,ii,jo,lh; flo

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号