105 integer,
intent(in) :: rmax
106 double complex,
intent(in) :: masses2(0:0)
107 double complex,
intent(out) :: TA(0:rmax,0:rmax,0:rmax,0:rmax)
108 double complex,
intent(out) :: TAuv(0:rmax,0:rmax,0:rmax,0:rmax)
109 double precision,
intent(out),
optional :: TAerr(0:rmax)
110 double complex :: TA2(0:rmax,0:rmax,0:rmax,0:rmax), TAuv2(0:rmax,0:rmax,0:rmax,0:rmax)
111 double complex :: CA(0:rmax/2), CAuv(0:rmax/2)
112 double precision :: CAerr(0:rmax),TAerr_aux(0:rmax),TAerr_aux2(0:rmax)
113 double complex :: args(1)
114 double precision :: TAdiff(0:rmax),norm(0:rmax),norm_coli,norm_dd,TAacc(0:rmax)
115 integer :: r,n0,n1,n2,n3
118 if (1.gt.nmax_cll) then
119 call seterrflag_cll(-10)
120 call errout_cll(
'Aten_cll',
'Nmax_cll smaller 1',eflag,.true.)
121 write(nerrout_cll,*)
'Nmax_cll =',nmax_cll
122 write(nerrout_cll,*)
'Reinitialize COLLIER with Nmax_cll >= 1'
123 call propagateerrflag_cll
126 if (rmax.gt.rmax_cll) then
127 call seterrflag_cll(-10)
128 call errout_cll(
'Aten_cll',
'argument rmax larger than rmax_cll',eflag,.true.)
129 write(nerrout_cll,*)
'rmax =',rmax
130 write(nerrout_cll,*)
'rmax_cll =',rmax_cll
131 write(nerrout_cll,*)
'Reinitialize COLLIER with rmax_cll >= ',rmax
132 call propagateerrflag_cll
137 call setmasterfname_cll(
'Aten_cll')
138 call setmastern_cll(1)
139 call setmasterr_cll(rmax)
140 call setmasterargs_cll(1,args)
142 call settencache_cll(tenred_cll-1)
144 if (mode_cll.eq.3) then
147 call a_cll(ca,cauv,masses2(0),rmax,caerr,0)
148 call calctensora(ta,tauv,taerr_aux,ca,cauv,caerr,rmax)
152 call a_cll(ca,cauv,masses2(0),rmax,caerr,0)
153 call calctensora(ta2,tauv2,taerr_aux2,ca,cauv,caerr,rmax)
164 norm_coli = max(norm_coli,abs(ta(n0,n1,n2,n3)))
165 norm_dd = max(norm_dd,abs(ta2(n0,n1,n2,n3)))
169 if (norm_coli.eq.0d0) then
170 norm_coli = abs(masses2(0))
171 if(norm_coli.ne.0d0) then
172 norm_coli=norm_coli**(1+real(r)/2)
174 norm_coli=muuv2_cll**(1+real(r)/2)
177 if (norm_dd.eq.0d0) then
178 norm_dd = abs(masses2(0))
179 if(norm_dd.ne.0d0) then
180 norm_dd=norm_dd**(1+real(r)/2)
182 norm_dd=muuv2_cll**(1+real(r)/2)
185 norm(r) = min(norm_coli,norm_dd)
188 call checktena_cll(ta,ta2,masses2,norm,rmax,tadiff)
190 if (taerr_aux(rmax).lt.taerr_aux2(rmax)) then
191 if (
present(taerr)) taerr = max(taerr_aux,tadiff*norm)
193 taacc(r) = max(taerr_aux(r)/norm(r),tadiff(r))
195 if (monitoring) pointscntaten_coli = pointscntaten_coli + 1
199 if (
present(taerr)) taerr = max(taerr_aux2,tadiff*norm)
201 taacc(r) = max(taerr_aux2(r)/norm(r),tadiff(r))
203 if (monitoring) pointscntaten_dd = pointscntaten_dd + 1
207 call a_cll(ca,cauv,masses2(0),rmax,caerr,0)
208 call calctensora(ta,tauv,taerr_aux,ca,cauv,caerr,rmax)
209 if (
present(taerr)) taerr = taerr_aux
216 norm(r) = max(norm(r),abs(ta(n0,n1,n2,n3)))
220 if (norm(r).eq.0d0) then
221 norm(r) = abs(masses2(0))
222 if(norm(r).ne.0d0) then
223 norm(r)=norm(r)**(1+real(r)/2)
225 norm(r)=muuv2_cll**(1+real(r)/2)
230 taacc(r) = taerr_aux(r)/norm(r)
235 call propagateaccflag_cll(taacc,rmax)
236 call propagateerrflag_cll
239 pointscntaten_cll = pointscntaten_cll + 1
241 if(maxval(taacc).gt.reqacc_cll) accpointscntaten_cll = accpointscntaten_cll + 1
243 if(maxval(taacc).gt.critacc_cll) then
244 critpointscntaten_cll = critpointscntaten_cll + 1
245 if ( critpointscntaten_cll.le.noutcritpointsmax_cll(1) ) then
246 call critpointsout_cll(
'TAten_cll',0,maxval(taacc),critpointscntaten_cll)
247 if( critpointscntaten_cll.eq.noutcritpointsmax_cll(1)) then
248 write(ncpout_cll,*)
' Further output of Critical Points for TAten_cll suppressed'
252 call critpointsout2_cll(
'TAten_cll',0,maxval(taacc),critpointscntaten_cll)
253 if( critpointscntaten_cll.eq.noutcritpointsmax_cll(1)) then
254 write(ncpout2_cll,*)
' Further output of Critical Points for TAten_cll suppressed'