構造解析ソフト（FrontISTR, EasyISTR）：Ready-to-Use WSLディストリビューションの紹介

# 直ぐに使えるFrontISTR+EasyISTRのWSL環境利用ガイド

この記事では、WSL（Windows Subsystem for Linux）環境を利用して、構造解析ソフトウェアである **FrontISTR** と **EasyISTR** を手軽に使うための環境構築手順と使用方法について解説します。

以下の2種類を準備しています。
---
- **手軽バージョン：**ファイルサイズを小さくすることを目指して、FrontISTRの公式サイトのUbuntu 22.04のバイナリファイルを用いて構築したバージョン。ファイルサイズは、配布用のzipファイル1.4GB（インポート・エクスポート用のtar.gzファイルが4.4GB、元のext4.vhdxファイル6GB）です。
---
- **高性能バージョン：**OSはUbuntuよりも安定性の高いと言われるDebian安定版 (12: bookworm)、autofistrのスクリプトを用いて、Intel oneAPIのMKLとMPIを組み込んでビルドしたバージョン。MUMPSは大差ありませんが、DirectMKL(Pardiso, Cluster Pardiso)の性能は、手軽バージョンよりも上です。ビルド条件を見直すことにより、さらに性能が上がる可能性もあります。配布用zipファイルで3.5GB（インポート・エクスポート用のtar.gzファイルで10GB）

---

## 1. 事前準備

### 必要なもの

- **OS:** Windows 10 / Windows 11  
- **WSL:** WSL2（推奨）  
- **WSLディストリビューションのzipファイル:** ６項記載のURLからダウンロード

---

## 2. WSLのインストール手順

### 2.1. WSLコマンドのインストール（WSLを初めて使用される場合）

PowerShell または Windows コマンド プロンプトを管理者モードで開き、wsl --install コマンドを入力し、マシンを再起動します。
[WSL を使用して Windows に Linux をインストールする方法](https://learn.microsoft.com/ja-jp/windows/wsl/install)

```powershell
wsl --install # 新しい Linux インストールは、既定で WSL 2 に設定されます。
```
## 3. 手軽バージョン：Ubuntu 22.04版

### ファイルサイズ

ファイルサイズが小さくなるように、コンパイルを実施せずにUbuntu用の公式debパッケージを使うようにしました。

ファイルサイズは、配布用のzipファイル1.4GB（インポート・エクスポート用のtar.gzファイルが4.4GB、元のext4.vhdxファイル6GB）・・・高性能バージョンの約半分です。

### リンクされたライブラリ

x86_64-linux-gnuのフォルダにlibmklが入っていることから、UbuntuのリポジトリのIntel-MKLを用いたと思われます。
```
ldd fistr1

linux-vdso.so.1 (0x00007ffdf2eef000)

libmkl_intel_lp64.so =\> /lib/x86_64-linux-gnu/libmkl_intel_lp64.so
(0x00007f17c6800000)

libmkl_gnu_thread.so =\> /lib/x86_64-linux-gnu/libmkl_gnu_thread.so
(0x00007f17c4a00000)

libmkl_core.so =\> /lib/x86_64-linux-gnu/libmkl_core.so
(0x00007f17c0200000)

libgomp.so.1 =\> /lib/x86_64-linux-gnu/libgomp.so.1 (0x00007f17c765e000)

libtrilinos_ml.so.13.2 =\> /lib/x86_64-linux-gnu/libtrilinos_ml.so.13.2
(0x00007f17bff47000)

libdmumps-5.4.so =\> /lib/x86_64-linux-gnu/libdmumps-5.4.so
(0x00007f17bfd33000)

```
### Ubuntuでの問題点

Debianは安定性重視で保守的な構成を維持しますが、Ubuntuは問題なしと判断されると新しいパッケージが入り、壊れることがあります（ElmerのフォーラムでUbutu22.04のリポジトリのParaviewが壊れたとの報告がありました。UbuntuではHWEカーネルが標準ですが、Debianでは新しいカーネルは特別にbackportsを用いる必要があります）。

WSL版のUbuntu 24.04では、gnome-terminal, gedit, nautilusが異常に遅くて諦めました。

Ubuntu 22.04では、最初は問題なかったのですが、数回使うとgnome-terminalが壊れました。そのため、xfce4用のxfce4-terminal、mousepad、thunarを用いることにしました。

:::note warn
xfce4-terminal 対応のため/opt/easyIstr/easyistr_main2.pyの17240行目を

comm = \"gnome-terminal \-- bash \--rcfile run &\"

→　comm = \"xfce4-terminal \--command=\'bash \--rcfile run\'\"　に変更しました。
:::
:::note info
EasyISTR側で修正されるまでは、アップデートしたときに手動で編集する必要があります。
:::
## 4. 高性能版
このバージョンは、2025年3月19日の記事で紹介したものです。[EasyIstr-202501 + FrontIstr-202502 on WSL2 ディストロ (ready to use)](https://qiita.com/HD_mount_Music/items/e2725bff8ce435fbf1ef)
### ファイルサイズ

配布用zipファイルで3.5GB（インポート・エクスポート用のtar.gzファイルで10GB）です。

主要なライブラリをソースコードからコンパイル・ビルドしているので、開発環境付きで大きくなっています。
また、１年前に作って保管してあったものを、FrontistrとOneAPIをアップデートし、2025年3月時点の最新版にしています。

:::note info
一度、使用ストレージが膨張すると簡単には減らないようです。
:::
### リンクされたライブラリ

autofistrのスクリプト（GCC、Intel oneAPIのMKLとMPI）によりビルドしました。
[autofistr](https://github.com/kazuya-goto/autofistr)
```
ldd fistr1

linux-vdso.so.1 (0x00007ffd69541000)

libgomp.so.1 =\> /lib/x86_64-linux-gnu/libgomp.so.1 (0x00007f4c6bf42000)

libmkl_scalapack_lp64.so.2 =\>

/opt/intel/oneapi/mkl/2025.0/lib/libmkl_scalapack_lp64.so.2
(0x00007f4c6b836000)

libmkl_blacs_intelmpi_lp64.so.2 =\>

/opt/intel/oneapi/mkl/2025.0/lib/libmkl_blacs_intelmpi_lp64.so.2
(0x00007f4c6b7f7000)

......

libmpifort.so.12 =\> /opt/intel/oneapi/mpi/2021.14/lib/libmpifort.so.12
(0x00007f4c6ac00000)

libmpi.so.12 =\> /opt/intel/oneapi/mpi/2021.14/lib/libmpi.so.12
(0x00007f4c60c00000)

libstdc++.so.6 =\> /lib/x86_64-linux-gnu/libstdc++.so.6
(0x00007f4c609e6000)

libquadmath.so.0 =\> /lib/x86_64-linux-gnu/libquadmath.so.0
(0x00007f4c6b108000)

librt.so.1 =\> /lib/x86_64-linux-gnu/librt.so.1 (0x00007f4c6b103000)

libdl.so.2 =\> /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f4c6b0fe000)
```
## 5. 計算速度の比較

計算速度、メッシュや計算結果の変換速度を考慮して以下のように推奨します。

### 小規模の計算で良い方

#### 一長一短ありますので、お好みで判断お願いします
---
- **Windows版：** Windowsのみのストレージを使用するので直観的に分かりやすい。インストーラではなく、ディレクトリ構造を含めたファイルでの提供になるので、アップデートのときの上書きに注意が必要です。
- **WSL手軽バージョン：** WindowsとLinuxのドライブのデータをシームレスで操作できますが、慣れるまではややこしいです。WSLドライブのデータをWindowsのParaviewから読むことができるのでデータ整理が楽です（Salomeは不可）。EasyIstrとFrontIstrのアップデートが楽です。
但し、EasyIstrが修正されるまでは、アップデート時に/opt/easyIstr/easyistr_main2.pyの17240行目の編集が必要です。

### 規模の大きい計算をする方、FrontIstrの機能をできる限り使いたい方
DirectMKL (Pardiso, 並列計算はCluster Pardiso)を十分に活用できるoneAPIのMKLとMPIを用いてautofistrのスクリプトによりコンパイル・ビルドした高性能版を推奨します。
FrontIstrのコンパイル・ビルドは、以下のコマンドにより15分くらいで完了すると思われます。

:::note info
Makefile.incのNJOBSは、CPUの物理コア数と同等か若干小さい程度が良いと思われます。
:::
```bash
cd ~/autofistr # 現在の実行ファイルをバックアップする場合は、GCC_IMPIのフォルダをtar.gz圧縮する
rm -rf FrontISTR GCC_IMPI
make
```
なお、従来のVirtulBox、VMware Workstation Playerでは、起動時間やWindows側とのデータのやり取りに難があるので、現在はWSL2の環境を推奨します。

### FrontISTRの計算速度比較表

![FrontISTRの計算速度.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4014034/865a94a2-6eda-413c-93e8-c9467b0c567b.png)


### 計算速度比較に用いたモデル
単純な棒では、計算結果がおかしくても分からないので、スパイラルとした。
![EasyIstr-Spiral.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4014034/4ec1f50d-dca0-4943-b743-fad0709c8b0f.png)

## 6. 導入方法
### お手軽バージョン
- **ダウンロード：** 20250322-EasyIstr-WSL-Ubuntu22-XFCE4.zipを私のOneDriveからダウンロードする。[zipファイル：約1.4GB](https://1drv.ms/u/c/ca3fad7a4b4217c1/EQMnThKv2blGrtt2BncOoGwB4rTazKknUe2V5MrzgDQdxQ?e=jUYXjW)
- 20250322-EasyIstr-WSL-Ubuntu22-XFCE4.zipの解凍し、WSLディストリビューションのインポートする。
```
            [本WSLの名称]  [仮想ext4ストレージの保存先]  　　              [tar.gzファイル]
wsl --import EIstrUbuntu22     C:\EIstrUbuntu22     　　  C:\path\---\file\easyIstr_wsl_Ubuntu22-XFCE4-20250322.tar.gz
```
### 高性能バージョン
- **ダウンロード：** 20250318-EasyIstrWSL.zipを私のOneDriveからダウンロードする。[zipファイル:約3.5GB](https://1drv.ms/u/c/ca3fad7a4b4217c1/EfVfaDdwqRpGhq4_lC5kFZsB-hP2x6PS3M-ntJf8v9toUA?e=oqgwmW)
- zipファイルを解凍し、easyIstr_wsl_debian12.tar.gzをお手軽バージョンと同様の手順によりインポートする。
### ユーザー情報
- ユーザー名：easy
- パスワード：frontistr（お手軽バージョン）、istr（高性能バージョン）
:::note info
新たに作るとistrの4文字は短すぎて、受付してもらえなかったのでパスワードを変えています。
:::
## WSLの便利な使い方
- **LinuxのディレクトリをWindowsのアプリから開く:** 検索バーにparaviewと入力すると（あるいはターミナルで開く + paraviewと入力すると）、選んだディレクトリ上からWindows版Paraviewが開きます。VS-code、Excel、などマイクロソフトの仕様に忠実なソフトはOKです。Salomeはだめです。
![エクスプローラーからLinuxフォルダに.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4014034/67a21618-f2de-4352-a8d2-ec86fa56e45c.png)
---
- **Linuxのディレクトリを移動した状態でparaviewが開く:** 計算時点ではwslのlinuxのparaviewを用い、データを後で見るときはWindows版を使用することが多いです。
![Windows-ParaviewからLinux.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4014034/fbc4f7da-c569-4979-90bb-7c3ab94f3b5c.png)
![Windows版ParaviewでのLinuxドライブのデータの可視化.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4014034/79bd3307-a4a6-4ac0-8fc8-18fec6f55c45.png)