1. function lambda = c0P2(h)
  2. %% Mesh
  3. [node,elem] = squarequadmesh([,,,],h);
  4. elem = elem(:,[,,,]);
  5. showmesh(node,elem);
  6. findnode(node);
  7. findquadelem(node,elem);
  8. %% Construct Data Structure
  9. [elem2dof,edge,inDof] = c0dofP2(elem);
  10. elem2dof=double(elem2dof);
  11. N = size(node,); NT = size(elem,);
  12. Ndof = N+NT+size(edge,);
  13. A=sparse(Ndof,Ndof);
  14. B=sparse(Ndof,Ndof);
  15. %% Assemble stiffness matrix
  16. % Since Dphi_i*Dphi_j is quadratic,
  17. % numerical quadrature rule is used here
  18. option.quadorder = ; % default order
  19. [pts,weight] = quadquadpts(option.quadorder);
  20. pts=pts*-;
  21. x=pts(:,);y=pts(:,);
  22. h1=h/;h2=h1;
  23. area=h2*h1;
  24. %% Assemble Matrix
  25. for i=:
  26. for j=i:
  27. DuDv=area*(Dxphi(x,y,h1,i).*Dxphi(x,y,h1,j)...
  28. +Dyphi(x,y,h2,i).*Dyphi(x,y,h2,j))'*weight;
  29. uv=area*(phi(x,y,i).*phi(x,y,j))'*weight;
  30. if i==j
  31. A = A + sparse(elem2dof(:,i),elem2dof(:,j),DuDv,Ndof,Ndof);
  32. B = B + sparse(elem2dof(:,i),elem2dof(:,j),uv,Ndof,Ndof);
  33. else
  34. A = A + sparse([elem2dof(:,i);elem2dof(:,j)],...
  35. [elem2dof(:,j);elem2dof(:,i)],DuDv,Ndof,Ndof);
  36. B = B + sparse([elem2dof(:,i);elem2dof(:,j)],...
  37. [elem2dof(:,j);elem2dof(:,i)],uv,Ndof,Ndof);
  38. end
  39. end
  40. end
  41. %% Solve Ax = lambda Bx, and its first solution is *pi^
  42. lambda=eigs(A(inDof,inDof),B(inDof,inDof),,'sm');
  43. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  44. % subfunction Dxphi
  45. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  46. function s = Dxphi(xi,eta,L1,i) % gradient of basis phi for x
  47. switch i
  48. case
  49. s = (eta.*(.*xi - ).*(eta - ))/(*L1);
  50. case
  51. s = (eta.*(.*xi + ).*(eta - ))/(*L1);
  52. case
  53. s = (eta.*(.*xi + ).*(eta + ))/(*L1);
  54. case
  55. s = (eta.*(.*xi - ).*(eta + ))/(*L1);
  56. case
  57. s = -(eta.*xi.*(eta - ))/L1;
  58. case
  59. s = -((eta.^ - ).*(*xi + ))/(*L1);
  60. case
  61. s = -(eta.*xi.*(eta + ))/L1;
  62. case
  63. s = -((eta.^ - ).*(.*xi - ))/(*L1);
  64. case
  65. s = (*xi.*(eta.^ - ))/L1;
  66. end
  67. end
  68. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  69. % subfunction Dxphi
  70. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  71. function s = Dyphi(xi,eta,L2,i) % gradient of basis phi for y
  72. switch i
  73. case
  74. s = (xi.*(.*eta - ).*(xi - ))/(*L2);
  75. case
  76. s = (xi.*(.*eta - ).*(xi + ))/(*L2);
  77. case
  78. s = (xi.*(.*eta + ).*(xi + ))/(*L2);
  79. case
  80. s = (xi.*(.*eta + ).*(xi - ))/(*L2);
  81. case
  82. s = -((.*eta - ).*(xi.^ - ))/(*L2);
  83. case
  84. s = -(eta.*xi.*(xi + ))/L2;
  85. case
  86. s =-((*eta + ).*(xi.^ - ))/(*L2);
  87. case
  88. s = -(eta.*xi.*(xi - ))/L2;
  89. case
  90. s = (*eta.*(xi.^ - ))/L2;
  91. end
  92. end
  93.  
  94. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  95. % subfunction phi
  96. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  97. function s = phi(xi,eta,i) % gradient of basis phi
  98. switch i
  99. case
  100. s = (eta.*xi.*(eta - ).*(xi - ))/;
  101. case
  102. s = (eta.*xi.*(eta - ).*(xi + ))/;
  103. case
  104. s = (eta.*xi.*(eta + ).*(xi + ))/;
  105. case
  106. s = (eta.*xi.*(eta + ).*(xi - ))/;
  107. case
  108. s = -(eta.*(xi.^ - ).*(eta - ))/;
  109. case
  110. s = -(xi.*(eta.^ - ).*(xi + ))/;
  111. case
  112. s = -(eta.*(xi.^ - ).*(eta + ))/;
  113. case
  114. s = -(xi.*(eta.^ - ).*(xi - ))/;
  115. case
  116. s = (eta.^ - ).*(xi.^ - );
  117. end
  118. end
  119. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  120. end

lambda = c0P2(h)

  1. function [elem2dof,edge,inDof] = c0dofP2(elem)
  2. totalEdge=sort([elem(:,[,]);elem(:,[,]);elem(:,[,]);elem(:,[,])],);
  3. [edge, i2, j] = myunique(totalEdge);
  4. N = max(elem(:));
  5. NT = size(elem,);
  6. NE = size(edge,);
  7. elem2edge = reshape(j,NT,);
  8. elem2dof = uint32([elem N+elem2edge (N+NE+:N+NE+NT)']);
  9. i1(j(*NT:-:)) = *NT:-:;
  10. i1 = i1';
  11. bdEdgeIdx = (i1 == i2);
  12. isBdDof = false(N+NE+NT,);
  13. isBdDof(edge(bdEdgeIdx,:)) = true; % nodal
  14. idx = find(bdEdgeIdx);
  15. isBdDof(N+idx) = true;
  16. inDof = find(~isBdDof);
  17. end

[elem2dof,edge,inDof] = c0dofP2(elem)

http://files.cnblogs.com/files/wangshixi12/%E5%8F%8C%E4%BA%8C%E6%AC%A1Lagrange%E6%9C%89%E9%99%90%E5%85%83.rar

双二次Lagrange 有限元计算特征值程序(基于iFEM)的更多相关文章

  1. (原)使用mkl计算特征值和特征向量

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5585271.html 参考文档:mkl官方文档 lapack_int LAPACKE_sgeev(in ...

  2. 第十六届“二十一世纪的计算”学术研讨会 密西根州立大学教授Anil K. Jain主题演讲

    Biometrics---How Do I Know Who You Are? 密西根州立大学教授Anil K. Jain主题演讲" title="第十六届"二十一世纪的 ...

  3. 第十六届“二十一世纪的计算”学术研讨会 图灵奖获得者Butler W. Lampson主题演讲

    Personal Control of Digital Data 图灵奖获得者Butler W. Lampson主题演讲" title="第十六届"二十一世纪的计算&qu ...

  4. 三种计算c#程序运行时间的方法

    三种计算c#程序运行时间的方法 第一种: 利用 System.DateTime.Now // example1: System.DateTime.Now method DateTime dt1 = S ...

  5. 二 ASP.NET MVC 第一个程序 hello world

    二 ASP.NET MVC 第一个程序 hello world   https://blog.csdn.net/xmroom/article/details/51335917 我使用的Visual s ...

  6. Senparc.Weixin.MP SDK 微信公众平台开发教程(二十一):在小程序中使用 WebSocket (.NET Core)

    本文将介绍如何在 .NET Core 环境下,借助 SignalR 在小程序内使用 WebSocket.关于 WebSocket 和 SignalR 的基础理论知识不在这里展开,已经有足够的参考资料, ...

  7. 第十六届“二十一世纪的计算”学术研讨会 牛津大学肿瘤成像学教授Michael Brady主题演讲

    Computing and Healthcare 牛津大学肿瘤成像学教授Michael Brady主题演讲" title="第十六届"二十一世纪的计算"学术研讨 ...

  8. Spark练习之通过Spark Streaming实时计算wordcount程序

    Spark练习之通过Spark Streaming实时计算wordcount程序 Java版本 Scala版本 pom.xml Java版本 import org.apache.spark.Spark ...

  9. 微信小程序-基于canvas画画涂鸦

    代码地址如下:http://www.demodashi.com/demo/14461.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...

随机推荐

  1. vue.js 2.0开发(2)

    如果我们想实时的显示我们todos的长度这个业务逻辑可以这样: <h1>{{message}} ({{todos.length}})</h1> 直接展示todos的length ...

  2. Unity上一页下一页切换功能实现源码(仅供参考)

    在做项目时我们有时需要实现切换上一页下一页图片,切换上一首下一首歌曲等等类似的功能.这里写了个简单的实现源码(仅供参考),要是有更好的方法欢迎提出来,共同进步~ 以切换上一页下一页图片为例: usin ...

  3. 百度地图API功能集锦

    1.点个数太多导致加载缓慢的解决. 2.可视化区域内加载的解决. 3.自定义信息窗口解决. 4.区域/板块/商圈等的绘制功能解决. 基本包含了用到百度地图API会使用到的大部分常规性场景.(聚合点功能 ...

  4. html基础 2

    HTML 文本格式化实例 (我不知道为什么“正常显示文本”这几个字不用加标签,虽然它有在<body>标签内) <html> <body> <b>文本为黑 ...

  5. 【转载】变更MySql数据存储路径的方法

    1.在mysql安装目录下找到my.ini文件,更改#Path to the database root datadir="希望存放数据的地址" 2.将默认存放路径(一般为&quo ...

  6. C++设计模式-Bridge桥接模式

    作用:将抽象部份与它的实现部份分离,使它们都可以独立地变化. 将抽象(Abstraction)与实现(Implementation)分离,使得二者可以独立地变化. 桥接模式号称设计模式中最难理解的模式 ...

  7. R语言向量

    R语言基础:向量  心无咎 2012-04-02 13:37:00 向量(vector)1.seq():产生有规律的数列,间距省略时默认值为1.        例1:seq(10, 20, 0.5)  ...

  8. 天地图应用ArcGIS发布的服务

    本文包含三个部分:利用ArcMap将Excel的数据转化为ArcGIS MXD文件.利用ArcMap发布服务.天地图添加ArcGIS发布的服务. 一 MXD文件的生成 假设在Excel中存有两个点的坐 ...

  9. SQLyog-直接导出JSON格式的数据

          前言:以前做过的一个项目,有这样的一个需求使用搜索引擎来查询对应的区域信息,不过区域信息要先导出来,并且数据格式是JSON格式的,在程序中能实现这个需求,不过下面的这种方法更加的简单,通过 ...

  10. sass安装与使用

    安装: 1.安装ruby 2.安装Koala,用于sass编译 3.gem install sass(mac电脑安装如果安装报错,一般是权限问题,没有权限安装到ruby下面,因此可以尝试sudo ge ...