新手小白求教,有没有能够通过读取向量文件数据获取动边界速度的功能
-
@coolhhh 万分感谢大佬的指点,回答一下第一点:后面生成的pointmotionU的确是不一样的,我可能表达有误,由于圆管的运动是通过别的软件生成决定的,所以圆管的运动数据是实时传输到of里面的。of里面的动边界相当于我另一个软件的圆管,但他的运动完全由那边所决定,我的想法是在运行过程中修改最新时步的pointmotionU文件最下面几行的边界条件代码,举个例子 如第一张图所示这是当前最新时刻的边界速度,我通过python强行修改了这个边界速度如下图
我是想让下一步能够以修改的边界条件进行运算,以此类推,往后每一步都会修改边界速度,然后下一步以新的边界速度运算,不过我的尝试没有成功,pointmotionU边界的读取似乎只与初始时刻相关。
关于大佬说的剩下三点我再好好理解理解,再次感谢大佬的悉心指点。 -
@coolhhh 大佬,我这边在velocityLaplacianFvMotionSolver.C添加了读取文件的代码pointmotionU_.read();文件的确是每个时步都被读取了,但是读取的边界条件一直是修改之前的。我还采用赋值的方法强行给pointmotionU_赋值,代码如下
强制读取当前时刻修改后的pointmotionu的数据存到temppointmotionu中然后再赋给pointmotionu,两个结果都在运算中打印出来了,结果发现,temppointmotionu是成功读取修改后数据的,但是赋值后的pointmotionu依旧是修改前的数据。是否是该类型无法被直接赋值,望指点。 -
- 看起来没问题,我也按照你的问题写了个简单例子测试,输出结果是正确的。
#include "fvCFD.H" class Parent { protected: int protectedVar = 5; public: void modifyVariable() { int tmp = 10; int tmp2 = tmp; Parent::protectedVar = tmp; Info << "tmp2 = " << tmp2 << nl << endl; Info << "Parent::protectedVar = " << Parent::protectedVar << nl << endl; } }; class Child : public Parent { public: void accessParentFunction() { Parent::modifyVariable(); Info << "Child::protectedVar = " << Parent::protectedVar << nl << endl; } }; int main(int argc, char *argv[]) { #include "setRootCase.H" Child child; child.accessParentFunction(); Info<< "End\n" << endl; return 0; }
- 看到
velocityMotionsolver.H
函数中有个返回引用函数:pointVectorField& pointMotionu()
,试试能不能创建一个引用,然后修改引用的值,看看结果会不会变化。
pointVectorField& pointMotionURef = pointMotionU(); pointMotionURef = tempPointMotionU; Info << "pointMotionURef = " << pointMotionURef << endl; Info << "pointMotionU = " << pointMotionU_ << endl;
-