主题:子程序调用不了,求指点
这是我需要在ABAQUS中调用的fortran90子程序,前面一节说明都是照标准格式来的,是对的,从 pi=2.*ASIN(1.0)起,后面就是我自己编的,子程序有错误,运行不了,希望高手指点
SUBROUTINE UTRACLOAD(ALPHA,T_USER,KSTEP,KINC,TIME,NOEL,NPT,
1 COORDS,DIRCOS,JLTYP,SNAME)
C
INCLUDE 'ABA_PARAM.INC'
C
CHARACTER*80 SNAME
DIMENSION T_USER(3), TIME(2), COORDS(3), DIRCOS(3,3)
pi=2.*ASIN(1.0)
cs=1400.
cp=2424.87
damp_cs=19.05*2.7*cs
damp_cp=19.05*2.7*cp
stif_n=19.05*5.292*1000000.0/381.0
stif_t=19.05*0.5*5.292*1000000.0/381.0
tsd=COORDS(2)/cs
tpd=COORDS(2)/cp
write(15,50)coords(2),time(1),f
50 format(2f10.5,f15.6)
if(COORDS(2).LE.0.1.and.COORDS(2).GE.-0.1.and.COORDS(1).LE.762.1.a
2nd.COORDS(1).GE.-0.1)then
ALPHA=stif_t*(pulse_u(time(1)))+damp_cs*2*pulse(time(1))
else if(COORDS(2).LE.361.1.and.COORDS(2).GE.-0.1.and.COORDS(1).LE.
30.1.and.COORDS(1).GE.-0.1)then
ALPHA=damp_cs*(pulse(time(1)-tsd)-pulse(time(1)-0.5442857+tsd))
else if(COORDS(2).LE.361.1.and.COORDS(2).GE.-0.1.and.COORDS(1).LE.
4762.1.and.COORDS(1).GE.761.9)then
ALPHA=-damp_cs*(pulse(time(1)-tsd)-pulse(time(1)-0.5442857+tsd))
end if
RETURN
end
SUBROUTINE DLOAD(F,KSTEP,KINC,TIME,NOEL,NPT,LAYER,KSPT,COORDS,
5 JLTYP,SNAME)
C
INCLUDE 'ABA_PARAM.INC'
C
DIMENSION TIME(2),COORDS(3)
CHARACTER*80 SNAME
cs=1400.
cp=2424.87
damp_cs=19.05*2.7*cs
damp_cp=19.05*2.7*cp
stif_n=19.05*5.292*1000000./381.
stif_t=19.05*0.5*5.292*1000000./381.
tsd=COORDS(2)/cs
tpd=COORDS(2)/cp
if(COORDS(2).LE.361.1.and.COORDS(2).GE.-0.1.and.COORDS(1).LE.0.1.a
6nd.COORDS(1).GE.-0.1)then
F=stif_n*(pulse_u(time(1)-tsd)+pulse_u(time(1)-0.5442857+tsd))+
7damp_cp*(pulse(time(1)-tsd)+pulse(time(1)-0.5442857+tsd))
else if(COORDS(2).LE.361.1.and.COORDS(2).GE.-0.1.and.COORDS(1).LE.
8762.1.and.COORDS(1).GE.761.9)then
F=stif_n*(pulse_u(time(1)-tsd)+pulse_u(time(1)-0.5442857+tsd))+
9damp_cp*(pulse(time(1)-tsd)+pulse(time(1)-0.5442857+tsd))
END IF
RETURN
END
function pulse_u(t)
pulse_u=0
if(t.ge.0.and.t.le.0.50)then
pulse_u=sin(4*pi*t)-0.5*sin(8*pi*t)
else
pulse_u=0.0
endif
end function
function pulse(t)
pulse=0.0
if(t.ge.0.and.t.le.0.50)then
pulse=4*pi*cos(4*pi*t)-4*pi*cos(8*pi*t)
else
pulse=0.0
endif
end function
SUBROUTINE UTRACLOAD(ALPHA,T_USER,KSTEP,KINC,TIME,NOEL,NPT,
1 COORDS,DIRCOS,JLTYP,SNAME)
C
INCLUDE 'ABA_PARAM.INC'
C
CHARACTER*80 SNAME
DIMENSION T_USER(3), TIME(2), COORDS(3), DIRCOS(3,3)
pi=2.*ASIN(1.0)
cs=1400.
cp=2424.87
damp_cs=19.05*2.7*cs
damp_cp=19.05*2.7*cp
stif_n=19.05*5.292*1000000.0/381.0
stif_t=19.05*0.5*5.292*1000000.0/381.0
tsd=COORDS(2)/cs
tpd=COORDS(2)/cp
write(15,50)coords(2),time(1),f
50 format(2f10.5,f15.6)
if(COORDS(2).LE.0.1.and.COORDS(2).GE.-0.1.and.COORDS(1).LE.762.1.a
2nd.COORDS(1).GE.-0.1)then
ALPHA=stif_t*(pulse_u(time(1)))+damp_cs*2*pulse(time(1))
else if(COORDS(2).LE.361.1.and.COORDS(2).GE.-0.1.and.COORDS(1).LE.
30.1.and.COORDS(1).GE.-0.1)then
ALPHA=damp_cs*(pulse(time(1)-tsd)-pulse(time(1)-0.5442857+tsd))
else if(COORDS(2).LE.361.1.and.COORDS(2).GE.-0.1.and.COORDS(1).LE.
4762.1.and.COORDS(1).GE.761.9)then
ALPHA=-damp_cs*(pulse(time(1)-tsd)-pulse(time(1)-0.5442857+tsd))
end if
RETURN
end
SUBROUTINE DLOAD(F,KSTEP,KINC,TIME,NOEL,NPT,LAYER,KSPT,COORDS,
5 JLTYP,SNAME)
C
INCLUDE 'ABA_PARAM.INC'
C
DIMENSION TIME(2),COORDS(3)
CHARACTER*80 SNAME
cs=1400.
cp=2424.87
damp_cs=19.05*2.7*cs
damp_cp=19.05*2.7*cp
stif_n=19.05*5.292*1000000./381.
stif_t=19.05*0.5*5.292*1000000./381.
tsd=COORDS(2)/cs
tpd=COORDS(2)/cp
if(COORDS(2).LE.361.1.and.COORDS(2).GE.-0.1.and.COORDS(1).LE.0.1.a
6nd.COORDS(1).GE.-0.1)then
F=stif_n*(pulse_u(time(1)-tsd)+pulse_u(time(1)-0.5442857+tsd))+
7damp_cp*(pulse(time(1)-tsd)+pulse(time(1)-0.5442857+tsd))
else if(COORDS(2).LE.361.1.and.COORDS(2).GE.-0.1.and.COORDS(1).LE.
8762.1.and.COORDS(1).GE.761.9)then
F=stif_n*(pulse_u(time(1)-tsd)+pulse_u(time(1)-0.5442857+tsd))+
9damp_cp*(pulse(time(1)-tsd)+pulse(time(1)-0.5442857+tsd))
END IF
RETURN
END
function pulse_u(t)
pulse_u=0
if(t.ge.0.and.t.le.0.50)then
pulse_u=sin(4*pi*t)-0.5*sin(8*pi*t)
else
pulse_u=0.0
endif
end function
function pulse(t)
pulse=0.0
if(t.ge.0.and.t.le.0.50)then
pulse=4*pi*cos(4*pi*t)-4*pi*cos(8*pi*t)
else
pulse=0.0
endif
end function