いわて駐在研究日誌

OpenCAE、電子工作、R/C等、徒然なるままに

OpenCAE

OpenFOAMで磁界解析

先日に引き続き、とある研究ネタ(?)の仕込み用に電磁界解析をやる必要があり、オープンソースな解析ソフトについて、いろいろ調べてみた。2次元解析に限れば、オープンソースでないものであれば有限要素法ベースのSATEとかあるし、オープンソースであれば…

Dakotaの並列計算機能について

ようやく復帰。Dakotaの並列計算機能について調べたのでまとめてみる。 概観と簡単なサマリー Dakota自体から起動する"simulator"はシリアル計算でも並列計算でももちろん構わない(たとえばOFの並列計算など)ので、ここではDakota本体の並列計算について調べ…

形状最適化(練習3)

前回まではgradientベースの最適化を行った。解析的な勾配であれ、数値的な(差分法)勾配であれ、目的関数の変化量から最適な方向を探索することになる。この方法は、計算時間は短くてすむが、目的関数の変化が複雑(多峰性を持つ)な場合、必ずしも大域的…

形状最適化(練習2)

単目的関数に対する設計変数の最適化 次のステップとして、単一目的関数に対する設計変数(今回は2つ)の最適化を行ってみる。単一目的関数は前回と同様にpythonで実施し、以下のようなBeale's functionとする。 minimize f(x1,x2)=(1.5-x1+x1*x2)^2+(2.25-…

形状最適化(練習1)

Dakotaに含まれる関数(rosenblock/textbook etc.)ではなく、自前で多目的関数を実装して、実際に最適化してみる。pyhtonを使用。 問題は、図示しやすいのを適当にネットから探してきて、設計変数2(x1,x2)+目的関数2(f1,f2)の下記の問題としてみた。python…

形状最適化の実施手順

形状最適化にも様々なものが存在する(位相最適化、寸法最適化)が、ちょっと整理しておく。 形状最適化に当たって、以下の情報を求めることになる。 設計変数(Design parameters):寸法、位置、境界条件.... 制約条件(Constraints):設計変数の範囲、目的関…

メモ:dictionary中のsubDictionaryへのアクセスの仕方

// read patches for torque calculation from dynamicMeshDict IOdictionary dynamicMeshDict ( IOobject ( "dynamicMeshDict", runTime.constant(), mesh, IOobject::MUST_READ_IF_MODIFIED, IOobject::NO_WRITE ) ); // access subdict of dynamicMeshDic…

cfMesh v1.0.1 Tutorial

インストールがうまく行ったことを確認した上で、付属のTutorialの実行をしてみた。 cd tutorials/cartesian2DMesh/hatOctree FMSToSurface geom.fms geom.stl paraview geom.stl ./Allrun cd ../../cartesianMesh/bunnyOctree paraview bunnyWrapped.stl ./…

CFDEM(OF+LIGGGHTS)その2

LIGGGHTSのビルド Installing LIGGGHTS on Ubuntu 12.x · CFDEMproject/LIGGGHTS-PUBLIC Wiki · GitHubを参考に、 serial版 cd LIGGGHTS_CFDEM/LIGGGHTS-PUBLIC/src cd STUBS make cd .. make serial ./lmp_serialLIGGGHTS (Version LIGGGHTS-PUBLIC 3.0.6, …

CFDEM(OF+LIGGGHTS)

ダウンロード ここからインストラクションをダウンロードする。要登録。 http://www.cfdem.com/download インストール&テスト インストラクションに従って、gitレポジトリから、LIGGGHTSとCFDcouplingをgit cloneしてくる。 環境変数は下記の通り、~/.bashr…

OpenFOAM+DEM

しばらくぶりに調べてみる。 1)OF本体に含まれるDEMソルバー DEM(個別要素法)のソルバー自体はOF2.0から含まれていて、lagrangianソルバーとして、幾つかのチュートリアルもすでにある。 ソルバーとしては、以下の通り。 [waku@ensis10 lagrangian]$ pwd…

OpenFOAMと外部プログラムの連携方法

OpenFOAM+外部プログラムの連携方法について調査中。 連携の形には、いくつかの形式がある。 外部ソルバーから境界条件などを設定し、OFのケースを計算する。 OFケースの一部として例えばタイムステップ毎に外部プログラムを呼び出す。 前者の例としては、D…

OpenFOAMメモ

昨晩から調べてて、いまさら気がついたことをメモ (1) blockMeshDictで直接cellZone名を指定できる。 hex ( 0 1 2 3 4 5 6 7) rotor (20 40 1) simpleGrading ( 1 1 1) (2) mergeMeshesは、一度に2つしかマージできない。 たとえば、stator, rotor1, rotor2…

dakota 6.0(その2:DAKOTAとOFの連携TIPS)

調べたところ、Dakota6.0/5.4/5.3のライブラリlibsampling.soと、OFのライブラリの名前が重複しているので、Dakotqのほうのライブラリ名をちょっと変えたものをソースからインストールする。 1)準備(CentOS6.5) cmake 2.8.4以上(5.4)/2.8.8以上(6.0)→標準r…

dakotaのインストールと6.0/5.4の違い

dakotaのインストール SNLのサイトからバイナリパッケージをDL 必要なOS側パッケージをインストール yum install boost boost-system boost-signals boost-regex boost-filesystem blas lapack openmpi openmotif libX11 libXau libXext libXmu libXp libXpm…

topoSetコマンド

OFでcellやfaceの集合を作るときは、setSetコマンドもしくはtopoSetコマンドを使用する。後者はsystem/topoSetDictで指定できるので、わかりやすいかも。 /*--------------------------------*- C++ -*----------------------------------*\| ========= | ||…

pythonでblockMeshDict

すごい力技だが、pythonの勉強もかねてblockMeshDictを出力するスクリプトを、ここ1週間ほどで書いてみた。 2次元のVAWTで、翼型はNACA4シリーズを出力できるようにしている。翼枚数は3枚前提だったり、はっきり行って汎用的ではないが、これをベースに改良…

OF+外部ライブラリ

OFの計算で冷媒ガスの熱物性値を参照したいと考え調査してみた。 事例としては、 ・OF+FreeSteam (水蒸気:IAPWSIF97) があっただけで、NIST REFPROP(最新版9.1)や、同様の機能を持つOSS版のCoolProp(最新版4.2.5?5系が開発中??)とOFとの連携事例は、…

1日体験入学

昨日、今日と学校行事の中学生向け体験入学を実施。午前中は説明役で、13:00~15:20までの自由見学は学生さんにトークをおまかせする。 こういう世代の違う子供に話す力を養うのも教育の一環と思う。 午前中、6回同じ内容をしゃべったせいか結構疲労感があ…

ダクト内間欠流の計算3(groovyBC+DirectEulerAngleRotatingMotion)

入口・出口の圧力差と拙作DirectEulerAngleRotatingMotion(トルク>回転数>回転角を計算)の組み合わせてテストしてみた。うまく行っているかな。 ※ 画像は、はてなのアップロード容量を超えてしまったので、youtubeから。月たったの30MBというのはいかがな…

ダクト内間欠流の計算2

昨日の続きです。 inlet { type groovyBC; variables "p0=0.5;"; // =(0.5*U0*U0)/4 valueExpression "p0*(pow(sin(pi*time()/50),7))"; value uniform 0; } outlet { type groovyBC; variables "p0=0.5;"; // =(0.5*U0*U0)/4 valueExpression "p0*(-pow(sin…

ダクト内間欠流の計算1

とある用途のため、OpenFOAM(+swak4foam)で、ダクト内流れが間欠的に流れの向きが変わる計算をしているが、なかなかうまくいかない。現状の、境界条件は以下の通り。 0/U inlet { type pressureInletVelocity; value uniform (1 0 0); } outlet { type pres…

FreeCAD + Python の連携2

最終的にやりたいことは「OpenFOAM+OpenMDAO」で流体計算による形状最適化なんだが、pythonでSTLのReader/Writerを作って(性格にはネットからの「かき集め」)みた。 もう1回流れを整理すると、以下の通り。 ・OpenMDAOの導入(done) ・FreeCADもしくはPytho…

FreeCAD + Python の連携1

最終的には、Linux環境でやるつもりだけれど、とりあえずWindows版でいろいろ確認。 環境 Windows 7 x86_64 + FreeCAD 0.13 32bit (Python 2.6.2 同梱) 準備 FreeCADを起動し、pythonコンソールを表示させる(表示されない場合は、表示 → ビュー → Pythonコ…

Code_Saturne 1

注意: salome_mecaを既にインストール・設定ができていることが前提の記事です。 SL6.5 x86_64です。 OpenMPI, BLAS, libxml2などのシステムパッケージはインストール済みとします。(基本的にsalome_mecaに同梱のライブラリを使用しますが、libxml2はシス…

OpenFOAMライブラリ開発5

非定常入口流速境界条件の場合です。 慣性モーメントが小さいとレスポンス良く回ってくれます。当たり前の結果かもしれませんが。ただし、ローターが重いと安定して(風が落ちても回転数を維持して)回ってくれるという結果にもなっています。 非定常な境界…

OpenFOAMライブラリ開発4

昨日の動画をyoutubeにアップしてみました。ちょっと出力が荒すぎた感じがする...。 次のステップとして、入口の流速境界条件をswak4foamで非定常にしてみよう。 ここまで出来たら、とりあえず何処かに公開してみようかな。 2D Crossflow - YouTube

OpenFOAMライブラリ開発2

~/OpenFOAM-2.2.x/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/rotatingMotion/rotatingMotion.C(.H)を参考にライブラリを作ってみた。 オリジナルは、時刻tとdynamicMeshDictから読み込んだ角速度、回転中心を用いて、 // Rotation …

OpenFOAMライブラリ開発

OpenFOAMでpimpleDyMFoamなんかの場合、回転数は固定になるため、例えば風車や水車のような動的回転数変化を考えることはできない。 回転メッシュのライブラリを見るとeulerAngleを計算する場合、時間×回転速度になっているようで、外部のプログラムと連携し…

SU2

スタンフォード大で出しているオープンソースCFDソフトウェアのSU2というものを使ってみる。 (1)ダウンロード http://su2.stanford.edu/download.html 現在のバージョンは3.0で、フルバージョンであるSU2 SUITEと、教育用に一部簡素化したSU2-Edu SUITE…