[问题] 简单的sum数值积分问题

楼主: what357159 (silentkenny)   2017-05-26 16:58:35
各位fortran高手大家好 小弟最近遇到了一点问题想请大家帮忙
我使用有限差分法解出我所要的压力分布格点
但现在积分回去力时去遇到几个error
附上积分简单程式码(省略有限差分之code)
real::fx,fy
do theta = 1,440,1
do z = 1,zmax,1
fx=0.d0
fy=0.d0
fx=fx+p(theta,z)*cosd(theta)*r*dtheta*dz
fy=fy+p(theta,z)*sind(theta)*r*dtheta*dz
end do
end do
p(theta,z)是我已经先解出来的资料点
但现在会跳出三个error
error6362 the data types of the arguments are invalid [cosd]
error6404 this name does not have a type and must have a explicit type[sind]
warning#7319 this arguments data type is imcompatibale with this intrinsic
procedure;procedure assume external[sind]
不太理解为何会有这些错误
先谢谢大家的帮忙了
作者: rex0707 (我就是我)   2017-05-26 18:56:00
cosd/sind 里的 theta 要转成实数吧而且fx=fy=0.0要放在DO外面吧 才会累加 不然每次都设成0
作者: PTT0207445 (我是乡民)   2017-11-29 07:23:00
cosd(:)和sind(:)如果是阵列的话要宣告好。sind(x)如果是自订函数的话function sind(x)也要写。双精度的内建的正弦和余弦函数是dsin(x)和dcos(x)。

Links booklink

Contact Us: admin [ a t ] ucptt.com