找回密码
 注册
楼主: shzhang

基于paramesh三维并行自适应code的开发及其在MHD模拟中的应用

[复制链接]
发表于 2009-5-17 09:52:46 | 显示全部楼层
原帖由 shzhang 于 2009-3-29 14:09 发表
———关于压强出现负值的讨论———

在用该代码(二维\三维)计算扰动很强烈的问题时,个别计算时间步发现了压强出现负值,尤其是刚开始间断最强烈的时间段内,这个问题困扰了很久,曾经尝试在压强出现负值的时候 ...


有些问题不是程序本身的问题,与算法和问题有关.
1.可以采用人为矫正的方法,参考nirvara的程序,设置一个压强最小值,比如1.d-6,如果压强小于它,就强制把1.d-6赋值给压强,这样既可避免压强出现负值;
2.可以参考Janhunen,P. 等人提出的一些保正值的格式(positive conservative methed),有人在算法层面对这类问题进行过讨论和改进,如JCP, 160, 649-661
发表于 2009-5-18 07:23:20 | 显示全部楼层

回复 16# zzuhuyan 的帖子

目前没有比较好的方法,实施具有positive特性的格式求解通量,如HLLE,如果你的负压强是由于低等离子体beta引起的,当你求解能量方程时,把磁场的共享单独分离开来。。。
 楼主| 发表于 2009-5-23 23:28:53 | 显示全部楼层
To dig a hole and make the code run corectly  is not a easy thing.

It take a lot time to conside about the the blocks with "cut cells".

It is not a good thing  if use the  blocks to approach the sphere.

But if we use the block cells to approach the "hole" , then some cells would be inside the "hole" and the other cells would be outside the "hole" , which make the  guardcell filling near the "hole" very  trouble-some.

I don't know how BATS-R-US deal with this kind of problems ?

[ 本帖最后由 shzhang 于 2009-5-24 17:41 编辑 ]

"cut cells" of sphere with blocks

"cut cells" of  sphere with blocks
发表于 2009-5-24 19:58:47 | 显示全部楼层
顶一下先!
 楼主| 发表于 2009-5-30 21:55:02 | 显示全部楼层

waitting~~

实验室最近正在更新机群,很盼望有更好的并行计算能力

不过暂时不能进入并行环境 、、、

so only waitting

[ 本帖最后由 shzhang 于 2009-5-30 21:56 编辑 ]
发表于 2009-6-1 22:42:15 | 显示全部楼层
呵呵,大家都在waiting
 楼主| 发表于 2009-6-14 16:04:43 | 显示全部楼层

paramesh------ MHD

Paramesh4.0 && 4.1内部与morton函数相关的子程序还不是很清晰。所以,即使追踪到错误在这里面,还是没法下手解决。

It take a lot time to dig into it ...or maybe we can coorprate with someone who is farmilar with it.




----------------"流泪撒种的,必欢呼收割"-------------------

--------------------------------------------------------------------

--------------------------------------------------------------------
 楼主| 发表于 2009-6-14 16:56:38 | 显示全部楼层

简单的偶极子磁场和太阳风parker输入

这是以简单的偶极子磁场和太阳风parker解作为输入的初始结果。

发现磁场散度divb 在内边界很大,尽管对于偶极场来说解析的的磁场散度 divb=0 .
但是一旦离散化之后,误差就很大了,这样CT算法就失去了意义。
为了避免这个问题,现在有两种想法:

1、可以用偶极场的势场形式离散化作为输入?
2、如果以实际观测的磁场作为输入,可先用泊松校正磁场?



-------------------路漫漫其修远兮,吾将上下而求索--------------------

---------------------------------------------------------------------------------

---------------------------------------------------------------------------------

[ 本帖最后由 shzhang 于 2009-6-20 18:01 编辑 ]

偶极场模型--显示三维截面:y=0

偶极场模型--显示三维截面:y=0

磁场散度--存在问题

磁场散度--存在问题
 楼主| 发表于 2009-6-24 15:14:42 | 显示全部楼层

太阳表面内边界的处理

从一个单独block开始,x,y,z = ( - 20R ~ 20R),最高加密到8 levels,
可使得太阳表面1R处的网格精度达到大约0.1个太阳半径。
若内边界往里面延伸两个,最内层guanrdecall的中心就到0.8Rs。

这里的值不太好给定,所以,内边界的处理还存在不少问题。

由于从最细网格到最粗网格,cfl条件得到的时间步长相差近乎两个量级,
为了节约计算时间,我们打算在采取local time stepping.

附图,网格示意图。(其中,the black is block the blue one is mesh)




-------------------------------------------------------------------------------------------

[ 本帖最后由 shzhang 于 2009-6-24 15:17 编辑 ]
inner bc r1.jpg
inner bc r2.jpg
 楼主| 发表于 2009-6-30 10:27:25 | 显示全部楼层

初步结果 -- 偶极场加parker太阳风解

下面是t=50h的计算结果,y=0平面截图。

计算区域xyz:【-20Rs~20Rs】
网格精度在太阳表面达到最大0.1Rs
初始:parker解,偶极场;
内边界是fixed,外边界是open。

存在问题:

1、上引力和自转项之后,发现在赤道冕环附近径向速度小于零,
      这有可能是内边界条件引起的。在内边界采用了差值法。  
2、密度分布与磁场位形及其速度分布没有很好耦合。赤道与极区密度差不明显。
3、在对角线方向径向速度的等值线分布有明显的突出结构,这也是不应该的。
     目前考虑可能是网格划分引起的。
4、还没有考虑太阳风加速加热问题,想在确定大概位形对的基础上再做进一步调整。

另外,在并行上也存在一个很头痛的问题,就是当进程数大于20时候,
经常会莫名的中断。

提示类似错误p4_7890:  p4_error: net_recv read:  probable EOF on socket: 1

但是,若进程序数较小,例如6,则能一直运行下去。不知道是哪里引起的问题?

不知道你遇到类似问题与否?请您多提宝贵意见!在次表示感谢了!


==========================================================================

[ 本帖最后由 shzhang 于 2009-7-3 07:52 编辑 ]

径向速度vr

径向速度vr

密度rho

密度rho
 楼主| 发表于 2009-8-11 21:09:59 | 显示全部楼层

什么原因导致的并行curupt?

最近在paramesh4.1版本测试三维太阳风模型中,总会遇到类似如下的错误提示,不知道是怎么回事?
同样的可执行程序xxx.out,用32个进程并行计算,只有个别测试中会通过,能计算到50个小时;
但是大多数只能计算到3-5个小时,然会错误提示:
例如下面计算到时间t=2.0161914601701584,
然后出错,.out 文件输出

-----------------------------------------------------------------
、、、
dt=    4.0940862030663244E-003  t=     2.053726520706556     
iteration           500  no of blocks =           734
dt=    4.0940556833781927E-003  t=     2.057820576389934     
iteration           501  no of blocks =           734
dt=    4.0940253116498702E-003  t=     2.061914601701584     
p0_24440:  p4_error: net_recv read:  probable EOF on socket: 1
Killed by signal 2.
Killed by signal 2.
、、、
---------------------------------------------------------------------------------

还有的时候一开始提交就出现如下错误提示:

------------------------------------------------------------------------------------------------
p7_17982:  p4_error: net_recv read:  probable EOF on socket: 1
rm_l_7_18146: (288.308594) net_send: could not write to fd=5, errno = 32
p11_668:  p4_error: net_recv read:  probable EOF on socket: 1
rm_l_11_833: (282.488281) net_send: could not write to fd=5, errno = 32
p8_32619:  p4_error: net_recv read:  probable EOF on socket: 1
rm_l_8_315: (286.957031) net_send: could not write to fd=5, errno = 32
p19_2437:  p4_error: net_recv read:  probable EOF on socket: 1
rm_l_19_2601: (270.531250) net_send: could not write to fd=5, errno = 32
p2_8801:  p4_error: net_recv read:  probable EOF on socket: 1
rm_l_2_8965: (298.335938) net_send: could not write to fd=5, errno = 32
p22_2944:  p4_error: net_recv read:  probable EOF on socket: 1
rm_l_22_3113: (270.101562) net_send: could not write to fd=5, errno = 32
p14_1173:  p4_error: net_recv read:  probable EOF on socket: 1
p13_1005:  p4_error: net_recv read:  probable EOF on socket: 1
rm_l_3_9134: (299.269531) net_send: could not write to fd=6, errno = 9
rm_l_14_1337: (282.023438) net_send: could not write to fd=5, errno = 32
rm_l_13_1169: (283.507812) net_send: could not write to fd=5, errno = 32
    p4_error: latest msg from perror: Bad file descriptor
rm_l_3_9134:  p4_error: net_send write: -1
p26_27418:  p4_error: net_recv read:  probable EOF on socket: 1
p20_2605:  p4_error: net_recv read:  probable EOF on socket: 1
rm_l_26_27582: (266.183594) net_send: could not write to fd=5, errno = 32
p21_2773:  p4_error: net_recv read:  probable EOF on socket: 1
p25_3475:  p4_error: net_recv read:  probable EOF on socket: 1
rm_l_20_2769: (275.097656) net_send: could not write to fd=5, errno = 32
rm_l_21_2940: (273.609375) net_send: could not write to fd=5, errno = 32
rm_l_25_3652: (267.730469) net_send: could not write to fd=5, errno = 32
p28_28538:  p4_error: net_recv read:  probable EOF on socket: 1
rm_l_28_28702: (265.031250) net_send: could not write to fd=5, errno = 32
p17_20272:  p4_error: interrupt SIGx: 13
p31_29042:  p4_error: net_recv read:  probable EOF on socket: 1
rm_l_31_29216: (263.597656) net_send: could not write to fd=5, errno = 32
p18_2269:  p4_error: net_recv read:  probable EOF on socket: 1
p24_3294:  p4_error: net_recv read:  probable EOF on socket: 1
rm_l_18_2433: (284.066406) net_send: could not write to fd=5, errno = 32
rm_l_24_3471: (275.207031) net_send: could not write to fd=5, errno = 32
p5_9308:  p4_error: interrupt SIGx: 13
p1_8632:  p4_error: interrupt SIGx: 13
p4_9139:  p4_error: interrupt SIGx: 13
p0_8626:  p4_error: net_recv read:  probable EOF on socket: 1
Killed by signal 2.
Killed by signal 2.
Killed by signal 2.
Killed by signal 2.
Killed by signal 2.
Killed by signal 2.
Killed by signal 2.
Killed by signal 2.
Killed by signal 2.
Killed by signal 2.
Killed by signal 2.
Killed by signal 2.
Killed by signal 2.
Killed by signal 2.
Killed by signal 2.
Killed by signal 2.
Killed by signal 2.
Killed by signal 2.
Killed by signal 2.
Killed by signal 2.
Killed by signal 2.
Killed by signal 2.
Killed by signal 2.
Killed by signal 2.
p0_8626: (375.433594) net_send: could not write to fd=4, errno = 32
------------------------------------------------------------------------------------

上网搜索到 errno=09 is: Bad file descriptor ,errno=32 is: Broken pipe
但是这错误提示太广泛了,无法找到具体的可能原因。
首先,现在还不能确定这种错误 是程序本身的原因,还是并行环境的原因。
希望您能提出宝贵意见和看法,相信会对我有帮助!谢谢!

[ 本帖最后由 shzhang 于 2009-8-11 22:03 编辑 ]
 楼主| 发表于 2009-9-20 19:47:24 | 显示全部楼层

国内有做HD或者MHD并行自适应的吗?

请问国内有做流体动力学或者磁流体动力学自适应数值模拟的吗?
尤其是基于国外并行自适应软件包,例如paramesh等。
这是很有发展空间的一个领域,也有不少相关问题想请教、交流。
若有这方面兴趣的可以在论坛上留言。发表您的想法、意见。
发表于 2009-9-21 22:28:31 | 显示全部楼层
我有国外相关的代码AMRY(好象也是计算电磁方面),还是2007的,比较新.可惜我不搞这方面,所以没有用过.
发表于 2009-9-22 08:41:12 | 显示全部楼层
能把那个代码贴出来共享一下吗?
 楼主| 发表于 2009-10-23 21:22:01 | 显示全部楼层

The code is under developing...

The code is unde developing...
Now we find some errors in the paramesh itself and we are trying to fix it up.
We also add HLLD\HLLC method to it and will do some test work.

Thanks for your attention !
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表