我遇到一個變量被覆蓋的問題,因爲我不知道原因。我已經發布了下面的代碼塊,以便您可以看到事情是如何聲明的。將變量應變Qi,Qf,Qd,tel和Gc傳遞給子程序並用於計算ssgrad,strn0,strss0。Fortran:自己更改的變量
我的問題是,電話和Gc傳遞到子例程確定,但由於某些原因在這段代碼中更改值。
使用打印語句我發現問題首先發生在第二個循環中。當我將strss0設置爲0時,Gc和tel將兩者的值從等於1改變爲看似隨機的數字:tel = 11.52822 Gc = -8.789086(剛纔爲了舉例而示出)
每次我運行代碼它們被設置爲相同的值。
只是讓你知道,這個子程序接口與商業有限元軟件包。
提前任何幫助,非常感謝這個
subroutine initcalcs(strain,Qi,Qf,Qd,tel,Gc,ssgrad,strn0,strss0)
implicit none
integer :: i,j
real*8:: nstrn0,nstrs0,strn0,strnf,varsq,normvar,lmbda0,lmbdaf,
# ssgrad,t0,tt,tel,nstrnf,nstrsf,Gc
real*8, dimension(3) :: strain,stran0,stranf,strss0,strssf,var
real*8, dimension(3,3) :: Qd,Qi,Qf
lmbda0=1.0d0
nstrn0=0.0d0
do i=1,3
stran0(i)=0.0d0
stran0(i)=strain(i)*lmbda0
nstrn0=nstrn0+stran0(i)**2
end do
nstrn0=dsqrt(nstrn0)
do i=1,3
strss0(i)=0.0d0
end do
你試過把它們聲明爲'intent(in)'變量嗎? –