abaqus怎么用fortran怎么编写子程序?

abaqus怎么用fortran怎么编写子程序?,第1张

第一种方法: \x0d\x0a1. 建立工作目录/ ]"\x0d\x0a2. 将ABAQUS安装目录\6.4-pr11\site下的aba_param_dp.inc 或 aba_param_sp.inc拷贝到工作目录,并改名为aba_param.inc;\x0d\x0a3. 将脊答编译的fortran程序拷贝到工作目录;\x0d\x0a4. 将.obj文件拷贝到工作目录;\x0d\x0a5. 建立好输入返野团文件.inp;\x0d\x0a6. 运行abaqus job=inp_name user=fortran name即可。\x0d\x0a第二种方法:\x0d\x0a在Job模块里,创建工作,在Edit Job对话框中选择General选项卡,在User subroutine file中点击Select按钮,从d出对话框中选择你要调用的子程序文件漏橘(后缀为.for或.f)。

如果写程序时语法中吵绝对的严格,那么不同之处就很少了,但如果语句较为随意那区别就大了,

比如以下就是几条(太多了,州培闹随便说几个而已,且pgf90和f90对语句要求很册罩相近):

1. 子程序被调用时,如果变量没有被定义为save型时,如果第二次调用没有初始化就参与计算会出错说being used without being defined(pgf90就会自动save而不会报错)

2. 打印格式要求严格,最好要 '(f8.3)','(i3)'之类的,且用一个format语句最好

3. allocate一个数组之后,如果没有deallocate就再次allocate就会报错,deallocate的时候如果deallocate(array(m,n))也会报错,要deallocate(array),即不能给定维数

5. x=(/a,b,c,d/)时,a,b,c,d要么都是实数(要有小数点),要么都是整数(不出现小数点)

6. 对于数组求最大值(最小值)所在位置,只能用

maxwind=0.0

do i=m1,m2

do j=n1,n2

xmw=sqrt(u(i,j)**2+v(i,j)**2)

if(xmw>maxwind) then

maxwind=xmwxiw=float(i)xjw=float(j)

endif

enddo

enddo

而不能用

maxwind=maxval(sqrt(u(m1:m2,n1:n2)**2+v(m1:m2,n1:n2)**2))

do i=m1,m2

do j=n1,n2

xmw=sqrt(u(i,j)**2+v(i,j)**2)

if(xmw=maxwind) then

xiw=float(i)xjw=float(j)

exit

endif

enddo

enddo

pgf90就可以,可能是ifort计算精度默认太高的原因

假设没粗1角需要x个,2角y个,5角z个,那么满足要求的条件是,

      x+2y+5z= 10,

其中,0≤x≤10,0≤y≤5,0≤z≤2,且 x,y,z 均为正整数. 因此最直观的程序可以写成

program money_assignment

implicit none

integer  x, y, z, id

  write(*,*)

  write(*,*) ' 方法号   1角硬币个数    2角硬币个数   5角硬币个咐族数'

  

  id = 0

  do z = 0, 2

    do y = 0, 5

      do x = 0, 10

        枯简镇if ( (x+2*y+5*z) == 10 ) then

          id = id + 1

          write(*,999) id, x, y, z

        end if

      end do

    end do

  end do

999 format( 3x,i2,10x,i2, 2(13x,i2) )

end program money_assignment

题目要求用子程序,直接将program改成subroutine即可。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12521643.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存