[問題] 簡單的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