24小时热门版块排行榜    

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

鲤鱼飞

铁虫 (正式写手)

[求助] 求助:用Fortran写一个关于晶粒个数统计和编号的程序。卡了我好久了。

小生近来自学Fortran,开始编写模拟程序实现晶粒长大过程的模拟。但周围没人做这个,而且没人写代码。因此,没有人可以讨论,我是一个头两个大。
目的:求一个逐个统计并赋值的小程序。也就是常见的晶粒长大模拟。
事件:划定一个N*N二维计算区域,如512*512个格点的区域。每个格点上可存储Q个不同的数值pi(0~1之间的实数),该数值的演化由一个PDE计算得到,并交由一个二维数组P(i,j)来保存pi。经过一段时间演化之后,形成如下图所示的形貌组织,即晶粒形成了。演化到最后,虽然每个格点上可以有Q个值,但只有一个为1,其余全部为0,因此属于一个晶粒。但如果格点处在晶界上,这可能存在好多个pi的值(0~1)。
    现在,我需要定义一个变量Q(一维或二维?)来统计生成了多少个晶粒,并给每个晶粒进行编号,如1,2,…等。显然,每个晶粒内含有的格点数目不同。
    这里晶粒的定义:在一个晶粒内部,每个格点上的某一个pi相同(均为1,比如p41为1,其余所有Pi都为0);两个晶粒之间的晶界上0     是否是从(1,1)格点开始,看它的 pi值,如果为1,则记为1#晶粒;再看(1,2)格点,如果小于1,则记为边界;再看(1,3)格点,如果为1,则记为2#晶粒….  还是要看某格点周围8个近邻的值来定?

111.jpg

[ Last edited by 鲤鱼飞 on 2013-1-16 at 20:55 ]
回复此楼

» 收录本帖的淘帖专辑推荐

资源收集

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

CAEP
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chembetsey

木虫 (小有名气)

【答案】应助回帖


jjdg: 金币+1, 感谢参与 2013-01-19 03:20:38
数组既然在那里,想怎么统计就怎么统计,没有太大困难
你若是觉得有困难,那是你对统计的条件还没想清楚
4楼2013-01-18 22:31:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 5 个回答

chembetsey

木虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
从你的叙述看,晶粒的个数就是1的个数啊,按你说的做就是了
2楼2013-01-16 23:14:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

鲤鱼飞

铁虫 (正式写手)

No.
    512*512个格点计算区域,或许只有3个晶粒,或许30个晶粒。  一个晶粒或许包含100个格点,或许包含499个格点,在这个晶粒内部,所有格点的某一个p值为1,其余所有p值为0。晶界的宽度为过渡区,例如包含3-7个格点。
CAEP
3楼2013-01-18 08:31:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

鲤鱼飞

铁虫 (正式写手)

最近想了下。可能要用三维数组P(i,j,k)来存储相场值和晶粒编号。 其中i,j记录二维点阵,k(1:Q)记录每个格点上可以存储的Q个相场值。   
   不太清楚,如何将晶粒和格点联系起来,而且晶粒的编号要固定不变,也就是每个格点归属的晶粒编号不变。当有新的晶粒出现后,还要增加一个晶粒编号,但格点个数不变...
CAEP
5楼2013-01-26 21:00:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见