|||
nloadf是Agnew教授写的计算海潮负荷的程序,用于计算海潮对重力、位移、倾斜和应变的影响,最近添加了对位(potential)的影响。在众多子程序中包含了一个c子程序——ispand.c,用于计算两个整数的位“与”(&)运算。对于初学者,或对计算机软件不是很在行的人来说,在windows os 上(如visual fortran 软件)编译是不容易的。实际上只需要将这个运算用fortran 改写后,则问题就迎刃而解了。
需要对文件lndsea3.f 中的function ibit()作如下修改
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
function ibit(in,nd)
dimension m(32) //存储32位二进制编码,0或1。注意二进制编码的左右顺序
integer*4 in //现在32位的os 整型都是4字节的了
if(in.ge.0) then //非负数
call bum(in,m) //计算补码
else //负数
in=in+1
call bum(-in,m)
do i=1,31
if(m(i).eq.1) then
m(i)=0
else
m(i)=1
endif
enddo
m(32)=1
endif
ibit=m(33-nd)
end
subroutine bum(in,n) //计算正整数的补码, 右移位(/2)判断奇偶,奇为1,偶为0
dimension n(32)
integer*4 in
n(32)=0
do i=1,31
if(mod(in,2).eq.0) then
n(i)=0
else
n(i)=1
endif
in=in/2
enddo
return
end
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
如果海陆边界采用的是一个ascii码的文件,则要对lndsea3.f 文件中文件打开和读取部分做适当修改。
示例:
open(unit=llu,file='lndsea.ind',status='old',access='sequential',form="unformatted")
read(llu) index
改成如下格式:
open(unit=llu,file='lndsea.ascii',status='old') //lndsea.ind 改成lndsea.ascii,删除打开lndsea.bit部分
read(llu,*) index //改成有格式读入ascii文件
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-5-25 20:16
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社