Giter Club home page Giter Club logo

fem's Introduction

有限元计算程序

本程序是基于弹性力学与有限元课程的要求,实现有限元程序的计算部分。本项目使用 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

fem's People

Contributors

dodoright avatar huanghf123 avatar meelfy avatar rushtimezzz avatar yj-wang14 avatar zhangjh14 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fem's Issues

程序适用性

本程序只适用三角形3节点?有三角形6节点源代码?

输入格式问题

请问输入的五种dat文件是怎么提取出来的呀?这部分数据处理怎么做的?

输入输出问题

您好,我是做流体计算的,对固体有限元这方面不太熟悉,我看到输入是结点坐标,外力条件和拓扑,输出应该是变形过后的结点位移?我现在有一个简单的流体流过竖直板的算例,已知对板的应力,要求板的形变,我应该如何使用这个程序来得到变形过之后的坐标呢?谢谢!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.