Fortran Backtrace сообщение об ошибке с libcuba - PullRequest
0 голосов
/ 28 июня 2018

Я разрабатываю интеграл, используя libcuba с Фортраном, но когда я запускаю программу, появляется эта ошибка

Backtrace for this error:
  0x7ff80c55d31a
  0x7ff80c55c503
  0x7ff80bbd9f1f
  0x55eb8a7eb281
  0x55eb8a7ec8e1
  0x55eb8a7c0b24
  0x55eb8a7c1785
  0x55eb8a7daf03
  0x55eb8a7d7e8f
  0x55eb8a7c34b1
  0x55eb8a7c20a9
  0x55eb8a7c1087
  0x55eb8a7c1732
  0x7ff80bbbcb96
  0x55eb8a7bbc99
  0xffffffffffffffff
Targeting failure (recorded core image)

Код программы:

      PROGRAM Integral_E_ultra

      IMPLICIT None
      DOUBLE PRECISION NORM,VAL


      CALL E_ultra(VAL)

      STOP
      END


      SUBROUTINE E_ultra(VAL)

      IMPLICIT NONE
      DOUBLE PRECISION NORM,VAL,PI,VALG1
      DOUBLE PRECISION INTEGRALG1(1),ERRORG1(1),PROBG1(1)
      PARAMETER (PI=3.14159265358979D0)

C  Parameters related to the CUBA numerical integration:

      integer ndim,ncomp,mineval,maxeval,verbose,last
      integer fail,nregions,neval
      double precision epsrel,epsabs,userdata
      parameter (ndim=1)
      parameter (userdata=0)
      parameter (ncomp=1)
      parameter (epsrel=1D-3)
      parameter (epsabs=1D-12)

      parameter (verbose=0)
      parameter (last = 4)
      parameter (mineval=0)
      parameter (maxeval=50000)

      integer key1, key2, key3
      parameter (key1 = 47)
      parameter (key2 = 1)
      parameter (key3 = 1)

      integer nstart,nincrease
      parameter (nstart = 1000)
      parameter (nincrease = 500)

      integer nnew
      double precision flatness
      parameter (nnew = 1000)
      parameter (flatness = 25D0)

      integer key
      parameter (key =0)

      EXTERNAL INTG1


      CALL CUHRE(ndim,ncomp,INTG1,userdata,
     +     epsrel,epsabs,verbose+last,mineval,maxeval,
     +     KEY,NREGIONS,neval,fail,INTEGRALG1,ERRORG1,PROBG1)
      VALG1=INTEGRALG1(1)
      VAL=3D0*VALG1/(16*PI**3D0)

      RETURN
      END


      SUBROUTINE INTG1(NDIM,X,NCOMP,RESULT)

      IMPLICIT NONE
      DOUBLE PRECISION X(NDIM),RESULT(NCOMP)
      DOUBLE PRECISION VAR(1),RANGE,JACOBIAN,PI
      DOUBLE PRECISION UPPER(1)
      COMMON/UBOUND/ UPPER
      DOUBLE PRECISION LOWER(1)
      COMMON/UBOUND/ LOWER
      INTEGER NDIM,NCOMP,I
      PARAMETER (PI=3.14159265358979D0)
      Result = 0
      VAR = 0
      RANGE=0D0
      JACOBIAN=1D0      
      LOWER(1)=0D0
      UPPER(1)=1D0    

      DO I=1,NDIM
         RANGE=UPPER(I)-LOWER(I)
         JACOBIAN=JACOBIAN*RANGE
         VAR(I)=LOWER(I)+X(I)*RANGE
      ENDDO

      CALL INTEGRANDG1(RESULT,VAR)
      RESULT(1)=RESULT(1)*JACOBIAN

      RETURN
      END


      SUBROUTINE INTEGRANDG1(RESULT,VAR)

      IMPLICIT NONE
      DOUBLE PRECISION VAR(1),RESULT(*)
      DOUBLE PRECISION NORM,LAMBDA,ALPHA,K,M,G1
      LAMBDA = 1
      K=1
      G1 = 0
      ALPHA = VAR(1)
      G1= -(LAMBDA**2*K*M*ALPHA)/(K**2+LAMBDA**2)**2
      RESULT(1) = G1

      RETURN
      END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...