Fortran Coder

查看: 4135|回复: 2
打印 上一主题 下一主题

[有限元] 请教一个温度在网格上分配的算法

[复制链接]

712

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
607 元
贡献
311 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

楼主
发表于 2014-12-20 16:00:14 | 显示全部楼层
你这算法有点罗嗦,还不如分情况填呢。

[Fortran] 纯文本查看 复制代码
Module MeshDistribution_Mod
  Implicit None
contains
  Function MeshDistribution( r )
    Real , Intent( IN ) :: r(:,:)
    Real :: MeshDistribution(size(r,dim=1)+1,size(r,dim=2)+1)
    Integer :: n , m , i , j
    MeshDistribution = 0.0
    n = size(r,dim=1)+1
    m = size(r,dim=2)+1
    MeshDistribution( 1 , 1 ) = r(1,1)
    MeshDistribution( 1 , m ) = r(1,m-1)
    MeshDistribution( n , 1 ) = r(n-1,1)
    MeshDistribution( n , m ) = r(n-1,m-1)
    Do i = 2 , n-1
      MeshDistribution( i , 1 ) = sum(r(i-1:i,1))/2.0
      Do j = 2 , m-1
        MeshDistribution( i , j ) = sum(r(i-1:i,j-1:j))/4.0
      End Do
      MeshDistribution( i , m ) = sum(r(i-1:i,m-1))/2.0
    End Do
    Do j = 2 , m-1
      MeshDistribution( 1 , j ) = sum(r(1,j-1:j))/2.0
      MeshDistribution( n , j ) = sum(r(n-1,j-1:j))/2.0
    End Do
  End Function MeshDistribution
End Module MeshDistribution_Mod

Program www_fcode_cn
  Use MeshDistribution_Mod  
  Implicit None
  real :: v(4,3) = reshape( (/ &
          3,5,6,0, &
          8,3,5,4, & 
          8,6,8,1  /) , (/4,3/) )
  write(*,'(4(5f5.2,/))') MeshDistribution( v )
End Program www_fcode_cn
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-3 16:05

Powered by Tencent X3.4

© 2013-2024 Tencent

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