Я очень новичок в fortran, поэтому ваша помощь мне очень пригодится! У меня была эта проблема, когда я выполнял свой код. Я видел ту же проблему в других вопросах, но мне это не пригодилось. Это проблема, которую я получаю:
Program received signal SIGSEGV: Segmentation fault - invalid memory reference.
Backtrace for this error:
#0 0x7fedb8f212ed in ???
#1 0x7fedb8f20503 in ???
#2 0x7fedb8b53f1f in ???
#3 0x7fedb956e69f in ???
#4 0x55d432e60d0f in ???
#5 0x55d432e61488 in ???
#6 0x55d432e61a72 in ???
#7 0x55d432e60ade in ???
#8 0x7fedb8b36b96 in ???
#9 0x55d432e60b19 in ???
#10 0xffffffffffffffff in ???
Violación de segmento (`core' generado)
Проблема связана с функцией agama_potforcederiv (c_object, xk, force, производная), но я не знаю почему. xk - это 3 компонента, а сила и производная - это выходные данные, которые я должен получить. Это определение подпрограммы, для выполнения которой требуется мой основной код. Я знаю, что проблема здесь, потому что я уже получал текстовые сообщения раньше. Я поделюсь кодом, чтобы лучше показать проблему. Если мне нужно показать больше, сообщите мне. Спасибо большое!
SUBROUTINE USRFUN(XA,N,NP,FVEC,FJAC)
INTEGER N,NP
REAL*8 XA(N),FVEC(NP),FJAC(NP,NP),XK(3),TKK
c REAL*8 PXE,PYE,PZE,PXXE,PYYE,PZZE,PXYE,PXZE,PYZE
double precision force(3),deriv(6), pot1, agama_potforcederiv
INCLUDE 'inc/patternspeed.f'
INCLUDE 'inc/cpotential.f'
write(*,*)'¿Que ocurre?'
XK(1)=XA(1)
XK(2)=XA(2)
XK(3)=0.D0
write(*,*)'¿Que ocurre?'
pot1 = agama_potforcederiv(c_object, xk, force, deriv)
print*, 'Dfy/Dz', deriv(2)
write(*,*)'si este mensaje sale soy feliz'
c TKK=100.d0
c CALL FISOBDEREF (TKK,XK(1),XK(2),XK(3),PXE,PYE,PZE,PXXE,PYYE,PZZE,
c & PXYE,PXZE,PYZE)
write(*,*)force(1),force(2)
FVEC(1)=force(1)-OMEGS2*XA(1)
FVEC(2)=force(2)-OMEGS2*XA(2)
c write(*,*)fvec(1),fvec(2)
FJAC(1,1)=deriv(1)-OMEGS2
FJAC(1,2)=deriv(4)
FJAC(2,1)=deriv(4)
FJAC(2,2)=deriv(2)-OMEGS2
RETURN
END
``