5 &(x, a,b , mesh, d,ad,ag,g,r, cfg,infogr,aux)
75 TYPE(slvcfg),
INTENT(INOUT) :: CFG
76 TYPE(bief_obj),
INTENT(INOUT) :: B
77 TYPE(bief_obj),
INTENT(INOUT) :: D,AD,G,AG,R,X
78 TYPE(bief_mesh),
INTENT(INOUT) :: MESH
79 TYPE(bief_obj),
INTENT(IN) :: A
80 TYPE(bief_obj),
INTENT(INOUT) :: AUX
81 LOGICAL,
INTENT(IN) :: INFOGR
87 DOUBLE PRECISION XL,RMRM,TESTL
88 DOUBLE PRECISION BETA,ADAD,RO
89 DOUBLE PRECISION TGMTGM,TG1TG1,C
91 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.
127 CALL matrbl(
'X=AY ',r,a,x, c,mesh)
129 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)
149 CALL downup(b , aux , g ,
'T' , mesh)
158 CALL matrbl(
'X=TAY ',d,a,b, c,mesh)
160 CALL matrbl(
'X=TAY ',d,a,g, c,mesh)
169 CALL matrbl(
'X=AY ',ad,a,d,c,mesh)
176 CALL downup(ag, aux , ad ,
'D' , mesh)
195 CALL os(
'X=X+CY ', x=x, y=d, c=-ro)
207 CALL os(
'X=X+CY ', x=r, y=ad, c=-ro)
215 IF (rmrm.LE.xl*cfg%EPS**2)
GO TO 900
224 CALL os(
'X=X+CY ', x=g, y=ag, c=-ro)
226 CALL downup(b , aux , g ,
'T' , mesh)
237 CALL matrbl(
'X=TAY ',ad,a,b, c,mesh)
240 CALL matrbl(
'X=TAY ',ad,a,g, c,mesh)
244 tgmtgm =
p_dots(ad,ad,mesh)
245 beta = tgmtgm / tg1tg1
247 CALL os(
'X=CX ', x=d, c=beta)
250 CALL os(
'X=X+Y ', x=d, y=ad)
256 CALL matrbl(
'X=AY ',ad,a,d, c,mesh)
261 CALL downup(ag , aux , ad ,
'D' , mesh)
278 CALL os(
'X=X+CY ', x=x, y=d, c=-ro)
280 IF(m.LT.cfg%NITMAX)
GO TO 2
285 testl = sqrt( rmrm / xl )
287 WRITE(
lu,104) m,testl
289 WRITE(
lu,204) m,testl
299 testl = sqrt( rmrm / xl )
301 WRITE(
lu,102) m,testl
303 WRITE(
lu,202) m,testl
313 102
FORMAT(1x,
'EQUNOR (BIEF) : ',
314 & 1i8,
' ITERATIONS, RELATIVE PRECISION:',g16.7)
315 202
FORMAT(1x,
'EQUNOR (BIEF) : ',
316 & 1i8,
' ITERATIONS, ABSOLUTE PRECISION:',g16.7)
317 104
FORMAT(1x,
'EQUNOR (BIEF) : EXCEEDING MAXIMUM ITERATIONS:',
318 & 1i8,
' RELATIVE PRECISION:',g16.7)
319 204
FORMAT(1x,
'EQUNOR (BIEF) : EXCEEDING MAXIMUM ITERATIONS:',
320 & 1i8,
' ABSOLUTE PRECISON:',g16.7)
subroutine downup(X, A, B, DITR, MESH)
subroutine os(OP, X, Y, Z, C, IOPT, INFINI, ZERO)
subroutine equnor(X, A, B, MESH, D, AD, AG, G, R, CFG, INFOGR, AUX)
subroutine matrbl(OP, X, A, Y, C, MESH)
double precision function p_dots(X, Y, MESH)