24小时热门版块排行榜    

查看: 1339  |  回复: 6
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

andersonlyw

新虫 (著名写手)

[求助] Fortran程序,如何实现采用矩阵保存单链表表头?

问题是这样,小弟想做三维网格的DSMC稀薄气体模拟,打算:
用N*N*N的三维矩阵存贮N*N*N个单链表表头,这样每个单链表可以用来存贮该网格内所有的气体分子信息(速度,坐标等),但是不知如何用Fortran程序实现?
请高手指教!可否提供几行程序片段供参考?

相应的物理思想见王学德,发表在2007年空气动力学学报上的论文:
http://d.g.wanfangdata.com.hk.ez ... dlxxb200701020.aspx
题名:一类二维非结构网格DSMC方法的实现策略及其应用
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

andersonlyw

新虫 (著名写手)

引用回帖:
3楼: Originally posted by andersonlyw at 2013-10-13 12:34:37
我似乎已经想到了一种方式。
如下:采用一个指针数组MP(分配三维N×N×N空间),一个单链表P,一个普通矩阵M(三维N×N×N)可完成任务。首先,单链表P记录所有计算区(三维N×N×N Cells)内的分子信息,分子运 ...

最近采用此方法编写了程序,完成了分子泵的过渡流态下的压缩比计算,确认该方法可行,占用内存少,可放心使用。
5楼2013-11-27 08:38:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 7 个回答

andersonlyw

新虫 (著名写手)

解决此问题的虫友,另有100金币可领。见:
http://muchong.com/bbs/viewthread.php?tid=6451229
2楼2013-10-12 17:48:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

andersonlyw

新虫 (著名写手)

我似乎已经想到了一种方式。
如下:采用一个指针数组MP(分配三维N×N×N空间),一个单链表P,一个普通矩阵M(三维N×N×N)可完成任务。首先,单链表P记录所有计算区(三维N×N×N Cells)内的分子信息,分子运动一步后,计算碰撞时,先记录每Cell内的分子数量于普通矩阵M内。然后根据矩阵M提供的信息,给指针数组每个点(共N×N×N个)分配(6×X的二维存贮空间,其中3行存分子速度,3行存贮分子坐标)。这类似于动态矩阵,完成后,在计算分子碰撞时,可以直接采用矩阵方式选择碰撞分子对。完成分子碰撞后,再将指针数组内保存的数据全部转存至单链表。如此循环即可。
3楼2013-10-13 12:34:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

andersonlyw

新虫 (著名写手)

请教各位做稀薄气体DSMC模拟的虫友们,你们是怎么存贮分子信息的?互相交流一下,共同提高。有金币送。
4楼2013-10-13 12:36:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见