WSL2に入れたEasyISTRでFrontISTRを使う
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」などとエラーが表示されて起動しなかった場合は、こちらの記事の対処法をお試しください。
エラーなく、このような画面が表示されたら成功です。

一旦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章のインストールに相当する部分を行いました。
動作確認のため、赤丸のボタンを押してみてください。

左から順に、正常にアプリが起動するか確認してください。
- 作業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
にコピーして使えばよいと思います。

おまけ:ショートカットの作成
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"
ディスカッション
コメント一覧
まだ、コメントがありません