C++

【オブジェクト指向C++】2次元ナビエストークス方程式(キャビティ流れ)の数値計算

オブジェクト指向型プログラミング

では、ここからオブジェクト指向でコードを修正していきます。
段階を踏んでコードを書いていくことにします。

Step1:x方向とy方向の離散化

$x$方向と$y$方向の空間離散化を行います。

  • Mesh.h:変数の定義
  • Mesh.cpp:関数処理の定義
Mesh.h

Mesh.cpp

これで空間の離散化の定義ができたのでmain.cppでMeshクラスをインスタンス化して出力してみましょう。

main.cpp

今回は「#include “Mesh.h” //メッシュ設定 」しかインクルードとして必要ないので、その他のヘッダーファイルはコメントアウトしています。

【結果】

エラーがエラーがなければx方向の離散化の結果が出力されます。

Step2:速度ベクトルU,Vの値の設定

Fields.h

2次元ベクトルを定義するvectorコンテナvectorField2dの定義と演算子のオーバーロードの定義を追加しました。

Fields.cpp

ベクトル場を出力するためにPrintVector.hを作成し、以下としました。

PrintVector.h

main.cpp

【結果】

しかし、「Fields FieldsOperations;」でインスタンス化を行って以降の記述が冗長なので「createFields.h」に書き込んでmain.cppで読み込むようにします。

createFields.h

main.cpp(修正)

こちらの方がmainファイルがすっきりしますね。

1 2 3 4 5 6

【プロフィール】

カマキリ
(^^)

大学の専攻は物性理論で、Fortranを使って数値計算をしていました。
CAEを用いた流体解析は興味がありOpenFOAMを使って勉強しています。

プロフィール記事はこちら

 

大学学部レベルの物理の解説をします 大学初学者で物理にお困りの方にわかりやすく解説します。

このブログでは主に大学以上の物理を勉強して記事にわかりやすくまとめていきます。

  • ・解析力学
  • ・流体力学
  • ・熱力学
  • ・量子統計
  • ・CAE解析(流体解析)
  • note
    noteで内容は主に「プログラミング言語」の勉強の進捗を日々書いています。また、「現在勉強中の内容」「日々思ったこと」も日記代わりに書き記しています。
  • youtube
    youtubeではオープンソースの流体解析、構造解析、1DCAEの操作方法などを動画にしています。
    (音声はありません_(._.)_)
  • Qiita
    Qiitaではプログラミング言語の基本的な内容をまとめています。

COMMENT

メールアドレスが公開されることはありません。