如何在OpenFOAM的0/U文件中正确读取transportProperties的nu变量
问题原因
OpenFOAM的transportProperties字典中存储的nu是带量纲的维度标量(dimensionedScalar),存储格式为变量名 + 量纲括号 + 数值,示例如下:
nu [0 2 -1 0 0 0 0] 1e-06;
你直接使用readScalar读取时,程序预期读入纯数值,但首先读到了量纲定义的左方括号[,因此触发token类型不匹配的报错。
正确读取方法
将原读取nu的代码替换为以下内容,先读取完整的带量纲标量,再通过value()方法提取无单位纯数值用于后续计算:
// 先从transportProperties读取带量纲的nu dimensionedScalar nu( this->db().lookupObject<IOdictionary>("transportProperties").lookup("nu") ); // 后续计算需要纯数值时调用nu.value()即可 // 示例:scalar Re = Uavg * D / nu.value();
替换后你的完整inlet边界配置示例:
boundaryField { inlet { type codedFixedValue; value uniform (0.006 0 0); name parabolicInlet; code #{ // ... 其他代码 ... dimensionedScalar nu(this->db().lookupObject<IOdictionary>("transportProperties").lookup("nu")); // 用nu.value()获取纯数值参与计算 // ... 其他代码 ... #}; } }
内容的提问来源于stack exchange,提问作者Behzad Baghapour
相关产品推荐
相关产品推荐

