OpenFOAM_compile_basic 1 / /12/23 12: 年 12 月 13 日オープン CAE 富山 ( 富山県立大学中川慎二 ) Disclaimer OPENFOAM is a registered trade mark

Similar documents
NEE 研究会第 18 回講演討論会 OpenFOAM への計算機能追加連続的データ同化法 (VCA 法 ) の実装 大阪大学大学院工学研究科博士後期課程松尾智仁 内容 1.OpenFOAM を使う理由 1.1 OpenFOAMの特徴 1.2 OpenFOAMを使うにあたって 2.OpenFOAM

Microsoft PowerPoint OpenFOAMの使い方(柴田).ppt [互換モード]

2012/4/28 OpenCAE 初心者勉強会東海 1 twoliquidmixingdymfoam を用いた タンクでの塩水混合解析 ( その 1) TM

この講習の目的 OpenFOAM のソースコードを読むのに必要な, 基礎的な知識を知る ソルバのソースコードから, その先で行われていることを探る方法を知る 基礎的なソルバの, 大まかな流れを知る 有限体積法が実装されていそうなことを感じ取る? 2

注意 OpenFOAMユーザーガイド, プログラマーズガイド,OpenFOAM Wiki,CFD Online, その他多くの情報を参考にしています 開発者, 情報発信者の皆様に深い謝意を表します この講習内容は, 講師の個人的な経験 ( 主に, 卒研 等とのコードリーディング ) から得た知識を共

はじめての OpenFOAM その 3 富 県 学 中川慎二 オープンCAE 富 2014 年 1 月 25 日 Disclaimer: OPENFOAM is a registered trade mark of OpenCFD Limited, the producer of the

Text

OpenFOAM を理解するための第 1 歩 2016 年 5 月 28 日オープンCAE 富山 富山県 学 中川慎二 Disclaimer: OPENFOAM is a registered trade mark of OpenCFD Limited, the producer of

OpenFAOM合同勉強会【関西】

2018/9/19 for DEXCS2018 DEXCS for OpenFOAM における 推奨メッシュ生成法 オープンCAEコンサルタント OCSE^2 代表 野村悦治 1 Disclaimer: OPENFOAM is a registered trade mark of OpenCFD L

OpenFOAM(R) ソースコード入門 pt1 熱伝導方程式の解法から有限体積法の実装について考える 前編 : 有限体積法の基礎確認 2013/11/17 オープンCAE 富山富山県立大学中川慎二

memo

course pptx

Microsoft Word - Training10_プリプロセッサ.docx

slide5.pptx

file:///D|/C言語の擬似クラス.txt

ビルド処理

swak4Foamを使って見ました.odp

workshop2009course.ppt

数はファイル内のどの関数からでも参照できるので便利ではありますが 変数の衝突が起こったり ファイル内のどこで値が書き換えられたかわかりづらくなったりなどの欠点があります 複数の関数で変数を共有する時は出来るだけ引数を使うようにし グローバル変数は プログラムの全体の状態を表すものなど最低限のものに留

7th CodeGear Developer Camp

gengo1-12

gengo1-12

プログラミング及び演習 第1回 講義概容・実行制御

Fortran 勉強会 第 5 回 辻野智紀

画像ファイルを扱う これまでに学んだ条件分岐, 繰り返し, 配列, ファイル入出力を使って, 画像を扱うプログラムにチャレンジしてみよう

プログラミング実習I

この講習会では, ユーザーガイドを参照しながら, 作業を進めます ユーザーガイドは下記サイトで入手可能です OpenFOAM Documentation( オリジナル )

AquesTalk for WinCE プログラミングガイド

2006年10月5日(木)実施

演算増幅器

ParallelCalculationSeminar_imano.key

※ ポイント ※

memo

Microsoft PowerPoint - 計算機言語 第7回.ppt

Microsoft PowerPoint - kougi6.ppt

AquesTalk プログラミングガイド

Prog1_12th

gengo1-12

PowerPoint プレゼンテーション

の 3 つのファイルに #include <functional> を加える 場所は以下の通り diff --git a/modules/calib3d/test/test_affine3d_estimator.cpp b/modules/calib3d/test/test_affine3d_est

CM-3G 周辺モジュール拡張技術文書 MS5607センサ(温度、気圧)

熱伝達の境界条件 (OF-2.1 OF-2.3) 1/7 藤井 15/01/30 熱伝達の境界条件 (OF-2.1 OF-2.3) 目次 1. はじめに 2. 熱伝達の境界条件 (fixedalphatemp) の作成 2-1. 考え方 2-2. fixedalphatemp の作成 3. 作動確認

講習No.12

AquesTalk Win Manual

PowerPoint プレゼンテーション

02: 変数と標準入出力

AquesTalk2 Win マニュアル

基礎プログラミング2015

* ライブラリ関数 islower(),toupper() を使ったプログラム 1 /* 2 Program : trupper.c 3 Student-ID : K 4 Author : TOUME, Kouta 5 Comments : Used Library function i

PowerPoint プレゼンテーション - 物理学情報処理演習

プログラミング及び演習 第1回 講義概容・実行制御

Microsoft PowerPoint - 第5章補足-DB2組み込みSQL.ppt

とても使いやすい Boost の serialization

基礎プログラミング2015

Microsoft Word - Cプログラミング演習(12)

ポインタ変数

PowerPoint プレゼンテーション - 物理学情報処理演習

double float

Condition DAQ condition condition 2 3 XML key value

AquesTalk2 Linux マニュアル

この講習会では, ユーザーガイドを参照しながら, 作業を進めます ユーザーガイドは下記サイトで入手可能です OpenFOAM Documentation( オリジナル )

ご利用のコンピュータを設定する方法 このラボの作業を行うには 事前設定された dcloud ラボを使用するか 自身のコンピュータをセットアップします 詳細については イベントの事前準備 [ 英語 ] とラボの設定 [ 英語 ] の両方のモジュールを参照してください Python を使用した Spar

演算増幅器

£Ã¥×¥í¥°¥é¥ß¥ó¥°(2018) - Âè11²ó – ½ÉÂꣲ¤Î²òÀ⡤±é½¬£² –

新・明解C言語 実践編

Microsoft PowerPoint - kougi8.ppt

DVIOUT

Microsoft PowerPoint - CproNt02.ppt [互換モード]

情報処理演習 B8クラス

£Ã¥×¥í¥°¥é¥ß¥ó¥°ÆþÌç (2018) - Â裶²ó ¨¡ À©¸æ¹½Â¤¡§·«¤êÊÖ¤· ¨¡

AquesTalk2 Win マニュアル&ライセンス規定

Microsoft PowerPoint - adi05.ppt [互換モード]

法政大学理工学部創生科学科 小林一行研究室 YP-Spur をMATLAB で使うには? YP-Spur は,Linux ベースで開発されているようであるが,Windows でも使えるようなので, ここでは,Windows 版のMATLAB から使う方法を紹介する.YP-Spu

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdio.h> #define InFile "data.txt" #define OutFile "sorted.txt" #def

Gfarm/MPI-IOの 概要と使い方

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdiu.h> #define InFile "data.txt" #define OutFile "surted.txt" #def

本日の流れ

C/C++からJVMを起動します

TDK Equivalent Circuit Model Library

EnSight 10.1の新機能

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

AquesTalk10 Win マニュアル

新版明解C言語 実践編

目次 1. はじめに 本書対象者 PALRO のアプリケーションについて Ubuntu 8.04LTS の入手について Linux 上での開発環境の構築 事前準備 Ubuntu のインストール..

Rational Roseモデルの移行 マニュアル

Microsoft PowerPoint pptx

7th CodeGear Developer Camp

AquesTalk10 Linux マニュアル

第3回 配列とリスト

Red Hat Enterprise Linux 6 Portable SUSE Linux Enterprise Server 9 Portable SUSE Linux Enterprise Server 10 Portable SUSE Linux Enterprise Server 11 P

スライド 1

Microsoft Word - matlab-coder-code-generation-quick-start-guide-japanese-r2016a

PowerPoint プレゼンテーション - 物理学情報処理演習

Taro-リストⅠ(公開版).jtd

CashDrawer ライブラリ API 仕様書 2014/07/09 CashDrawer ライブラリ API 仕様書 Rev / 10

説明書

第2回講義:まとめ

ポインタ変数

Transcription:

1 / 5 2014/12/23 12:25 2014 年 12 月 13 日オープン CAE 勉強会 @ 富山 ( 富山県立大学中川慎二 ) Disclaimer OPENFOAM is a registered trade mark of OpenCFD Limited, the producer of the OpenFOAM software and owner of the OPENFOAM and OpenCFD trade marks. This offering is not approved or endorsed by OpenCFD Limited. 注意 本資料の内容は,OpenFOAMユーザーガイド, プログラマーズガイド,OpenFOAM Wiki,CFD Online, その他多くの情報を参考にしています 開発者, 情報発信者の皆様に深い謝意を表します この講習内容は, 講師の個人的な経験 ( 主に, 卒研生等とのコードリーディング ) から得た知識を共有するものです この内容の正確性を保証することはできません この情報を使用したことによって問題が生じた場合, その責任は負いかねますので, 予めご了承ください 参考 OpenFOAM UserGuide 3.2 Compiling applications and libraries http://www.openfoam.org/docs/user/compiling-applications.php 1. 基礎の基礎 OpenFOAMでは,wmakeコマンドを利用してコンパイル作業を実施する wmakeは,openfoamでの作業を快適にするためのスクリプト OpenFOAM/OpenFOAM-2.3.x/wmake/wmake である wmakeは,linuxの make コマンドをベースとしている ソースコード中のインクルード #include では, その部分にヘッダファイル *.H に記載した内容がそのまま転載される 2. laplacianfoam 関連ディレクトリ ソルバ ソースコードディレクトリ OpenFOAM-2.3.x/application/solver/basic/laplacianFoam

2 / 5 2014/12/23 12:25 ヘッダファイルディレクトリ ( ソルバディレクトリ /Make/optionsで指定) OpenFOAM-2.3.x/src/finiteVolume 全ソルバ共通ヘッダファイルディレクトリ (OpenFOAM-2.3.x/wmake/Makefileで設定されている) OpenFOAM-2.3.x/src/OpenFOAM OpenFOAM-2.3.x/src/OSspecific/POSIX laplacianfoam directory ソルバ ソースコードディレクトリの基本的な構造. Make files // コンパイルするCファイル, 出力する実行ファイル名と場所を指定 options // インクルードするヘッダの置き場所, リンクするライブラリの指定 createfields.h laplacianfoam.c write.h laplacianfoam ソルバの Make/files Make/filesでは, コンパイルが必要なソースコード (.C) を指定する さらに,EXE = で, コンパイルしてできる実行ファイルの置き場所と名前を指定する #includeで読み込んでいるヘッダファイル(.h) は, その場所に転載されているので, ここで指定する必要はない laplacianfoam.c EXE = $(FOAM_APPBIN)/laplacianFoam // コンパイル後にできる実行ファイルの場所と名前 3. ヘッダファイルの捜索場所と順序 コンパイル時, 次の順序で, ヘッダファイルが捜索される 1. OpenFOAMで規定したディレクトリ $WM_PROJECT_DIR/src/OpenFOAM/lnInclude directory 2. ソルバ ソースコードディレクトリ内にある lninclude ディレクトリ 3. ソルバ ソースコードディレクトリ 4. OpenFOAMで規定した環境に依存するディレクトリ $WM_PROJECT_DIR/wmake/rules/$WM_ARCH/ 具体的には, /usr/x11/include と $(MPICH_ARCH_PATH)/include となる 5. Make/options ファイル内で -I オプションによって指定したディレクトリ [$(LIB_SRC)/finiteVolume/lnInclude] なお, ここで指定するのは場所だけである 実際にインクルードされるファイルは, ソースコードにインクルードされているものである 4. ライブラリへのリンク ソルバ自身に含まれないクラスは, 独立してコンパイルし, 実行形式のバイナリファイルを作成する このファイルは,shared object library であり, 拡張子.so がつく

3 / 5 2014/12/23 12:25 ソルバは, このように独立してコンパイル済みの.so ファイルを実行時に呼び出すことができる dynamic link と呼ぶ方式である laplacianfoam では,EXE_LIBS = と指定している この時,$(FOAM_LIBBIN)/libfiniteVolume.so が実行時に利用される optionsファイルでのライブラリ指定時には, ファイル名先頭のlibと, 拡張子.soとを除外した名前を使用する つまり, という記述があれば, 実際に使われるライブラリのファイル名は,libfiniteVolume.so である この libfinitevolume.so は,src/finiteVolume に存在するソースコードから生成されたものである src/finitevolume/make/filesファイルを読むと, それが確認できる srcディレクトリ以下には多くのディレクトリが存在する Makeディレクトリを含むディレクトリでは, ライブラリが作成されている 発展 (lanrangian 編へ続く...) 5. ライブラリの捜索場所 次の場所から, リンクする shared object library を見つける 1. $FOAM_LIBBIN ディレクトリ 2. 環境に依存するディレクトリ $WM_DIR/rules/$WM_ARCH/ directory 具体的には /usr/x11/lib と $(MPICH_ARCH_PATH)/lib となる 3. Make/options ファイル内で -L オプションによって指定したディレクトリ実際にリンクされるファイルは, 次のものとなる 1. $FOAM_LIBBIN ディレクトリに存在する libopenfoam.so 2. OpenFOAM-2.3.x/wmake/rules/ で設定された環境依存場所に存在する libm.so (/usr/x11/lib) と liblam.so ($(LAM_ARCH_PATH)/lib) OpenFOAM-2.3.x/wmake/Makefileで設定されている 3. Make/options ファイル内で -l オプションによって指定したライブラリ ただし, ここで指定する名前は, ライブラリファイル名の先頭にあるlibと拡張子 (.so) を取り除いたものである 例えば, と指定すると,libfiniteVolume.so が実際のファイルとなる 5. 発展 lagrangian 関連ライブラリの紹介より複雑な構造 ; 複数のライブラリが関連する ; 改造時に注意が必要 Run-Time selection への対応 lagrangian/intermediate/parcels/include にマクロ A1. 参考 laplacianfoam ソルバのメインコード // 多くのソルバーで共通するヘッダーファイルの読み込み OpenFOAM の基盤的な機能を有効にする

4 / 5 2014/12/23 12:25 #include "fvcfd.h" // simple 法の機能を使うためのヘッダーファイルを読み込む #include "simplecontrol.h" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // int main(int argc, char *argv[]) // 多くのソルバーで共通するヘッダーファイルの読み込み OpenFOAMの基盤的な機能を有効にする #include "setrootcase.h" #include "createtime.h" #include "createmesh.h" // 変数温度場 T, 拡散係数 DT, 設定ディクショナリ transportproperties, の作成とファイルから読込 #include "createfields.h" // simple 法のためのクラスから,simple 法をコントロールするオブジェクトsimpleを作成 simplecontrol simple(mesh); // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Info<< "\ncalculating temperature distribution\n" << endl; // シンプル法のオブジェクトを使って, 繰り返し回数をコントロールする while (simple.loop()) Info<< "Time = " << runtime.timename() << nl << endl; // 非直行性補正が有効な場合のみ実行 while (simple.correctnonorthogonal()) // 非定常拡散方程式から線形代数式を生成して, 解く // 非定常項と拡散項をimplicit( 陰的 ) に解く fvm solve ( fvm::ddt(t) - fvm::laplacian(dt, T) ); } #include "write.h // 結果の出力 Info<< "ExecutionTime = " << runtime.elapsedcputime() << " s" << " ClockTime = " << runtime.elapsedclocktime() << " s" << nl << endl; } // end of the simple loop Info<< "End\n" << endl; } return 0; laplacianfoam ソルバの Make/files laplacianfoam.c EXE = $(FOAM_APPBIN)/laplacianFoam // コンパイル後にできる実行ファイルの場所と名前 Make/files では, コンパイルが必要なソースコード (.C) を指定する #include で読み込んでいるヘッダファイル (.H) は, その場所に転載されているので, ここで指定する必要はない

5 / 5 2014/12/23 12:25 参考 :src/finitevolume/cfdtools/general/include/fvcfd.h の内容 #ifndef fvcfd_h #define fvcfd_h #include "parrun.h" #include "Time.H" #include "fvmesh.h" #include "fvc.h" #include "fvmatrices.h" #include "fvm.h" #include "linear.h" #include "uniformdimensionedfields.h" #include "calculatedfvpatchfields.h" #include "fixedvaluefvpatchfields.h" #include "adjustphi.h" #include "findrefcell.h" #include "constants.h" #include "OSspecific.H" #include "arglist.h" #include "timeselector.h" #ifndef namespacefoam #define namespacefoam using namespace Foam; #endif #endif