4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

preCICE / OpenFOAM / Calculix 流体構造連成解析の環境構築

Last updated at Posted at 2022-03-06

はじめに

今更ながらですが、preCICE / OpenFOAM / Calculix で行う流体構造連成解析の環境構築、チュートリアルの実行方法をまとめたいと思います(いつもDEXCSを使っていたので、どのように解析環境を構築するのか勉強したかったという、あくまで自分用メモです)。

環境は ubuntu 20.04 LTS を想定しています。

preCICE

preCICEのインストールは、Quickstartのページを参考にすると良いと思います。ここではポイントだけを記載しておきます。

wget https://github.com/precice/precice/releases/download/v2.5.0/libprecice2_2.5.0_focal.deb
 sudo apt install ./libprecice2_2.5.0_focal.deb

OpenFOAM

OpenFOAMのインストール

curl https://dl.openfoam.com/add-debian-repo.sh | sudo bash
sudo apt-get install openfoam2112-dev

openfoam2112の環境立ち上げのために、.bashrcあたりに以下のコマンドを追加しておきます。

.bashrc
function ofv2112(){
   command source /usr/lib/openfoam/openfoam2112/etc/bashrc
}

もしくは

.bashrc
ofv2112(){
   source /usr/lib/openfoam/openfoam2112/etc/bashrc
}

これで必要に応じてopenfoam2112の環境を呼び出せるようになります。

openfoam-adapter のビルド

openfoam-adapterのビルドは、preciceのHPのQuickstartが参考になります。

まず、adapterのビルドに必要なパッケージをインストールします。

sudo apt install build-essential pkg-config cmake git

次いで、openfoam-adapterをgitから持ってきて、ビルドします。

git clone --branch=master --depth 1 https://github.com/precice/openfoam-adapter
cd openfoam-adapter
./Allwmake

Calculix

Calculix単体であれば、aptをたたけばインストールできます。

sudo apt install calculix-cgx calculix-ccx

ここで、ccxがcalculixのソルバーを、cgxがpre-、postprocessing用のGUIになります。

calculix-adapterのビルド

calculix-adapterのビルドは、precice HPのGet Calculixが参考になります。

adapterのコンパイルはSPOOLES2.2、ARPACK、yaml-cppに依存しているため、これらパッケージを入れます。

sudo apt install libarpack2-dev libspooles-dev libyaml-cpp-dev

以上がdebパッケージを主としてコンパイル環境を整える方法になります。


ソースをもってきて作業を行いたい場合は、以下の作業を行う必要があります。またその場合は、calculix-adapterのコンパイル時にライブラリのPATHを設定する必要があります。

SPOOLES.2.2

wget http://www.netlib.org/linalg/spooles/spooles.2.2.tgz 
mkdir SPOOLES.2.2
tar zxvf spooles.2.2.tgz -C SPOOLES.2.2
cd SPOOLES.2.2

解凍するとファイル、ディレクトリがカレントディレクトリに展開されてしまいますので、上にあるようにSPOOLES.2.2というディレクトリを作成し、そちらに展開するようにします。

その後、Make.incにあるコンパイラーをgccに変更します。

Make.inc
CC = gcc
#CC = /usr/lang-4.0/bin/cc 

その後、コンパイルをします。

make lib

ARPACK

wget https://www.caam.rice.edu/software/ARPACK/SRC/arpack96.tar.gz 
wget https://www.caam.rice.edu/software/ARPACK/SRC/patch.tar.gz 
tar xzfv arpack96.tar.gz 
tar xzfv patch.tar.gz 
cd ARPACK
  • 次いで、ARmake.incを編集していきます;

    • Line 28: Change home = $(HOME)/ARPACK to directory where ARPACK in extracted
    • Line 115: Change MAKE = /bin/make to e.g. MAKE = make (if needed)
    • Line 120: Change SHELL = /bin/sh to e.g. SHELL = sh (if needed)
      fortranコンパイラーをgfortranに変更します。
    FC = gfortran
    #FFLAGS = -O -cg89 
    
    • Line 35: PLAT = SUN4PLAT = INTEL に修正
  • 次いでUTIL/second.f中の該当ラインを以下のようにコメントアウトします;

UTIL/second.f
*        EXTERNAL           ETIME
  • これでコンパイル準備は完了です。make libすれば作業終了です。

yaml-cpp

wget https://github.com/jbeder/yaml-cpp/archive/yaml-cpp-0.6.2.zip
unzip yaml-cpp-0.6.2.zip
cd yaml-cpp-yaml-cpp-0.6.2
mkdir build
cd build
cmake -DBUILD_SHARED_LIBS=ON ..
make

calculix source

wget http://www.dhondt.de/ccx_2.19.src.tar.bz2
tar xvjf ccx_2.19.src.tar.bz2 

ここでは~/CalculiX/ccx_2.19/srcにソースが展開されているとして、作業を進めていきます。

calculix-adapter

 wget https://github.com/precice/calculix-adapter/archive/refs/heads/master.tar.gz
 tar -xzf master.tar.gz
 cd calculix-adapter-master

Makefile中のCalculixのソースの場所を修正します;

Makefile
CCX_VERSION         = 2.19
CCX             = $(HOME)/CalculiX/ccx_$(CCX_VERSION)/src

makeでコンパイルするとccx_preCICEが作成されます。あとはPATHを通してすべての作業は修了です。

adapterコンパイル時のエラー対応について (CalculiX ver.2.20 2023.7.18現在)

gtortran10でのコンパイル時にエラーが出ることがあるようです.詳細はこちらで.

こちらにcubtri.fファイルがあるので,それをダウンロードすればコンパイルできるようになります.

まとめ

preCICE / OpenFOAM / Calculix の流体構造連成解析の環境構築を、今更ではありますがまとめてみました。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?