Fortran Coder

标题: 谁帮我看下这个程序 [打印本页]

作者: little_kar    时间: 2017-3-8 20:43
标题: 谁帮我看下这个程序
计算二维热传导问题的有限元程序代码,利用fortran编制
以上这句话是我知道的对附件代码的全部描述,里面让输入的文件也没有,参数太多,真的看不懂,谁能帮帮我啊,必有重谢

heat_2D.txt

8.8 KB, 下载次数: 19


作者: little_kar    时间: 2017-3-8 21:13
还是贴一部分代码,顺便帮我看下,这里的dummy跟title到底是个什么,这几句是什么意思?很想知道file1里面到底是什么,什么格式?
  
[Fortran] 纯文本查看 复制代码
Read (linp, '(A)') dummy
  Read (linp, '(A)') title
  Read (linp, '(A)') dummy
  Read (linp, *) nn, ne, nm, ndim, nen, ndn
  Read (linp, '(A)') dummy
  Read (linp, *) nd, nl, nmpc
部分代码:
Dimension x(200, 2), noc(300, 3), mat(300), pm(10, 3),ehs(300), nu(100), u(100), f(400), bt(2, 3), s(400, 95)
  Character *16 file1, file2, file3
  Character *81 dummy, title
  Print *, '***************************************'
  Print *, '*          PROGRAM  HEAT2D            *'
  Print *, '*   HEAT 2-D  WITH 3-NODED TRIANGLES  *'
  Print *, '* T.R.Chandrupatla and A.D.Belegundu  *'
  Print *, '***************************************'
  !c imax = first dimension of the s - matrix, ix = 1 st dim . of x - matrix, etc .
  imax = 400
  ix = 200
  inoc = 300
  ipm = 10
  Print *, 'Input Data File Name <DOS file name>'
  Read '(A)', file1
  linp = 10
  Open (Unit=10, File=file1, Status='UNKNOWN')
  Print *, 'Output Data File Name <DOS file name>'
  Read '(A)', file2
  lout = 11
  Open (Unit=11, File=file2, Status='UNKNOWN')
  Read (linp, '(A)') dummy
  Read (linp, '(A)') title
  Read (linp, '(A)') dummy
  Read (linp, *) nn, ne, nm, ndim, nen, ndn
  Read (linp, '(A)') dummy
  Read (linp, *) nd, nl, nmpc
  !c - - -material property thermal conductivity
  npr = 1
  nmpc = 0
  ndn = 1
  ndim = 2
  nen = 3
  !c element heat source, ehs(i), i = 1, . . ., ne
  !c - - -nd = no . of specified temperatures
  !c - - -nl = no . of nodal heat sources
  !c - - -npr = 1(thermal conductivity) and nmpc = 0
  Print *, 'PLOT CHOICE'
  Print *, '  1) No Plot Data'
  Print *, '  2) Create Data File for Temperatures'
  Print *, 'Choose 1 or 2 '
  Read (5, *) ipl
  If (ipl<1 .Or. ipl>2) ipl = 1
  !c - - -default is no data
  If (ipl>1) Then
    Print *, 'Give File Name for Plot Data'
    Read '(A)', file3
    lout2 = 12
    Open (Unit=12, File=file3, Status='UNKNOWN')
  End If
  !c - - - - -coordinates
  Read (linp, '(A)') dummy
  Do i = 1, nn
    Read (linp, *) n, (x(n,j), j=1, ndim)
  End Do



作者: vvt    时间: 2017-3-9 08:23
dummy 顾名思义,就是没用的。之所以写,作者大概就是想跳过这一行。即,这一行内容是什么,作者并不关心。如果后面也没有再次用到 title,那么它和 dummy 一样。

作者: pasuka    时间: 2017-3-9 10:07
建议lz不要将宝贵的青春浪费在这类祖传代码上面,除非开发这个祖传代码的祖师爷愿意收lz做关门弟子继承衣钵
外面的世界很精彩,有意思的东西很多,为啥不去试一试呢?
http://dealii.org/developer/doxygen/deal.II/step_26.html
http://www.agros2d.org/
作者: little_kar    时间: 2017-3-9 10:43
pasuka 发表于 2017-3-9 10:07
建议lz不要将宝贵的青春浪费在这类祖传代码上面,除非开发这个祖传代码的祖师爷愿意收lz做关门弟子继承衣钵 ...

多谢啊,大开眼界
作者: 大头鼹鼠    时间: 2017-3-9 11:08
如果不是有特别的要求建议使用成熟的软件,热传导的程序是所有有限差分或者有限元中最简单 找一本数很快就可以搞定了,如果模型的形状很复杂就另当别论了,就是边界条件会占用很大一部分精力
作者: little_kar    时间: 2017-3-9 14:56
大头鼹鼠 发表于 2017-3-9 11:08
如果不是有特别的要求建议使用成熟的软件,热传导的程序是所有有限差分或者有限元中最简单 找一本数很快就 ...

算耦合方程,有可能要修改代码,系数都不是固定值




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2