実践! 密度法によるトポロジー最適化に挑戦してみようフリーFEMソフトとExcelマクロで形状最適化(7)(6/6 ページ)

» 2022年04月13日 10時00分 公開
前のページへ 1|2|3|4|5|6       

【付録】ρiの濃淡図を作成するプログラムリスト

 Excelのグラフ表示機能に図19のような濃淡図を表示するものはなく、「おやっ?」と思った読者もおられるでしょう。ここでは、濃淡図の描き方を説明します。実は、濃淡図のベースになっているのは、図21に示した散布図です。

濃淡図の説明(1) 図21 濃淡図の説明(2)[クリックで拡大]

 図22のようにプロットを右クリックして、ショートカットメニューから「データ系列の書式設定(F)…」を選択します。そして、マーカーの形状を大きな正方形にして、枠線を「線なし(N)」にします。

濃淡図の説明(2) 図22 濃淡図の説明(2)[クリックで拡大]

 次に、プロットをもう1回クリックします。これでプロット全体を選択しているのではなく、1つのプロットを選択していることになります。そして、図23のようにプロットの色を変更します。

濃淡図の説明(3) 図23 濃淡図の説明(3)[クリックで拡大]

 最後に、図24のようにプロットの隙間が埋まるようグラフを縮めれば完成です。

濃淡図の説明(4) 図24 濃淡図の説明(4)[クリックで拡大]

 この一連の操作をExcelの「マクロを記録」機能を使ってプログラム化していたのでした。プログラムリスト(プログラム2)を以下に記します。

Sub Topology_optimization_Density_plot(isw As Integer)
Dim ne As Integer, i As Integer, ro As Integer
Dim density As Double, plotsize As Integer
Dim density_max As Double, density_min As Double, density_target As Double
Dim col As Integer
	
density_max = 1#: density_min = 0#
ne = Cells(4, 5)
ro = 10
ActiveSheet.ChartObjects("グラフ 1").Activate
	
For i = 1 To ne
	ro = ro + 1
	
	If isw = 1 Then
		density = Cells(ro, 14)
	ElseIf isw = 2 Then
		density = Cells(ro, 24)
	Else
		MsgBox "Unexpected isw, isw = " & CStr(isw), 16, "Error in Topology_optimization_Density_plot"
		Stop
	End If
	
	col = 128 - CInt(256 * (density - 0.5))
	
	If col > 255 Then col = 255
	If col < 0 Then col = 0
	
	ActiveChart.FullSeriesCollection(1).Points(i).Select
		With Selection.Format.Fill
			.Visible = msoTrue
			.ForeColor.RGB = RGB(col, col, col)
		End With
Next i
	
End Sub
プログラム2

⇒ 連載バックナンバーはこちら

Profile

高橋 良一(たかはし りょういち)
RTデザインラボ 代表


1961年生まれ。技術士(機械部門)、計算力学技術者 上級アナリスト、米MIT Francis Bitter Magnet Laboratory 元研究員。

構造・熱流体系のCAE専門家と機械設計者の両面を持つエンジニア。約40年間、大手電機メーカーにて医用画像診断装置(MRI装置)の電磁振動・騒音の解析、測定、低減設計、二次電池製造ラインの静音化、液晶パネル製造装置の設計、CTスキャナー用X線発生管の設計、超音波溶接機の振動解析と疲労寿命予測、超電導磁石の電磁振動に対する疲労強度評価、メカトロニクス機器の数値シミュレーションの実用化などに従事。現在RTデザインラボにて、受託CAE解析、設計者解析の導入コンサルティングを手掛けている。⇒ RTデザインラボ


前のページへ 1|2|3|4|5|6       

Copyright © ITmedia, Inc. All Rights Reserved.