5 &(x, a,b , mesh, p,
q,r,s,t,v, cfg,infogr,aux)
77 TYPE(bief_obj) ,
INTENT(INOUT) :: X,P,Q,R,S,T,V
78 TYPE(bief_obj) ,
INTENT(IN) :: AUX,A,B
79 TYPE(bief_mesh) ,
INTENT(INOUT) :: MESH
80 TYPE(slvcfg) ,
INTENT(INOUT) :: CFG
81 LOGICAL ,
INTENT(IN) :: INFOGR
85 DOUBLE PRECISION ALFA,ALFA1,BETA,BETA1,OMEG,OMEG1,OMEG2
86 DOUBLE PRECISION XL,TESTL,RMRM,C
92 DOUBLE PRECISION,
PARAMETER :: RMIN = 1.d-15
100 IF(7*(cfg%PRECON/7).EQ.cfg%PRECON) crout=.true.
120 IF(sqrt(xl).LT.rmin)
THEN 122 CALL os(
'X=0 ' , x=x )
128 CALL matrbl(
'X=AY ',v,a,x,c, mesh)
130 CALL os(
'X=Y-Z ' , x=r , y=b , z=v )
133 IF (rmrm.LT.cfg%EPS**2*xl)
GO TO 900
142 WRITE(
lu,*)
'NO CROUT PRECONDITIONNING IN PARALLEL' 146 CALL downup(r, aux , b ,
'D' , mesh)
148 CALL os(
'X=Y ', x=r, y=b)
157 WRITE(
lu,*)
'NO CROUT PRECONDITIONNING IN PARALLEL' 161 CALL downup(v, aux , v ,
'D' , mesh)
164 CALL os(
'X=X-Y ', x=r, y=v)
165 CALL os(
'X=Y ', x=p, y=r)
166 CALL os(
'X=0 ', x=v )
167 CALL os(
'X=0 ', x=q )
181 omeg2 = omeg1*beta1/beta
185 CALL os(
'X=Y+CZ ', x=q, y=r, z=q, c= omeg )
186 CALL os(
'X=X+CY ', x=q, y=v, z=v, c=-omeg2)
188 CALL matrbl(
'X=AY ',v,a,q,c, mesh)
192 WRITE(
lu,*)
'NO CROUT PRECONDITIONNING IN PARALLEL' 196 CALL downup(v, aux , v ,
'D' , mesh)
202 CALL os(
'X=Y+CZ ', x=s, y=r, z=v, c=-omeg1)
204 CALL matrbl(
'X=AY ',t,a,s,c, mesh)
208 WRITE(
lu,*)
'NO CROUT PRECONDITIONNING IN PARALLEL' 212 CALL downup(t, aux , t ,
'D' , mesh)
219 CALL os(
'X=X+CY ', x=x, y=q, c=omeg1)
220 CALL os(
'X=X+CY ', x=x, y=s, c=alfa )
222 CALL os(
'X=Y+CZ ', x=r, y=s, z=t, c=-alfa )
228 IF (rmrm.LE.xl*cfg%EPS**2)
GO TO 900
230 IF(m.LT.cfg%NITMAX)
GO TO 2
235 testl = sqrt( rmrm / xl )
237 WRITE(
lu,104) m,testl
239 WRITE(
lu,204) m,testl
249 testl = sqrt( rmrm / xl )
251 WRITE(
lu,103) m,testl
253 WRITE(
lu,203) m,testl
263 103
FORMAT(1x,
'CGSTAB (BIEF) : ',1i8,
' ITERATIONS',
264 &
' RELATIVE PRECISION: ',g16.7)
265 203
FORMAT(1x,
'CGSTAB (BIEF) : ',1i8,
' ITERATIONS',
266 &
' ABSOLUTE PRECISION: ',g16.7)
267 104
FORMAT(1x,
'CGSTAB (BIEF) : EXCEEDING MAXIMUM ITERATIONS ',1i8,
268 &
' RELATIVE PRECISION: ',g16.7)
269 204
FORMAT(1x,
'CGSTAB (BIEF) : EXCEEDING MAXIMUM ITERATIONS',1i8,
270 &
' ABSOLUTE PRECISION:',g16.7)
subroutine downup(X, A, B, DITR, MESH)
subroutine cgstab(X, A, B, MESH, P, Q, R, S, T, V, CFG, INFOGR, AUX)
subroutine os(OP, X, Y, Z, C, IOPT, INFINI, ZERO)
double precision function q(I)
subroutine matrbl(OP, X, A, Y, C, MESH)
double precision function p_dots(X, Y, MESH)