scikit-FEM-例2-用Morley元在方形区域上解板弯曲问题
"""
Author: kinnala Solve the Kirchhoff plate bending problem in a unit square
with clamped boundary conditions using the nonconforming
Morley element. Demonstrates also the visualization of
higher order solutions using 'GlobalBasis.refinterp'.
"""
from skfem import *
import numpy as np
调入 skfem 模块
调入数值运算 numpy 模块
m = MeshTri()
m.refine(3)
三角形剖分网格,加密 $3$ 次
e = ElementTriMorley()
map = MappingAffine(m)
ib = InteriorBasis(m, e, map, 4)
ElementTriMorley: 非协调有限元 $ Morley$ 元
MappingAffine: 仿射变换
InteriorBasis:内部节点基函数
@bilinear_form
def bilinf(u, du, ddu, v, dv, ddv, w):
# plate thickness
d = 1.0
E = 1.0
nu = 0.3 def C(T):
trT = T[0,0] + T[1,1]
return np.array([[E/(1.0+nu)*(T[0, 0]+nu/(1.0-nu)*trT), E/(1.0+nu)*T[0, 1]],
[E/(1.0+nu)*T[1, 0], E/(1.0+nu)*(T[1, 1]+nu/(1.0-nu)*trT)]]) def Eps(ddU):
return np.array([[ddU[0][0], ddU[0][1]],
[ddU[1][0], ddU[1][1]]]) def ddot(T1, T2):
return T1[0, 0]*T2[0, 0] +\
T1[0, 1]*T2[0, 1] +\
T1[1, 0]*T2[1, 0] +\
T1[1, 1]*T2[1, 1] return d**3/12.0*ddot(C(Eps(ddu)), Eps(ddv))
调入双线性形式模块@bilinear_form
定义 双线性函数 bilinf:{
定义函数C(T)
定义函数Eps(ddU)
定义函数 ddot(T1,T2) }
@linear_form
def linf(v, dv, ddv, w):
return 1.0*v
调入线性形式模块@linear_form
定义 线性函数 linf
K = asm(bilinf, ib)
f = asm(linf, ib)
组装刚度矩阵 $K$
组装质量向量 $f$
x, D = ib.find_dofs()
I = ib.dofnum.complement_dofs(D)
自由度 $dof$
x[I] = solve(*condense(K, f, I=I))
求解方程 $ Kx=f$
if __name__ == "__main__":
M, X = ib.refinterp(x, 3)
ax = m.draw()
M.plot(X, smooth=True, edgecolors='', ax=ax)
M.show()
ib.refinterp(x,3):$3$ 次插值

scikit-FEM-例2-用Morley元在方形区域上解板弯曲问题的更多相关文章
- eval、exec及元类、单例实现的5种方法
eval内置函数 # eval内置函数的使用场景:# 1.执行字符串会得到相应的执行结果# 2.一般用于类型转化,该函数执行完有返回值,得到dict.list.tuple等dic_str = ...
- javascript 设计模式-----享元模式
四个轮子,一个方向盘,有刹车,油门,车窗,这些词首先让人联想到的就是一辆汽车.的确,这些都是是一辆车的最基本特征,或者是属性,我们把词语抽象出来,而听到这些词语的人把他们想象陈一辆汽车.在代码里面也是 ...
- Python-元类 单例
2.元类 用于创建类的类 叫元类 默认元类都是type 主要控制类的创建__init__ 类的实例化__call__ 3.单例 一个类只有一个实例 什么时候用,大家公用一个打印机,没有必要每个人创建新 ...
- python中的元类metaclass
本文是一个转载的,因为原文写的太好了,所以直接copy过来吧. 原文请看:http://blog.jobbole.com/21351/ 译注:这是一篇在Stack overflow上 很热的帖子.提问 ...
- 201707《Ruby元编程》
元编程不过是编程--经典必读 作用域(绑定) 打破作用域门的方式 对象模型图 七条规则 法术手册 作用域(绑定) 改变作用域的关键字, 分别是module,class和def.我们称为作用域的门(sc ...
- Metaspace 之二--Java 8的元空间(metaspace)、metaspace监控方法
很多开发者都在其系统中见过“java.lang.OutOfMemoryError: PermGen space”这一问题.这往往是由类加载器相关的内存泄漏以及新类加载器的创建导致的,通常出现于代码热部 ...
- Java 正则表达式学习总结和一些小例子
从Java1.4起,Java核心API就引入了java.util.regex程序包,它是一种有价值的基础工具,可以用于很多类型的文本处理, 如匹配,搜索,提取和分析结构化内容. java.util.r ...
- Delphi代码优化
文章编目 1. 字符串优化 1.1. 不重复初始化 1.2. 使用SetLength预分配长字符串(AnsiString) 1.3. 字符串与动态数组的线程安全(Thread Safety) 1.4. ...
- 天津Uber优步司机奖励政策(2月1日~2月7日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
随机推荐
- LibreOJ #6013. 「网络流 24 题」负载平衡 最小费用最大流 供应平衡问题
#6013. 「网络流 24 题」负载平衡 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据 题目描述 ...
- Writing modular applications with laravel-modules
01-07-2016 Let me start by saying Laravel is an amazing framework. However when it comes to writing ...
- How to Set Ckeditor ReadOnly Mode
CKEditor API makes it possible to render the editor content read-only (and thus impossible for the u ...
- 【轻松前端之旅】<!DOCTYPE>标签
前端学习,先学习HTML,CSS,Javascript HTML - HyperText Markup Language HTML-超文本标记语言,提供了一种标记网页内容的方法. 浏览器怎么知道如何显 ...
- linux下设置mysql表名不区分大小写
原文:http://blog.csdn.net/johnsonvily/article/details/6703902 1.Linux下mysql安装完后是默认:区分表名的大小写,不区分列名的大小写: ...
- windows10安装ubuntu on windows10
安装向导 https://msdn.microsoft.com/en-us/commandline/wsl/install_guide
- 2019.01.22 hdu5195 DZY Loves Topological Sorting(贪心+线段树)
传送门 题意简述:给出一张DAGDAGDAG,要求删去不超过kkk条边问最后拓扑序的最大字典序是多少. 思路:贪心帮当前不超过删边上限且权值最大的点删边,用线段树维护一下每个点的入度来支持查询即可. ...
- 2019.01.01洛谷 P4725/P4726 多项式对数/指数函数(牛顿迭代)
4725传送门 4726传送门 解析 代码: #include<bits/stdc++.h> #define ri register int using namespace std; in ...
- set集合遍历
对 set 的遍历 1.迭代遍历: Set<String> set = new HashSet<String>(); Iterator<String> it = s ...
- MySQL处理表字段小技巧
MySQL利用正则函数替换值 update dateTest set date=REPLACE(date,'/','') where date REGEXP '\/'; SQL语句讲解: -- 将 所 ...