5 &( tstot , tsder , f , cg, lt,xk,
6 & nf , ndire , npoin2 , amorp )
38 INTEGER,
INTENT(IN) :: NF,NDIRE,NPOIN2,LT
39 DOUBLE PRECISION,
INTENT(INOUT) :: AMORP(npoin2,nf)
40 DOUBLE PRECISION,
INTENT(INOUT) :: TSTOT(npoin2,ndire,nf)
41 DOUBLE PRECISION,
INTENT(INOUT) :: TSDER(npoin2,ndire,nf)
42 DOUBLE PRECISION,
INTENT(INOUT) :: CG(npoin2,nf)
43 DOUBLE PRECISION,
INTENT(INOUT) :: XK(npoin2,nf)
44 DOUBLE PRECISION,
INTENT(IN) :: F(npoin2,ndire,nf)
49 COMPLEX(KIND=R8) FONC, DERFONC, SECONDFONC, DERTROIS
50 EXTERNAL fonc, derfonc, secondfonc, dertrois
52 DOUBLE PRECISION GAMMA, ALPHA, INIT
53 COMPLEX(KIND=R8) X0,X1,X2,X3, PHI, PHI1
54 COMPLEX(KIND=R8) LPRIM,INVLPRIM,LSECOND,LTIERCE
56 COMPLEX(KIND=R8) FPRIM,FSECOND
57 DOUBLE PRECISION TAU,COEFF,CA,S,HW
68 temp=cmplx(s,1.d0, kind=
r8)
70 phi=tau*temp/(s**2+coeff**2)
72 phi1=cmplx(1.d0,0.d0,kind=
r8)
74 IF(
x(ip).GE.40.d0.AND.
x(ip).LE.50.d0
75 & .AND.
y(ip).GE.39.d0 .AND.
y(ip).LE.61.d0)
78 hw=(1-alpha)*
depth(ip)
85 x0=cmplx(init,0.d0, kind=
r8)
87 lprim=derfonc(x0,gamma,phi1,alpha)
89 fprim=derfonc(x0,gamma,phi,alpha)
90 fsecond=secondfonc(x0,gamma,phi,alpha)
91 lsecond=secondfonc(x0,gamma,phi1,alpha)
92 ltierce=dertrois(x0, gamma, phi1,alpha)
93 x1=-fonc(x0,gamma,phi,alpha)*invlprim
94 x2=-invlprim*(0.5d0*lsecond*x1**2+(fprim-lprim)*x1)
95 x3=-invlprim*(lsecond*x1*x2+(fprim-lprim)*x2
96 & +0.5d0*(fsecond-lsecond)*x1**2+1.d0/6.d0*x1**3*ltierce)
101 init=gamma/tanh(init)
103 cg(ip,jf)=0.5*(1+2*init/sinh(2*init))
105 xk(ip,jf)=init/
depth(ip)
107 amorp(ip,jf)=2.d0*cg(ip,jf)*aimag(x0+x1+x2+x3)
119 tstot(ip,jp,jf) = tstot(ip,jp,jf)+amorp(ip,jf)*f(ip,jp,jf)
120 tsder(ip,jp,jf) = tsder(ip,jp,jf)+amorp(ip,jf)
127 FUNCTION fonc(X, GAMMA, PHI, ALPHA)
130 COMPLEX(KIND(1.D0)) FONC
131 DOUBLE PRECISION,
INTENT(IN) :: GAMMA, ALPHA
132 COMPLEX(KIND(1.D0)),
INTENT(IN) :: X, PHI
133 COMPLEX(KIND(1.D0)) TANHCPLX
136 DOUBLE PRECISION BETA
138 fonc=gamma-x*tanhcplx(beta*x)
139 & -phi*tanhcplx(alpha*x)*(x-gamma*tanhcplx(beta*x))
143 FUNCTION derfonc(X, GAMMA, PHI, ALPHA)
146 COMPLEX(KIND(1.D0)) DERFONC
147 DOUBLE PRECISION,
INTENT(IN) :: GAMMA, ALPHA
148 COMPLEX(KIND(1.D0)),
INTENT(IN) :: X, PHI
149 COMPLEX(KIND(1.D0)) TANHCPLX,COSHCPLX
150 EXTERNAL tanhcplx,coshcplx
152 DOUBLE PRECISION BETA
154 derfonc=-phi*tanhcplx(alpha*x)
155 & *(1.d0-gamma*beta/coshcplx(beta*x)**2)
156 & -phi*alpha*(x-gamma*tanhcplx(beta*x))/coshcplx(alpha*x)**2
157 & -beta*x/coshcplx(beta*x)**2-tanhcplx(beta*x)
164 COMPLEX(KIND(1.D0)) SECONDFONC
165 DOUBLE PRECISION,
INTENT(IN) :: GAMMA, ALPHA
166 COMPLEX(KIND(1.D0)),
INTENT(IN) :: X, PHI
167 COMPLEX(KIND(1.D0)) TANHCPLX,COSHCPLX
168 EXTERNAL tanhcplx,coshcplx
170 DOUBLE PRECISION BETA
174 & -2.d0*phi*alpha*(1.d0-beta*gamma/coshcplx(beta*x)**2)
175 & /coshcplx(alpha*x)**2
176 & -2.d0*phi*gamma*beta**2*tanhcplx(alpha*x)*tanhcplx(beta*x)
177 & /coshcplx(beta*x)**2
178 & +2.d0*alpha**2*phi*(x-gamma*tanhcplx(beta*x))*tanhcplx(alpha*x)
179 & /coshcplx(alpha*x)**2
180 & +(2.d0*x*beta**2*tanhcplx(beta*x)-2.d0*beta)/coshcplx(beta*x)**2
185 FUNCTION dertrois(X, GAMMA, PHI, ALPHA)
188 COMPLEX(KIND(1.D0)) DERTROIS
189 DOUBLE PRECISION,
INTENT(IN) :: GAMMA, ALPHA
190 COMPLEX(KIND(1.D0)),
INTENT(IN) :: X, PHI
191 COMPLEX(KIND(1.D0)) TANHCPLX,COSHCPLX
192 EXTERNAL tanhcplx,coshcplx
194 DOUBLE PRECISION BETA
198 & -4.d0*phi*alpha*beta*gamma*(beta*tanhcplx(beta*x)
199 & +alpha*tanhcplx(alpha*x))
200 & /(coshcplx(alpha*x)**2*coshcplx(beta*x)**2)
201 & +4.d0*phi*alpha**2*tanhcplx(alpha*x)/(coshcplx(alpha*x)**2)
202 & -2.d0*phi*gamma*beta**2/(coshcplx(beta*x)**2)*
203 & ( alpha*tanhcplx(beta*x)/(coshcplx(alpha*x)**2)
204 & +beta*tanhcplx(alpha*x)/(coshcplx(beta*x)**2)
205 & -2.d0*beta*tanhcplx(alpha*x)*tanhcplx(beta*x)**2 )
206 & +2.d0*phi*alpha**2/(coshcplx(alpha*x)**2)*
207 & ( (1.d0-gamma*beta/(coshcplx(beta*x)**2))*tanhcplx(alpha*x)
208 & +(x-gamma*tanhcplx(beta*x))*
209 & (alpha/(coshcplx(alpha*x)**2)
210 & -2.d0*alpha*tanhcplx(alpha*x)**2) )
211 & +(2.d0*x*beta**3/(coshcplx(beta*x)**2)
212 & +6.d0*beta**2*tanhcplx(beta*x)
213 & -4.d0*x*beta**3*tanhcplx(beta*x)**2
214 & )/(coshcplx(beta*x)**2)
222 COMPLEX(KIND(1.D0)) TANHCPLX,III
223 COMPLEX(KIND(1.D0)),
INTENT(IN) :: Z
225 iii = cmplx(0.d0,1.d0,kind=
r8)
227 tanhcplx= (exp(iii*z)+exp(-iii*z))/(exp(iii*z)-exp(-iii*z))
235 COMPLEX(KIND(1.D0)) COSHCPLX,III
236 COMPLEX(KIND(1.D0)),
INTENT(IN) :: Z
238 iii = cmplx(0.d0,1.d0,kind=
r8)
240 coshcplx= (exp(iii*z)+exp(-iii*z))*0.5d0
complex(kind(1.d0)) function coshcplx(Z)
complex(kind(1.d0)) function dertrois(X, GAMMA, PHI, ALPHA)
double precision, dimension(:), pointer depth
double precision, dimension(:), pointer freq
double precision, dimension(:), pointer y
complex(kind(1.d0)) function fonc(X, GAMMA, PHI, ALPHA)
complex(kind(1.d0)) function tanhcplx(Z)
complex(kind(1.d0)) function derfonc(X, GAMMA, PHI, ALPHA)
double precision, dimension(:), pointer x
complex(kind(1.d0)) function secondfonc(X, GAMMA, PHI, ALPHA)