5 &(x, a,b , mesh,d,ad,ag,g,r, cfg,infogr,aux)
81 LOGICAL,
INTENT(IN) :: INFOGR
85 TYPE(bief_obj),
INTENT(INOUT) :: D,AD,G,AG,R,X,B
86 TYPE(slvcfg) ,
INTENT(INOUT) :: CFG
90 TYPE(bief_mesh),
INTENT(INOUT) :: MESH
94 TYPE(bief_obj),
INTENT(IN) :: A
95 TYPE(bief_obj),
INTENT(INOUT) :: AUX
101 DOUBLE PRECISION XL,RMRM,TESTL,GAD
102 DOUBLE PRECISION AGAD,BETA,ADAD,RO,DAD
105 LOGICAL RELAT,PREC,CROUT,GSEB,PREBE,PRE3D
116 IF(7*(cfg%PRECON/7).EQ.cfg%PRECON) crout=.true.
118 IF(11*(cfg%PRECON/11).EQ.cfg%PRECON) gseb=.true.
120 IF(13*(cfg%PRECON/13).EQ.cfg%PRECON) prebe=.true.
122 IF(17*(cfg%PRECON/17).EQ.cfg%PRECON) pre3d=.true.
124 IF(crout.OR.gseb.OR.prebe.OR.pre3d) prec=.true.
144 CALL matrbl(
'X=AY ',r,a,x, c,mesh)
146 CALL os(
'X=X-Y ', x=r, y=b)
149 IF (rmrm.LT.cfg%EPS**2*xl)
GO TO 900
159 IF(crout.OR.gseb.OR.prebe)
THEN 161 WRITE(
lu,*)
'NO CROUT PRECONDITIONNING IN PARALLEL' 165 CALL downup(g, aux , r ,
'D' , mesh)
167 CALL cpstvc(r%ADR(1)%P,g%ADR(1)%P)
168 CALL trid3d(aux%X%R,g%ADR(1)%P%R,r%ADR(1)%P%R,
178 CALL os(
'X=Y ', x=d, y=g)
184 CALL matrbl(
'X=AY ',ad,a,d, c,mesh)
192 IF(crout.OR.gseb.OR.prebe)
THEN 194 WRITE(
lu,*)
'NO CROUT PRECONDITIONNING IN PARALLEL' 198 CALL downup(b, aux , ad ,
'D' , mesh)
200 CALL cpstvc(r%ADR(1)%P,g%ADR(1)%P)
201 CALL trid3d(aux%X%R,b%ADR(1)%P%R,ad%ADR(1)%P%R,
223 CALL os(
'X=X+CY ', x=x, y=d, c=-ro)
235 CALL os(
'X=X+CY ', x=r, y=ad, c=-ro)
243 IF (rmrm.LE.xl*cfg%EPS**2)
GO TO 900
251 CALL os(
'X=X+CY ', x=g, y=b, c=-ro)
258 CALL matrbl(
'X=AY ',ag,a,g, c,mesh)
271 CALL os(
'X=CX ', x=d, c=beta)
272 CALL os(
'X=X+Y ', x=d, y=g)
278 CALL os(
'X=CX ', x=ad, c=beta)
279 CALL os(
'X=X+Y ', x=ad, y=ag)
285 IF(crout.OR.gseb.OR.prebe)
THEN 287 WRITE(
lu,*)
'NO CROUT PRECONDITIONNING IN PARALLEL' 291 CALL downup(b , aux , ad ,
'D' , mesh)
293 CALL trid3d(aux%X%R,b%ADR(1)%P%R,ad%ADR(1)%P%R,
313 CALL os(
'X=X+CY ', x=x, y=d, c=-ro)
315 IF(m.LT.cfg%NITMAX)
GO TO 2
320 testl = sqrt( rmrm / xl )
322 WRITE(
lu,104) m,testl
324 WRITE(
lu,204) m,testl
334 testl = sqrt( rmrm / xl )
336 WRITE(
lu,102) m,testl
338 WRITE(
lu,202) m,testl
348 102
FORMAT(1x,
'RESCJG (BIEF) : ',
349 & 1i8,
' ITERATIONS, RELATIVE PRECISION:',g16.7)
350 202
FORMAT(1x,
'RESCJG (BIEF) : ',
351 & 1i8,
' ITERATIONS, ABSOLUTE PRECISION:',g16.7)
352 104
FORMAT(1x,
'RESCJG (BIEF) : EXCEEDING MAXIMUM ITERATIONS:',
353 & 1i8,
' RELATIVE PRECISION:',g16.7)
354 204
FORMAT(1x,
'RESCJG (BIEF) : EXCEEDING MAXIMUM ITERATIONS:',
355 & 1i8,
' ABSOLUTE PRECISON:',g16.7)
integer function bief_nbpts(IELM, MESH)
subroutine trid3d(XAUX, X, B, NPOIN, NPOIN2)
subroutine downup(X, A, B, DITR, MESH)
subroutine rescjg(X, A, B, MESH, D, AD, AG, G, R, CFG, INFOGR, AUX)
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)