• 検索結果がありません。

COMSOL Days 036:最適化(東京会場・2018年7月19日)

N/A
N/A
Protected

Academic year: 2021

シェア "COMSOL Days 036:最適化(東京会場・2018年7月19日)"

Copied!
127
0
0

読み込み中.... (全文を見る)

全文

(1)

COMSOLを用いた

最適化計算とパラメータ推定

橋口真宜、米大海 第1技術部 計測エンジニアリングシステム株式会社 COMSOL Multiphysics®日本総代理店 東京都千代田区内神田1-9-5 SF内神田ビル5F http://www.kesco.co.jp/ https://www.comsol.jp/ 2018年7月19日

(2)

最適化とパラメタ推定

モデルの開発 解析解のある問題で妥当性を確認 Verification Validation 目的とする解析の実行と妥当性の確認 モデル~現象 仮想実験として利用し、よりよい性能を 出すための工夫を行う 最適化 モデルがパラメタを含む場合 パラメタ推定(物性値含む) 理論を利用 実験値を利用など モデル=現象 (挙動が一致するの意味) アプリの利用 M. Hashiguchi and D. Mi 2018 2

(3)
(4)

COMSOL Multiphysics®

4 M. Hashiguchi and D. Mi 2018

(5)

COMSOL Multiphysics®

COMSOL 社(スウェーデン、ボストン)の開発製品です。 計測エンジニアリングシステム株式会社は日本国内販売総代理店です。 COMSOL Multiphysicsはマルチフィジックス解析環境を提供しています。 解析は主として有限要素法に基づいています。 (他に、有限体積法、境界要素法、粒子追跡も利用する場合もある) スウェーデンの数学者 当時、KTH (スウェーデン王立大学)の学生

The company was founded in 1986. COMSOL Multiphysics® in 1998.

Germund Dahlquist

More than 460 employees in 21 officies worldwide.

(6)

参考資料検索キーワード http://www.kesco.co.jp/comsol/index.html 6

フィジックス(現在、28分野)

複数の連成解析が可能 PDE(偏微分方程式)との組み合わせも可能 M. Hashiguchi and D. Mi 2018

(7)

COMSOL Multiphysics®の統合型GUIは

モデルビルダーとアプリケーションビルダーを用意している

モデル構築 モデル開発 アプリ化 教育革新・業務革新へ

COMSOL Desktop 統合型GUI (プリ・任意のフィジックス・メッシュ・ソルバ・ポスト処理)

モデルビルダ アプリケーション ビルダ 任意の連成が可能 STLデータ吐き出しで 3Dプリンタへ サーバーにアップロードすれば、 タブレット端末などで利用も可能

(8)

最適化の理論

M. Hashiguchi and D. Mi 2018 8

参考:

Walter Frei, Optimization, COMSOL Conference 2017 Boston

(9)
(10)

リハーサルが必要

目的関数を設定し、グラフ表示あるいはパラメトリックスイープを利用して、 設計変数を変化させたとき、その範囲の中で、目的関数が 周囲に比べて小さく(大きく)なる箇所があるかどうかを、 確かめておく必要がある。 目的関数の妥当性 M. Hashiguchi and D. Mi 2018 10

(11)

設計変数を決める

1)何を動かせるかをユーザーが決める 2)動かせる範囲をユーザーが決める

(12)

目的関数を決める

ユーザーが決める ユーザーが決める 最小化の例 最大化であれ ば、逆数の最 小化を考える。 計算! ここがよさそう! M. Hashiguchi and D. Mi 2018 12

(13)

勾配がわかれば探索できる

𝑓 𝜒 + Δ𝜒 ~𝑓 𝜒 + 𝝏𝒇 𝝏𝝌 · Δ𝝌 設計変数の変動 に対して、関数の変化率 𝝏𝒇 𝝏𝝌 がわかれば探索できる。 𝝏𝒇 𝝏𝝌 ∆𝝌 (ベクトル) (行列)

(14)

最適値があることを前提

χ1 χ2 f (u(χ1, χ2)) 最適値 初期値(初期設計) 関数形がわかる場合 関数形がわからない場合 M. Hashiguchi and D. Mi 2018 14

(15)

イメージを持てばわかりやすい

χ1 χ2 利用できる 設計変数の空間 利用できない設計変数 の空間 χ1 制約条件: p(χ1, χ2) < 0

(16)

設計変数の範囲を設定

χ1 χ2

拘束条件: p(χ1, χ2) < 0

(17)

どのような方法で探索するか

χ1 χ2

(18)

近似的勾配による方法

(19)

最も簡単な方法: 近似勾配

χ1 χ2 初期設計点 いくつかの点での関数値を 求め、それを利用して、 近似的な勾配を作成する

(20)

最も簡単な方法: 近似勾配

χ1 χ2 初期設計点 この操作を繰り返して、 経路を作成していく。 M. Hashiguchi and D. Mi 2018 20

(21)

最も簡単な方法: 近似勾配

χ1 χ2 初期設計点 繰り返しながら、関数値を 改善することを目指す。

(22)

最も簡単な方法: 近似勾配

χ1 χ2 初期設計点 さらに進む M. Hashiguchi and D. Mi 2018 22

(23)

どのような場合に使うか

目的関数、拘束条件に微分できないものを含む場合に使う。 設計変数が少ない場合に使う。 設計変数の数に応じて指数関数的に計算時間が増大する。 10個程度までの設計変数に対して利用する。 リメッシュを行う場合に使う。 リメッシュは目的関数の滑らかさを損なう。

(24)

解析的勾配による方法

(25)

解析的勾配による方法

χ1 χ2

(26)

χ1 χ2 初期設計点

解析的勾配による方法

この方向に沿って 最適点を探す M. Hashiguchi and D. Mi 2018 26

(27)

χ1 χ2

初期設計点

解析的勾配による方法

(28)

どのような場合に使うか

目的関数、拘束条件が微分できる場合に使う。 設計変数が多い場合に使う。 トポロジー最適化に利用する*。 *このセミナでは扱わない。興味をもった人は 京都大学西脇先生チームの研究を参照のこと。 http://www.osdel.me.kyoto-u.ac.jp/members/nishiwaki.html M. Hashiguchi and D. Mi 2018 28 https://www.jsme.or.jp/dsd/4.pdf

(29)

利用可能なソルバー

近似勾配の利用 座標軸に沿って 乱数 解析的勾配計算なし 解析的勾配計算あり 随伴勾配 最小二乗問題 のみ適用

(30)

数値実験

(31)

関数を最小化する点の算出

(1) 空間2D、スタディ:定常、完了 (2) ジオメトリで矩形(幅6、高さ6)を中心まわり に作成 (4) コンポーネント1:定義:変数 変数に以下を設定する (5) スタディを右クリックし、最適化を追加 (6)最適化の設定ウィンドウで、右記を設定 (7)スタディを右クリックし、計算実行 (8)1Dプロットグループでテーブルグラフ をプロットする。 (3) グローバル定義:パラメタで a,b を数値で定義 後程の制御変数および パラメタの設定の準備 名前をフルで記述

(32)

関数の分布

M. Hashiguchi and D. Mi 2018 32

(0,0)で関数が最小になることがわかる この問題は検討対象にできる!

(33)

座標探索

開始点 最終点 f 5*a^2-6*a*b+5*b^2 最適化を利用する場合には、設計変数a,bを利用できるように、変数 において、fをa,bを使った表現式で記述する。

(34)

探索軌跡の描画法

M. Hashiguchi and D. Mi 2018 34

ソルバを切りかえて計 算後は、ここを再度、 手動で選択のこと!

(35)

結果

Nelder-Mead 開始 終了 座標探索 開始 終了 BOBYQA 開始 終了 COBYLA 開始 終了

(36)

結果(続き)

M. Hashiguchi and D. Mi 2018 36

モンテカルロ

(37)

別の関数形

(0,0)で関数が最小になることがわかる この問題は検討対象にできる!

一方で、関数形は接線不連続なので、 どういう結果になるか。

(38)

座標探索

開始点

この問題には座標探索が使えないことはよく知られている。 f abs(a+b)+3*abs(b-a)

(39)

ソルバーを変更してみる

f abs(a+b)+3*abs(b-a)

開始点 最終点

COBYLA

(40)

ソルバーを変更してみる

f abs(a+b)+3*abs(b-a) 開始点 最終点 Nelder-Mead 探索できた。 M. Hashiguchi and D. Mi 2018 40

(41)

不連続性をもつ目的関数

(42)

各ソルバーの比較

座標探索 × Nelder-Mead ○ BOBYQA ×

COBYLA × SNOPT ○ MMA ○

(43)

バネ系

直列結合 並列結合

(44)

問題設定

𝑘 , 𝑘 を制御して、直列結合での節点の変位𝑥 , 𝑥 を目標値𝑥 , 𝑥 に

一致させる。𝐹は与える。

(45)

COMSOL Desktop

モデルビルダーを利用した実験

𝑥 = 1.8 𝑥 = 7.6

最適化ソルバの選択 (後程、実演)

(46)

グラフによる概観

𝑥 𝑥 𝑥 ~2, 𝑥 ~7 𝐹 = 2.5 𝑘 = 𝐹/𝑥 ~1.25 𝑘 = 𝑥 1 𝐹 − 𝑘1 ~0.5 とすると 後程わかるが、 ほぼ、正解! M. Hashiguchi and D. Mi 2018 46

(47)

計算上の注意点

1.解析的勾配計算なしでは、動かない場合には上限を規定し、 いくつか試行錯誤のこと。 2.後述の解析的勾配計算の場合には、上限なしでも計算できた。 3.後述の最小二乗法では、設計変数の範囲を規定できないので、 問題によっては注意が必要である。

(48)

実演

(49)
(50)

座標探索

5だとエラー になる。

(51)
(52)

COBYLA

(53)
(54)

モンテカルロ

最大反復回数1000まで探す。

範囲を狭めてみる 約2分

(55)
(56)

解析的勾配計算あり

(57)
(58)

MMA

(59)

MMA

https://slideplayer.com/slide/8948423/ Method of Moving Asymptotes

https://onlinelibrary.wiley.com/doi/epdf/10.1002/nme.1620240207 論文のダウンロード

(60)

目的関数と設計変数との関係

𝑘 + 𝑘 𝑢 + −𝑘 𝑢 = 0 −𝑘 𝑢 + 𝑘 𝑢 = 𝐹 𝑓 = 𝑓(𝑢 , 𝑢 ; 𝜒) 𝑥 → 𝑢 , 𝑥 → 𝑢 𝐾 = 𝑘 + 𝑘−𝑘 −𝑘𝑘 𝜕 𝜕𝑘 𝑘 + 𝑘 𝑢 + −𝑘 𝑢 − 0 = 0 𝜕 𝜕𝑘 −𝑘 𝑢 + 𝑘 𝑢 − 𝐹 = 0 𝜕 𝜕𝑘 𝑘 + 𝑘 𝑢 + −𝑘 𝑢 − 0 = 0 𝜕 𝜕𝑘 −𝑘 𝑢 + 𝑘 𝑢 − 𝐹 = 0 1 0 0 0 𝑢 𝑢 + 𝐾 𝜕𝑢 𝜕𝑘 𝜕𝑢 𝜕𝑘 = 0 0 1 −1 −1 1 𝑢 𝑢 + 𝐾 𝜕𝑢 𝜕𝑘 𝜕𝑢 𝜕𝑘 = 0 0 M. Hashiguchi and D. Mi 2018 60

(61)

目的関数と設計変数との関係

𝐾 = 𝑘 + 𝑘−𝑘 −𝑘𝑘 𝜕𝑢 𝜕𝑘 𝜕𝑢 𝜕𝑘 = 𝐾 0 0 − 1 00 0 𝑢 𝑢 𝜕𝑢 𝜕𝑘 𝜕𝑢 𝜕𝑘 = 𝐾 0 0 − 1−1 −11 𝑢 𝑢 𝜕𝑓 𝜕𝑘 = 𝜕𝑓 𝜕𝑢 𝜕𝑢 𝜕𝑘 + 𝜕𝑓 𝜕𝑢 𝜕𝑢 𝜕𝑘 𝜕𝑓 𝜕𝑘 = 𝜕𝑓 𝜕𝑢 𝜕𝑢 𝜕𝑘 + 𝜕𝑓 𝜕𝑢 𝜕𝑢 𝜕𝑘

(62)

感度計算と検証

先に導出した式を変数に定義し、COMSOLの数値解と比較し、一致を確認した。 解析的勾配計算ありでは、感度を表示できる。

(63)

随伴法による勾配計算の説明

この方法は、目的関数が解uの連続関数であると仮定して、微分 を解析的に計算する。 解uに関する有限要素法による方程式 設計変数𝝌に関する微分 展開 解uの設計変数𝜒による微分 公式を得る 目的関数𝑓(𝒖, 𝝌)の勾配を求める公式を得る 𝜕𝑓 𝜕𝝌 = 𝜕𝒖 𝜕𝝌 𝜕𝑓 𝜕𝒖 注意: ベクトル=テンソル・ベクトル、スカラ/ベクトル=ベクトル、ベクトル/ベクトル=テンソル

(64)

寸法最適化

(65)

図形の問題

固定点 固定点 円周上に拘束された点 面積が最大となるには 𝑆 𝜃 = 1 2R × sin 𝜃 × 𝐴𝐵 𝐴 𝐵 𝑅 0 < 𝜃 < 𝜋 𝜃 = 𝜋 2 𝑥 = 𝑅 cos 𝜃 𝑦 = 𝑅 sin 𝜃 𝜃 を導入することで問題を簡潔に表現できる。

(66)

最適化による最大化

(67)

手法の比較

座標探索 Nelder-Mead

(68)

マイクロ流路への応用

M. Hashiguchi and D. Mi 2018 68

ジオメトリをベジエ曲線で表現

ベジェ曲線はパラメタ化されており、 寸法最適化に利用される。

(69)

電気浸透流

電流、流体を計算

移動時間を算出

(70)

実際に化学種を流してみる

M. Hashiguchi and D. Mi 2018 70

(71)
(72)

2次元片持ち梁への応用

L 0 T 0 A点 X 上辺に境界荷重を受ける片持ち梁(左端固定)において、点Aでの変位を目標 値より小さくするという拘束条件下で質量(面積)を最小にする。 変位:solid.disp < 5 mm M. Hashiguchi and D. Mi 2018 72

(73)

境界変形による形状最適化

https://www.comsol.jp/model/an-introduction-to-shape-optimization-in-comsol-46731 この範囲の境界形状を変更

(74)

形状変化を構造解析に反映するた めに、変形形状 を利用する

関数による形状変更による最適化

バーンスタイン曲線を利用

(75)

形状変更の際の拘束条件

(76)

バーンスタイン多項式による基底関数の利用

𝐵 = 𝐶 1 − 𝑥 + 𝐶 (𝑥) 𝐵 = 𝐶 1 − 𝑥 + 𝐶 𝑥 1 − 𝑥 + 𝐶 𝑥 𝐵 = 𝐶 1 − 𝑥 + 𝐶 𝑥 1 − 𝑥 + 𝐶 𝑥 1 − 𝑥 + 𝐶 𝑥 1 − 𝑥 + 𝐶 𝑥 0 1 0 1 . . . 𝐵 𝐵 ウィキペディア x=0とx=1を根にもつ多項式の組み合わせ M. Hashiguchi and D. Mi 2018 76

(77)

関数への制限

𝐵 = 𝐶 1 − 𝑥 + 𝐶 𝑥 1 − 𝑥 + 𝐶 𝑥 1 − 𝑥 + 𝐶 𝑥 1 − 𝑥 + 𝐶 𝑥 𝐶 =0 𝐶 < 𝐶 𝐶 = 0.9とする 今回は、 グローバルコントロール変数の 上限を設定する

(78)

𝑑𝐵 (𝑋)/𝑑𝑋 > 0 長さ方向のいたるところで微係数を正に拘束する。 • 単調に減少する厚み • 左端での拘束 • 右端で規定した最大値を超えないこと

不等式拘束を追加する

不等式拘束 M. Hashiguchi and D. Mi 2018 78

(79)

モデルビルダー

𝐶 < 0.9

ポイント和不等式拘束 ポイント毎の不等式拘束

(80)

計算結果

SNOPTによる計算結果(MMAでも同様な計算結果になった)

(81)

異なる方法での結果の比較

• 寸法最適化 – 明解 – 計算時間がかかる – 誰でも使える • 形状最適化 – セットアップが手間 – 自身での工夫を要する • トポロジー最適化 – 斬新なデザイン – 研究を要する – 解釈を必要とするデザイン – 自身で修練を積む必要あり

(82)

最適化に関する記述について

(83)

伝熱問題での説明

5 cm 2 cm 1 cm 1 cm 𝑇 𝑄 𝑇 𝑄 断 熱 熱伝達 熱伝達 5 cm Tave2 Tave1 Tave3 目的:同一材料を3分割した材料の各領域の平均温度を指定値にしたい。 設計変数: 温度、境界熱源、熱伝達係数 最適化ソルバ:SNOPT

(84)

モデルビルダ

平均温度の定義 形状作成 材料:銅 伝熱 境界条件 目的関数の記述の説明 最適化ソルバー 設計変数の設定 M. Hashiguchi and D. Mi 2018 84

(85)
(86)

目的関数の記述について

目的関数を和として評価する場合、複数個所に分けて記述できる。

注意:変数名はフルで記述すること

(87)

目的関数の記述(続き)

ジオメトリックエンティティレベル毎に目的関数を記述し、 それらの和を目的関数として利用できる。

(88)

目的関数の構成

(89)

目的関数のスケーリング

目的関数は1の大きさになるようにするとよい。

𝜌

𝑀 𝑑𝑆 = 1

(90)

パラメタ推定

(91)
(92)

実験式のパラメタ推定

非線形材料の伸びλと印加圧力Pの関係式が与えられているが、 係数C10、C01を推定したい。

(93)

モデルビルダ

(94)

実験値を用意する

実験値の第1列に相当するパラメタが、 COMSOL側の変数lambdaに対応すると 決める 実験値の第2列が、COMSOL側の変数 Pに対応すると決める (実験値を外部ファイルから読み込む 場合は、後ほど説明する) 実験値をマニュアルで入力する。 M. Hashiguchi and D. Mi 2018 94

(95)

ソルバー

Levenberg-Marquardt

(96)

計算結果の検証

実験値を表示する 変数を利用できる。

(97)

伝熱モデルで材料を推定してみる

𝑇 以外の境界条件を固定し、𝑇 を変化させたときの温度を算出し、 それらを実験データとする。

(98)

数値実験データの作成

(1)データ採取点を下図のように決める。(ジオメトリでポイント作成) (2) スタディ1にパラメトリックスイープを追加し、 温度T1を変化させる。 (3) 結果:計算値で上述の3点を選び、ポイント評価をし、 クリップボードにコピー後、エクセルにペーストする。 (4) エクセルファイルを保存しておく。 ここからcsvファイルを作成し、それをファイルとして読み込む。 M. Hashiguchi and D. Mi 2018 98

(99)

パラメタ推定

測定点の情報を取り出す

あとでプロットする ときの名前(任意)

(100)

結果

真値400 W/(m・K)に対して405.26 (1.3%の誤差) <面白いこと> 外部ファイルからではなく、結果テーブルを 利用すると、400と正確値が算出される。 従って、Verificationを最も正確に行う場合 には、結果テーブルを利用する方が良い。 テーブルのフル精度表示による出力も可。 M. Hashiguchi and D. Mi 2018 100 このことを避けるためには 次ページのフル精度表示を行った 上で、外部ファイルに吐き出せば良い。

(101)

テーブルのフル精度表示

(1) 外部ファイル(csv)へのテーブル出力の前に、

フル精度ボタンをクリックすることで、表示桁をフル精度に変更できる。

(2) 正確値を推定できる。

(102)

時系列データが与えられた場合

(103)

伝熱への応用

Ed Fontes https://www.comsol.jp/video/using-the-optimization -module-for-parameter-estimation 温度測定データ T(t) 温度の時系列データから熱伝導係数を推定する

(104)

モデルビルダ

(105)

結果

(106)

化学工学への応用

温度の異なる 5種類の時系列 データを読み込む

(107)

結果

計算時間 19秒

(108)

アプリ

(109)
(110)

モデルビルダ

外部ファイル(.csv)を読み込む

(111)
(112)

音振動とプログラミング

(113)

アプリケーションライブラリ

(114)

アプリによる概要説明

モデルビルダーでアプリケーションビルダーを クリックすればそちらへ移行する アプリの実行のみを行う場合 問題説明、理論、参考文献、操作手順、結果の説明など M. Hashiguchi and D. Mi 2018 114

(115)

すぐに計算に取り掛かれる

(116)

モデルの内容を見る

アプリケーションでない項目の例題は「開く」でモデルビルダーを表示する。 モデルビルダへ モデルビルダーでアプリケーションビルダーを クリックすればそちらへ移行する アプリの実行のみを行う場合 問題説明、理論、参考文献、操作手順、結果の説明など M. Hashiguchi and D. Mi 2018 116

(117)

モデルビルダーの内容

最適化がない! 何故?

(118)

割線法(セカント法)

𝑓 𝑥 = 0 となる𝑥 を求める。 𝑥 = 𝑥 − 𝑓(𝑥 ) 𝑥 − 𝑥 𝑓 𝑥 − 𝑓(𝑥 ) 𝑓 𝑥 = 𝑓 𝑥 + 𝑥 − 𝑥 ~𝑓 𝑥 + 𝑓 (𝑥 )(𝑥 − 𝑥 ) いま、𝑓 𝑥 = 0 となったとすると 𝑓 𝑥 + 𝑓 𝑥 𝑥 − 𝑥 = 0 𝑥 = 𝑥 − 𝑓(𝑥 ) 𝑓 (𝑥 ) これはニュートン法であり、 関数値と関数の微分値の 両方の計算が必要である。 𝑓 𝑥 = 𝑓 𝑥 − 𝑓(𝑥 ) 𝑥 − 𝑥 後退差分で近似 𝑓の計算のみで済む (計算速度が速い) M. Hashiguchi and D. Mi 2018 118

(119)

アプリケーションビルダへ

ここを分析して みる

(120)

FEMを介した代数方程式

FEMの役目 構造物の腕の長さLを決めて、その固有振動数fを計算する 関数化 frequency( 引数 L ) こうすれば、長さLの構造物の固有振動数frequency(L)を目標値targetfqに 一致させたいという要求は、見かけ上、次の代数方程式で表現できる。 ただし、𝑓(𝐿) = frequency L − targetfq 𝑓(𝐿) = 0 数値解法として、セカント法を利用すれば、Lを求めることができる。 COMSOLではアプリケーションビルダのメソッドエディタで プログラムを実装できる。 M. Hashiguchi and D. Mi 2018 120

(121)

FEMの関数化

// Function used in compute_and_play method // Syntax: double f = frequency(double L)

model.param().set("Lp", pronglength); model.study("std1").run();

set_results(); // in case there was no solution included in the application file

double[][] d = model.result().numerical("gev1").getReal(); f = d[0][0]; メソッド frequency Lpにpronglengthの数値をセットする FEMの実行 計算された固有周波数をfとする

(122)

セカント法

long t0 = timeStamp(); // 計算時間の記録の初期化

solution_state = "nosolution"; // showProgress();

if (findlength) { // findlength declared variable linked to check box in main form

setProgress(0, "Computing prong length."); // セカント法の開始:

int MAXITERATIONS = 20; // 最大反復回数

double L1 = 85; // 長さの初期値 20 Hz<fq<10,000 Hz. double L2 = 60; // 長さの初期値 20 Hz<fq<10,000 Hz. double carry = L1; carryにL1をコピーしておく

double f2 = frequency(L2)-targetfq; // L2に対するFEM計算結果でf(L2)を計算 setProgress(100/MAXITERATIONS); // プログレスバーの設定 fq = frequency(L1); // 画面表示用の変数、L1に対するFEM計算結果をfqとする setProgress(20); メソッド b_solved_and_update_results M. Hashiguchi and D. Mi 2018 122

(123)

セカント法(続き)

double f1 = fq-targetfq; //f(L1)を計算

L1 = L1-f1*((L1-L2)/(f1-f2)); // セカント法 L2 = carry; //caryyの内容をL2にコピー

L1 = Math.max(L1, 1e-3); //Javaの数学ライブラリの最大値計算関数

int k = 2; //整数kを2とする

while (k < MAXITERATIONS && Math.abs(f1) > fqtol) {

f2 = f1; //f1の内容をf2に置き換える fq = frequency(L1); //fqをL1でのFEM計算結果とする f1 = fq-targetfq; //f1を更新する carry = L1; // carryにL1をコピーする L1 = L1-f1*((L1-L2)/(f1-f2)); //新しいL1を算出する L2 = carry; //carryをL2にコピーする L1 = Math.max(L1, 1e-3); // k = k+1; setProgress(k*100/MAXITERATIONS); } 𝑥 = 𝑥 − 𝑓(𝑥 ) 𝑥 − 𝑥 𝑓 𝑥 − 𝑓(𝑥 ) 𝐿 𝐿 𝐿 𝐿 carry secant 𝑓 𝑓 𝑓 𝑓 FEM FEM FEM 反復計算

(124)

セカント法(続き)

L1 = Math.round(L1*100)/100.00; // we won't get more than 2 decimal accuracy (mesh limits the accuracy rather than the secant method)

model.param().set(“Lp”, L1); グローバル定義:パラメタLpへの収束値L1のセット

fq = fq; 収束値L1に対応する固有周波数のセット

if (Math.abs(f1) > fqtol) {

error("Computation terminated after "+toString(MAXITERATIONS)+" iterations. Frequency diff: "+toString(Math.abs(f1)));

} }

else { // "Find prong length" check box is cleared in main form

setProgress(0, "Computing frequency."); setProgress(25);

fq = frequency(model.param().evaluate("Lp")); setProgress(75);

}

(125)

セカント法(続き)

with(model.result("pg1"));

set("looplevel", new String[]{"7"}); // The first real eigenfrequency always the 7th computed eigenfrequency in solid mechanics

endwith();

model.result().numerical("gev1").setResult();

useGraphics(model.result(“pg1”), “graphics1”); ウィンドウ(graphics1)への表示 zoomExtents(“graphics1”); 長さが変わったので画面にフィットさせる

setProgress(100); プロセス100%とする

play_sound(); 音を出す

model.setLastComputationTime(timeStamp()-t0); // record computation time solution_state = "solutionexists";

closeProgress();

(126)

参考

COMSOL のVideo教材やBLOGはぜひご覧ください。

(127)

ご清聴ありがとうございました

1ヶ月無料トライアル*の入手や各種セミナ、資料などのご要望がございま したら気軽に下記までお知らせください。 <問い合わせ先> 第1営業部 03-5282-7040 計測エンジニアリングシステム株式会社 *ウェブからのお申込み http://www.kesco.co.jp/comsol/trial.html

参照

Outline

関連したドキュメント

東京都北区勤務時間外の災害等に対応する非常配備態勢に関する要綱 19北危防第1539号 平成19年9月6日 区長決裁 (目 的) 第 1

継続企業の前提に関する注記に記載されているとおり、会社は、×年4月1日から×年3月 31

LF/HF の変化である。本研究で はキャンプの日数が経過するほど 快眠度指数が上昇し、1日目と4 日目を比較すると 9.3 点の差があ った。

※定期検査 開始のた めのプラ ント停止 操作にお ける原子 炉スクラ ム(自動 停止)事 象の隠ぺ い . 福 島 第

保管 容器 蓋脱着 装置.

二酸化窒素の月変動幅は、10 年前の 2006(平成 18)年度から同程度で推移しており、2016. (平成 28)年度の 12 月(最高)と 8

「東京都スポーツ推進計画」を、平成 30 年 3 月に「東京都スポーツ推進総合計画」を策定すると ともに、平成 25 年

「緑の東京 10 年プロジ ェ ク ト 」 の 施 策 化 状 況 2012(平成 24 年3月). この施策化状況は、平成 19 年6月策定の「緑の東京 10