時刻で結果を補間する2017年9月10日 | |
はじめに結果時刻データの間の時刻でデータを補間する方法について。 バージョンOpenFOAM v1706 時刻で結果を補間する結果時刻データの間の時刻でデータを補間するには、temporalInterpolate を用いる。 $ temporalInterpolate 結果時刻データの間の中間の時刻データが作成される。0, 100, 200 とあれば、50, 150 ができる。 分割数を指定することもできる (デフォルトは 1)。 $ temporalInterpolate -divisions 2 0, 100 とあれば、33.3333, 66.6667 が作成される。 フィールドを限定するには -fields オプションを使う。 $ temporalInterpolate -fields '(U)' 補間を行う時間を指定できる。 $ temporalInterpolate -time 0,100 補間方法を line, spline から選ぶことができる。 $ temporalInterpolate -interpolationType spline 任意の時刻で結果を補間する。temporalInterpolate では任意の時刻では結果を補間できない。そこで、temporalInterpolate を参考にして任意の時刻で補間してみる。
label timei = 0;
runTime.setTime(timeDirs[timei], timei);
IOobjectList objects(mesh, runTime.timeName());
instant timej(interpolationTime);
runTime.setTime(instant(timej.name()), 0);
labelList indices;
scalarField weights;
interpolatorPtr().valueWeights
(
runTime.value(),
indices,
weights
);
const wordList selectedTimeNames
(
UIndirectList
指定された時刻を間にもつ 2 つの時刻とそれについての重みを得て、それで補間する流れになっている。ここでは補間するデータを U に限定している。 simpleFoam のチュートリアルケース pitzDaily の time = 100、200 の U から time = 120 の U を補間した結果を以下に示す。 ![]() ![]() time = 100/time = 200 ![]() time = 120 | |
| PENGUINITIS | |