Skip to content
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
CFD中文网

CFD中文网

秦

秦淮冷月

@秦淮冷月
关于
帖子
13
主题
5
群组
0
粉丝
0
关注
0

帖子

最新

  • 关于directionMixed边界条件
    秦 秦淮冷月

    我尝试理解一下,各位看对不对.

    这个边界条件是用于各向异性的场.

    譬如,对于速度场,有三个分量(u,v,w),其在三个方向(x,y,z)上的变化各不相同,那么根据排列组合知识,它的梯度分量应该有9个.但是独立的只有6个.

    directionMixed有三个参数refValue,refGradient,valueFraction.
    第一个参数用于指定固定值,第二个参数用于指定固定的梯度,第三个参数用于指定前两个参数的混合比例.

    例如,我想指定速度的第一个分量在z方向的梯度为常数值,即(du/dz=5),其余均为0,那么边界条件设定如下

    type		directionMixed;
    refValue uniform (0 0 0);
    refGradient uniform (0 0 5);
    valueFraction uniform (0 0 1 0 0 0);
    

  • 关于directionMixed边界条件
    秦 秦淮冷月

    有一个立方体的计算域.设速度为u,那么它有三个分量(u1,u2,u3).

    我想设置du1/dz为某个常数.

    我找到了directionMixed边界条件.

    我看了这个帖子,https://www.cfd-online.com/Forums/openfoam-pre-processing/61989-directionmixed-mixed-bc.html, 仍然感到说得云里雾里.

    有人能举例讲讲这个边界条件的使用吗?


  • 关于nut文件与alphat文件的疑惑
    秦 秦淮冷月

    @李东岳 $\alpha_t=\frac{\nu}{Pr}$,这是$\alpha_t$的定义吗?因为链接失效了.....

    而且我看到有的文章,把$\alpha$定义为$\mu/Pr$,而有的(公式17)定义为$\nu/Pr$


  • 关于类内成员变量为volScalarField编译错误的问题
    秦 秦淮冷月

    @sungda 是的.而且必须用初始化列表


  • 关于类内成员变量为volScalarField编译错误的问题
    秦 秦淮冷月

    我写了一个测试用的代码,具体如下

    #ifndef test1_H
    #define test1_H
    
    #include "fvCFD.H"
    
    class test1
    {
    	public:
    	volVectorField m_a;
    	scalar m_calTime;
    	volScalarField m_b; //造成编译错误的代码
    	test1(volVectorField a,scalar calTime):
    	m_a(a),m_calTime(calTime)
    	{
    		calTime = 1;
    	};
    };
    #endif
    

    一注释那行代码就能通过编译.volScalarField是有什么特殊之处吗?(OF5.0测试)


  • 关于浮点数相等判断
    秦 秦淮冷月

    已解决


  • 关于浮点数相等判断
    秦 秦淮冷月

    我想编写一段代码,实现指点时间,指定地点发生某事.具体方案是随机生成时间,地点的坐标,存在某个向量里.

    然后随着求解器时间推进,每次遍历上述向量,看向量里的代表时间的值是否和runTime.value()相等,决定某事是否发生.

    但是在实际编程时,始终无法得到预期的结果,请各位帮忙看看

    //将时间和坐标进行关联
    	struct coordinateTime
    	{
    		scalar breakTime;
    		scalar xCoordinate;
    		scalar yCoordinate;
    	};
    
    	// 获取top这个边界面的面积
    	std::vector<coordinateTime> timeCoordinateVector {};
    	label patchID = mesh.boundaryMesh().findPatchID("top"); 
    	const polyPatch& cPatch = mesh.boundaryMesh()[patchID]; 
    	const surfaceScalarField& magSf = mesh.magSf(); 
    	scalar patchArea = 0.0;  
    	forAll(cPatch,faceI) 
    	{ 
    		patchArea += magSf.boundaryField()[patchID][faceI]; 
    	} 
    	Info << "Patch Area " << patchArea << endl; 
    
    	//获取模拟总时间
    	scalar totalTime =  runTime.controlDict().lookupOrDefault<scalar>("endTime", 50.);
    	Info << "total Time = " << nl << totalTime << endl;
    	//获取模拟的时间间隔
    	scalar deltatime = runTime.controlDict().lookupOrDefault<scalar>("deltaT", 0.1);
    	
    	//计算事件发生的总次数,ceil用于取整
    	label totalBreaker = ceil(0.00001*totalTime*patchArea);
    	Info << "total Number of breaker = " << nl << totalBreaker << endl;
    	//生成服从均匀分布的破碎初始坐标和发生时间
    	Random ranGen(clock::getTime()+pid());
    	scalar xIntial,yIntial;
    	//坐标范围
    	//x范围
    	scalar a=0., b=14.08;
    	//y范围
    	scalar g = 0.,h = 7.04;
    	//时间范围 
    	scalar e = 0.,f = totalTime;
    	//时间精度
    	scalar scale = 0.1;
    	struct coordinateTime coordinateTime1;
    	
    	for(label i = 0;i<totalBreaker;i++)
    	{
    		
    	  coordinateTime1.xCoordinate = a+b*(random()/(RAND_MAX+1.));
              coordinateTime1.yCoordinate = g+h*(random()/(RAND_MAX+1.));
    	  coordinateTime1.breakTime = f*random()/(RAND_MAX+1.);
              coordinateTime1.breakTime = floor(coordinateTime1.breakTime/scale+0.5)*scale;
    	  timeCoordinateVector.push_back(coordinateTime1);
    	}
    	Info<<"the size of timeCoordinateVector vector :"<<timeCoordinateVector.size()<<endl;
    	for(auto x: timeCoordinateVector)
    	{
    		Info<<x.breakTime<<" "<<x.xCoordinate<<" "<<x.yCoordinate<<endl;
    	} 
    	
    	
    	while (runTime.run())
    	{
    		
    		Info << "Running... " << "Time = " << runTime.value() << endl;
    		for(auto x:timeCoordinateVector)
    		{
    			if(abs(runTime.value()-x.breakTime)<1e-6)
    			{
    				Info<<"break happen"<<endl;
    			}
    		}
    		
    		runTime++;
    	}
    

    某次测试的结果.比如说在时间等于0的时刻,不应该发生该事件,但却发生了.

    我的代码编写什么地方有问题?

    某次测试结果

    the size of timeCoordinateVector vector :18
    15.7 11.8298 2.77646
    4 11.242 6.418
    5.6 4.71994 5.40834
    12.6 7.7999 3.36088
    19 5.13617 3.61434
    14.3 12.9 4.47541
    0.3 1.99376 4.27306
    16.1 3.41985 0.96611
    2.6 2.20604 2.82265
    4.4 1.53203 7.03243
    12.3 7.22209 5.90735
    10.5 4.16813 4.48837
    5.9 6.94965 6.84834
    15.4 10.8607 3.70828
    5.7 5.63522 6.27637
    18.4 4.96261 5.68638
    10.5 0.982154 6.68326
    13.3 1.21167 1.35319
    Running... Time = 0
    break happen
    Running... Time = 0.1
    break happen
    Running... Time = 0.2
    break happen
    Running... Time = 0.3
    break happen
    Running... Time = 0.4
    break happen
    Running... Time = 0.5
    break happen
    Running... Time = 0.6
    break happen
    Running... Time = 0.7
    break happen
    Running... Time = 0.8
    break happen
    Running... Time = 0.9
    break happen
    Running... Time = 1
    break happen
    Running... Time = 1.1
    break happen
    Running... Time = 1.2
    break happen
    Running... Time = 1.3
    Running... Time = 1.4
    Running... Time = 1.5
    Running... Time = 1.6
    break happen
    Running... Time = 1.7
    break happen
    Running... Time = 1.8
    break happen
    Running... Time = 1.9
    break happen
    Running... Time = 2
    break happen
    Running... Time = 2.1
    break happen
    Running... Time = 2.2
    break happen
    Running... Time = 2.3
    break happen
    Running... Time = 2.4
    break happen
    Running... Time = 2.5
    break happen
    Running... Time = 2.6
    break happen
    Running... Time = 2.7
    break happen
    Running... Time = 2.8
    break happen
    Running... Time = 2.9
    break happen
    Running... Time = 3
    break happen
    break happen
    Running... Time = 3.1
    break happen
    break happen
    Running... Time = 3.2
    break happen
    break happen
    Running... Time = 3.3
    break happen
    break happen
    Running... Time = 3.4
    break happen
    break happen
    break happen
    Running... Time = 3.5
    break happen
    break happen
    break happen
    Running... Time = 3.6
    break happen
    break happen
    Running... Time = 3.7
    break happen
    break happen
    Running... Time = 3.8
    break happen
    break happen
    Running... Time = 3.9
    break happen
    break happen
    Running... Time = 4
    break happen
    break happen
    Running... Time = 4.1
    break happen
    break happen
    Running... Time = 4.2
    break happen
    break happen
    Running... Time = 4.3
    break happen
    break happen
    Running... Time = 4.4
    break happen
    break happen
    Running... Time = 4.5
    break happen
    break happen
    Running... Time = 4.6
    break happen
    break happen
    Running... Time = 4.7
    break happen
    break happen
    break happen
    Running... Time = 4.8
    break happen
    break happen
    break happen
    break happen
    Running... Time = 4.9
    break happen
    break happen
    break happen
    break happen
    Running... Time = 5
    break happen
    break happen
    break happen
    break happen
    break happen
    Running... Time = 5.1
    break happen
    break happen
    break happen
    break happen
    Running... Time = 5.2
    break happen
    break happen
    break happen
    break happen
    Running... Time = 5.3
    break happen
    break happen
    break happen
    break happen
    Running... Time = 5.4
    break happen
    break happen
    break happen
    break happen
    Running... Time = 5.5
    break happen
    break happen
    break happen
    Running... Time = 5.6
    break happen
    break happen
    break happen
    Running... Time = 5.7
    break happen
    break happen
    break happen
    Running... Time = 5.8
    break happen
    break happen
    break happen
    Running... Time = 5.9
    break happen
    break happen
    break happen
    Running... Time = 6
    break happen
    break happen
    break happen
    Running... Time = 6.1
    break happen
    break happen
    break happen
    Running... Time = 6.2
    break happen
    break happen
    break happen
    Running... Time = 6.3
    break happen
    break happen
    break happen
    Running... Time = 6.4
    break happen
    break happen
    break happen
    Running... Time = 6.5
    break happen
    break happen
    break happen
    Running... Time = 6.6
    break happen
    break happen
    break happen
    Running... Time = 6.7
    break happen
    break happen
    Running... Time = 6.8
    break happen
    Running... Time = 6.9
    break happen
    Running... Time = 7
    Running... Time = 7.1
    Running... Time = 7.2
    Running... Time = 7.3
    Running... Time = 7.4
    Running... Time = 7.5
    Running... Time = 7.6
    Running... Time = 7.7
    Running... Time = 7.8
    Running... Time = 7.9
    Running... Time = 8
    Running... Time = 8.1
    Running... Time = 8.2
    Running... Time = 8.3
    Running... Time = 8.4
    Running... Time = 8.5
    Running... Time = 8.6
    Running... Time = 8.7
    Running... Time = 8.8
    Running... Time = 8.9
    Running... Time = 9
    Running... Time = 9.1
    Running... Time = 9.2
    Running... Time = 9.3
    Running... Time = 9.4
    Running... Time = 9.5
    Running... Time = 9.6
    break happen
    break happen
    Running... Time = 9.7
    break happen
    break happen
    Running... Time = 9.8
    break happen
    break happen
    Running... Time = 9.9
    break happen
    break happen
    Running... Time = 10
    break happen
    break happen
    Running... Time = 10.1
    break happen
    break happen
    Running... Time = 10.2
    break happen
    break happen
    Running... Time = 10.3
    break happen
    break happen
    Running... Time = 10.4
    break happen
    break happen
    Running... Time = 10.5
    break happen
    break happen
    Running... Time = 10.6
    break happen
    break happen
    Running... Time = 10.7
    break happen
    break happen
    Running... Time = 10.8
    break happen
    break happen
    Running... Time = 10.9
    break happen
    break happen
    Running... Time = 11
    break happen
    break happen
    Running... Time = 11.1
    break happen
    break happen
    Running... Time = 11.2
    break happen
    break happen
    Running... Time = 11.3
    break happen
    break happen
    Running... Time = 11.4
    break happen
    break happen
    break happen
    Running... Time = 11.5
    break happen
    break happen
    break happen
    Running... Time = 11.6
    break happen
    Running... Time = 11.7
    break happen
    break happen
    Running... Time = 11.8
    break happen
    break happen
    Running... Time = 11.9
    break happen
    break happen
    Running... Time = 12
    break happen
    break happen
    Running... Time = 12.1
    break happen
    break happen
    Running... Time = 12.2
    break happen
    break happen
    Running... Time = 12.3
    break happen
    break happen
    Running... Time = 12.4
    break happen
    break happen
    break happen
    Running... Time = 12.5
    break happen
    break happen
    break happen
    Running... Time = 12.6
    break happen
    break happen
    break happen
    Running... Time = 12.7
    break happen
    break happen
    break happen
    Running... Time = 12.8
    break happen
    break happen
    break happen
    Running... Time = 12.9
    break happen
    break happen
    break happen
    Running... Time = 13
    break happen
    break happen
    break happen
    Running... Time = 13.1
    break happen
    break happen
    break happen
    Running... Time = 13.2
    break happen
    break happen
    break happen
    Running... Time = 13.3
    break happen
    break happen
    break happen
    Running... Time = 13.4
    break happen
    break happen
    break happen
    Running... Time = 13.5
    break happen
    break happen
    break happen
    Running... Time = 13.6
    break happen
    break happen
    break happen
    Running... Time = 13.7
    break happen
    break happen
    Running... Time = 13.8
    break happen
    break happen
    Running... Time = 13.9
    break happen
    break happen
    Running... Time = 14
    break happen
    break happen
    Running... Time = 14.1
    break happen
    break happen
    Running... Time = 14.2
    break happen
    break happen
    Running... Time = 14.3
    break happen
    break happen
    Running... Time = 14.4
    break happen
    Running... Time = 14.5
    break happen
    break happen
    Running... Time = 14.6
    break happen
    break happen
    Running... Time = 14.7
    break happen
    break happen
    Running... Time = 14.8
    break happen
    break happen
    break happen
    Running... Time = 14.9
    break happen
    break happen
    break happen
    Running... Time = 15
    break happen
    break happen
    break happen
    Running... Time = 15.1
    break happen
    break happen
    break happen
    Running... Time = 15.2
    break happen
    break happen
    break happen
    break happen
    Running... Time = 15.3
    break happen
    break happen
    break happen
    break happen
    Running... Time = 15.4
    break happen
    break happen
    break happen
    Running... Time = 15.5
    break happen
    break happen
    break happen
    Running... Time = 15.6
    break happen
    break happen
    break happen
    Running... Time = 15.7
    break happen
    break happen
    break happen
    Running... Time = 15.8
    break happen
    break happen
    break happen
    Running... Time = 15.9
    break happen
    break happen
    break happen
    Running... Time = 16
    break happen
    break happen
    break happen
    Running... Time = 16.1
    break happen
    break happen
    break happen
    Running... Time = 16.2
    break happen
    break happen
    break happen
    Running... Time = 16.3
    break happen
    break happen
    break happen
    Running... Time = 16.4
    break happen
    break happen
    break happen
    Running... Time = 16.5
    break happen
    break happen
    Running... Time = 16.6
    break happen
    break happen
    Running... Time = 16.7
    break happen
    break happen
    Running... Time = 16.8
    break happen
    Running... Time = 16.9
    break happen
    Running... Time = 17
    break happen
    Running... Time = 17.1
    break happen
    Running... Time = 17.2
    Running... Time = 17.3
    Running... Time = 17.4
    Running... Time = 17.5
    break happen
    Running... Time = 17.6
    break happen
    Running... Time = 17.7
    break happen
    Running... Time = 17.8
    break happen
    Running... Time = 17.9
    break happen
    Running... Time = 18
    break happen
    Running... Time = 18.1
    break happen
    break happen
    Running... Time = 18.2
    break happen
    break happen
    Running... Time = 18.3
    break happen
    break happen
    Running... Time = 18.4
    break happen
    break happen
    Running... Time = 18.5
    break happen
    break happen
    Running... Time = 18.6
    break happen
    break happen
    Running... Time = 18.7
    break happen
    break happen
    Running... Time = 18.8
    break happen
    break happen
    Running... Time = 18.9
    break happen
    break happen
    Running... Time = 19
    break happen
    break happen
    Running... Time = 19.1
    break happen
    break happen
    Running... Time = 19.2
    break happen
    break happen
    Running... Time = 19.3
    break happen
    break happen
    Running... Time = 19.4
    break happen
    Running... Time = 19.5
    break happen
    Running... Time = 19.6
    break happen
    Running... Time = 19.7
    break happen
    Running... Time = 19.8
    break happen
    Running... Time = 19.9
    break happen

  • 关于方程推导及其在OF中的编码
    秦 秦淮冷月

    @李东岳 感谢回复,是我理解错了


  • 关于方程推导及其在OF中的编码
    秦 秦淮冷月

    有一个密度方程(类似标量输运方程)
    $
    \frac{\partial \rho}{\partial t}+\frac{\partial(\rho \vec U_j+\rho_{flux})}{\partial x_j}+ U^{st}_j\frac{\partial \rho}{\partial x_j}=0
    $

    其中$U^{st}$表示附加速度,$\rho_{flux}$表示密度通量.

    那么
    $
    \frac{\partial(\rho \vec U_j+\rho_{flux})}{\partial x_j}
    =\vec U_j \frac{\partial\rho}{\partial x_j}+ \underbrace{\rho \frac{\partial\vec U_j}{\partial x_j}}_{连续性方程,该项为零}
    $
    所以得到OF代码如下

    fvScalarMatrix myRhoEqn
        (
            fvm::ddt(rho)
          + fvm::div(ustphi,rho)
    	  + fvm::div(phi,rho)
    	  + fvc::div(rhoPhi)
          ==
            fvOptions(rho)
        );
    
        fvOptions.constrain(myRhoEqn);
    
        myRhoEqn.solve();
    
        fvOptions.correct(rho);
    

    这个推导过程正确吗?


  • 关于《icoFOAM解析》的一些疑问
    秦 秦淮冷月

    @东岳 感谢回复。建议原文适当增加配图,这将提高可阅读性。


  • 关于《icoFOAM解析》的一些疑问
    秦 秦淮冷月

    尴尬....结论1应该去掉。但是不能编辑帖子


  • 关于《icoFOAM解析》的一些疑问
    秦 秦淮冷月

    以公式(19)作为理解的主体,操作过程为:(19)扣掉(18)->运用忽略临点影响假设,(19)再扣掉一项->(19)再次加上(18),具体过程如下:

    1.公式(19)扣掉(18)推得(20),

    \begin{equation}
    A_P \underbrace { \left( \vec U_P^{n+1} - \vec U_P^r \right) }_{U'_P}
    +\sum A_N \overbrace{\left( \vec U^{n+1}-\vec U^{n}\right) }^{U'_N}
    = -\sum\overbrace{\left(p_f^{n+1} - p_f^n \right)}^{p'_f}\vec S_f
    \end{equation}

    2.引入忽略临点假设后,LHS第二项被消除,有

    \begin{equation}
    A_P \overbrace { \left( \vec U_P^{n+1} - \vec U_P^r \right) }^{U'_P}
    =-\sum \overbrace{\left( p_f^{n+1} - p_f^n \right)}^{p'_f} \vec S_f
    \end{equation}

    3.再加上(18),下式中标绿的部分为(18)

    \begin{equation}
    A_P \overbrace { \left( \vec U_P^{n+1} - \vec U_P^r \right) }^{U'_P} + \color{green} {A_P \vec U_P^r}
    +\color{green}{\sum A_N \vec U_N^r}
    =-\sum \overbrace{\left( p_f^{n+1} - p_f^n \right)}^{p'_f} \vec S_f \color{green}{ -\sum p_f^n \vec S_f
    +S_P^n} \
    \rightarrow\
    A_P \overbrace { \vec U_P^{n+1} }^{\color{red}{U^*_P}}
    +\color{green}{\sum A_N \vec U_N^r}
    =-\sum \underbrace{ p_f^{n+1} }_{\color{red}{p^{*}_f}} \vec S_f
    +\color{green}{S_P^n}
    \end{equation}

    对比操作前后的变化,
    操作前,
    \begin{equation*}
    A_P \vec U_P^{n+1}
    +\color{green} {\sum A_N \vec U_N^{n+1}}
    =S_P^n
    -\sum p_f^{n+1} \vec S_f
    \end{equation*}
    操作后,
    \begin{equation*}
    A_P \underbrace { \vec U_P^{n+1} }_{\color{red}{U^{*}_P}}
    +\color{green}{\sum A_N \vec U_N^r}
    =S_P^n-\sum \underbrace{ p_f^{n+1} }_{\color{red}{p^*_f}} \vec S_f
    \end{equation*}

    结论:1.带星的符号和带撇的符号,是同一个量;
    2.上述操作主要是用预测量(上标$r$)替换了最终收敛量(上标$n+1$)

    上述理解是否正确?


  • 输入公式方法
    秦 秦淮冷月

    e0ad5a84-da18-4c93-8c76-639db06877cc-image.png
    不能显示需要用什么来插入latex代码

  • 登录

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]