Compose-5010:ComposeでのPythonOMLの使用

Tutorial Level: Advanced

Composeは多言語対応の統合開発環境(IDE)であり、OMLTcl、およびPythonをサポートしています。

このチュートリアルでは、以下の操作方法について説明します:

  • ComposePythonを使用して、PythonOMLとの通信を実現するブリッジを導入する。

ComposeによるPythonのサポートの概要

  1. スタートメニューで、すべてのプログラム > Altair 2025 > Compose 2025を選択します。
    Composeが起動するときのデフォルトの言語はOMLです。ファイル > 新規 > [Pythonファイル]またはファイル > 開く > [Pythonファイル]を選択すると、ComposeによってPythonインタープリターが読み込まれ、PythonCommand Windowが表示されます。
  2. ファイル<installation_dir>/tutorials/Python/reverse_string.pyを開きます。このファイルには、文字列を操作する簡単なPythonコマンドがいくつか記述されています。
  3. 実行をクリックしてreverse_string.pyスクリプトを実行します。
    PythonCommand Windowに実行結果が表示されます。
    注: このスクリプトでは、Pythonのコマンドウィンドウでユーザーとの対話操作が実行されます。

Pythonスクリプトでの計算とプロット

Compose はPython 3.8をサポートします。このディストリビューションには、Pythonの拡張が複数用意され、各種の追加機能を提供しています。
  1. <installation_dir>/tutorials/PythonにあるPythonスクリプトnumpy_matrix.pyを読み込んで実行します。
    import numpy as npコマンドにより、Pythonによる科学計算向けパッケージであるNumpy拡張が読み込まれ、配列に対する簡単な演算が実行されます。

    このスクリプトを読み込んで実行すると、次のようにPythonのコマンドウィンドウで値を照会できるようになります。

  2. Pythonでプロットを生成することもできます。
    次の例は、Matplotlibを使用してPythonで正弦波をプロットする方法を示しています。Matplotlibには、カスタマイズ可能な一連のデフォルト設定が用意されていて、そのプロパティを変更できます。例えば、図のサイズ、線の幅、色、スタイル、軸とグリッドのプロパティ、テキストとフォントのプロパティを変更できます。
  3. ファイル<installation_dir>/tutorials/Python/sine_wave.pyを読み込んで実行します。

ComposeでのPythonスクリプトのデバッグ

PythonスクリプトにComposeのデバッガーを適用できます。
  1. ファイル<installation_dir>/tutorials/Python/debug_demo.pyを読み込みます。
  2. 次の図のようにブレークポイントを設定します。
  3. デバッガーのツールバーを使用して、スクリプトのデバッグに進みます。
    このスクリプトでは、PythonCommand Windowに次の結果が生成されます。

OMLからPythonへのブリッジ

Composeには、OMLPythonとの双方向ブリッジが用意されています。このタスクでは、OMLPythonの間でデータ(変数)を受け渡す方法を確認します。
  1. <installation_dir>/tutorials/Pythonにあるファイルoml_to_python.omlを読み込みます。
    このスクリプトに使用されているコマンドでOMLの変数を作成し、Pythonに渡します。
  2. スクリプトoml_to_python.omlを実行します。
  3. OMLCommand Windowを使用して、次のようにOMLの変数を確認します。
  4. PythonCommand Windowに切り替え、次のコマンドを再生成して、Pythonのワークスペースにどのようなデータが存在するか確認します。
  5. 次のコマンドを入力してPythonの新しい変数を作成します。
  6. OMLCommand Windowに戻り、Pythonで新たに作成した変数を取得します。

PythonOMLのコラボレーション

このタスクでは次の処理を実現する方法を確認します:
  • PythonOMLスクリプトを実行する。
  • OMLPythonスクリプトを実行する。
  1. 次の例では、でhelloという関数をOMLで定義し、それをPythonスクリプトで実行します。Pythonスクリプトで定義した変数が、getpythonvarによってOMLスクリプトで返されます。
  2. このスクリプトでは、OMLファイルであるhello.omlPythonスクリプトで実行する方法を示しています。
    • 指定したOMLファイルが、EvalOmlFile()関数を使用してPythonで実行されます。
    • 指定のOMLファイルで定義した関数が、EvalOmlScript()を使用して評価されます。
  3. python_interface_Demo.pyを実行すると、OMLのコマンドウィンドウに次の結果が得られます。
  4. 次の例では、Pythonでフィボナッチ関数を定義し、それをOMLスクリプトで実行します。
  5. このスクリプトでは、Pythonファイルであるfibonacci.pyOMLスクリプトで実行する方法を示しています。
  6. 指定したPythonファイルが、evalpythonfile()を使用してOMLスクリプトで実行されます。
  7. 指定のPythonファイルで定義した関数が、evalpythonscript()を使用して評価されます。
  8. exporttopython()を使用して、OMLスクリプトからPythonスクリプトに変数がエクスポートされます。
  9. python_interface_Demo.omlを実行すると、Pythonのコマンドウィンドウに次の結果が得られます。

Pythonスクリプトを使用してOMLから読み取るCAE Reader

Composeでは、OMLを通じて、多数のCAE結果ファイルの読み込みに使用できるリーダーを大量に利用できます。OMLPythonとのブリッジが用意されているので、Pythonでこれらのリーダーを活用できます。次の例では、CAEファイル全体を読み取り、そこからデータを抽出して、詳しく処理するためにエクスポートする処理をPythonスクリプトで実現する方法を示しています。

readmultvectors()にファイルを渡すと、ファイルにあるすべての情報を収めたセルが次の書式で返されます:

  • 1番目のエントリにはタイプが記述されます。
  • 2番目のエントリには要求が記述されます。
  • 3番目のエントリにはコンポーネントが記述されます。
  • 4番目のエントリには、上記の3つのエントリに対応する情報で指定されたデータベクトルが記述されます。各行には、さまざまなデータセットが記述されます。

このコマンドは<installation_dir>/tutorials/Python/oml_CAE_python.omlで使用されていて、ComposeOMLスクリプトからPython変数をエクスポートする方法を提供します。

  1. <installation_dir>/tutorials/Python/analysis.pyを読み込んで実行します。
  2. 現在の作業ディレクトリを<installation_dir>/tutorials/Python/に設定し、ファイルoml_CAE_python.omlを読み込んで実行します。
    上記の例では、exporttopython関数を使用してPythonスクリプトのanalysis.pyに変数をエクスポートします。

    これらの変数をPythonで使用して、詳しく処理できます。この例では、これらの値の時系列変化をPythonでプロットします。

  3. oml_CAE_python.omlスクリプトで次のプロットが生成されます。