有限要素法(FEM)のページ

有限要素法(FEM)は偏微分方程式を解いたり力学解析をする上で非常に強力な方法です。 何十年にもわたり様々な研究が精力的になされ、この手法は目まぐるしく発展してきました。 しかし大企業の開発者や大学の研究者など、ごく一部の限られた人以外はその恩恵を被ることができないのが現状です。 誰でも簡単に有限要素法を理解して使えるようになることに少しでも役に立つことを、 このWebページを通じて目指しています。
Copyright(C) 2008 Nobuyuki UMETANI




SOFTWARE

○ DelFEM   [10.Jan.2008]

フリーでオープンソースの有限要素法ライブラリです。多種多様な解析機能の他に、簡単なモデル生成機能やメッシュ生成機能、可視化機能がついており、誰でも簡単に数値解析を行うことができます。

Features
モデル2次元、複数領域、非多様体的モデルを扱える
メッシャー2次元3角形要素,Delaunay法
FEMポアソン方程式
拡散方程式
線形弾性体
St.Venant-Kirchhoff体
定常移流拡散方程式
非定常移流拡散方程式
Stokes方程式
非定常Stokes方程式
ソルバCG,前処理つきCG
BiCGSTAB,前処理つきBiCGSTAB
可視化OpenGL使用


言語はC++を用いていますが、将来的には高機能なGUIに対応するため.netのラッパを実装する予定です。
ライセンスはGNU_LGPL_Version 2.1を適応(一部コードを除く)
ドキュメントは現在作成中です。ご了承くださいませ




○ uMesh  (ver 1.0.4 β)   [27.sep.2007]
このソフトウェアは有限要素法のための2次元3角形メッシュを作成するものです。 簡単なモデラーも内蔵しており2次元形状を作成することができます。
ダウンロード
ZIP (356KB BIN) only for windows

READMEはこちら
  • (vup) 点と点を結ぶ機能を追加、複数領域モデルや非多様体的なモデルも作成可能に[2007/Sep/23]
  • (vup) 1000節点まで無料のプリ・ポスソフトGiDのメッシュ読み込み機能を追加 [2007/July/16]
  • (vup) 面の中に点を追加する機能を追加 [2007/July/13]
  • (vup) メッシュのIDを表示する機能を追加 [2007/July/03]
  • (ポアソン方程式の有限要素法による数値解法にuMeshを用いた解析プログラムをUp)


○ FEM demo : Laplace's Equation
このプログラムは2次元Laplace方程式を解いて3次元上に表示するプログラムです。 マウスドラッグによって固定境界条件を指定することができ、 リアルタイムで解が更新されます。


○ Function Viewer 2D
数式を入力すると3次元上に表示してくれるソフトです。時間依存の数式に対応しています。

Enter a mathematical function, and this program will render the function in a 3D space. You can change viewpoint arbitrary with an intuitive operation. This progtram can deal with time dependent functions.




COLUMN

大分昔に勉強した数値計算(特に有限要素法と連立一次方程式ソルバ)関連のことを忘れないためにまとめています。最初にお断りしておきますが、このドキュメントはかなり独断と偏見に満ち溢れたのになってます。専門家の目からみると「そりゃ、間違えや」と言われてしまうような内容も多少あると思います。したがって、これを数値計算のきちんとした解説だと考えないで下さい。しかし、とにかく雰囲気を手っ取り早くつかんで理解するようになるには(ある程度)役立つんじゃないかと思います。指摘、意見、感想などは大歓迎です。
It is only a memorandum no to foget.


有限要素法関係
○ ポアソン方程式の有限要素法による数値解法  [03.July.2007]
○ 移流拡散方程式の有限要素法による数値解法  [03.Jun.2007]
○ 線形弾性体の有限要素法による数値解法  [13.July.2007]
○ Total-Lagrange法による幾何学的非線形弾性体の有限要素法解析  [15.Jul.2008]
○ サンブナン体の有限要素法による数値解法  [22.July.2007]
○ 超弾性体の有限要素法解析  [12.Jul.2008]
○ DKT要素による薄板の有限要素法解析   [09.Nov.2007]
○ MITC要素によるシェルの有限要素法解析   [02.Aug.2008]
○ 有限要素法のためのデータ構造  [23.Feb.2007]

力学関係
○ 流体のための連続体力学  [23.Dec.2006]
○ 流体の支配方程式  [23.Dec.2006]
○ 応力速度  [10.Aug.2008]

数学関係
○ ヒルベルト空間  [17.Jun.2008]
○ 線形作用素  [17.Jun.2008]
○ 有限要素法の数学的基礎  [09.Oct.2007]
○ 均質化法の基礎  [10.Feb.2008]

連立一次方程式ソルバ関係
○ 共役勾配法(Conjugate Gradient法、CG法)   [20.Apr.2007]
○ 共役勾配法(CG法)の収束性  [20.Apr.2007]
○ 前処理つき共役勾配法  [20.Apr.2007]
○ 一般化最少残差法(GMRes法)  [27.May.2007]
○ 安定化双共役勾配法(BiCGSTAB法)  [11.Apr.2007]
○ 双ランチョス法(Two-Sided Lanczos 法)  [08.Apr.2007]
○ Arnordi法  [15.Jan.2007]
○ QR法  [17.Jun.2007]
○ 代数的マルチグリッド法  [15.Sep.2007]

メッシュ生成関係
○ メッシュ生成のプログラミングTIPS   [17.Feb.2007]




SOURCE CODE

○ Poisson2D_Unstructure
  • 2次元領域でPoisson方程式を解くコードです。
  • 可視化プログラムがついていて計算結果を即座に見ることができます。
  • 数々の要素補間に対応していて、プログラム中で要素補間のタイプを簡単に変えることができます。
    対応する要素補間の種類 三角形1次要素
    三角形2次要素
    三角形1次バブル要素
    四角形1次要素
    四角形1次バブル要素
    四角形2次要素
    四角形8節点セレンピディティー要素
  • ポアソン方程式の有限要素法離散化などのプログラムの仕組みはこちらで解説しています。
  • 入力ファイルはuMeshによって自由に作成することができます。

  • ダウンロード
    VC++2005プロジェクトファイル
    ZIP (262KB BIN) only for windows



uMesh

解析結果


○ Simple_Poisson2D
  • 2次元矩形領域でPoisson方程式を解く簡単なC++コード
  • CRS形式による行列の格納
  • 連立一次ソルバはGauss-Sidel法
  • 直交四角形双一次補間
  • ポアソン方程式の有限要素法離散化などのプログラムの仕組みはこちらで解説しています。
  • ソース(C++)   simple_poisson.cpp
gnuplotによる結果の表示
  • set style data line
  • splot 'solution.dat'
gnuplotによる収束履歴の表示
  • set style data line
  • set logscale y
  • plot 'conv_history.dat'




GALLERY

      Fluid
Non-Stationary Stokes Stationary Stokes


層流(Laminer Flow)
Navier-Stokes Re=100 Navier-Stokes Re=1^3 Navier-Stokes Re=1^4


乱流(Turburant)
Navier-Stokes Re=10^5


      Poinsson's Equation in 3D domain
           


      Diffusion Equation
                       


      Solid
St.Venant-Kirchhoff Material Linear Elastic Material
      LinearSolid in 3D domain
           


      FEM Software for General Use

simple modeler and mesher graphical boundary condition
setting user interface
result viewer


Sorry...... Now under development and there is no download



      surface extraction from volume data
3D Head Engine Block Bonsai TeddyBear




YOUTUBE

      Contact Problem
剛体円とSt.Venant-Kirchhoff体の接触の動解析 剛体円と線形弾性梁の2次元接触問題
Kuhn-Tucher条件を用いた剛体平面と線形弾性体の準静的な接触解析 ラグランジュ未定乗数法を用いた変位の直線上への拘束





      Reaction-Diffusion Equaion

         FitzHogh-Nagumo Type



LINK




おまけ


      motion of line trace robot
その昔、学部実験でC言語でPICマイコン用のプログラムを書いてライントレースロボットを動かす演習がありました。
専攻内でラップタイムを競っていたので、俄然やる気を出してコンピュータ上で全てシミュレーションするプログラムを書いて事前に最適な挙動を求めてみました。 (結果的にシミュレーションの内容は全く役に立たなかったのですが大体100人中タイムは5番目でした)。 これがそのとき組んだプログラムです。

    C言語ソース(要GLUT)  robo.c

プログラムの工夫した部分はライントレースロボのセンサーが白線の上にあるかどうかの交錯判定をOpenGLのピック処理を用いて行っている点です。



      South Pointing Chariots
その昔、学部実験で3次元CADとRapid Prototyping Systemを使って何か面白い物を作ろうという演習がありました。
自分は50時間以上におも及ぶ途方もない時間をモデリングに費やして指南車を作りました
特に規定の体積に収めなきゃいけなかったのでボディーの軽量化と、ギアまわりのモデリングが大変でした。
おかげで、こちらのドイツのHPでも紹介されたりしてます。
http://www.odts.de/southptr/cad.htm
ちゃちく見えますけど、頑張ればそれなりに動きましたよ。




SELF INTRODUCTION

学部時代に3年間サークル活動で人力飛行機を設計製作していました。少人数かつ低予算のチームでもコンテストに勝てる方法を模索する中で有限要素法に出会い、独学で勉強を始めました。今ではサークルを引退していますが、自分と同じような境遇の人のために設計支援ソフトウェアを作ることを目指しています。いつまでもエンジニアリング魂を忘れたくないですね。




  • Name : 梅谷信行
  • Weblog : Hatenaやってます
  • Age : 25
  • From : KOBE
  • Status : そろそろ修士の研究を始めないとヤバイ
  • Hobby : bicycle touring, human powered airplane, programming?
  • E-mail :




Yesterday is history.
Tomorrow is mystery.
Today is a gift.





Life is short,
but the day is too long