5 &(x,a,b,mesh, g,g0,p,k,h,ahpk,cfg,infogr)
130 TYPE(bief_obj) ,
INTENT(INOUT) :: X,G,G0,P,K,H,AHPK
131 TYPE(bief_obj) ,
INTENT(IN ) :: B
132 TYPE(bief_obj) ,
INTENT(IN) :: A
133 TYPE(slvcfg) ,
INTENT(INOUT) :: CFG
134 LOGICAL ,
INTENT(IN) :: INFOGR
135 TYPE(bief_mesh) ,
INTENT(INOUT) :: MESH
139 DOUBLE PRECISION XL,RO,TESTL,RL,GMP1G0,BETA,GMG0,C
164 CALL matrbl(
'X=AY ',g,a,x,c, mesh)
166 CALL os(
'X=X-Y ', x=g, y=b)
172 IF(rl.LT.cfg%EPS**2*xl)
THEN 176 WRITE(
lu,101) m,testl
178 WRITE(
lu,201) m,testl
186 CALL os(
'X=Y ', x=g0, y=g)
187 CALL os(
'X=Y ', x=p , y=g)
188 CALL os(
'X=Y ', x=k , y=g)
195 CALL matrbl(
'X=AY ',h,a,p,c, mesh)
203 CALL os(
'X=CX ', x=h, c=-ro)
204 CALL os(
'X=X+CY ', x=h, y=k, c=2.d0)
209 CALL os(
'X=X+CY ', x=x, y=h, c=-ro)
213 CALL matrbl(
'X=AY ',ahpk,a,h,c, mesh)
222 CALL os(
'X=X+CY ', x=g, y=ahpk, c=-ro)
225 IF (rl.GT.cfg%EPS**2*xl)
THEN 226 IF (m.GE.cfg%NITMAX)
THEN 229 WRITE(
lu,103) m,testl
231 WRITE(
lu,203) m,testl
241 WRITE(
lu,101) m,testl
243 WRITE(
lu,201) m,testl
252 gmp1g0 =
p_dots(g,g0,mesh)
261 CALL os(
'X=X-Y ', x=h, y=k)
266 CALL os(
'X=CX ', x=p, c=beta**2 )
267 CALL os(
'X=X+Y ', x=p, y=g)
268 CALL os(
'X=X+CY ', x=p, y=h, c=2*beta)
273 CALL os(
'X=Y ', x=k, y=g)
274 CALL os(
'X=X+CY ', x=k, y=h, c=beta)
284 101
FORMAT(1x,
'CGSQUA (BIEF) : ',1i8,
' ITERATIONS',
285 &
' RELATIVE PRECISION: ',g16.7)
286 201
FORMAT(1x,
'CGSQUA (BIEF) : ',1i8,
' ITERATIONS',
287 &
' ABSOLUTE PRECISION: ',g16.7)
288 103
FORMAT(1x,
'CGSQUA (BIEF) : EXCEEDING MAXIMUM ITERATIONS ',1i8,
289 &
' RELATIVE PRECISION: ',g16.7)
290 203
FORMAT(1x,
'CGSQUA (BIEF) : EXCEEDING MAXIMUM ITERATIONS ',1i8,
291 &
' ABSOLUTE PRECISION:',g16.7)
subroutine cgsqua(X, A, B, MESH, G, G0, P, K, H, AHPK, CFG, INFOGR)
subroutine os(OP, X, Y, Z, C, IOPT, INFINI, ZERO)
subroutine matrbl(OP, X, A, Y, C, MESH)
double precision function p_dots(X, Y, MESH)