2
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?

OpenFOAM12でカスタムソルバを作る方法の確認

Last updated at Posted at 2024-12-01

この記事はオープンCAE Advent Calendar 2024の一日目の記事です。

はじめに

しばらくFoudation版のOpenFOAMを触っていないうちにソースコードの記法が大きく変わった。カスタムソルバを作る方法について、何か変化があったか手順を確認した。

ユーザーアプリケーションフォルダの作成

これは以前と変わらないので、下記コマンドでフォルダを作って、移動する。
ソースコードのMake下にあるfilesを見るとわかるが、FOAM_LIBBINに作るようになっているので、それに合わせてFOAM_USER_LIBBINを作る。

mkdir -p $FOAM_USER_LIBBIN
cd $FOAM_USER_LIBBIN

ソースコードのコピー

OpenFOAM11からソルバーがModular Solversに変わった。ソルバは$FOAM_MODULESにあるので、今回はテストがてら非圧縮流体解析用のincompressibleFluidをコピーする。コピーしたのちに名称を変更する。

cp -r $FOAM_MODULES/incompressibleFluid ./
mv -f ./incompressibleFluid ./myIncompressibleFluid
cd myIncompressibleFluid

ソースコードからOpenFOAMをコンパイルしているとlnIncludeフォルダができているため、消しておく。

rm -rf lnInclude

ソースコードの修正

同じ名前だと元から存在するソルバと重複するためソースコードの名前を修正する。

mv incompressibleFluid.C myIncompressibleFluid.C
mv incompressibleFluid.H myIncompressibleFluid.H

ファイルの中で指定されているincompressibleFluidをファイル名やソルバ名に合わせて書き換える。また、filesのLIBをFOAM_USER_LIBBINに書き換える。
いくつかのファイルは同じ行内に変換対象があるので2回実行している。

sed -i -e 's/incompressibleFluid/myIncompressibleFluid/' ./*.C
sed -i -e 's/incompressibleFluid/myIncompressibleFluid/' ./myIncompressibleFluid.C
sed -i -e 's/incompressibleFluid/myIncompressibleFluid/' ./*.H
sed -i -e 's/incompressibleFluid/myIncompressibleFluid/' ./myIncompressibleFluid.H
sed -i -e 's/incompressibleFluid/myIncompressibleFluid/' ./Make/*
sed -i -e 's/FOAM_LIBBIN/FOAM_USER_LIBBIN/' ./Make/files

コンパイル

コンパイルはwmakeで実行する。

wmake

$FOAM_USER_LIBBIN下のLIBフォルダにlibmyIncompressibleFluid.soができていることを確認する。

テスト

pitzDailyのケースでチェックを行う。controlDictの

mkdir $FOAM_RUN
run
cp -r $FOAM_TUTORIALS/incompressibleFluid/pitzDaily ./
cd pitzDaily
sed -i -e 's/incompressibleFluid/myIncompres
sibleFluid/' system/controlDict
./Allrun

実行結果のログを見ると、myIncompressibleFluidを使用していることがわかる。

/*---------------------------------------------------------------------------*\
  =========                 |
  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
   \\    /   O peration     | Website:  https://openfoam.org
    \\  /    A nd           | Version:  12
     \\/     M anipulation  |
\*---------------------------------------------------------------------------*/
Build  : 12
Exec   : foamRun
Date   : Dec 01 2024
Time   : 21:29:32
Host   : "mmer547-copilot"
PID    : 182510
I/O    : uncollated
Case   : /home/opencae/OpenFOAM/opencae-12/run/pitzDaily
nProcs : 1
sigFpe : Floating point exception trapping - not supported on this platform
fileModificationChecking : Monitoring run-time modified files using timeStampMaster (fileModificationSkew 10)
allowSystemOperations : Allowing user-supplied system call operations

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Create time

Create mesh for time = 0

Selecting solver myIncompressibleFluid
Selecting viscosity model constant
Selecting turbulence model type RAS
Selecting RAS turbulence model kEpsilon
 ・
 ・
 ・

まとめ

Foundation版のOpenFOAMを使って、カスタムソルバを作る手順を確認した。
名前は変わっているが手順自体は大きく変わっていない。ただし、カスタムソルバは実行方法の変更とともにFOAM_USER_APPBINでなく、FOAM_USER_LIBBINで管理するなど、構成は変わっているので、過去の資料を参考にするときは、いろいろと確認しながらカスタマイズする必要がありそうだということが分かった。

2
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
2
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?