24小时热门版块排行榜    

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

liangyje

银虫 (著名写手)

[求助] 求助Fortran编程

长方形图形见附件,长方形尺寸已确定1mm*2mm,网格间距10微米,图形内的弧线上点的坐标值已知,如何判定图形内的节点是属于a区域还是属于b区域呢?
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sd116202

木虫 (著名写手)

【答案】应助回帖


liangyje(金币+2): 2011-09-21 09:09:43
jjdg(金币+1): 感谢你的建议 2011-09-22 00:32:42
liangyje(金币+3): 2011-09-28 21:54:34
节点坐标与相同x,或者y坐标的弧线点进行比较, 确定一个,比较另一个.

这个是算法问题
4楼2011-09-21 08:58:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 9 个回答

snoopyzhao

至尊木虫 (职业作家)

【答案】应助回帖


jjdg(金币+1): 感谢参与 2011-09-17 00:58:53
ben_ladeng: 2011-09-21 12:42:29
liangyje(金币+3): 2011-09-28 21:54:26
我参想到就是比较节点坐标与 a 和 b 之间弧线上点的坐标值……

但这个问题的关键部分与 Fortran 编程没有任何关系……
2楼2011-09-15 19:34:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

superstat54

木虫 (小有名气)

【答案】应助回帖

★ ★ ★
余泽成(金币+3): 谢谢参与应助! 2011-09-24 20:18:03
liangyje(金币+20): 2011-09-25 11:21:13
liangyje(金币+5): 2011-09-28 21:54:07
!程序说明
!1 初始文件准备:把弧线上的点的坐标存在arc.txt文件里,文件的第一行为点的个数,
!  下面的每一行分别为x、y坐标值;如下:
!  3
!  0.01   0.5
!  0.02   0.49
!  0.03   0.47
!2 结果文件为result.txt,输出nw*nl的矩阵,对应各个网格,如果该网格属于a则值为1,否则为0
!
!
!
PROGRAM TEST
  implicit none
  
  integer :: i, j, k
  integer :: nw, nl, n, log
  
  real :: with, length, d
  
  integer,allocatable :: flag(:, , point(
  real,allocatable :: arc(:,
  !=============================================
  write(*, *) '程序说明'
  write(*, *) ' 1 初始文件准备:把弧线上的点的坐标存在arc.txt文件里,文件的第一行为点的个数,'
  write(*, *) '   下面的每一行分别为x、y坐标值;如下:'
  write(*, *) '   3'
  write(*, *) '   0.01   0.5 '
  write(*, *) '   0.02   0.49 '
  write(*, *) '   0.03   0.47 '
  write(*, *) ' 2 结果文件为result.txt,输出nw*nl的矩阵,对应各个网格 '
  write(*, *) '如果该网格属于a则值为1,否则为0 '
  write(*, *) '是否准备好初始文件?(是,输入1;否,输入2)'
  read(*, *) log
  if (log.eq.1) then
    continue
  else
    write(*, *) '没有进行判断!'
    goto 3000
  endif
  !=============================================
  !初始化,矩形长(length)、宽(with),网格间距(d)
  with = 1
  length = 2
  d = 0.01
  !计算nw,nl值,即共有nw*nl个网格
  nw = with/d
  nl = length/d
  allocate(flag(nw, nl), point(nl))
  !===================================
  !读取弧线上点的坐标
  open(11, file = 'arc.txt')
  read(11, *) n
  allocate(arc(n, 2))
    do i = 1, n
      read(11, *) (arc(i, j), j = 1, 2)
    enddo
  close(11)
  !=============================================
  !找到属于a的区域,point(i)表示,第i列的前point(i)行的网格属于a
  point = 0
  flag = 0
  do j = 1, n
    point(j) = arc(j, 2)/d
    !write(*, *) point(j)
    !read(*, *)
  enddo
  !属于a的网格赋值为1
  do j = 1, n
    do i = 1, point(j)
      flag(i, j) = 1
    enddo
  enddo
  !输出结果
  open(12, file ='result.txt')
    do i = 1, nw
      do j = 1, nl
        write(12, '((I4))', advance='no') flag(i, j)
      enddo
      write(12, *)
    enddo
  close(12)
  write(*, *) '结果输出完毕'
3000 continue      
END PROGRAM
5楼2011-09-24 17:01:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

liangyje

银虫 (著名写手)

非常感谢,你做晶粒长大模拟吗?想向你学习学习
6楼2011-09-25 12:03:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见