OpenFOAM小代码
-
@李东岳 在 OpenFOAM小代码 中说:
IOField<scalar> utau
(
IOobject
(
"utau",
runTime.constant(),
"../postProcessing",
mesh,
IOobject::NO_READ,
IOobject::AUTO_WRITE
),
scalarField(totalFSize,0.0)
);请问老师,如果我想要在postProcessing中输出一个标量,他只是一个数,并不是场量,我应该怎么定义他的类型。上面这种方法是不是只适应于场量的输出。我想输出的是下面c的数值。
const volScalarField& b = mesh().lookupObject<volScalarField>("alpha.liquid"); scalar c= b.weightedAverage(mesh().V()).value();
-
IOList<scalar> utau ( IOobject ( "utau", runTime.constant(), "../postProcessing", mesh, IOobject::NO_READ, IOobject::AUTO_WRITE ), 1 ); utau[0] = b.weightedAverage(mesh().V()).value();
-
totalLiquid { libs (utilityFunctionObjects); type coded; name totalLiquid; enabled true; writeControl timeStep; writeInterval 1; codeOptions #{ -I$(LIB_SRC)/meshTools/lnInclude #}; codeExecute #{ const volScalarField& b = mesh().lookupObject<volScalarField>("alpha.liquid"); IOList<scalar> liquidFraction ( IOobject ( "liquidFraction", mesh().time().constant(), "../postProcessing", mesh(), IOobject::NO_READ, IOobject::AUTO_WRITE ), 1 ); liquidFraction[0] = b.weightedAverage(mesh().V()).value(); #}; }
东岳老师,我这样添加到controlDict里,运行后postProcessing里并没有出现liquidFraction的值。
-
@hongjiewang 在 OpenFOAM小代码 中说:
totalLiquid { libs (utilityFunctionObjects); type coded; name totalLiquid; enabled true; writeControl timeStep; writeInterval 1; codeOptions #{ -I$(LIB_SRC)/meshTools/lnInclude #}; codeExecute #{ const volScalarField& b = mesh().lookupObject<volScalarField>("alpha.liquid"); IOList<scalar> liquidFraction ( IOobject ( "liquidFraction", mesh().time().constant(), "../postProcessing", mesh(), IOobject::NO_READ, IOobject::AUTO_WRITE ), 1 ); liquidFraction[0] = b.weightedAverage(mesh().V()).value(); #}; }
东岳老师,我这样添加到controlDict里,运行后postProcessing里并没有出现liquidFraction的值。
需要修改两个部分,
1.在下方添加 .write()
2.将codeExecute改为codeWrite
之后就可以得到想要的相含量结果。 -
meanDiameter { type coded; libs ("libutilityFunctionObjects.so"); name error; codeExecute #{ const volScalarField& d = mesh().lookupObject<volScalarField>("d.alpha.oil"); scalar d32 = d.weightedAverage(mesh().V()).value(); if (Pstream::master()) { std::ofstream file; file.open ("d32", std::ofstream::out | std::ofstream::app); file << mesh().time().timeName() << " " << d32 << "\n"; file.close(); } #}; }
我最近也凑巧要用这个,我用的上面这种方式。
-
@hongjiewang 在 OpenFOAM小代码 中说:
@李东岳 目前我需要将温度边界和压力边界定义为随相含量变化的一个场。我只可以做到变化之后的也是同一类边界条件,但是像下图中的气相区压力是第一类边界条件,液相区温度是第二类边界条件。请问这种变边界类型的边界应该怎么定义~
已解决压力的~但是温度的第二类和第三类的转换还没有解决~
-
-
-
-
李老师您好,请问输出努塞尔数代码是直接放进去吗?还是里边的部分数据需要进行修改呢 ?
-
@2019201300 这个我太久之前写的。已经忘了。但是这个代码只是提供案例。具体数值大概率需要自己改一下。直接放在controlDict下面。