Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
/ FEM Public
forked from Meelfy/FEM

有限元程序 / Finite element method

License

Notifications You must be signed in to change notification settings

Matrixem/FEM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

119 Commits

Repository files navigation

有限元计算程序

本程序是基于弹性力学与有限元课程的要求,实现有限元程序的计算部分。本项目使用 MATLAB 编程,以期达到运行效率与开发效率兼顾的目的。项目成员如下:

  • 张泽凡
  • 黄鹤飞
  • 王政荣
  • 王艺杰
  • 张家豪
  • 梅杰

程序结构

FEM/
├── doc
│  ├── FEM原理说明.docx
│  ├── nabook.pdf
│  ├── painless-conjugate-gradient.pdf
│  └── 集成.docx
├── img
│  ├── WBS.jpg
│  ├── 数据流程图-0.1.jpg
│  ├── 数据流程图-0.1.vsdx
│  └── 甘特图.png
├── input
│  ├── sam1.0
│  │  ├── boundaryCondition.dat
│  │  ├── elementCoordinates.dat
│  │  ├── elementTopology.dat
│  │  ├── forceCondition.dat
│  │  ├── materials.dat
│  │  └── old.7z
│  └── Sample
│  ├── Readme.pdf
│  ├── Sample.fem
│  ├── Sample.mat
│  ├── Sample.pqu
│  └── Sample.uvw
├── LICENSE
├── main.m
├── output
│  ├── element_displacement_big.dat
│  ├── element_displacement.dat
│  ├── element_stress_big.dat
│  └── element_stress.dat
├── README.md
└── src
 ├── calElementStiffnessMatrix.m
 ├── calMatrixB.m
 ├── calMatrixD.m
 ├── calWholeStiffnessMatrix.m
 ├── calWholeStiffnessMatrixSparse.m
 ├── elementDisplacement.m
 ├── elementStrain.m
 ├── elementStress.m
 ├── openKspeace.m
 ├── processConstraint.m
 ├── processConstraintSparse.m
 ├── processForce.m
 ├── processForceSparse.m
 ├── solveEquation2.m
 ├── solveEquation.m
 └── utils
 ├── calAera.m
 └── conjugateGradient.m

工作分解结构图

数据流程图

编程规范

编码格式

统一采用 UTF-8 编码

用到的变量及其规定

整体变量

结点个数

n

单元个数

m

全部结点坐标

all_element_X / n * 1
all_element_Y / n * 1

输入文件格式

单元拓扑表

unit_topology_table / m * 3 
所在行数即为单元的编号

约束

bound / 约束个数 * 3
代表: 点号 x/y(1/2) 位移大小

结点坐标

coord / n * 2

外力条件

P / n * 2
n为结点个数,每一行为"x y",行数对应结点号,x为x方向上力

单元材料

materials / m * 2
材料,输入为m行,m为单元个数,每一行为"e u"

单元变量

单个单元的坐标使用两个列向量,依次为 i j m

double element_X / 三行,一列 3 * 1 
double element_Y / 三行,一列 3 * 1

单元刚度阵k

element_k / 6 * 6

B矩阵

double matrixB / 3 * 6的矩阵

整体刚度阵K的储存

K 为一维数组 长度未知 下三角矩阵的值
K_info 储存主对角元在K中的位置 1 * n

整体的位移

whole_displacement / 2n * 1

用到的函数文件及其规定

calMatrixB.m / 计算 B 矩阵
calMatrixD.m / 计算 D 矩阵
openKspeace.m / 计算一维半带宽方法下的整体的劲
 / 度矩阵K中所包含的元素个数
calArea.m / 返回三角形单元的面积
calElementStiffnessMatrix.m / 返回单元的劲度矩阵
calWholeStiffnessMatrix.m / 计算一维半带宽方法下的整体的劲度矩阵K
calWholeStiffnessMatrixSparse.m / 计算稀疏矩阵方法下的整体的劲度矩阵K
elementStrain.m / 计算单元应变
elementStress.m / 计算单元应力
elementDisplacement.m / 通过整体结点位移计算各个单元的节点位移
processConstraint.m / 对 K 进行处理,使其满足约束
processConstraintSparse.m / 函数对K进行处理,使其满足约束
 / 用于稀疏矩阵方法
processForce.m / 对P进行处理,使其满足约束
processForceSparse.m / 函数对P进行处理,使其满足约束
 / 用于稀疏矩阵方法
solveEquation.m / 直接法解整体结点平衡方程
solveEquation2.m / 迭代法求解方程

文件命名

开头小写、驼峰命名法

unitArea.m
unitStiffnessMatrix.m

函数命名

开头小写、驼峰命名法

变量命名

变量 下划线链接,小写

element_displacement
whole_displacement

常量 全部大写

E

Result

直接法用时:
Elapsed time is 716.791396 seconds.

迭代法用时:
Elapsed time is 42.631346 seconds.

716.791396 / 42.631346

ans =

16.8137

License

Copyright 2016

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; If not, see

http://www.gnu.org/licenses

About

有限元程序 / Finite element method

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • MATLAB 100.0%

AltStyle によって変換されたページ (->オリジナル) /