関数による2次元分垃を持った非定垞境界条件の蚭定2

1,800 views
Skip to first unread message

mou

unread,
Jan 30, 2012, 2:01:28 AM1/30/12
to OpenFOAM
お䞖話になっおおりたすmouです

以前「関数による2次元分垃を持った非定垞境界条件の蚭定」ずいう衚題で質問を投皿させおいただきたした
https://groups.google.com/group/openfoam/browse_thread/thread/40cf9f4baa782b8e?hl=ja
その際にtimeVaryingMappedFixedValueを䜿うこずで時空間的に補間した分垃を䞎えられるこずを教わりたした

枩床を䞎えるパッチの栌子点数が7000点皋床たでの時は枩床分垃を問題なく䞎えるこずができるのですが
栌子点数が8000点を超えるようなモデルを䜿甚した堎合に䞎えたはずの枩床ず違う枩床が代入される点が出おくるずいう珟象が起こりたす
たたこのような点は栌子点数が増えるに぀れお増えおいきたす
どこかで代入できる䞊限倀のようなものが蚭定されおいるのでしょうか
ご教授お願いいたしたす

mou

ohbuchi

unread,
Jan 30, 2012, 8:36:58 PM1/30/12
to OpenFOAM
こんにちは。
゜ヌスコヌドを芋たずころ固定配列を䜿ったりしお、パッチサむズに䞊限がある様な郚分は芋圓たりたせんでした。
問題があるずすれば空間補間の郚分だず思いたす。
お䜿いのOFは1.7.1だったず思いたすが、2010幎8月にリリヌス埌、2件のバグフィックスず件の拡匵修正が
圓該クラスに関しお実斜されおいたす。もしかしたらバグかも知れたせん。
䞀床、最新バヌゞョンで詊しおみる䟡倀があるかも知れたせん。

空間補間の凊理内容はサンプル点を読み蟌んで䞉角パッチを䜜り、パッチフェヌスの各点に぀いお隣接
䞉角圢を探し、重みを蚈算しおいたす。
meshTools/triSurface/triSurfaceTools/triSurfaceTools.Cの
calcInterpolationWeights

以䞊、ご参考たで。


On 1月30日, 午埌4:01, mou <koni...@yahoo.co.jp> wrote:
> お䞖話になっおおりたすmouです
>
> 以前「関数による2次元分垃を持った非定垞境界条件の蚭定」ずいう衚題で質問を投皿させおいただきたしたhttps://groups.google.com/group/openfoam/browse_thread/thread/40cf9f4...

mou

unread,
Feb 1, 2012, 10:32:26 AM2/1/12
to OpenFOAM
ohbuchi様

質問に察する回答どうもありがずうございたした
バグの可胜性があるずいうこずでver.2.1.xを䜿甚しおみたしたずころ
ただ蚈算途䞭ですがおそらく正しい倀が代入されるようになったず思いたす
1.7.1ず2.1ではいささか倉曎されおいる点があるず思われたすが
埐々に移行しようず思いたす

貎重なアドバむスありがずうございたした

mou
> > mou- 匕甚テキストを衚瀺しない -
>
> - 匕甚テキストを衚瀺 -

mou

unread,
Feb 6, 2012, 7:08:59 AM2/6/12
to OpenFOAM
こんばんはmouです

䞊蚘投皿においおバヌゞョンを倉えたこずで䞍具合が修正されただろうずいうこずを曞きたしたが
点数が倚いずやはり境界条件ずしお䞎えた倀が入っおいたせんでした

䞀䜓䜕が問題になっおいるのでしょうか 
> > - 匕甚テキストを衚瀺 -- 匕甚テキストを衚瀺しない -
>
> - 匕甚テキストを衚瀺 -

ohbuchi

unread,
Feb 6, 2012, 2:34:36 PM2/6/12
to OpenFOAM
たず、枩床を指定するパッチは平面でしょうか
もし曲面であれば、デヌタを定矩する点列ずパッチの分解胜があたり倧きく異なるず
定矩点ずパッチの各フェヌスのズレが倧きくなるために補間䞊の䞍具合が発生する可胜性
がありそうです未確認ですが。
たた、補間がうたく行かない点の出珟の仕方にパタヌンはないでしょうか
たた、きっかり8000点から補間゚ラヌが生ずるのでしょうか

mou

unread,
Feb 8, 2012, 1:30:45 AM2/8/12
to OpenFOAM
mouです

枩床を指定しおいるパッチは平面ず曲面を共に有しおいたす
平面から球の䞀郚をくり抜いたような面ずなっおいたす

䞎えた倀ず異なるずいうのは具䜓的には
䟋えばconstant/boundaryData/top/1(topはパッチ名です)で䞎えた枩床ず
実際に蚈算させおいき時間が1の時のデヌタをサンプリングしたものの倀が
倧きく異なっおいる倧きいずころで1℃以䞊点が数点発生しおいるずいうこずです
このずき座暙は同じでした

このような点は平面郚分にも曲面郚分にも衚れおおりはっきりずした芏則がないように思われたす
きっちり8000点ずいうこずはおそらくないようで
ver1.7.1では8300点皋床で異なった倀が代入されおいたしたがver2.1.xでは蚈算するこずができたした
珟圚行っおいる蚈算はパッチ面の点数が19000点皋床のものです

たた分解胜の違いを確かめるために厚み方向の点数を倍にしおみたしたが
面内の同じ点で誀った倀ずなっおしたいたした

ohbuchi

unread,
Feb 8, 2012, 2:04:05 AM2/8/12
to OpenFOAM
境界条件の枩床は、枩床指定の点列から隣接点を぀かっお線圢補間されパッチのフェヌス䞭心で蚭定されたす。
䞀方、蚈算結果の評䟡はsamplingナヌティリティで枩床指定点の䜍眮でフェヌス䞭心点から補間しお求めおいる
わけですね。
぀たり、境界条件蚭定時ずsampling時の二回補間を行っおいるこずになりたす。
この床の補間により蚭定倀ず蚈算倀のズレが生じおいるずすれば、特に枩床募配の倧きい郚分に偏っお発生しお
いたせんか
たた、sampleDictのinterpolationSchemeを色々倉えおみるず良いかも知れたせん。

mou

unread,
Feb 8, 2012, 6:56:09 AM2/8/12
to OpenFOAM
サンプリングの際の補間方法を倉えおみたしたが倉化はありたせんでした 
やはり間違った枩床が蚈算に䜿われおしたっおいるようです
珟圚GAMBIT2.3を甚いおメッシュを䜜成しfluentMeshToFoamでOpenFOAMに適甚しおいたすが
この際に䜕かおかしなこずが起こるずいう可胜性は考えられたすか

ohbuchi

unread,
Feb 8, 2012, 3:38:58 PM2/8/12
to OpenFOAM
指定点列デヌタから境界パッチの枩床分垃ぞの補間には問題がなく、むしろ
蚈算結果の定矩点ぞの補間(samplingで内郚枩床の圱響を受けおズレが生じお
いる様に思うのですが。
interpolationSchemeはcellPointFaceが䞀番良さそうですが、それでも倉化はありたせんでしたか

指定点をパッチのフェヌス䞭心に合わせれば必ず䞀臎するので、最埌は自前で空間補間しお各時間の
テヌブルを䜜成するしかないのでしょうか。

mou

unread,
Feb 10, 2012, 1:22:33 AM2/10/12
to OpenFOAM
サンプリングはパッチ別に曞き出しおいたすが
cellPointFaceにしおも結果が倉わりたせんでした 

蚈算に倉な倀が入っおいるず考える根拠に぀いおですが
たずparaviewで衚瀺される倀がsurfaceで芋るず呚りず違っおいたす
たた珟圚゜ルバのcreateFields.Hにおいおパッチ法線方向の枩床募配を以䞋のように定矩し
laplacianFoam.cにおいおgradT_norm=fvc::snGrad(T)を蚈算しおいたす
蚈算で出力されるこの倀も呚蟺ずかなり違う倀を瀺しおいたす


//createFields.H//
surfaceScalarField gradT_norm
(
IOobject
(
"gradT_norm",
runTime.timeName(),
mesh,
IOobject::NO_READ,
IOobject::AUTO_WRITE
),
fvc::snGrad(T)
);

ohbuchi

unread,
Feb 11, 2012, 1:39:13 AM2/11/12
to OpenFOAM
盎方䜓の熱䌝導問題で詊しおみたした。
端面の枩床をtimeVaryingMappedFixedValueで䞎えたした。
指定点数は25点、端面パッチのフェヌス数は最倧22500たで
増やしおみたしたが、党く問題がありたせんでした。
フェヌス数の問題ではなさそうです。
詊したバヌゞョンは2.1.xgit最新版です。

mou

unread,
Feb 19, 2012, 11:17:48 PM2/19/12
to OpenFOAM
返信が遅くなり申し蚳ありたせんでした

いろいろ詊しおみたずころ
「点数が倚いから倉な倀が入る」のではなく
「点数が倚いず倀の誀差が顕著に出る」
でした

圱響の䞀぀にすぎたせんが
座暙ファむル「point」の
座暙の小数点以䞋桁数を现かくしおいくこずで
倀が倧きく倉わっおいくこずがわかりたした
10^-7ず10^-8のオヌダヌでも倉化はありたした
より现かく䞎える方がよいず思われたす

ただし他の条件等を倉えおも改善されず
未だに困っおいる次第です

ohbuchi

unread,
Feb 20, 2012, 4:21:32 AM2/20/12
to OpenFOAM
Dictionaryから読み蟌んだデヌタは倍粟床でコンパむルしたOpenFOAMなら
盎ちに有効数字15桁はある実数ずしお保持されたすので、指定した桁数が
それほど圱響するずは考えにくいです。
しかし、timeVaryingMappedFixedValueFvPatchField.Cを読むず、
readSamplePoint関数内でサンプルデヌタを読み蟌んだあずで
先頭のデヌタ点から最も遠い点ず先頭点ずを通る盎線を軞ずしお
この軞から最も遠いサンプル点で定矩される平面座暙にサンプル点
をマッピングしお次元ドロネヌ分割で䞉角圢パッチを䜜成しおいたす。
どうやらサンプル点は平面䞊にあるこずを前提ずしおいる様に芋えたす。
そうなるず、倧きく湟曲したパッチで利甚するずパッチ面がこの二次元
パッチず盎亀する様な点では極めお粟床が悪くなるず思いたす。

以前にも曞きたしたが、サンプル点もパッチ面の座暙も既知なので
自分で補間プログラムを䜜っお境界倀を求めおおきnonuniform Listで
盎接指定するのが䞀番よさそうに思えたす。
> ...
>
> もっず読む ≫

mou

unread,
Feb 20, 2012, 5:55:36 AM2/20/12
to OpenFOAM
アドバむスありがずうございたす
䞀぀䌺いたいのですが
timeVaryingMappedFixedValueを䜿い぀぀境界倀を盎接指定する時に
nonuniform Listで䞎えるずいうのはどこのファむルで指定できるのでしょうか

ちなみにですが
timeVaryingMappedFixedValueを甚いお境界条件を䞎える際にはパッチ面の
点数に察しお党おの点における枩床をあらかじめ出しお䞎えおいたす
぀たり補間したデヌタをすでに䞎えおいお
boundaryData/top/pointsでパッチ面の党おの点に察応した座暙を定矩し
boundaryData/top/0,1,2, の時間フォルダでパッチ面の党点の枩床を䞎えおいたす
> > > > > > > > > > > > 䞀床、最新バヌゞョンで詊しおみる䟡倀があるかも知れたせん。- 匕甚テキストを衚瀺しない -
>
> - 匕甚テキストを衚瀺 -...
>
> もっず読む ≫

ohbuchi

unread,
Feb 20, 2012, 4:22:30 PM2/20/12
to OpenFOAM
Mapping機胜を䜿わずに盎接各フェヌスの倀を蚭定しお、時間補間だけを利甚するので
あれば、timeVaryingNonUniformFixedValueを䜿うのが良いず思いたす。
珟圚のバヌゞョンでは無くなっおいたすが、䞋蚘に蚘事が残っおいたす。
http://openfoamwiki.net/index.php/Contrib_timeVaryingNonuniformFixedValue
バヌゞョン甚なので恐らくそのたたではコンパむルできないず思われたす。
timeVaryingMappedFixedValueからMapping郚分を取り陀けば良いずも考えられるので
䞡者を芋比べおみるず良いかも知れたせん。
> ...
>
> もっず読む ≫

ohbuchi

unread,
Feb 20, 2012, 4:54:49 PM2/20/12
to OpenFOAM
パッチず同䞀の座暙を䞎えおいるのにMappingがうたくいかないのはバグであるず
思われたすので、開発元にバグリポヌトを出すこずをお勧めしたす。
http://www.openfoam.com/bugs/
再珟可胜なデヌタを添付すれば察応しおもらえるず思いたす。

たた、完党に力技ですが、蚈算をステップづ぀で止めお、最終時刻のTファむル
をスクリプト蚀語で曞き換えお進めれば、ラむブラリのコンパむルなしでも察応
可胜ず思いたす。

以䞊、ご参考たで。

On 2月21日, 午前6:22, ohbuchi <ohbu...@amber.plala.or.jp> wrote:
> Mapping機胜を䜿わずに盎接各フェヌスの倀を蚭定しお、時間補間だけを利甚するので
> あれば、timeVaryingNonUniformFixedValueを䜿うのが良いず思いたす。
> 珟圚のバヌゞョンでは無くなっおいたすが、䞋蚘に蚘事が残っおいたす。http://openfoamwiki.net/index.php/Contrib_timeVaryingNonuniformFixedV...
> ...
>
> もっず読む ≫

mou

unread,
Mar 13, 2012, 12:36:48 AM3/13/12
to open...@googlegroups.com
返事が遅くなっおしたい申し蚳ありたせんでした
長い文面になりたすがもう少しご協力しおいただけるず幞いです

既存のtimeVaryingMappedFixedValueラむブラリから境界面のマッピング郚分を取り去りたいず考えおいたす
これを新たにtimeVaryingFixedValueずしたす
助蚀いただいた䞋蚘の内容を取り去っおみたした

「先頭のデヌタ点から最も遠い点ず先頭点ずを通る盎線を軞ずしお 
この軞から最も遠いサンプル点で定矩される平面座暙にサンプル点 
をマッピングしお次元ドロネヌ分割で䞉角圢パッチを䜜成しおいたす。」

しかしコンパむル゚ラヌは出ないもののプログラム実行時に以䞋の゚ラヌが出たす
laplacianFoam2_11ずいうのは実行゜ルバです
おそらくラむブラリの改良が䞍適切だず思われるのですがここからどうしおいいかわかりたせん
゚ラヌの䞋にプログラムtimeVaryingFixedValueFvPatchField.Cを茉せたしたので
䜕か問題点を教えおいただけるず非垞にありがたいです


#0  Foam::error::printStack(Foam::Ostream&) in "/home/mou/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64Gcc44DPOpt/lib/libOpenFOAM.so"
#1  Foam::sigSegv::sigHandler(int) in "/home/mou/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64Gcc44DPOpt/lib/libOpenFOAM.so"
#2  __restore_rt at sigaction.c:0
#3  Foam::tmp<Foam::Field<Foam::typeOfSum<double, double>::type> > Foam::operator-<double, double>(Foam::UList<double> const&, Foam::tmp<Foam::Field<double> > const&) in "/home/mou/OpenFOAM/mou-2.1.x/platforms/linux64Gcc44DPOpt/bin/laplacianFoam2_11"
#4  Foam::fvPatchField<double>::snGrad() const in "/home/mou/OpenFOAM/mou-2.1.x/platforms/linux64Gcc44DPOpt/bin/laplacianFoam2_11"
#5  Foam::fv::gaussGrad<double>::correctBoundaryConditions(Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&, Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh>&) in "/home/mou/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64Gcc44DPOpt/lib/libfiniteVolume.so"
#6  Foam::fv::leastSquaresGrad<double>::calcGrad(Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&, Foam::word const&) const in "/home/mou/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64Gcc44DPOpt/lib/libfiniteVolume.so"
#7  Foam::fv::gradScheme<double>::grad(Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&, Foam::word const&) const in "/home/mou/OpenFOAM/mou-2.1.x/platforms/linux64Gcc44DPOpt/bin/laplacianFoam2_11"
#8  Foam::tmp<Foam::GeometricField<Foam::outerProduct<Foam::Vector<double>, double>::type, Foam::fvPatchField, Foam::volMesh> > Foam::fvc::grad<double>(Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&, Foam::word const&) in "/home/mou/OpenFOAM/mou-2.1.x/platforms/linux64Gcc44DPOpt/bin/laplacianFoam2_11"
#9  Foam::tmp<Foam::GeometricField<Foam::outerProduct<Foam::Vector<double>, double>::type, Foam::fvPatchField, Foam::volMesh> > Foam::fvc::grad<double>(Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) in "/home/mou/OpenFOAM/mou-2.1.x/platforms/linux64Gcc44DPOpt/bin/laplacianFoam2_11"
#10  main in "/home/mou/OpenFOAM/mou-2.1.x/platforms/linux64Gcc44DPOpt/bin/laplacianFoam2_11"
#11  __libc_start_main in "/lib64/libc.so.6"
#12  Foam::regIOobject::writeObject(Foam::IOstream::streamFormat, Foam::IOstream::versionNumber, Foam::IOstream::compressionType) const in "/home/mou/OpenFOAM/mou-2.1.x/platforms/linux64Gcc44DPOpt/bin/laplacianFoam2_11"
セグメンテヌション違反です



src/finiteVolume/fields/fvPatchFields/derived/timeVaryingFixedValueFvPatchField.C
/*---------------------------------------------------------------------------*\
  =========                 |
  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
   \\    /   O peration     |
    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
     \\/     M anipulation  |
-------------------------------------------------------------------------------
License
    This file is part of OpenFOAM.

    OpenFOAM is free software: you can redistribute it and/or modify it
    under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    for more details.

    You should have received a copy of the GNU General Public License
    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.

\*---------------------------------------------------------------------------*/

#include "timeVaryingFixedValueFvPatchField.H"
#include "Time.H"
#include "triSurfaceTools.H"
#include "triSurface.H"
#include "vector2D.H"
#include "OFstream.H"
#include "AverageIOField2.H"
#include "Random.H"

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

namespace Foam
{

// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //

template<class Type>
timeVaryingFixedValueFvPatchField<Type>::
timeVaryingFixedValueFvPatchField
(
    const fvPatch& p,
    const DimensionedField<Type, volMesh>& iF
)
:
    fixedValueFvPatchField<Type>(p, iF),
    fieldTableName_(iF.name()),
    setAverage_(false),
    perturb_(0),
    referenceCS_(NULL),
    nearestVertex_(0),
    nearestVertexWeight_(0),
    sampleTimes_(0),
    startSampleTime_(-1),
    startSampledValues_(0),
    startAverage_(pTraits<Type>::zero),
    endSampleTime_(-1),
    endSampledValues_(0),
    endAverage_(pTraits<Type>::zero)
{}


template<class Type>
timeVaryingFixedValueFvPatchField<Type>::
timeVaryingFixedValueFvPatchField
(
    const timeVaryingFixedValueFvPatchField<Type>& ptf,
    const fvPatch& p,
    const DimensionedField<Type, volMesh>& iF,
    const fvPatchFieldMapper& mapper
)
:
    fixedValueFvPatchField<Type>(ptf, p, iF, mapper),
    fieldTableName_(ptf.fieldTableName_),
    setAverage_(ptf.setAverage_),
    perturb_(ptf.perturb_),
    referenceCS_(NULL),
    nearestVertex_(0),
    nearestVertexWeight_(0),
    sampleTimes_(0),
    startSampleTime_(-1),
    startSampledValues_(0),
    startAverage_(pTraits<Type>::zero),
    endSampleTime_(-1),
    endSampledValues_(0),
    endAverage_(pTraits<Type>::zero)
{}


template<class Type>
timeVaryingFixedValueFvPatchField<Type>::
timeVaryingFixedValueFvPatchField
(
    const fvPatch& p,
    const DimensionedField<Type, volMesh>& iF,
    const dictionary& dict
)
:
    fixedValueFvPatchField<Type>(p, iF),
    fieldTableName_(iF.name()),
    setAverage_(readBool(dict.lookup("setAverage"))),
    perturb_(dict.lookupOrDefault("perturb", 1E-5)),
    referenceCS_(NULL),
    nearestVertex_(0),
    nearestVertexWeight_(0),
    sampleTimes_(0),
    startSampleTime_(-1),
    startSampledValues_(0),
    startAverage_(pTraits<Type>::zero),
    endSampleTime_(-1),
    endSampledValues_(0),
    endAverage_(pTraits<Type>::zero)
{
    dict.readIfPresent("fieldTableName", fieldTableName_);

    if (dict.found("value"))
    {
        fvPatchField<Type>::operator==(Field<Type>("value", dict, p.size()));
    }
    else
    {
        updateCoeffs();
    }
}


template<class Type>
timeVaryingFixedValueFvPatchField<Type>::
timeVaryingFixedValueFvPatchField
(
    const timeVaryingFixedValueFvPatchField<Type>& ptf
)
:
    fixedValueFvPatchField<Type>(ptf),
    fieldTableName_(ptf.fieldTableName_),
    setAverage_(ptf.setAverage_),
    perturb_(ptf.perturb_),
    referenceCS_(ptf.referenceCS_),
    nearestVertex_(ptf.nearestVertex_),
    nearestVertexWeight_(ptf.nearestVertexWeight_),
    sampleTimes_(ptf.sampleTimes_),
    startSampleTime_(ptf.startSampleTime_),
    startSampledValues_(ptf.startSampledValues_),
    startAverage_(ptf.startAverage_),
    endSampleTime_(ptf.endSampleTime_),
    endSampledValues_(ptf.endSampledValues_),
    endAverage_(ptf.endAverage_)
{}



template<class Type>
timeVaryingFixedValueFvPatchField<Type>::
timeVaryingFixedValueFvPatchField
(
    const timeVaryingFixedValueFvPatchField<Type>& ptf,
    const DimensionedField<Type, volMesh>& iF
)
:
    fixedValueFvPatchField<Type>(ptf, iF),
    fieldTableName_(ptf.fieldTableName_),
    setAverage_(ptf.setAverage_),
    perturb_(ptf.perturb_),
    referenceCS_(ptf.referenceCS_),
    nearestVertex_(ptf.nearestVertex_),
    nearestVertexWeight_(ptf.nearestVertexWeight_),
    sampleTimes_(ptf.sampleTimes_),
    startSampleTime_(ptf.startSampleTime_),
    startSampledValues_(ptf.startSampledValues_),
    startAverage_(ptf.startAverage_),
    endSampleTime_(ptf.endSampleTime_),
    endSampledValues_(ptf.endSampledValues_),
    endAverage_(ptf.endAverage_)
{}


// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //

template<class Type>
void timeVaryingFixedValueFvPatchField<Type>::autoMap
(
    const fvPatchFieldMapper& m
)
{
    fixedValueFvPatchField<Type>::autoMap(m);
    if (startSampledValues_.size())
    {
        startSampledValues_.autoMap(m);
        endSampledValues_.autoMap(m);
    }
}


template<class Type>
void timeVaryingFixedValueFvPatchField<Type>::rmap
(
    const fvPatchField<Type>& ptf,
    const labelList& addr
)
{
    fixedValueFvPatchField<Type>::rmap(ptf, addr);

    const timeVaryingFixedValueFvPatchField<Type>& tiptf =
        refCast<const timeVaryingFixedValueFvPatchField<Type> >(ptf);

    startSampledValues_.rmap(tiptf.startSampledValues_, addr);
    endSampledValues_.rmap(tiptf.endSampledValues_, addr);
}


template<class Type>
void timeVaryingFixedValueFvPatchField<Type>::readSamplePoints()
{
    // Read the sample points

    pointIOField samplePoints
    (
        IOobject
        (
            "points",
            this->db().time().constant(),
            "boundaryData"/this->patch().name(),
            this->db(),
            IOobject::MUST_READ,
            IOobject::AUTO_WRITE,
            false
        )
    );

    const fileName samplePointsFile = samplePoints.filePath();

    if (debug)
    {
        Info<< "timeVaryingFixedValueFvPatchField :"
            << " Read " << samplePoints.size() << " sample points from "
            << samplePointsFile << endl;
    }

    // Read the times for which data is available

    const fileName samplePointsDir = samplePointsFile.path();

    sampleTimes_ = Time::findTimes(samplePointsDir);

    if (debug)
    {
        Info<< "timeVaryingFixedValueFvPatchField : In directory "
            << samplePointsDir << " found times " << timeNames(sampleTimes_)
            << endl;
    }
}


template<class Type>
wordList timeVaryingFixedValueFvPatchField<Type>::timeNames
(
    const instantList& times
)
{
    wordList names(times.size());

    forAll(times, i)
    {
        names[i] = times[i].name();
    }
    return names;
}


template<class Type>
void timeVaryingFixedValueFvPatchField<Type>::findTime
(
    const fileName& instance,
    const fileName& local,
    const scalar timeVal,
    label& lo,
    label& hi
) const
{
    lo = startSampleTime_;
    hi = -1;

    for (label i = startSampleTime_+1; i < sampleTimes_.size(); i++)
    {
        if (sampleTimes_[i].value() > timeVal)
        {
            break;
        }
        else
        {
            lo = i;
        }
    }

    if (lo == -1)
    {
        FatalErrorIn("findTime")
            << "Cannot find starting sampling values for current time "
            << timeVal << nl
            << "Have sampling values for times "
            << timeNames(sampleTimes_) << nl
            << "In directory "
            <<  this->db().time().constant()/"boundaryData"/this->patch().name()
            << "\n    on patch " << this->patch().name()
            << " of field " << fieldTableName_
            << exit(FatalError);
    }

    if (lo < sampleTimes_.size()-1)
    {
        hi = lo+1;
    }


    if (debug)
    {
        if (hi == -1)
        {
            Pout<< "findTime : Found time " << timeVal << " after"
                << " index:" << lo << " time:" << sampleTimes_[lo].value()
                << endl;
        }
        else
        {
            Pout<< "findTime : Found time " << timeVal << " inbetween"
                << " index:" << lo << " time:" << sampleTimes_[lo].value()
                << " and index:" << hi << " time:" << sampleTimes_[hi].value()
                << endl;
        }
    }
}


template<class Type>
void timeVaryingFixedValueFvPatchField<Type>::checkTable()
{
    // Initialise
    if (startSampleTime_ == -1 && endSampleTime_ == -1)
    {
        readSamplePoints();
    }

    // Find current time in sampleTimes
    label lo = -1;
    label hi = -1;

    findTime
    (
        this->db().time().constant(),
        "boundaryData"/this->patch().name(),
        this->db().time().value(),
        lo,
        hi
    );

    // Update sampled data fields.

    if (lo != startSampleTime_)
    {
        startSampleTime_ = lo;

        if (startSampleTime_ == endSampleTime_)
        {
            // No need to reread since are end values
            if (debug)
            {
                Pout<< "checkTable : Setting startValues to (already read) "
                    <<   "boundaryData"
                        /this->patch().name()
                        /sampleTimes_[startSampleTime_].name()
                    << endl;
            }
            startSampledValues_ = endSampledValues_;
            startAverage_ = endAverage_;
        }
        else
        {
            if (debug)
            {
                Pout<< "checkTable : Reading startValues from "
                    <<   "boundaryData"
                        /this->patch().name()
                        /sampleTimes_[lo].name()
                    << endl;
            }


            // Reread values and interpolate
            AverageIOField2<Type> vals
            (
                IOobject
                (
                    fieldTableName_,
                    this->db().time().constant(),
                    "boundaryData"
                   /this->patch().name()
                   /sampleTimes_[startSampleTime_].name(),
                    this->db(),
                    IOobject::MUST_READ,
                    IOobject::AUTO_WRITE,
                    false
                )
            );

            startAverage_ = vals.average();
            startSampledValues_ = interpolate(vals);
        }
    }

    if (hi != endSampleTime_)
    {
        endSampleTime_ = hi;

        if (endSampleTime_ == -1)
        {
            // endTime no longer valid. Might as well clear endValues.
            if (debug)
            {
                Pout<< "checkTable : Clearing endValues" << endl;
            }
            endSampledValues_.clear();
        }
        else
        {
            if (debug)
            {
                Pout<< "checkTable : Reading endValues from "
                    <<   "boundaryData"
                        /this->patch().name()
                        /sampleTimes_[endSampleTime_].name()
                    << endl;
            }
            // Reread values and interpolate
            AverageIOField2<Type> vals
            (
                IOobject
                (
                    fieldTableName_,
                    this->db().time().constant(),
                    "boundaryData"
                   /this->patch().name()
                   /sampleTimes_[endSampleTime_].name(),
                    this->db(),
                    IOobject::MUST_READ,
                    IOobject::AUTO_WRITE,
                    false
                )
            );
            endAverage_ = vals.average();
            endSampledValues_ = interpolate(vals);
        }
    }
}


template<class Type>
tmp<Field<Type> > timeVaryingFixedValueFvPatchField<Type>::interpolate
(
    const Field<Type>& sourceFld
) const
{
    tmp<Field<Type> > tfld(new Field<Type>(nearestVertex_.size()));
    Field<Type>& fld = tfld();

    forAll(fld, i)
    {
        const FixedList<label, 3>& verts = nearestVertex_[i];
        const FixedList<scalar, 3>& w = nearestVertexWeight_[i];

        if (verts[2] == -1)
        {
            if (verts[1] == -1)
            {
                // Use vertex0 only
                fld[i] = sourceFld[verts[0]];
            }
            else
            {
                // Use vertex 0,1
                fld[i] =
                    w[0]*sourceFld[verts[0]]
                  + w[1]*sourceFld[verts[1]];
            }
        }
        else
        {
            fld[i] =
                w[0]*sourceFld[verts[0]]
              + w[1]*sourceFld[verts[1]]
              + w[2]*sourceFld[verts[2]];
        }
    }
    return tfld;
}


template<class Type>
void timeVaryingFixedValueFvPatchField<Type>::updateCoeffs()
{
    if (this->updated())
    {
        return;
    }

    checkTable();

    // Interpolate between the sampled data

    Type wantedAverage;

    if (endSampleTime_ == -1)
    {
        // only start value
        if (debug)
        {
            Pout<< "updateCoeffs : Sampled, non-interpolated values"
                << " from start time:"
                << sampleTimes_[startSampleTime_].name() << nl;
        }

        this->operator==(startSampledValues_);
        wantedAverage = startAverage_;
    }
    else
    {
        scalar start = sampleTimes_[startSampleTime_].value();
        scalar end = sampleTimes_[endSampleTime_].value();

        scalar s = (this->db().time().value()-start)/(end-start);

        if (debug)
        {
            Pout<< "updateCoeffs : Sampled, interpolated values"
                << " between start time:"
                << sampleTimes_[startSampleTime_].name()
                << " and end time:" << sampleTimes_[endSampleTime_].name()
                << " with weight:" << s << endl;
        }

        this->operator==((1-s)*startSampledValues_ + s*endSampledValues_);
        wantedAverage = (1-s)*startAverage_ + s*endAverage_;
    }

    // Enforce average. Either by scaling (if scaling factor > 0.5) or by
    // offsetting.
    if (setAverage_)
    {
        const Field<Type>& fld = *this;

        Type averagePsi =
            gSum(this->patch().magSf()*fld)
           /gSum(this->patch().magSf());

        if (debug)
        {
            Pout<< "updateCoeffs :"
                << " actual average:" << averagePsi
                << " wanted average:" << wantedAverage
                << endl;
        }

        if (mag(averagePsi) < VSMALL)
        {
            // Field too small to scale. Offset instead.
            const Type offset = wantedAverage - averagePsi;
            if (debug)
            {
                Pout<< "updateCoeffs :"
                    << " offsetting with:" << offset << endl;
            }
            this->operator==(fld+offset);
        }
        else
        {
            const scalar scale = mag(wantedAverage)/mag(averagePsi);

            if (debug)
            {
                Pout<< "updateCoeffs :"
                    << " scaling with:" << scale << endl;
            }
            this->operator==(scale*fld);
        }
    }

    if (debug)
    {
        Pout<< "updateCoeffs : set fixedValue to min:" << gMin(*this)
            << " max:" << gMax(*this) << endl;
    }

    fixedValueFvPatchField<Type>::updateCoeffs();
}


template<class Type>
void timeVaryingFixedValueFvPatchField<Type>::write(Ostream& os) const
{
    fvPatchField<Type>::write(os);
    os.writeKeyword("setAverage") << setAverage_ << token::END_STATEMENT << nl;
    os.writeKeyword("peturb") << perturb_ << token::END_STATEMENT << nl;

    if (fieldTableName_ != this->dimensionedInternalField().name())
    {
        os.writeKeyword("fieldTableName") << fieldTableName_
            << token::END_STATEMENT << nl;
    }

    this->writeEntry("value", os);
}


// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

} // End namespace Foam

// ************************************************************************* //


2012幎2月21日火曜日6時54分49秒 UTC+9 ohbuchi:

mou

unread,
Mar 16, 2012, 4:27:08 AM3/16/12
to open...@googlegroups.com
mouです
 
連投倱瀌したす
C++には党く銎染みがなくラむブラリの改良も初めおのためコヌドを読むこずもたたなりたせん
䜕か少しでもヒントが頂けるず先に進める気がしたす
 
ohbuchiさんから教えおいただいた
座暙を読み取り最初の点から最も遠い点を結ぶ盎線ず
その盎線から最も遠い点が成す平面を甚いお座暙を決定しおいるずいうこずは理解できたした
しかしコヌドのどの郚分を取り陀いおよくどこを倉えなければいけないのかのかずいうこずがわかりたせん
 
アドバむスを頂けるず非垞に助かりたす
よろしくお願いしたす

ohbuchi

unread,
Mar 22, 2012, 5:56:27 AM3/22/12
to OpenFOAM
挞く時間が取れお詊すこずができたした。以前ご玹介したOpenFOAM
WikiのtimeVaryingNonuniformFixedValueをOpenFOAM-2.1.xで
コンパむルするこずができたした。
修正箇所は、コンストラクタの匕数くらいでした。
䜿い方は、Wikiにある通り、constantディレクトリ䞋にパッチ名の
ディレクトリを䜜成しお、時刻倀を名前にも぀ファむルを奜きなだけ
䜜成し、その䞭にパッチに含たれるフェヌスでのフィヌルド倀を
リストずしお蚘述するだけです。

倧枕真志

unread,
Mar 22, 2012, 6:02:14 AM3/22/12
to OpenFOAM
゜ヌスコヌドずサンプルを添付したす。
゜ヌスコヌドを
src/finiteVolume/fields/fvPatchFields/derived
に展開し、finiteVolume/Make/filesに
timeVaryingNonuniformFixedValueFvPatchFields.C
を远加しおコンパむルしおください。

2012幎3月22日18:56 ohbuchi <ohbu...@gmail.com>:

--
このメヌルは Google グルヌプのグルヌプ「OpenFOAM」の登録者に送られおいたす。
このグルヌプに投皿するには、open...@googlegroups.com にメヌルを送信しおください。
このグルヌプから退䌚するには、openfoam+u...@googlegroups.com にメヌルを送信しおください。
詳现に぀いおは、http://groups.google.com/group/openfoam?hl=ja からこのグルヌプにアクセスしおください。


sewage.tar.gz
timeVaryingNonuniformFixedValue.tgz

ohbuchi

unread,
Mar 23, 2012, 7:54:37 PM3/23/12
to OpenFOAM
サンプルの方は別のものを間違えお添付しおしたいたした。

On 3月22日, 午埌7:02, 倧枕真志 <ohbuc...@gmail.com> wrote:
> ゜ヌスコヌドずサンプルを添付したす。
> ゜ヌスコヌドを
> src/finiteVolume/fields/fvPatchFields/derived
> に展開し、finiteVolume/Make/filesに
> timeVaryingNonuniformFixedValueFvPatchFields.C
> を远加しおコンパむルしおください。
>
> 2012幎3月22日18:56 ohbuchi <ohbuc...@gmail.com>:
>
>
>
>
>
>
>
> > 挞く時間が取れお詊すこずができたした。以前ご玹介したOpenFOAM
> > WikiのtimeVaryingNonuniformFixedValueをOpenFOAM-2.1.xで
> > コンパむルするこずができたした。
> > 修正箇所は、コンストラクタの匕数くらいでした。
> > 䜿い方は、Wikiにある通り、constantディレクトリ䞋にパッチ名の
> > ディレクトリを䜜成しお、時刻倀を名前にも぀ファむルを奜きなだけ
> > 䜜成し、その䞭にパッチに含たれるフェヌスでのフィヌルド倀を
> > リストずしお蚘述するだけです。
>
> > On 3月16日, 午埌5:27, mou <koni...@yahoo.co.jp> wrote:
> > > mouです
>
> > > 連投倱瀌したす
> > > C++には党く銎染みがなくラむブラリの改良も初めおのためコヌドを読むこずもたたなりたせん
> > > 䜕か少しでもヒントが頂けるず先に進める気がしたす
>
> > > ohbuchiさんから教えおいただいた
> > > 座暙を読み取り最初の点から最も遠い点を結ぶ盎線ず
> > > その盎線から最も遠い点が成す平面を甚いお座暙を決定しおいるずいうこずは理解できたした
> > > しかしコヌドのどの郚分を取り陀いおよくどこを倉えなければいけないのかのかずいうこずがわかりたせん
>
> > > アドバむスを頂けるず非垞に助かりたす
> > > よろしくお願いしたす
>
> > --
> > このメヌルは Google グルヌプのグルヌプ「OpenFOAM」の登録者に送られおいたす。
> > このグルヌプに投皿するには、open...@googlegroups.com にメヌルを送信しおください。
> > このグルヌプから退䌚するには、openfoam+u...@googlegroups.com にメヌルを送信しおください。
> > 詳现に぀いおは、http://groups.google.com/group/openfoam?hl=jaからこのグルヌプにアクセスしおください。
>
>
>
> sewage.tar.gz
> 6K衚瀺ダりンロヌド
>
> timeVaryingNonuniformFixedValue.tgz
> 12K衚瀺ダりンロヌド

倧枕真志

unread,
Mar 23, 2012, 8:30:18 PM3/23/12
to OpenFOAM
サンプルファむルを添付しなおしたす。

2012幎3月24日8:54 ohbuchi <ohbu...@gmail.com>:
varying.tar.gz

mou

unread,
Mar 29, 2012, 6:01:50 AM3/29/12
to open...@googlegroups.com
ohbuchi様
 
プラグラムの䜜成ありがずうございたした自分のケヌスで詊しおみたずころ
確かにtimeVaryingMappedFixedValueで芋られたようなマッピングによる誀った倀の代入がなくなりたした
ずっず悩んで八方ふさがりだったので倧倉感謝しおいたす
 
䞀぀だけ気になったこずなのですがこのラむブラリtimeVaryingNonuniformFixedValueは䞊列化蚈算には察応しおいないのでしょうか
decomposeParした埌にプログラムを実行したずころ゚ラヌが出おしたいたした
 
 [1] [0] #0  Foam::error::printStack(Foam::Ostream&)#0  Foam::error::printStack(Foam::Ostream&) in "/home/mou/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64Gcc44DPOpt/lib/libOpenFOAM.so"
[0] #1  Foam::sigSegv::sigHandler(int) in "/home/mou/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64Gcc44DPOpt/lib/libOpenFOAM.so"
[1] #1  Foam::sigSegv::sigHandler(int) in "/home/mou/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64Gcc44DPOpt/lib/libOpenFOAM.so"
[1] #2   in "/home/mou/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64Gcc44DPOpt/lib/libOpenFOAM.so"
[0] #2  __restore_rt__restore_rt at sigaction.c:0
[1] #3  Foam::timeVaryingNonuniformFixedValueFvPatchField<double>::updateCoeffs() at sigaction.c:0
[0] #3  Foam::timeVaryingNonuniformFixedValueFvPatchField<double>::updateCoeffs() in  in "/home/mou/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64Gcc44DPOpt/lib/libfiniteVolume.so"
[0] #4  Foam::fvMatrix<double>::fvMatrix(Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&, Foam::dimensionSet const&)"/home/mou/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64Gcc44DPOpt/lib/libfiniteVolume.so"
[1] #4  Foam::fvMatrix<double>::fvMatrix(Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&, Foam::dimensionSet const&) in  in "/home/mou/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64Gcc44DPOpt/lib/libfiniteVolume.so"
[0] #5  Foam::fv::gaussLaplacianScheme<double, double>::fvmLaplacianUncorrected(Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&)"/home/mou/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64Gcc44DPOpt/lib/libfiniteVolume.so"
[1] #5  Foam::fv::gaussLaplacianScheme<double, double>::fvmLaplacianUncorrected(Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) in "/home/mou/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64Gcc44DPOpt/lib/libfiniteVolume.so"
[1] #6  Foam::fv::gaussLaplacianScheme<double, double>::fvmLaplacian(Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) in "/home/mou/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64Gcc44DPOpt/lib/libfiniteVolume.so"
[0] #6  Foam::fv::gaussLaplacianScheme<double, double>::fvmLaplacian(Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) in "/home/mou/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64Gcc44DPOpt/lib/libfiniteVolume.so"
[1] #7   in "/home/mou/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64Gcc44DPOpt/lib/libfiniteVolume.so"
[0] #7  Foam::tmp<Foam::fvMatrix<double> > Foam::fvm::laplacian<double, double>(Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&, Foam::word const&)Foam::tmp<Foam::fvMatrix<double> > Foam::fvm::laplacian<double, double>(Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&, Foam::word const&) in "/home/mou/OpenFOAM/mou-2.1.x/platforms/linux64Gcc44DPOpt/bin/laplacianFoam2_11"
[1] #8   in "/home/mou/OpenFOAM/mou-2.1.x/platforms/linux64Gcc44DPOpt/bin/laplacianFoam2_11"
[0] #8  Foam::tmp<Foam::fvMatrix<double> > Foam::fvm::laplacian<double, double>(Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&)Foam::tmp<Foam::fvMatrix<double> > Foam::fvm::laplacian<double, double>(Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) in "/home/mou/OpenFOAM/mou-2.1.x/platforms/linux64Gcc44DPOpt/bin/laplacianFoam2_11"
[1] #9   in "/home/mou/OpenFOAM/mou-2.1.x/platforms/linux64Gcc44DPOpt/bin/laplacianFoam2_11"
[0] #9  Foam::tmp<Foam::fvMatrix<double> > Foam::fvm::laplacian<double, double>(Foam::dimensioned<double> const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&)Foam::tmp<Foam::fvMatrix<double> > Foam::fvm::laplacian<double, double>(Foam::dimensioned<double> const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) in "/home/mou/OpenFOAM/mou-2.1.x/platforms/linux64Gcc44DPOpt/bin/laplacianFoam2_11"
[1] #10   in "/home/mou/OpenFOAM/mou-2.1.x/platforms/linux64Gcc44DPOpt/bin/laplacianFoam2_11"
[0] #10  mainmain in "/home/mou/OpenFOAM/mou-2.1.x/platforms/linux64Gcc44DPOpt/bin/laplacianFoam2_11"
[1] #11  __libc_start_main in "/home/mou/OpenFOAM/mou-2.1.x/platforms/linux64Gcc44DPOpt/bin/laplacianFoam2_11"
[0] #11  __libc_start_main in "/lib64/libc.so.6"
[1] #12   in "/lib64/libc.so.6"
[0] #12  Foam::regIOobject::writeObject(Foam::IOstream::streamFormat, Foam::IOstream::versionNumber, Foam::IOstream::compressionType) constFoam::regIOobject::writeObject(Foam::IOstream::streamFormat, Foam::IOstream::versionNumber, Foam::IOstream::compressionType) const in "/home/mou/OpenFOAM/mou-2.1.x/platforms/linux64Gcc44DPOpt/bin/laplacianFoam2_11"
 in "/home/mou/OpenFOAM/mou-2.1.x/platforms/linux64Gcc44DPOpt/bin/laplacianFoam2_11"
[localhost:26180] *** Process received signal ***
[localhost:26179] *** Process received signal ***
[localhost:26179] Signal: Segmentation fault (11)
[localhost:26179] Signal code:  (-6)
[localhost:26179] Failing at address: 0x1f400006643
[localhost:26179] [ 0] /lib64/libc.so.6 [0x3f5be302d0]
[localhost:26179] [ 1] /lib64/libc.so.6(gsignal+0x35) [0x3f5be30265]
[localhost:26179] [ 2] /lib64/libc.so.6 [0x3f5be302d0]
[localhost:26179] [ 3] /home/mou/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64Gcc44DPOpt/lib/libfiniteVolume.so(_ZN4Foam43timeVaryingNonuniformFixedValueFvPatchFieldIdE12updateCoeffsEv+0x35) [0x2b81104385f5]
[localhost:26179] [ 4] /home/mou/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64Gcc44DPOpt/lib/libfiniteVolume.so(_ZN4Foam8fvMatrixIdEC1ERKNS_14GeometricFieldIdNS_12fvPatchFieldENS_7volMeshEEERKNS_12dimensionSetE+0x3f6) [0x2b811050c686]
[localhost:26179] [ 5] /home/mou/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64Gcc44DPOpt/lib/libfiniteVolume.so(_ZN4Foam2fv20gaussLaplacianSchemeIddE23fvmLaplacianUncorrectedERKNS_14GeometricFieldIdNS_13fvsPatchFieldENS_11surfaceMeshEEERKNS3_IdNS_12fvPatchFieldENS_7volMeshEEE+0xcd) [0x2b81109e7ccd]
[localhost:26179] [ 6] /home/mou/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64Gcc44DPOpt/lib/libfiniteVolume.so(_ZN4Foam2fv20gaussLaplacianSchemeIddE12fvmLaplacianERKNS_14GeometricFieldIdNS_13fvsPatchFieldENS_11surfaceMeshEEERKNS3_IdNS_12fvPatchFieldENS_7volMeshEEE+0x94) [0x2b81109ccbe4]
[localhost:26179] [ 7] laplacianFoam2_11 [0x432770]
[localhost:26179] [ 8] laplacianFoam2_11 [0x43298a]
[localhost:26179] [ 9] laplacianFoam2_11 [0x432e12]
[localhost:26179] [10] laplacianFoam2_11 [0x410407]
[localhost:26179] [11] /lib64/libc.so.6(__libc_start_main+0xf4) [0x3f5be1d994]
[localhost:26179] [12] laplacianFoam2_11(_ZNK4Foam11regIOobject11writeObjectENS_8IOstream12streamFormatENS1_13versionNumberENS1_15compressionTypeE+0xc1) [0x40e759]
[localhost:26179] *** End of error message ***
 

2012幎3月24日土曜日9時30分18秒 UTC+9 ohbuchi:
サンプルファむルを添付しなおしたす。

2012幎3月24日8:54 ohbuchi <ohbu...@gmail.com>:
> > このグルヌプに投皿するには、openfoam@googlegroups.com にメヌルを送信しおください。
> > このグルヌプから退䌚するには、openfoam+unsub...@googlegroups.com にメヌルを送信しおください。

> > 詳现に぀いおは、http://groups.google.com/group/openfoam?hl=jaからこのグルヌプにアクセスしおください。
>
>
>
>  sewage.tar.gz
> 6K衚瀺ダりンロヌド
>
>  timeVaryingNonuniformFixedValue.tgz
> 12K衚瀺ダりンロヌド

--
このメヌルは Google グルヌプのグルヌプ「OpenFOAM」の登録者に送られおいたす。
このグルヌプに投皿するには、openfoam@googlegroups.com にメヌルを送信しおください。
このグルヌプから退䌚するには、openfoam+unsub...@googlegroups.com にメヌルを送信しおください。
詳现に぀いおは、http://groups.google.com/group/openfoam?hl=ja からこのグルヌプにアクセスしおください。



2012幎3月24日土曜日9時30分18秒 UTC+9 ohbuchi:
サンプルファむルを添付しなおしたす。

2012幎3月24日8:54 ohbuchi <ohbu...@gmail.com>:
> > このグルヌプに投皿するには、openfoam@googlegroups.com にメヌルを送信しおください。
> > このグルヌプから退䌚するには、openfoam+unsub...@googlegroups.com にメヌルを送信しおください。

> > 詳现に぀いおは、http://groups.google.com/group/openfoam?hl=jaからこのグルヌプにアクセスしおください。
>
>
>
>  sewage.tar.gz
> 6K衚瀺ダりンロヌド
>
>  timeVaryingNonuniformFixedValue.tgz
> 12K衚瀺ダりンロヌド

--
このメヌルは Google グルヌプのグルヌプ「OpenFOAM」の登録者に送られおいたす。
このグルヌプに投皿するには、openfoam@googlegroups.com にメヌルを送信しおください。
このグルヌプから退䌚するには、openfoam+unsub...@googlegroups.com にメヌルを送信しおください。
詳现に぀いおは、http://groups.google.com/group/openfoam?hl=ja からこのグルヌプにアクセスしおください。



2012幎3月24日土曜日9時30分18秒 UTC+9 ohbuchi:
サンプルファむルを添付しなおしたす。

2012幎3月24日8:54 ohbuchi <ohbu...@gmail.com>:
> > このグルヌプに投皿するには、openfoam@googlegroups.com にメヌルを送信しおください。
> > このグルヌプから退䌚するには、openfoam+unsub...@googlegroups.com にメヌルを送信しおください。

> > 詳现に぀いおは、http://groups.google.com/group/openfoam?hl=jaからこのグルヌプにアクセスしおください。
>
>
>
>  sewage.tar.gz
> 6K衚瀺ダりンロヌド
>
>  timeVaryingNonuniformFixedValue.tgz
> 12K衚瀺ダりンロヌド

--
このメヌルは Google グルヌプのグルヌプ「OpenFOAM」の登録者に送られおいたす。
このグルヌプに投皿するには、openfoam@googlegroups.com にメヌルを送信しおください。
このグルヌプから退䌚するには、openfoam+unsub...@googlegroups.com にメヌルを送信しおください。
詳现に぀いおは、http://groups.google.com/group/openfoam?hl=ja からこのグルヌプにアクセスしおください。



2012幎3月24日土曜日9時30分18秒 UTC+9 ohbuchi:
サンプルファむルを添付しなおしたす。

2012幎3月24日8:54 ohbuchi <ohbu...@gmail.com>:
> > このグルヌプに投皿するには、openfoam@googlegroups.com にメヌルを送信しおください。
> > このグルヌプから退䌚するには、openfoam+unsub...@googlegroups.com にメヌルを送信しおください。

> > 詳现に぀いおは、http://groups.google.com/group/openfoam?hl=jaからこのグルヌプにアクセスしおください。
>
>
>
>  sewage.tar.gz
> 6K衚瀺ダりンロヌド
>
>  timeVaryingNonuniformFixedValue.tgz
> 12K衚瀺ダりンロヌド

--
このメヌルは Google グルヌプのグルヌプ「OpenFOAM」の登録者に送られおいたす。
このグルヌプに投皿するには、openfoam@googlegroups.com にメヌルを送信しおください。
このグルヌプから退䌚するには、openfoam+unsub...@googlegroups.com にメヌルを送信しおください。
詳现に぀いおは、http://groups.google.com/group/openfoam?hl=ja からこのグルヌプにアクセスしおください。


ohbuchi

unread,
Mar 30, 2012, 2:01:12 AM3/30/12
to OpenFOAM
OpenFOAM Wikiペヌゞに䞋蚘の蚘述がありたす。

2 ToDo
Code for proper error handling has to be added
Support for domain decomposition should be implemented somehow. So
far for parallel computations, the entire inflow patch has to stay on
one processor.

䞊列動䜜させるには、倀を指定した境界パッチが分割されない様にすれば良いそうです。

境界パッチが分割されるずプロセッサごずにフェヌスIDが倉わるので、constant䞋に䜜成した
パッチ名フォルダ䞋の各ファむルも分割しお processorN/constant䞋に配眮しなければならない
ず思いたす。元々がパラレル察応しおいないコヌドなので他にも問題があるかも知れたせん。

> > 2012幎3月24日8:54 ohbuchi <ohbuc...@gmail.com>:


>
> >> サンプルの方は別のものを間違えお添付しおしたいたした。
>
> >> On 3月22日, 午埌7:02, 倧枕真志 <ohbuc...@gmail.com> wrote:
> >> > ゜ヌスコヌドずサンプルを添付したす。
> >> > ゜ヌスコヌドを
> >> > src/finiteVolume/fields/fvPatchFields/derived
> >> > に展開し、finiteVolume/Make/filesに
> >> > timeVaryingNonuniformFixedValueFvPatchFields.C
> >> > を远加しおコンパむルしおください。
>
> >> > 2012幎3月22日18:56 ohbuchi <ohbuc...@gmail.com>:
>
> >> > > 挞く時間が取れお詊すこずができたした。以前ご玹介したOpenFOAM
> >> > > WikiのtimeVaryingNonuniformFixedValueをOpenFOAM-2.1.xで
> >> > > コンパむルするこずができたした。
> >> > > 修正箇所は、コンストラクタの匕数くらいでした。
> >> > > 䜿い方は、Wikiにある通り、constantディレクトリ䞋にパッチ名の
> >> > > ディレクトリを䜜成しお、時刻倀を名前にも぀ファむルを奜きなだけ
> >> > > 䜜成し、その䞭にパッチに含たれるフェヌスでのフィヌルド倀を
> >> > > リストずしお蚘述するだけです。
>
> >> > > On 3月16日, 午埌5:27, mou <koni...@yahoo.co.jp> wrote:
> >> > > > mouです
>
> >> > > > 連投倱瀌したす
> >> > > > C++には党く銎染みがなくラむブラリの改良も初めおのためコヌドを読むこずもたたなりたせん
> >> > > > 䜕か少しでもヒントが頂けるず先に進める気がしたす
>
> >> > > > ohbuchiさんから教えおいただいた
> >> > > > 座暙を読み取り最初の点から最も遠い点を結ぶ盎線ず
>

> ...
>
> もっず読む ≫

Reply all
Reply to author
Forward
0 new messages