WSL2に入れたEasyISTRでFrontISTRを使う

2020年8月15日CAECAE,FrontISTR,Linux,Ubuntu,Windows,WSL2

EasyISTRという、FrontISTRのフロントエンド的なソフトがあります。これを、Windows 10上のWSL2環境にインストールして使ってみました。

EasyISTRはPythonで作られていて、元々Ubuntu用だったようですが、今はWindows+MSYS環境でも動かせるそうです。

今回は、MSYSを入れるのではなく、WSL2のUbuntuにEasyISTRを入れて、それ以外のソフトは通常通りWindowsに入れて動くように環境をつくってみました。

こんな記事を書いておいてアレですが、EasyISTRを動かすだけの目的でWSL2を使うより、普通にMSYS入れた方が早いと思います。

構築する環境

ある程度シームレスにWindows側とUbuntu側の行き来ができる、というWSL2の特長を生かして、ハイブリッドな感じで環境を構築してみます。EasyISTRのみWSL2のUbuntu 20.04にインストールし、FrontISTR、gnuplot、ParaView、LibreOfficeなどのソフトはWindows側にインストールします。

Windows上での準備

Windows側では、これらのソフトをインストールします。インストール自体、特に引っかかる点はないと思いますので、説明は省略します。

FrontISTR

CAEのソルバーです。Windows用のバイナリファイルをダウンロードしてください。今回はv5.1のwith MS-MPI,librariesを使用しました。ダウンロードしたら任意の場所に解凍します。

Windowsで使う分には、この中のfistr1.exeを実行すればよいですが、Linux版EasyISTRだと、拡張子なしの「fistr1」を実行しようとします。そのため、fistr1.exeをコピーして、拡張子なしの「fistr1」ファイルも用意してください。

LibreOffice

CSVファイルを扱うのに、LibreOffice Calcを使用します。CSVファイルはExcelでも開けますが、確か勝手に改行コードを変えたりしてきたと思いますので、LibreOfficeをおすすめします。

ParaView

解析結果の表示(ポストプロセス)で使用します。今回はParaView-5.8.1-Windows-Python3.7-msvc2015-64bit.exeを使用しました。

gnuplot

グラフ描画ソフトです。非線形解析の計算の進み具合を見るときに使います。記事執筆時点、v5.4のWindows版は公開されていないので、一つ前のv5.2.8を使用しました。「Release 5.2.8」というリンクからgp528-win64-mingw.exeをダウンロードしてインストールしてください。

FreeCAD(任意)

形状データを作成するのに必要であれば、インストールしてみてください。

SalomeかPrePoMax

形状データからメッシュを切るときに使用します。私は、Salome-Meca 2018を使っていますが、2019でも良いと思います。

Ubuntu上での準備

Windows 10のWSL2でUbuntu 20.04をインストールし、GUIアプリが動くように設定します。ここら辺は、こちらの記事をご覧ください。

なお、EasyISTRはGTKアプリですので、二つ目の記事で説明しているVcXsrvの追加パラメーター「-nowgl」も設定してください。

次に、UbuntuでPyGObjectが動くように設定します。こちらも別の記事で紹介していますが、ようはUbuntu側でこのコマンドを実行すればOKです。

$ sudo apt install -y python3-gi gobject-introspection gir1.2-gtk-3.0 xbitmaps
$ echo 'export NO_AT_BRIDGE=1' >> ~/.bashrc

続いて、EasyISTRで使われている、他の依存ソフトもインストールします。

$ sudo apt install python3-pip python3-gi-cairo gnome-icon-theme
$ python3 -m pip install vtk

これで、Ubuntu上での準備は完了です。

EasyISTRのセットアップ

ダウンロードと解凍

EasyISTRをセットアップします。こちらのサイトから最新版のEasyISTR(記事執筆時点ではeasyIstr-3.21.200804.zip)をダウンロードします。ついでに、下の方にあるEasyISTR操作マニュアルもダウンロードしておくと便利だと思います。

ダウンロードしたZIPファイルを任意の場所に解凍します。今回は、C:\wsl\easyIstrに解凍しました。

これ以降、具体的なファイルパスはご自身の環境(ファイルの解凍先)に合わせて読み替えてください。

起動前の初期設定

easyistrEnvの編集

起動前にeasyistrEnvファイルを編集します。(初回起動時、ユーザーディレクトリにファイルが生成されてしまうので、起動前に行います)

C:\wsl\easyIstr\easyistrEnvをテキストエディターで開きます。

14行目の
export easyIstrPath=`pwd`
は、EasyISTRのインストール先を示しています。これを、具体的に
export easyIstrPath=/mnt/c/wsl/easyIstr
に書き換えます。

15行目の
export easyIstrUserPath=~/easyIstrUser
は、ユーザーごとの設定ファイル保存先を示しています。今回は、Ubuntuのホームディレクトリではなく、Windows側のCドライブに保存しておきたいので、EasyISTRインストールフォルダの下に設定したいと思います。なので、これを
export easyIstrUserPath=$easyIstrPath/easyIstrUser
というように書き換えます。

さらに、16行目の
#export PATH=$easyIstrPath:$easyIstrPath/bin:$easyIstrPath/python:$PATH
のコメントアウトを解除し(行頭の#を削除し)、
export PATH=$easyIstrPath:$easyIstrPath/bin:$easyIstrPath/python:$PATH
とします。後述の橋渡しスクリプトをEasyISTRインストールフォルダに保存しますが、それにパスを通しておきたいので、PATHも変更します。

以上で変更終了です。保存してテキストエディターを終了します。

Windowsへの橋渡しスクリプトの配置

WSL2上のUbuntuでEasyISTRを起動した場合、EasyISTRは通常のUbuntuデスクトップ環境にファイルもソフトも存在する、という前提で動作します。

それだとWindows上のファイルやソフトを扱えないため、Windowsへの橋渡しを行うスクリプトを二つ配置します。二つとも、EasyISTRインストールフォルダC:\wsl\easyIstrに保存します。

一つ目は「gnome-terminal」です。EasyISTRは、Linux環境だと随所でgnome-terminalを起動してコマンドを実行しようとするみたいなので、それを横取りしてWSL2のbashで実行します。

#!/bin/bash
# Copyright (c) 2020 astherier
# This software is released under the MIT License.
# http://opensource.org/licenses/mit-license.php
if [ $# -ge 4 ] && [ $4 = "run" ];then
	./run
else
	${@:2}
fi

二つ目は「runWinApp.sh」です。こちらは、WSL2環境のファイルパスをWindowsのパスに変更して、Windows側でソフトを実行するためのスクリプトです。

#!/bin/bash
# Copyright (c) 2020 astherier
# This software is released under the MIT License.
# http://opensource.org/licenses/mit-license.php
enmark='\\'
newArgs=""
for arg in "$@" ; do
	#/mnt/cをC:\に変換
	arg=`echo $arg | sed -e 's#^/mnt/\\([a-zA-Z]\\)#\\U\\1:#'`
	
	#/homeを\\wsl$\Ubuntu-20.04\homeに変換
	arg=`echo $arg | sed -e "s#^/home#${enmark}${enmark}wsl\\$${enmark}Ubuntu-20.04${enmark}home#"`
	
	#その他、/を\に変換
	arg=`echo $arg | sed -e "s#\\/#${enmark}#g"`
	
	newArgs=$newArgs" \"$arg\""
done
echo "runWinApps.sh executes : powershell.exe -command & "$newArgs
powershell.exe -command "&" $newArgs

これで、起動前に行う設定は完了です。

起動後の初期設定

一旦起動してユーザーディレクトリを作成する

ここでEasyISTRを起動してみます。Ubuntuを起動してEasyISTRインストールフォルダに移動し、easyistrを実行します。

$ cd /mnt/c/wsl/easyIstr/
$ ./easyistr

このとき、「PermissionError: [Errno 1] Operation not permitted」などとエラーが表示されて起動しなかった場合は、こちらの記事の対処法をお試しください。

エラーなく、このような画面が表示されたら成功です。

WSLでEasyISTRが起動できました

一旦EasyISTRを終了します。

usingAppの編集

一度EasyISTRを起動すると、$easyIstrUserPath(今回はC:\wsl\easyIstr\easyIstrUser)にユーザーディレクトリが作成されます。

ここに、EasyISTRから各種ソフトを起動するときのコマンドの設定がある、usingAppというファイルがあります。これを編集します。(ver 3.21-200804から設定UIが追加されたようですが、私の環境ではコピペできなかったので、テキストファイルをいじることにします)

C:\wsl\easyIstr\easyIstrUser\data\usingAppをテキストエディター開きます。この「linux用」の所を編集していきます。元の状態では、

#  linux用
linux
    office      loffice --calc
    terminal    gnome-terminal
    fileManager nautilus --new-window
    editor      gedit --standalone
    frontIstrFolder  /opt/FrontISTR/bin        #FrontISTRのインストール先
    paraView    /opt/ParaView-4.4.0-Qt4-Linux-64bit/bin/paraview
    REVOCAP     revocap
    gnuplot     gnuplot
    CAD         freecad
    mesher      salomeMeca

となっています。これを下記のように書き換えます。

#  linux用
linux
    office      runWinApp.sh "C:\Program Files\LibreOffice\program\soffice.exe" --calc
    terminal    runWinApp.sh wt.exe -p "Ubuntu-20.04"
    fileManager runWinApp.sh explorer.exe
    editor      runWinApp.sh "C:\Users\ユーザー名\AppData\Roaming\Mery\Mery.exe"
    frontIstrFolder /mnt/c/ProgramFiles/FrontISTR-v5.1/bin-win-mpi
    paraView    runWinApp.sh "C:\Program Files\ParaView 5.8.1-Windows-Python3.7-msvc2015-64bit\bin\paraview.exe"
    REVOCAP     revocap #動作未確認
    gnuplot     runWinApp.sh "C:\Program Files\gnuplot\bin\gnuplot.exe"
    CAD         runWinApp.sh "C:\Program Files\FreeCAD 0.18\bin\FreeCAD.exe"
    mesher      runWinApp.sh "C:\ProgramFiles\Salome-Meca-2018-w64-0-3\WORK\run_salome.bat"

runWinApp.shは前述の橋渡しスクリプトスクリプトで、こいつにWindows上のアプリのパスと引数を与えてやればOKです。それぞれ、ファイルパスはご自身の環境に読み替えてください。editorやterminalはお好みのものを指定すればよいと思います。

ただし、frontIstrFolderのみ、Ubuntuから見たWindows版FrontISTRバイナリファイルの保存先を指定します。また、REVOCAPについては、動かし方が思いつかなかったので、設定していません(コマンドプロンプトがUNCパスを扱えないので、起動用バッチファイルが使えない)。

編集が終わったら、保存してテキストエディターを終了します。

以上で、初期設定は完了です。

動作確認

前項までで、EasyISTRマニュアル2章のインストールに相当する部分を行いました。

動作確認のため、赤丸のボタンを押してみてください。

EasyISTRの動作確認をします

左から順に、正常にアプリが起動するか確認してください。

  • 作業folderを開く:\\wsl$\Ubuntu-20.04\home\usernameのような、wsl上の作業フォルダを示すUNCパスでエクスプローラーが開く。
  • 端末を開く:指定したターミナルソフトが起動する。
  • tempFolder内のcnt,mshファイルを確認、編集する:指定したテキストエディターで、cntファイルなどが開く。
  • usingAppで設定されているCADを起動する、usingAppで設定されているmesherを起動する:それぞれ、指定したCADソフト、メッシャーソフトが起動する。

あとは、EasyISTRマニュアルの3章に従って片持ち梁の解析を行ってみて、3-8のParaViewで結果を見るところまでできればOKです。

途中、梁のメッシュファイルの作成が必要ですが、それはEasyISTRとは別のソフトで行います。EasyISTRの動作確認が目的なら、C:\wsl\easyIstr\unvFiles\plate.unv~/work/cantileverにコピーして使えばよいと思います。

EasyISTRの動作確認をします

おまけ:ショートカットの作成

WSL2環境にインストールしたアプリケーションは、Windows側にショートカットを作成して起動することもできます。

今回インストールしたEasyISTRの場合、ショートカットのリンク先に次のように登録すると、ダブルクリックで起動できるようになります。
wsl.exe -d Ubuntu-20.04 bash -c "source ~/.profile; /mnt/c/wsl/easyIstr/easyistr"

もしくは、wsl.exeの代わりにUbuntu2004.exeを使用することもできます。
Ubuntu2004.exe -c "source ~/.profile; /mnt/c/wsl/easyIstr/easyistr"