5 &(x1,x2,x3,a11,a12,a13,a21,a22,a23,a31,a32,a33,
6 & b1,b2,b3,d11,d12,d13,d21,d22,d23,d31,d32,d33,
57 LOGICAL,
INTENT(IN) :: PREXSM,DIADON
63 TYPE(bief_obj),
INTENT(IN) :: X3,B1
64 TYPE(bief_obj),
INTENT(INOUT) :: X1,X2,B2,B3
65 TYPE(bief_obj),
INTENT(INOUT) :: D11,D12,D13,D21,D22,D23
66 TYPE(bief_obj),
INTENT(INOUT) :: D31,D32,D33
72 TYPE(bief_obj),
INTENT(INOUT) :: A11,A12,A13,A21,A22
73 TYPE(bief_obj),
INTENT(INOUT) :: A23,A31,A32,A33
79 TYPE(bief_mesh),
INTENT(INOUT) :: MESH
83 INTEGER I,NPOIN1,NPOIN2,NPOIN3
91 IF(npoin2.NE.npoin1.AND.npoin3.NE.npoin1)
THEN 93 200
FORMAT(1x,
'PREBD9 (BIEF) : RECTANGULAR MATRICES',/,1x,
94 &
'BLOCK-DIAGONAL PRECONDITIONING IMPOSSIBLE IN THIS CASE')
105 CALL os(
'X=Y ', x=d11, y=a11%D)
106 CALL os(
'X=Y ', x=d12, y=a12%D)
107 CALL os(
'X=Y ', x=d13, y=a13%D)
108 CALL os(
'X=Y ', x=d21, y=a21%D)
109 CALL os(
'X=Y ', x=d22, y=a22%D)
110 CALL os(
'X=Y ', x=d23, y=a23%D)
111 CALL os(
'X=Y ', x=d31, y=a31%D)
112 CALL os(
'X=Y ', x=d32, y=a32%D)
113 CALL os(
'X=Y ', x=d33, y=a33%D)
122 CALL os(
'X=1/Y ', x=d11, y=d11)
126 d21%R(i) = d21%R(i) * d11%R(i)
127 d31%R(i) = d31%R(i) * d11%R(i)
128 d22%R(i) = d22%R(i) - d21%R(i) * d12%R(i)
133 CALL os(
'X=1/Y ', x=d22, y=d22)
137 d32%R(i) = (d32%R(i) - d31%R(i) * d12%R(i)) * d22%R(i)
138 d23%R(i) = d23%R(i) - d21%R(i) * d13%R(i)
140 & -d31%R(i)*d13%R(i)-d32%R(i)*d23%R(i)
141 d12%R(i) = d12%R(i) * d11%R(i)
142 d13%R(i) = d13%R(i) * d11%R(i)
143 d23%R(i) = d23%R(i) * d22%R(i)
153 CALL os(
'X=X+YZ ', x=x1, y=x2, z=d12)
154 CALL os(
'X=X+YZ ', x=x1, y=x3, z=d13)
155 CALL os(
'X=X+YZ ', x=x2, y=x3, z=d23)
165 CALL os(
'X=1/Y ', x=d33, y=d33)
166 CALL os(
'X=SQR(Y)', x=d11, y=d11)
167 CALL os(
'X=SQR(Y)', x=d22, y=d22)
168 CALL os(
'X=SQR(Y)', x=d33, y=d33)
175 CALL om(
'M=M-DN ', m=a21, n=a11, d=d21, mesh=mesh)
177 CALL om(
'M=M-DN ', m=a22, n=a12, d=d21, mesh=mesh)
179 CALL om(
'M=M-DN ', m=a23, n=a13, d=d21, mesh=mesh)
181 CALL om(
'M=M-DN ', m=a31, n=a11, d=d31, mesh=mesh)
182 CALL om(
'M=M-DN ', m=a31, n=a21, d=d32, mesh=mesh)
184 CALL om(
'M=M-DN ', m=a32, n=a12, d=d31, mesh=mesh)
185 CALL om(
'M=M-DN ', m=a32, n=a22, d=d32, mesh=mesh)
187 CALL om(
'M=M-DN ', m=a33, n=a13, d=d31, mesh=mesh)
188 CALL om(
'M=M-DN ', m=a33, n=a23, d=d32, mesh=mesh)
195 CALL om(
'M=M-ND ', m=a12, n=a11, d=d12, mesh=mesh)
197 CALL om(
'M=M-ND ', m=a22, n=a21, d=d12, mesh=mesh)
199 CALL om(
'M=M-ND ', m=a32, n=a31, d=d12, mesh=mesh)
201 CALL om(
'M=M-ND ', m=a13, n=a11, d=d13, mesh=mesh)
202 CALL om(
'M=M-ND ', m=a13, n=a12, d=d23, mesh=mesh)
204 CALL om(
'M=M-ND ', m=a23, n=a21, d=d13, mesh=mesh)
205 CALL om(
'M=M-ND ', m=a23, n=a22, d=d23, mesh=mesh)
207 CALL om(
'M=M-ND ', m=a33, n=a31, d=d13, mesh=mesh)
208 CALL om(
'M=M-ND ', m=a33, n=a32, d=d23, mesh=mesh)
217 b2%R(i) = b2%R(i)-d21%R(i)*b1%R(i)
218 b3%R(i) = b3%R(i)-d31%R(i)*b1%R(i)-d32%R(i)*b2%R(i)
subroutine prebd9(X1, X2, X3, A11, A12, A13, A21, A22, A23, A31, A32, A33, B1, B2, B3, D11, D12, D13, D21, D22, D23, D31, D32, D33, MESH, PREXSM, DIADON)
subroutine om(OP, M, N, D, C, MESH)
subroutine os(OP, X, Y, Z, C, IOPT, INFINI, ZERO)