OPTISHAPE-TS発売20周年記念コラム:OPTISHAPE-TSの歩みと開発秘話

第2話 OPTISHAPE-TS 2004 その1

はじめに

OPTISHAPE-TS 20周年コラムを引き続きご覧頂きありがとうございます。 前回は OPTISHAPE-TS の簡単な紹介をさせて頂きました。

第2回目となる今回は、最初のバージョンである OPTISHAPE-TS 2004 がどのようなソフトウェアだったのか 皆様と一緒に見ていこうと思います。

当時のハードウェア環境を振り返って

OPTISHAPE-TS 2004 のリリース日は 2003年12月9日。今との違いを感じて頂くために、 ソフトウェアの話をする前に当時のデスクトップ PC のハードウェア環境について 簡単に触れてみたいと思います。

当時は Windows XP の全盛期であり、デスクトップ PC は 32bit 環境(※x64 Edition は2005年4月23日に登場)。 CPU は売れ筋が Intel Pentium 4 で、並列処理は数年後の Intel Pentium D (2005年5月)や AMD Athlon 64 X2 (2005年5月)の登場を待つ必要がありました。 メモリーもせいぜい 512 MB で HDD は1台で 120 GB 程度。悲しいことに最近では歴史の話として話題に上がるようになってしまった「フロッピー」のドライブも、 当時のパソコンにはあたりまえのように搭載されていたように思います。

今ではスマートフォンですら数コア CPU に数 GB メモリーは当たり前です。 現在のデスクトップ PC 環境で言うと、売れ筋は Intel Core i5 (14 コア)、メモリーは 16 GB、ストレージは M.2 で 2 TB といったところでしょうか。 最高性能だけを見るなら、コンシューマー向けでも Intel Core i9 (24 コア)、メモリーは最大で 192 GB、ストレージに至っては、1台で 24 TB という HDD まであります。 メモリーやストレージの通信速度も大幅に向上、CPU の命令セットも増えて・・・・・・と、性能を比べると今と昔では雲泥の差があります。 本当に良い時代になりました。

インストール

昔のパソコン環境に思いを馳せつつ、いよいよ OPTISHAPE-TS 2004 を見ていきましょう。 本来なら「折角なので当時のマシンで・・・」と言いたいところではありますが、残念ながら弊社には当時の環境がございません。 廃棄寸前の Windows 7 に Windows XP Mode (※Windows XP の仮想環境)がありましたので、これを倉庫から引っ張ってきて動かしてみたいと思います。

(インストール作業・・・)

インストール作業が終わりましたので、見ていきましょう。

インストール後のスタートメニューの様子がこちらです。 Windows XP の画面を久々に見たという方も多いのではないでしょうか。この形式のスタートメニューや今では存在しないプリインストールソフトの数々に随分と懐かしさを覚えます。 Quint の中の赤枠の上に Qlock というフォルダーがありますが、こちらは昔使われていた弊社独自のライセンスシステムの名前になります。

アイコンや見た目は異なりますが、実のところソルバー、ポストプロセッサ、グラフ、ドキュメントという 基本的な構成自体は現在も継承されて大半が残っております。当時から失われたものを見ても、機能としては現役です。 簡易ポストプロセッサ GIWorks は現在の TS Studio に移行、OPTISHAPE-TS 2004 (※ソルバーのランチャー)やバージョン情報は TS ナビゲーターに統合され、 ボクセルメッシュメーカー BOXER や OPTISHAPE-TS エクスポート(※最適化パラメータ設定用ツール)は TS Studio に統合されました。

変わらない点はいうと、NASTRAN 互換の有限要素モデルと弊社独自のパラメータファイルで解析を流すというスタイルや、 そのパラメータファイル自体のフォーマットも今の OPTISHAPE-TS と差がありません。 最新版でも過去のパラメータファイルを読めるようになっているので、当時の例題を何も編集せずに最新の OPTISHAPE-TS で流すことも可能です。

最適化解析

最適化の実行

試しに当時の例題のモデルを流してみましょう。 以下のモデルに対して、形状最適化を行うというもののようです。

  • ノンパラメトリック形状最適化
  • 目的関数:体積最小化
  • 制約関数:2ケースのコンプライアンス(剛性)と1次モードの固有振動数を維持
  • 製造要件の考慮:上下方向の型抜き

画像は当時の簡易ポストプロセッサ GIWorks でモデルを表示したものとなります。 本当は上下でプロパティが分かれているのですが、プロパティごとに色分けして表示する方法が分からず、単色での表示となっています。

(最適化解析中・・・)

では、最適化をした結果を見ていきましょう。

 

形状を見ると、型抜きを考慮しつつ最適化ができていることが分かります。

最新版との比較

先ほども触れたとおり、OPTISHAPE-TS では過去バージョンをそのまま実行することが可能です。 折角なので今回はバージョン 2004 と最新版である 2022r1 の両方で同じデータを流して結果形状や計算時間も比較してみましょう。 流石に最新版は Windows XP では動かないので、今回は同条件での性能比較のために別のマシンで実行しています。

(最適化解析中・・・)

  • バージョン 2004:約 30 分
  • バージョン 2022r1:計算失敗

「当時の例題を何もせずに OPTISHAPE-TS で流すことが出来る」といったにも関わらず、あっけなく計算に失敗してしまいました。 ここでログを確認すると「| ERROR 90002: 利用できるメモリーが足りません.パラメータ MEM_SIZE の値を確認してください」という一文が出ています。

パラメータ MEM_SIZE とは OPTISHAPE-TS ソルバーを流すための最大メモリー使用量で、今回のデータではこの値が「MEM_SIZE = 502」となっていました。 これはメモリーを最大でも 502 MB しか使えないということを意味します。

OPTISHAPE-TS はバージョンアップによって、使用するメモリー量が少しずつ大きくなる傾向にあります。これは一般に計算機が利用可能なメモリー量は それ以上にどんどん大きくなっていくので、普段は気にする必要がない話です。一方で MEM_SIZE = 502 はどうかと言うと、今回の問題に対してギリギリを攻めた小さい数字だと思います。 つまり、当時は問題がなかったけれど今のソルバーではメモリーが足りないというのが失敗した理由になります。 最初の例題ということを考えればもう少し余裕を持たせても良いのでは?と個人的には思ってしまいます。

少し考察するために、当時のハードウェア環境の話を振り返ってみましょう。当時のデスクトップ PC の環境としてメモリー量 512 MB というのはひとつの一般的な数字でした。 このメモリー 512 MB を搭載したマシンで設定して問題のないギリギリの値が502だった・・・のかなと思います。 実際のところ私は当時まだ入社していなかったので、この話はあくまでも想像にはなります。ただ、今のように平然と数ギガ単位のメモリー量を指定するのが 難しかったのは想像に難くないです。

では改めて、メモリー量を MEM_SIZE = 1500 にして流してみましょう。ここで平然と数ギガのメモリー量を指定できないのは当時のソルバーが 32 bit プログラムであり、プログラムが占有できるメモリー量の最大が 1800 MB という点にあります。細かな話は除きますが、今回はMEM_SIZE = 1500を指定して計算を流します。 また、最新版の方には並列で流れないようにするパラメータ(SE_OPTION = 0)を追加して、計算条件をなるべく同じにします。

(最適化解析中・・・)

無事に流すことが出来ました。今回はメモリー量という点が問題ではありましたが、それ以外は修正せずに当時の例題を流すことが出来ました。 折角なので結果形状も比較してみましょう。

 

右がバージョン 2004 の結果、左がバージョン 2022r1 の結果です。比較すると結果形状が大きく異なります。

形状が異なる原因

実はこれ、OPTISHAPE-TS 2022 の不具合が原因だと発覚しました。 詳細はユーザーページ内の不具合情報ページ(※)に譲りますが、 固有値の制約を初期形状よりも下がらないようにしないといけないところ、 古いパラメータファイルを最新版に読み込んだ際に、初期形状よりも上がらない設定に変わってしまっていました。 原因も分かったところで、改めて修正して流してみます。
OPTISHAPE-TS不具合情報(IDとパスワードが必要です.)

(最適化解析中・・・)

 

細かい形状の差はあるものの、全体的にはバージョン 2004 とほぼ同等の結果が得られました。 なかなか格好のつかない結果比較となってしまいましたが、汚名返上をかねて今度は計算速度に着目して比較をしてみましょう。

計算速度の比較

計算時間のほうに目を向けてみると、だいぶ短くなっていることが分かります。並列はオフにしているので純粋にシングルコア同士の時間差となります。 古いソルバーのソースを見たことがないので推測も含みますが、並列以外の様々な高速化が追加されたこと、最新版は CPU の新しい命令セットへの最適化が出来ていることなどが要因ではないかと思われます。

  • バージョン 2004: 約 28 分
  • バージョン 2022r1: 約 9 分

せっかくなので、並列スレッド数や静弾性解析ソルバーの変更、不要な結果ファイル出力も除外して現在の一般的な計算時間も見てみましょう。

  • バージョン 2004: 約 28 分
  • バージョン 2022r1: 約 9 分
  • バージョン 2022r1(並列などの変更): 約 5 分

どうでしょうか、随分と速くなりました。最初が28分ということを考えると雲泥の差です。

もっと色々と試してみたいところではありますが、バージョンアップと計算時間に関する深掘りは別の機会でしっかりとやりたいと思います。

例題自体のアップデート

先ほどのバージョン 2004 の例題は、最初の例題としては盛りだくさんなものに感じます。

バージョン 2004 には「チュートリアル」と「例題」の2つが入っていて、前者にはFEMAPを例にメッシュ作成から最適化を流すまでの手順が、 後者には最適化を流す例題だけが入っていました。 推測にはなりますが、操作方法はチュートリアルに任せつつ例題は1つの最適化で剛性と固有値の両方を考慮、 さらに製造要件である型抜きも考慮して最適化が出来るということをアピールする意図で少し盛りだくさんなモデルになったのかなと考えています。

最新版ではどうなっているでしょうか。 基本的な考え方はバージョン 2004 の頃と同じで、チュートリアル(基本編)で手順を詳細に紹介し、チュートリアル(応用編)では詳細な手順は少なめに 各機能の使い方を例題を交えて紹介しています。1つの例題あたりの最適化の内容は控えめで、最初の例題(チュートリアル基本編の 2-1.ノンパラメトリック形状最適化)を例に見ると 解析ケースは静弾性解析 1 ケースで必要メモリー量は約 300 MB。計算時間はシングルコアで 4 分程度という感じです。 最適化の繰り返し回数が増えていたり、説明のために全ステップの結果を出力していたりと一概に比較はできませんが、かなりシンプルに仕上がっています。

製品のアップデートというと新しく追加された機能や修正された不具合に目が行きがちですが、 こうした例題自体の改修も使い始めのつまずきを減らす立派なアップデートと言えます。

例題数自体も大幅に増えているので、この機会にそこも紹介させてください。 バージョン2004 ではチュートリアル 2 題、例題 8 題で合計 10 題だったのに対して、現在はチュートリアル基本編 8 題、応用編 71 題で合計 79 題となっている上に、 例題ひとつひとつの説明自体もバージョン 2004 の頃と比べると充実したものとなっています。

おわりに

Windows 11 でのランタイムエラー、古いライセンスが故の問題・・・・・・と、裏では書き切れない問題も多く色々と苦労しました。 当初はバージョン 2004 だけで1回分と考えていましたが予想以上に分量が多くなってしまったため、2回に分けて続きは次回という形にしたいと思います。

*****

2024年2月20日
株式会社くいんと 技術開発部
OPTISHAPE-TS プロダクトリーダー
島田 誠


★ご意見・ご感想はこちらへ★
https://www.quint.co.jp/cgi-bin/qrepo-impr.cgi


第1話第3話

OPTISHAPE-TS20周年記念コラム TOP