[2025-02-28] 講演資料などの共有コンテンツ,コメントを作りました.
[2025-02-23] 2/22 までに参加を申し込まれた方に当日の入構・オンライン配信の案内を送りました.届いていない方は高石までご連絡ください.
[2025-02-17] 懇親会に参加を申し込んだ方へ連絡メールを送りました.
[2025-01-10] 登録フォームにおいて,懇親会の出席チェックが必須となっておりました.修正するとともに,申込済みで懇親会に参加されない旨明記された方へはメールでご連絡いたしましたのでご確認ください.
当日は4号館2階入口からご入場ください.
※本シンポジウムは武蔵野大学2024年度しあわせ研究費からの補助を受けています
皆様のご参加をお待ちしております。なお、ハイブリッド開催の都合上、参加登録をお願いいたします
※懇親会の受付けは終了しました。
FreeFEM や FEniCS など,有限要素法パッケージは多くの数理研究者に利用されるようになったが,それぞれがどのような場面で活用できるかについては情報の共有があまりなされていない.このミニシンポジウムでは,これらの有限要素法パッケージを利用している(利用したい)数理研究者で集まり,良いところ,改善してほしいところなどを持ち寄り,情報を共有するとともに今後の研究における活用方法について議論する.
・有限要素法として利用できる機能(有限要素空間、計算手法など)
・有限要素法パッケージを用いた特徴的な計算例
・機能拡張,計算速度,スケーラビリティなど
13:00 - 13:10 高石 武史 (武蔵野大学):オープニング,趣旨説明など
13:10 - 13:40 鈴木 厚 (大阪大学 D3センター):FreeFEM「弱形式と要素分割から剛性行列を生成するためのDSL 」
13:40 - 14:10 劉 雪峰 (東京女子大学):FEniCS「アイデア検証と計算機援用証明に活用される有限要素法ライブラリ:FEniCSとVFEM」
14:20 - 15:00 及川 一誠 (筑波大学) :FreeFEM と FEniCS「 有限要素ソフトウェアを用いたHDG法の数値計算 」
15:20 - 16:50 パネルディスカッション:
及川 一誠 (筑波大学),鈴木 厚 (大阪大学 D3センター),張 沛然 (京都大学),藤原 宏志 (京都大学),劉 雪峰 (東京女子大学)
進行役:高石 武史 (武蔵野大学)
・インストールの手間(PC, サーバ)
・ (2D, 3Dで) Poisson方程式の境界値問題を解くスクリプトの比較
・Dirichlet, Neumann 境界値の扱いの容易さ
・大規模化・並列化の手間
・質問があるとき,どうしたらよいか(コミュニティの利用)
・I/O の簡便性
16:50 クロージング
18:00 - 20:00 懇親会(新橋にて)
※5500円の予定
高石 武史 (武蔵野大学工学部)
鈴木 厚 (大阪大学 D3センター)
藤原 宏志 (京都大学大学院情報学研究科)
問い合わせ先:武蔵野大学工学部数理工学科 高石武史 (taketaka =AT= musashino-u.ac.jp (=AT= を @ に変えてください )
[2025-02-28]
大塚厚二
パネルディスカッションについてコメントです。
・インストールの手間(PC, サーバ)
FreeFEMは、教育用ならWindows版が簡単インストールできます。
・Dirichlet, Neumann 境界値の扱いの容易さ
---- 例:ラベルを使った境界の指定
int bcD=1, bcN=2;
real cb = 0., ca = -1.;
border LB(t=0, 1){x=-ca*2*(1-3*t); y=-0.5;label=bcN;}
border LR(t=0, 1){x=ca*4; y=-0.5*(1-2*t);label=bcN;}
border LT(t=0, 1){x=ca*2*(2-3*t); y=0.5;label=bcN;}
border LL(t=0, 1){x=-ca*2; y=0.5*(1-2*t);label=bcN;}
(中略)
problem Poisson(u,v) =
int2d(Th)(dx(u)*dx(v)+dy(u)*dy(v))
- int2d(Th)(f*v) + on(bcD,u=0);
----
・弱形式と強形式
---
弱形式 ∫{a∇u*∇v}=∫fv はaが定数なら強形式はaΔu=fですが、aが変数の場合は、
強形式はaΔu+(∇a)∇u=fとなり、境界条件によっては変化する可能性があります。
---
・他に、FreeFEMの特徴として異なる分割での補完、
例 粗いメッシュと細かいメッシュの違いを比較する。
計算は、境界を30分割、100分割で計算し、境界を500分割したものに補完して表示。
比較するため、movemeshでメッシュや2つの計算を並べている。
----
border c(t=0, 2*pi){x=cos(t); y=sin(t);}
mesh Th1 = buildmesh(c(30));
plot(Th1);
// Fespace
fespace FE1(Th1, P1);
FE1 u1, v1;
func f=sin(pi*x)*cos(pi*y);
// Calculation with rough mesh
problem Poisson1(u1, v1)
= int2d(Th1)( // bilinear form
dx(u1)*dx(v1)+ dy(u1)*dy(v1))
+ int2d(Th1)(-f*v1)
+ on(c, u1=0); // boundary condition
;
Poisson1;
Th1 = movemesh(Th1,[x+2,y]);
plot(u1, Th1, cmm="rough mesh", value=true, wait=1);
//Calculation with finer mesh
//Calculated by moving to the right for comparison
mesh Th2 = buildmesh(c(100));
Th2 = movemesh(Th2,[x+2,y]);
fespace FE2(Th2, P1);
FE2 u2, v2;
problem Poisson2(u2, v2)
= int2d(Th2)( // bilinear form
dx(u2)*dx(v2)+ dy(u2)*dy(v2))
+ int2d(Th2)(-f*v2)
+ on(c, u2=0); // boundary condition
;
Poisson2;
Th2 = movemesh(Th1,[x-2,y]);
plot(u2, Th2, cmm="finer mesh", value=true, wait=1);
//Comparison of u1 and u2 with fine mesh
mesh Th = buildmesh(c(500));
fespace FE(Th, P1);
FE uu1 = u1;
Th = movemesh(Th,[x+2,y]);
FE uu2 = u2;
plot(uu1,uu2, cmm="Compare two calculations", value=true, wait=1);
----
FreeFEMには、アダプティブメッシュ、移動メッシュ、計算結果の再利用があり、
形状最適化などの問題では、これらの機能は必須です。