5 &(x, a,b , mesh, d,ad,g,r, cfg,infogr,aux)
74 TYPE(slvcfg),
INTENT(INOUT) :: CFG
75 TYPE(bief_obj),
INTENT(INOUT) :: B
76 TYPE(bief_obj),
INTENT(INOUT) :: D,AD,G,R,X
77 TYPE(bief_mesh),
INTENT(INOUT) :: MESH
78 TYPE(bief_obj),
INTENT(IN) :: A
79 TYPE(bief_obj),
INTENT(INOUT) :: AUX
80 LOGICAL,
INTENT(IN) :: INFOGR
86 DOUBLE PRECISION XL,RMRM,TESTL,DD
87 DOUBLE PRECISION BETA,RO,GMGM,GM1GM1
88 DOUBLE PRECISION STO2,TGMTGM,C
90 LOGICAL RELAT,PREC,CROUT,GSEB
102 IF(7*(cfg%PRECON/7).EQ.cfg%PRECON) crout=.true.
104 IF(11*(cfg%PRECON/11).EQ.cfg%PRECON) gseb=.true.
106 IF(crout.OR.gseb.OR.13*(cfg%PRECON/13).EQ.cfg%PRECON) prec=.true.
126 CALL matrbl(
'X=AY ',r,a,x, c,mesh)
128 CALL os(
'X=X-Y ', x=r, y=b)
132 IF (rmrm.LT.cfg%EPS**2*xl)
GO TO 900
141 CALL downup(g, aux , r ,
'D' , mesh)
148 CALL downup(b , aux , g ,
'T' , mesh)
159 CALL matrbl(
'X=TAY ',d,a,b, c,mesh)
161 CALL matrbl(
'X=TAY ',d,a,g, c,mesh)
170 CALL matrbl(
'X=AY ',ad,a,d, c,mesh)
182 CALL os(
'X=X+CY ', x=x, y=d, c=-ro)
194 CALL os(
'X=X+CY ', x=r, y=ad, c=-ro)
204 IF (rmrm.LE.xl*cfg%EPS**2)
GO TO 900
213 CALL downup(g, aux , r ,
'D' , mesh)
215 CALL downup(b , aux , g ,
'T' , mesh)
229 CALL matrbl(
'X=TAY ',ad,a,b, c,mesh)
232 CALL matrbl(
'X=TAY ',ad,a,g, c,mesh)
237 CALL os(
'X=CX ', x=d, c=beta)
240 CALL os(
'X=X+Y ', x=d, y=ad)
246 CALL matrbl(
'X=AY ',ad,a,d, c,mesh)
257 CALL os(
'X=X+CY ', x=x, y=d, c=-ro)
259 IF(m.LT.cfg%NITMAX)
GO TO 2
264 testl = sqrt( rmrm / xl )
266 WRITE(
lu,104) m,testl
268 WRITE(
lu,204) m,testl
278 testl = sqrt( rmrm / xl )
280 WRITE(
lu,102) m,testl
282 WRITE(
lu,202) m,testl
292 102
FORMAT(1x,
'ERRMIN (BIEF) : ',
293 & 1i8,
' ITERATIONS, RELATIVE PRECISION:',g16.7)
294 202
FORMAT(1x,
'ERRMIN (BIEF) : ',
295 & 1i8,
' ITERATIONS, ABSOLUTE PRECISION:',g16.7)
296 104
FORMAT(1x,
'ERRMIN (BIEF) : EXCEEDING MAXIMUM ITERATIONS:',
297 & 1i8,
' RELATIVE PRECISION:',g16.7)
298 204
FORMAT(1x,
'ERRMIN (BIEF) : EXCEEDING MAXIMUM ITERATIONS:',
299 & 1i8,
' ABSOLUTE PRECISON:',g16.7)
subroutine downup(X, A, B, DITR, MESH)
subroutine os(OP, X, Y, Z, C, IOPT, INFINI, ZERO)
subroutine errmin(X, A, B, MESH, D, AD, G, R, CFG, INFOGR, AUX)
subroutine matrbl(OP, X, A, Y, C, MESH)
double precision function p_dots(X, Y, MESH)