"""
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元在方形区域上解板弯曲问题的更多相关文章

  1. eval、exec及元类、单例实现的5种方法

    eval内置函数 # eval内置函数的使用场景:#   1.执行字符串会得到相应的执行结果#   2.一般用于类型转化,该函数执行完有返回值,得到dict.list.tuple等​dic_str = ...

  2. javascript 设计模式-----享元模式

    四个轮子,一个方向盘,有刹车,油门,车窗,这些词首先让人联想到的就是一辆汽车.的确,这些都是是一辆车的最基本特征,或者是属性,我们把词语抽象出来,而听到这些词语的人把他们想象陈一辆汽车.在代码里面也是 ...

  3. Python-元类 单例

    2.元类 用于创建类的类 叫元类 默认元类都是type 主要控制类的创建__init__ 类的实例化__call__ 3.单例 一个类只有一个实例 什么时候用,大家公用一个打印机,没有必要每个人创建新 ...

  4. python中的元类metaclass

    本文是一个转载的,因为原文写的太好了,所以直接copy过来吧. 原文请看:http://blog.jobbole.com/21351/ 译注:这是一篇在Stack overflow上 很热的帖子.提问 ...

  5. 201707《Ruby元编程》

    元编程不过是编程--经典必读 作用域(绑定) 打破作用域门的方式 对象模型图 七条规则 法术手册 作用域(绑定) 改变作用域的关键字, 分别是module,class和def.我们称为作用域的门(sc ...

  6. Metaspace 之二--Java 8的元空间(metaspace)、metaspace监控方法

    很多开发者都在其系统中见过“java.lang.OutOfMemoryError: PermGen space”这一问题.这往往是由类加载器相关的内存泄漏以及新类加载器的创建导致的,通常出现于代码热部 ...

  7. Java 正则表达式学习总结和一些小例子

    从Java1.4起,Java核心API就引入了java.util.regex程序包,它是一种有价值的基础工具,可以用于很多类型的文本处理, 如匹配,搜索,提取和分析结构化内容. java.util.r ...

  8. Delphi代码优化

    文章编目 1. 字符串优化 1.1. 不重复初始化 1.2. 使用SetLength预分配长字符串(AnsiString) 1.3. 字符串与动态数组的线程安全(Thread Safety) 1.4. ...

  9. 天津Uber优步司机奖励政策(2月1日~2月7日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

随机推荐

  1. Thrift.1

    1. 依据thrift生成相对应语言的代码 [Ref]: http://wiki.apache.org/thrift/ThriftGeneration [Todo] 2. 如何使用生成的代码 [Ref ...

  2. Yii2 数据操作Query Builder查询数据

    Query Builder $rows = (new \yii\db\Query()) ->select(['dyn_id', 'dyn_name']) ->from('zs_dynast ...

  3. SQL Server 2008设置sa用户并开启远程连接

    1.打开SQL Server Management Studio,以windows身份登录数据库

  4. ksort排序的依据是什么

    ksort:升序 asort:降序

  5. Laravel Relationship Events

    Laravel Relationship Events is a package by Viacheslav Ostrovskiy that adds extra model relationship ...

  6. Spring 属性注入(三)AbstractNestablePropertyAccessor

    Spring 属性注入(三)AbstractNestablePropertyAccessor Spring 系列目录(https://www.cnblogs.com/binarylei/p/10117 ...

  7. Python实现的复杂的计算器的代码

    用Python实现复杂的计算器,可以按照“()”.乘除.加减的优先级进行混合运算.主旨是对正则表达式进行学习. 设计思路: 1.在计算式中搜索最后一个“(”,再搜索和它匹配的“)”,截取两个括号间的表 ...

  8. 隐马尔科夫_HMM

    有向图 抽象:λ代表输入:输入一个句子,λi表示句子中的每个字 O代表输出:[B词首/M词中/E词尾/S单独成词] max=maxP(O1 O2 On/ λ1 λ2 λn) 假设: (1)当前观察值只 ...

  9. jdk8 tomcat7

    今天想使用jdk8+tomcat7来个写程序,但是一运行始终提示连接不到数据库 提示:Could not obtain connection metadata org.apache.tomcat.db ...

  10. 算法工程师B

    美团点评2017校招笔试真题-算法工程师B   1.以下关于经典的k-means聚类的说法哪个是错误的? A:k-means聚类算法是全局收敛的 B:k-means的聚类结果和初始聚类中心点的选取有关 ...