7 SUBROUTINE DSPLISO(EESUM
,EEDIF
,UUZZ
,CHI
)
10 REAL, INTENT(IN
) :: CHI
11 REAL, INTENT( OUT
) :: EESUM
,EEDIF
,UUZZ
13 DOUBLE PRECISION :: AASUM
,AADIF
,AAZZ
17 COMMON /QAGON
/RHO
,ZETA
,ETA
20 CALL DPREST(AASUM
,AADIF
,AAZZ
)
22 EESUM
= - BIAUX
*(AASUM
+CHI
)
23 EEDIF
= BIAUX
*(AADIF
-CHI
)
26 END SUBROUTINE DSPLISO
28 SUBROUTINE DSPLANISO(EESUM
,EEDIF
,UUZ
,CHI
)
31 REAL, INTENT(IN
) :: CHI
32 REAL, INTENT( OUT
) :: EESUM
,EEDIF
,UUZ
34 DOUBLE PRECISION :: AASUM1
,AADIF1
,AAZ1
,&
39 COMMON /QAGON
/RHO
,ZETA
,ETA
42 CALL DPREST(AASUM1
,AADIF1
,AAZ1
)
44 CALL DPREST(AASUM2
,AADIF2
,AAZ2
)
46 EESUM
= CN1_2G
*CHI
+ & !(2.E0*EPSA + CN1_2G)*CHI + &
47 (CN02_1
*AASUM2
- CN02_2
*AASUM1
)/ETA_DIF
48 EEDIF
= +CN1_2G
*CHI
- &
49 (CN02_1
*AADIF2
- CN02_2
*AADIF1
)/ETA_DIF
50 UUZ
= & !(EPSC*CHI)*ZETA + &
51 (U1
*AAZ2
- U2
*AAZ1
)/ETA_DIF
53 ! WRITE(12,'(10(E15.8,1X))')ZETA,RHO,AASUM1,AASUM2,AADIF1,AADIF2
57 END SUBROUTINE DSPLANISO
59 SUBROUTINE DPREST(AASUM
,AADIF
,AAZ
)
61 Use Input_Data
, ONLY
: RD
,RC
,ZC
65 !! 'dummy' and local variables !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
67 DOUBLE PRECISION AASUM
,AADIF
,AAZ
,RO
,ZE
69 !! GAG Variables !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
71 INTEGER, PARAMETER :: LIMITE
=100
72 DOUBLE PRECISION AL
,AU
,ABSERR
,EPSABS
,EPSREL
,WORK(4*LIMITE
)
73 INTEGER IER
,IWORK(LIMITE
),KEY,LAST
,LENW
,LIMIT
,NEVAL
75 DOUBLE PRECISION, EXTERNAL :: I_FA00
,I_FA20
,I_FI00
79 COMMON /QAGON
/RHO
,ZETA
,ETA
81 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
94 CALL DQAG(I_FA00
,AL
,AU
,EPSABS
,EPSREL
,KEY,AASUM
,ABSERR
,NEVAL
, &
95 IER
,LIMIT
,LENW
,LAST
,IWORK
,WORK
)
98 CALL DQAG_CHECK("FA00","AASUM",AASUM
,ABSERR
,RO
*RC
,ZE
*ZC
,NEVAL
,IER
,LAST
)
100 CALL DQAG(I_FA20
,AL
,AU
,EPSABS
,EPSREL
,KEY,AADIF
,ABSERR
,NEVAL
, &
101 IER
,LIMIT
,LENW
,LAST
,IWORK
,WORK
)
104 CALL DQAG_CHECK("FA20","AADIF",AADIF
,ABSERR
,RO
*RC
,ZE
*ZC
,NEVAL
,IER
,LAST
)
106 CALL DQAG(I_FI00
,AL
,AU
,EPSABS
,EPSREL
,KEY,AAZ
,ABSERR
,NEVAL
, &
107 IER
,LIMIT
,LENW
,LAST
,IWORK
,WORK
)
109 CALL DQAG_CHECK("FI00","UUZ",AAZ
,ABSERR
,RO
*RC
,ZE
*ZC
,NEVAL
,IER
,LAST
)
112 END SUBROUTINE DPREST
114 SUBROUTINE DQAG_CHECK(FUNC
,RESNAME
,RES
,ABSERR
,RO
,ZE
,NEVAL
,IER
,LAST
)
116 CHARACTER(LEN
=*) :: FUNC
,RESNAME
117 DOUBLE PRECISION :: RES
,ABSERR
,RO
,ZE
118 INTEGER :: NEVAL
,IER
,LAST
119 WRITE(6,*)"ERROR AT: RHO: ",RO
," ZETA: ",ZE
120 WRITE(6,*)"QAG ",TRIM(FUNC
)," ",TRIM(RESNAME
)," RESULT=",RES
121 WRITE(6,*)"QAG ABSERR=",ABSERR
122 WRITE(6,*)"QAG NEVAL=",NEVAL
123 WRITE(6,*)"QAG IER=",IER
124 WRITE(6,*)"QAG LAST=",LAST
127 END SUBROUTINE DQAG_CHECK
129 END MODULE DISPL_CALC