subroutine ti(ua,va,za,ub,vb,zb,uc,vc,zc,rm,f,d,dt,zo,m,n) dimension ua(m,n),va(m,n),za(m,n),ub(m,n),vb(m,n),zb(m,n), * uc(m,n),vc(m,n),zc(m,n),rm(m,n),f(m,n) c=0.25/d m1=m-1 n1=n-1 do 10 i=2,m1 do 10 j=2,n1 e=-c*rm(i,j)*((ub(i+1,j)+ub(i,j))*(ub(i+1,j)-ub(i,j)) * +(ub(i,j)+ub(i-1,j))*(ub(i,j)-ub(i-1,j)) * +(vb(I,j-1)+vb(i,j))*(ub(i,j)-ub(i,j-1)) * +(vb(I,j)+vb(i,j+1))*(ub(i,j+1)-ub(i,j)) * +19.6*(zb(i+1,j)-zb(i-1,j)))+f(i,j)*vb(i,j) uc(i,j)=ua(i,j)+e*dt g=-c*rm(i,j)*((ub(I+1,j)+ub(i,j))*(vb(i+1,j)-vb(i,j)) * +(ub(I,j)+ub(i-1,j))*(vb(i,j)-vb(i-1,j)) * +(vb(I,j-1)+vb(i,j))*(vb(i,j)-vb(i,j-1)) * +(vb(I,j)+vb(i,j+1))*(vb(i,j+1)-vb(i,j)) * +19.6*(zb(i,j+1)-zb(i,j-1)))-f(i,j)*ub(i,j) 10 vc(i,j)=va(i,j)+g*dt do 20 i=2,m1 do 20 j=2,n1 h=-c*rm(i,j)*((ub(I+1,j)+ub(i,j))*(zb(i+1,j)-zb(i,j)) * +(ub(I,j)+ub(i-1,j))*(zb(i,j)-zb(i-1,j)) * +(vb(I,j-1)+vb(i,j))*(zb(i,j)-zb(i,j-1)) * +(vb(I,j)+vb(i,j+1))*(zb(i,j+1)-zb(i,j)) * +2.0*(zb(i,j)-zo)*(ub(i+1,j)-ub(i-1,j)+vb(i,j+1)-vb(i,j-1))) 20 zc(i,j)=za(i,j)+h*dt return end
时间: 2024-04-28 19:20:20 浏览: 192
这是一个Fortran的子程序,名称为ti,包含14个参数:ua、va、za、ub、vb、zb、uc、vc、zc、rm、f、d、dt、zo、m和n。在子程序中,定义了8个变量:c、m1、n1、i、j、e、g和h。首先,根据输入的参数,定义了8个二维数组ua、va、za、ub、vb、zb、uc和vc,并定义了一个二维数组rm和一个常量d。然后,使用do循环嵌套,对i和j进行循环,计算了三个变量e、g和h,并分别将计算结果存入uc、vc和zc数组中。最后,返回操作。根据变量的命名和注释,可以猜测这是一个计算流体力学中的有限差分方法。
相关问题
RECURSIVE SUBROUTINE
递归子程序是一种计算机编程技术,它是指在一个函数内部调用自身的技巧。这种技术主要用于解决那些可以分解为相似子问题的问题,如分治法、树遍历等。当一个函数通过调用自身来逐步解决问题,并最终达到某个基本情况(也称为终止条件),不再进行自我调用,这个过程就是递归。
递归子程序通常包含两个部分:基本情况(base case)和递归情况(recursive case)。基本情况是用来结束递归的简单直接情况,而递归情况则是将问题规模缩小,以便于应用相同的处理过程。每次递归调用都会返回到上一层,直到遇到基本情况才开始返回结果,构建出整个解决方案。
使用递归子程序的一个重要注意事项是避免无限循环,也就是确保递归的终止条件始终能被满足。如果不设置恰当的终止条件,程序可能会导致栈溢出错误。
fortran subroutine
Fortran子程序是一种在Fortran程序中定义的可重复使用的代码块,它可以被其他程序调用。子程序通常用于执行特定的任务或计算,并且可以接受输入参数和返回输出结果。Fortran子程序可以提高程序的可读性和可维护性,同时也可以减少代码的重复性。
阅读全文