OpenFOAM小代码
-
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下面。
-
请问这个代码怎么修改,才可以使用网格的体积,
volScalarField muc ( IOobject ( IOobject::groupName("mu", continuousPhaseName), runTime.timeName(), mesh, IOobject::NO_READ, IOobject::NO_WRITE ), rhoc*laminarTransport.nu() ); volScalarField Rep("Rep", dp/laminarTransport.nu()*mag(Up - U)); volScalarField CDRe("CDRe", 24/Rep+3.6*pow(Rep,-0.313)); scalar deltaTs = runTime.deltaTValue(); Up = Up + deltaTs*(3/4*muc/rhop/pow(dp,2.0)/mesh.V()*CDRe*(U - Up) + g);
其中的mesh.V()怎么修改才可以。