5 &( op , x , a , y , c , mesh )
71 CHARACTER(LEN=8),
INTENT(IN) :: OP
72 TYPE(bief_obj),
INTENT(INOUT) :: X
73 TYPE(bief_obj),
INTENT(IN) :: A,Y
74 DOUBLE PRECISION,
INTENT(IN) :: C
75 TYPE(bief_mesh),
INTENT(INOUT) :: MESH
91 CALL matvec( op,x%ADR(1)%P,a%ADR(1)%P,y%ADR(1)%P,c,mesh)
95 IF(op(1:8).EQ.
'X=AY ')
THEN 97 & x%ADR(1)%P,a%ADR(1)%P,y%ADR(1)%P,c,mesh,lego=.false.)
99 & x%ADR(1)%P,a%ADR(2)%P,y%ADR(2)%P,c,mesh,lego=.true.)
101 & x%ADR(2)%P,a%ADR(3)%P,y%ADR(1)%P,c,mesh,lego=.false.)
103 & x%ADR(2)%P,a%ADR(4)%P,y%ADR(2)%P,c,mesh,lego=.true.)
104 ELSEIF(op(1:8).EQ.
'X=TAY ')
THEN 106 & x%ADR(1)%P,a%ADR(1)%P,y%ADR(1)%P,c,mesh,lego=.false.)
108 & x%ADR(1)%P,a%ADR(3)%P,y%ADR(2)%P,c,mesh,lego=.true.)
110 & x%ADR(2)%P,a%ADR(2)%P,y%ADR(1)%P,c,mesh,lego=.false.)
112 & x%ADR(2)%P,a%ADR(4)%P,y%ADR(2)%P,c,mesh,lego=.true.)
122 IF(op(1:8).EQ.
'X=AY ')
THEN 124 & x%ADR(1)%P,a%ADR(1)%P,y%ADR(1)%P,c,mesh,lego=.false.)
126 & x%ADR(1)%P,a%ADR(2)%P,y%ADR(2)%P,c,mesh,lego=.false.)
128 & x%ADR(1)%P,a%ADR(3)%P,y%ADR(3)%P,c,mesh,lego=.true.)
130 & x%ADR(2)%P,a%ADR(4)%P,y%ADR(1)%P,c,mesh,lego=.false.)
132 & x%ADR(2)%P,a%ADR(5)%P,y%ADR(2)%P,c,mesh,lego=.false.)
134 & x%ADR(2)%P,a%ADR(6)%P,y%ADR(3)%P,c,mesh,lego=.true. )
136 & x%ADR(3)%P,a%ADR(7)%P,y%ADR(1)%P,c,mesh,lego=.false.)
138 & x%ADR(3)%P,a%ADR(8)%P,y%ADR(2)%P,c,mesh,lego=.false.)
140 & x%ADR(3)%P,a%ADR(9)%P,y%ADR(3)%P,c,mesh,lego=.true.)
141 ELSEIF(op(1:8).EQ.
'X=TAY ')
THEN 143 & x%ADR(1)%P,a%ADR(1)%P,y%ADR(1)%P,c,mesh,lego=.false.)
145 & x%ADR(1)%P,a%ADR(4)%P,y%ADR(2)%P,c,mesh,lego=.false.)
147 & x%ADR(1)%P,a%ADR(7)%P,y%ADR(3)%P,c,mesh,lego=.true.)
149 & x%ADR(2)%P,a%ADR(2)%P,y%ADR(1)%P,c,mesh,lego=.false.)
151 & x%ADR(2)%P,a%ADR(5)%P,y%ADR(2)%P,c,mesh,lego=.false.)
153 & x%ADR(2)%P,a%ADR(8)%P,y%ADR(3)%P,c,mesh,lego=.true.)
155 & x%ADR(3)%P,a%ADR(3)%P,y%ADR(1)%P,c,mesh,lego=.false.)
157 & x%ADR(3)%P,a%ADR(6)%P,y%ADR(2)%P,c,mesh,lego=.false.)
159 & x%ADR(3)%P,a%ADR(9)%P,y%ADR(3)%P,c,mesh,lego=.true.)
163 11
FORMAT(1x,
'MATRBL (BIEF) : UNKNOWN OPERATION : ',a8)
171 WRITE(
lu,60) x%NAME,x%TYPE
172 WRITE(
lu,61) y%NAME,y%TYPE
173 WRITE(
lu,62) a%NAME,a%TYPE
175 151
FORMAT(1x,
'MATRBL (BIEF) : TOO MANY VECTORS :',1i6)
185 ELSEIF(a%TYPE.EQ.3.AND.x%TYPE.EQ.4.AND.y%TYPE.EQ.4)
THEN 187 CALL matvec( op , x%ADR(1)%P , a , y%ADR(1)%P , c , mesh )
191 ELSEIF(a%TYPE.EQ.3.AND.x%TYPE.EQ.2.AND.y%TYPE.EQ.2)
THEN 193 CALL matvec( op , x , a , y , c , mesh )
201 WRITE(
lu,60) x%NAME,x%TYPE
202 WRITE(
lu,61) y%NAME,y%TYPE
203 WRITE(
lu,62) a%NAME,a%TYPE
205 60
FORMAT(1x,
'MATRBL (BIEF) : NAME OF X : ',a6,
' TYPE : ',1i6)
206 61
FORMAT(1x,
' NAME OF Y : ',a6,
' TYPE : ',1i6)
207 62
FORMAT(1x,
' NAME OF A : ',a6,
' TYPE : ',1i6)
208 63
FORMAT(1x,
' NOT IMPLEMENTED')
221 ELSEIF (
modass .EQ. 3)
THEN 226 x%ADR(1)%P%R=x%ADR(1)%P%R+x%ADR(1)%P%E
subroutine parcom_comp(X, ERRX, ICOM, MESH)
subroutine parcom(X, ICOM, MESH)
subroutine matrbl(OP, X, A, Y, C, MESH)
subroutine matvec(OP, X, A, Y, C, MESH, LEGO)