我無法在下面的代碼中刪除此錯誤。有3個功能; dev,norm和clcMatA。前兩個函數在第三個函數中被調用。但它們不被認爲是功能。我已經將它們定義爲像我爲其他功能所做的那樣,但是我之前沒有遇到過這樣的錯誤。錯誤#6404:此名稱沒有類型,並且必須有明確類型
的錯誤:
Error 1 error #6404: This name does not have a type, and must have an explicit type. [DEV] D:\Users\Vahid\Documents\Visual Studio 2008\Projects\Tst\Tst\Source1.for 66
Error 2 error #6404: This name does not have a type, and must have an explicit type. [NORM] D:\Users\Vahid\Documents\Visual Studio 2008\Projects\Tst\Tst\Source1.for 78
我真的很感激任何幫助。謝謝。
的代碼(以固定的格式;。對於):
module parameters
implicit none
save
integer :: i,j
real*8 :: pi = 3.14159265358979323846,KP = 5.e-8, M = 0.5
real*8 :: expValPStran, expValDStran, expValVolume
end module
***********************************
program empty
end program
***********************************
function norm(matrix)
use parameters
implicit none
real*8, allocatable, intent(in) :: matrix(:)
real*8 :: norm,sum
integer :: dim
dim = size(matrix,1)
sum = 0.
do i=1,dim
sum = sum + matrix(i)**2
end do
norm = sqrt(sum)
end function
***********************************
! calculates the deviatoric part of the current stress cStress
function dev(cStress,I_dev,ntens)
use parameters
implicit none
integer :: ntens
real*8 :: cStress(ntens),I_dev(ntens,ntens)
real*8 :: dev(ntens)
dev = matmul(I_dev,cStress)
end function
***********************************
function clcMatA(cStress,D,I_dev,dtime,ndi,ntens)
use parameters
implicit none
integer :: ndi,ntens
real*8 :: Z(2,ntens), dProductIDev(ntens,ntens),
1clcMatA(ntens,ntens),D(ntens,ntens),I_dev(ntens,ntens),
2cStress(ntens),dProductSigmadev2(ntens,ntens),
3sigmaDevDyadicProduct(ntens,ntens),identity(ntens,ntens),
4sigmaDev(ntens),alpha, beta,dtime
alpha = expValVolume/(2*expValDStran)
beta = (6*expValVolume/(pi*expValPStran))**(1/M)*KP
sigmaDev = dev(cStress,I_dev,ntens)
dProductIDev = matmul(D,I_dev)
do i=1,ntens
do j=1,ntens
sigmaDevDyadicProduct(i,j)= sigmaDev(j)*sigmaDev(i)
end do
end do
do i=1,ntens
clcMatA(i,:) = dtime*((alpha+beta*
1 norm(sigmaDev)**(1./m-1.))*dProductIDev(i,:) + beta*(1./m-1.)*
2 norm(sigmaDev)**(1./m-3.))
end do
end function
謝謝。將他們包括在模塊中工作。但是我也必須將「標準」這個名稱改爲別的。我不知道爲什麼! 這是ABAQUS子程序的一部分,該子程序默認接受.for或.obj文件。但它也可以通過一些修改以自由格式編寫。其實我還沒有查過兩種格式之間的根本區別。我會。 感謝您的提示。 – user3410012
或者只是使用Fortran 2008中的函數'norm2'。 –