HS-1550: HyperMeshとAbaqusを使用した形状最適化スタディ
HyperMeshとHyperStudyを使った形状最適化を実行する方法について学習します。有限要素ソルバーとしてAbaqusを、また形状のパラメータ化を行うためにHyperMorphを使用します。また本チュートリアルでは、HyperMeshとHyperStudyがWindows、ソルバーがUNIXプラットフォーム上にある場合に問題の解を得る方法についても説明します。
本チュートリアルでは、以下の項目について学習します:図 1.

- HyperMorphを使用した形状変数の作成
- HyperMesh内からのスタディの実行
- HyperStudyを使用した形状パラメータ化の実行
- スタディのセットアップ
- UNIX上でAbaqusを実行するためのスクリプトの作成と、プリファレンスファイル内でのスクリプトの登録
- 最適化スタディの実行

HyperMeshでモデルを読み込みます。
- Launcherを起動します。
- スタートアップダイアログで、HyperMeshが選択されていることを確認します。
- プロファイルにはAbaqusを選択します。
- Create Sessionをクリックします。
- メニューバーから をクリックします。
-
Open Modelダイアログで、link.hmファイルを開きます。
有限要素モデルがグラフィックス領域内に現れます。
図 2.
HyperMorphによる形状のパラメータ化
-
必要に応じて、HyperMorphパネルを有効にします。
-
ドメインを作成します。
図 4.
ドメインとハンドルが生成され、メッシュの形状を操作したり形状最適化に必要な形状基底ベクトルを生成したりするために使用されます。図 5.
- returnをクリックします。
-
リンクの外側エッジについて入力変数を作成します。
1つ目の形状が生成されます。
図 7.
-
形状を保存します。
- メニューバーからFile(ファイル) Save(保存)をクリックし、モデルを保存します。
- ソフトウェアを終了します。
基本的なソルバースクリプトのセットアップ
-
テキストエディタで、HS-1550_solverScript.pyを開きます。
HS-1550_solverScript.pyファイルは、ローカルマシン上でのソルバーの実行を可能にします。このscriptスクリプトは、ユーザーが指定した引数を用いてAbaqusソルバーをコールします。
- ファイル内のパスを、ユーザーのマシン上のAbaqus実行ファイルに変更します。
-
メモリ要求など、追加の引数を変更します。
# import statements import os import platform import subprocess import sys # user edits------------------------------------------------------------------- # set executable path use forward slashes (/) exe_path = '/my/path/to/executable/abaqus.exe' # set abaqus arguments command_arguments_list = ['job=' + sys.argv[1], 'memory=200Mb' , 'interactive'] # set log file name logFile = 'logFile.txt' # ----------------------------------------------------------------------------- # open log file f = open('logFile.txt', 'w') # get environment information plat = platform.system() hst_altair_home = '' strEnvVal = os.getenv('HST_ALTAIR_HOME') if strEnvVal: hst_altair_home = strEnvVal else: f.write('%EXA_xx-e-env, Environment variable not defined ( HST_ALTAIR_HOME )') exe_path = os.path.normpath(exe_path) lstCommands = [exe_path] + command_arguments_list # echo log information f.write('platform: ' + plat + '\n') f.write('hst_altair_home: ' + hst_altair_home + '\n') f.write('command: ' + exe_path + '\n') #Write the command in log file f.write('Running the command:\n' + exe_path + ' ' + ' '.join(command_arguments_list) + '\n') #Run the command p1 = subprocess.Popen(lstCommands, stdout=subprocess.PIPE , stderr=subprocess.PIPE) # log the standard out and error f.write('\nStandard out' + '\n' + p1.communicate()[0] + '\n') f.write('\nStandard error' + '\n' + p1.communicate()[1] + '\n') # close log file f.close()
- オプション:
スタディディレクトリがUnix上にあり、ソルバーがUnix上で実行する場合のWindowsでのHyperStudyの実行
制約事項: リモートマシンのみリモートのUnixマシン上でコマンドを実行するには、コマンドをリモートでコミュニケートするためにローカルプログラムがインストールされている必要があります。この例では、プログラムsshが使用されますが、それ以外の同様な、もしくはより良いプログラムも存在します。ほとんどの場合、プログラムのプロトコールは、パスワードからの認証を要します。このセットアップが上手く機能するには、アクティブなパスワードのエントリなしに機能するよう環境設定しなければなりません。このセットアップは、ユーザーのネットワーク管理者のアシストを要する場合があります。ssh_remote.batファイルは、Windows上で実行しているHyperStudyセッションからUnix上のスクリプト(run_abaqus.sh)を実行するためにのサンプル(Windows)バッチファイルです。
ssh user_name@unix_machine "./run_abaqus.sh %1 %HST_APPROACH_VARNAM % %HST_STEP_INDEX% %HST_APPROACH_MODELS%"
このバッチファイルは、sshコマンドを用いてUnixマシンにログインし、HyperStudyにより生成されたファイルについてソルバーを実行します。 このスクリプトは、ソルバースクリプトとしてHyperStudyで登録されます。
ソルバーとしてAbaqusを登録
- HyperStudyを開始します。
-
メニューバーから をクリックします。
Register Solver Script(ソルバースクリプトの登録)ダイアログが現れます。
-
ソルバースクリプトを追加します。
図 8.
-
スクリプトAbaqusのパス列で、
をクリックします。
-
Openダイアログで、python.exeファイルを開きます。
ヒント: 同じパスおよびファイルをPythonのパス欄からコピーペーストすることも可能です。
-
AbaqusスクリプトのUser Arguments(ユーザー引数)列で、
をクリックします。
- Openダイアログで作業ディレクトリをナビゲートし、HS-1550_solverScript.pyファイルを開きます。
- オプション:
REMOTEマシンのみ: ソルバーとしてAbaqusを登録。
図 9.
- OKをクリックします。
スタディのセットアップの実行
-
以下の方法で新規スタディを開始します:
- メニューバーから、 をクリックします。
- リボン上で
をクリックします。
-
Add Study(スタディの追加)ダイアログでスタディの名前を入力し、スタディの場所を選んでOKをクリックします。
重要: スタディディレクトリは、マッピングされたUNIXマシンのホームディレクトリでなければなりません。
- Define Models(モデルの定義)ステップに進みます。
-
HyperMeshモデルを追加します。
図 11.
-
変数をインポートします。
図 12.
- Define Input Variables(入力変数の定義)ステップに進みます。
-
入力変数の下限値、初期値、上限値を確認します。
図 13.
ベースランの実行
- Test Models(モデルをテスト)ステップに進みます。
-
Run Definition(計算実行)をクリックします。
スタディのDirectory(ディレクトリ)内に、approaches/setup_1-def/ディレクトリが作成されます。approaches/setup_1-def/run__00001/m_1には、ベースランの結果である入力ファイルが含まれます。
出力応答の作成と評価
ここでは2つの出力応答:MassとMax_Stressを作成します。
- Define Output Responses(出力応答の定義)パネルに進みます。
-
Mass出力応答を作成します。
-
Max_Stress出力応答を作成します。
- Evaluate(評価)をクリックして出力応答値を抽出します。
最適化の実行
-
Optimization(最適化)を追加します。
- Explorer(エクスプローラ)内で右クリックし、コンテキストメニューからAdd(追加)を選択します。
- Add(追加)ダイアログでOptimization(最適化)を選択します。
- Definition from(定義元)に、Setup(セットアップ)を選択しOKをクリックします。
- ステップに進みます。
- Objectives/Constraints - Goals(目的 / 制約条件 - 目標)タブをクリックします。
-
目的関数を追加します。
- Add Goal(目標を追加)をクリックします。
- Apply On(応答)列に、Mass (r_1)を選択します。
- Type (タイプ)列に、Minimizeを選択します。