mv0304.f

Go to the documentation of this file.
00001 C:\opentelemac\v7p0\sources\utils\bief\mv0304.f
00002 !
00083                      SUBROUTINE MV0304
00084 !                    *****************
00085 !
00086      &(OP, X , DA,TYPDIA,
00087      & XA12,XA13,XA14,XA21,XA23,XA24,XA31,XA32,XA34,
00088      & TYPEXT, Y,C,IKLE1,IKLE2,IKLE3,IKLE4,NPOIN,NELEM,W1,W2,W3,W4)
00089 !
00090 !***********************************************************************
00091 ! BIEF   V6P1                                   21/08/2010
00092 !***********************************************************************
00093 !
00094 !
00095 !
00096 !
00097 !
00098 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00099 !| C              |-->| A GIVEN CONSTANT
00100 !| DA             |-->| MATRIX DIAGONAL
00101 !| IKLE1          |-->| FIRST POINTS OF ELEMENTS
00102 !| IKLE2          |-->| SECOND POINTS OF ELEMENTS
00103 !| IKLE3          |-->| THIRD POINTS OF ELEMENTS
00104 !| IKLE4          |-->| FOURTH POINTS OF ELEMENTS
00105 !| NELEM          |-->| NUMBER OF ELEMENTS
00106 !| NPOIN          |-->| NUMBER OF POINTS
00107 !| OP             |-->| OPERATION TO BE DONE (SEE ABOVE)
00108 !| TYPDIA         |-->| TYPE OF DIAGONAL:
00109 !|                |   | TYPDIA = 'Q' : ANY VALUE
00110 !|                |   | TYPDIA = 'I' : IDENTITY
00111 !|                |   | TYPDIA = '0' : ZERO
00112 !| TYPEXT         |-->| TYPE OF OFF-DIAGONAL TERMS
00113 !|                |   | TYPEXT = 'Q' : ANY VALUE
00114 !|                |   | TYPEXT = 'S' : SYMMETRIC
00115 !|                |   | TYPEXT = '0' : ZERO
00116 !| W1             |<->| RESULT IN NON ASSEMBLED FORM
00117 !| W2             |<->| RESULT IN NON ASSEMBLED FORM
00118 !| W3             |<->| RESULT IN NON ASSEMBLED FORM
00119 !| W4             |<->| RESULT IN NON ASSEMBLED FORM
00120 !| X              |<->| RESULT IN ASSEMBLED FORM
00121 !| XA13           |-->| OFF-DIAGONAL TERM OF MATRIX
00122 !| XA14           |-->| OFF-DIAGONAL TERM OF MATRIX
00123 !| XA21           |-->| OFF-DIAGONAL TERM OF MATRIX
00124 !| XA23           |-->| OFF-DIAGONAL TERM OF MATRIX
00125 !| XA24           |-->| OFF-DIAGONAL TERM OF MATRIX
00126 !| XA31           |-->| OFF-DIAGONAL TERM OF MATRIX
00127 !| XA32           |-->| OFF-DIAGONAL TERM OF MATRIX
00128 !| XA34           |-->| OFF-DIAGONAL TERM OF MATRIX
00129 !| Y              |-->| VECTOR USED IN THE OPERATION
00130 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00131 !
00132       USE BIEF, EX_MV0304 => MV0304
00133 !
00134       IMPLICIT NONE
00135       INTEGER LNG,LU
00136       COMMON/INFO/LNG,LU
00137 !
00138 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00139 !
00140       INTEGER, INTENT(IN) :: NELEM,NPOIN
00141 !
00142       INTEGER, INTENT(IN) :: IKLE1(*),IKLE2(*),IKLE3(*),IKLE4(*)
00143 !
00144       DOUBLE PRECISION, INTENT(INOUT) :: W1(*),W2(*),W3(*),W4(*)
00145       DOUBLE PRECISION, INTENT(IN) :: Y(*),DA(*)
00146       DOUBLE PRECISION, INTENT(INOUT) :: X(*)
00147       DOUBLE PRECISION, INTENT(IN) :: XA12(*),XA13(*),XA14(*)
00148       DOUBLE PRECISION, INTENT(IN) :: XA21(*),XA23(*),XA24(*)
00149       DOUBLE PRECISION, INTENT(IN) :: XA31(*),XA32(*),XA34(*)
00150       DOUBLE PRECISION, INTENT(IN) :: C
00151 !
00152       CHARACTER(LEN=8), INTENT(IN) :: OP
00153       CHARACTER(LEN=1), INTENT(IN) :: TYPDIA,TYPEXT
00154 !
00155 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00156 !
00157       INTEGER IELEM
00158       DOUBLE PRECISION Z(1)
00159 !
00160 !-----------------------------------------------------------------------
00161 !
00162       IF(OP(1:8).EQ.'X=AY    ') THEN
00163 !
00164 !   CONTRIBUTION OF EXTRADIAGONAL TERMS:
00165 !
00166         IF(TYPEXT(1:1).EQ.'Q') THEN
00167 !
00168           DO IELEM = 1 , NELEM
00169             W1(IELEM) =     XA12(IELEM) * Y(IKLE2(IELEM))
00170      &                    + XA13(IELEM) * Y(IKLE3(IELEM))
00171      &                    + XA14(IELEM) * Y(IKLE4(IELEM))
00172             W2(IELEM) =     XA21(IELEM) * Y(IKLE1(IELEM))
00173      &                    + XA23(IELEM) * Y(IKLE3(IELEM))
00174      &                    + XA24(IELEM) * Y(IKLE4(IELEM))
00175             W3(IELEM) =     XA31(IELEM) * Y(IKLE1(IELEM))
00176      &                    + XA32(IELEM) * Y(IKLE2(IELEM))
00177      &                    + XA34(IELEM) * Y(IKLE4(IELEM))
00178           ENDDO ! IELEM
00179 !
00180         ELSEIF(TYPEXT(1:1).EQ.'0') THEN
00181 !
00182           CALL OV ('X=C     ', W1 , Y , Z , 0.D0 , NELEM )
00183           CALL OV ('X=C     ', W2 , Y , Z , 0.D0 , NELEM )
00184           CALL OV ('X=C     ', W3 , Y , Z , 0.D0 , NELEM )
00185 !
00186         ELSE
00187 !
00188           IF (LNG.EQ.1) WRITE(LU,1000) TYPEXT
00189           IF (LNG.EQ.2) WRITE(LU,1001) TYPEXT
00190           CALL PLANTE(0)
00191           STOP
00192 !
00193         ENDIF
00194 !
00195 !   CONTRIBUTION OF THE DIAGONAL:
00196 !
00197         IF(TYPDIA(1:1).EQ.'Q') THEN
00198           CALL OV ('X=YZ    ', X , Y , DA , C  , NPOIN )
00199         ELSEIF(TYPDIA(1:1).EQ.'I') THEN
00200           CALL OV ('X=Y     ', X , Y , Z  , C  , NPOIN )
00201         ELSEIF(TYPDIA(1:1).EQ.'0') THEN
00202           CALL OV ('X=C     ', X , Y , Z  , 0.D0 , NPOIN )
00203         ELSE
00204           IF (LNG.EQ.1) WRITE(LU,2000) TYPDIA
00205           IF (LNG.EQ.2) WRITE(LU,2001) TYPDIA
00206           CALL PLANTE(0)
00207           STOP
00208         ENDIF
00209 !
00210 !-----------------------------------------------------------------------
00211 !
00212       ELSEIF(OP(1:8).EQ.'X=-AY   ') THEN
00213 !
00214 !   CONTRIBUTION OF EXTRADIAGONAL TERMS:
00215 !
00216         IF(TYPEXT(1:1).EQ.'Q') THEN
00217 !
00218           DO IELEM = 1 , NELEM
00219             W1(IELEM) =   - XA12(IELEM) * Y(IKLE2(IELEM))
00220      &                    - XA13(IELEM) * Y(IKLE3(IELEM))
00221      &                    - XA14(IELEM) * Y(IKLE4(IELEM))
00222             W2(IELEM) =   - XA21(IELEM) * Y(IKLE1(IELEM))
00223      &                    - XA23(IELEM) * Y(IKLE3(IELEM))
00224      &                    - XA24(IELEM) * Y(IKLE4(IELEM))
00225             W3(IELEM) =   - XA31(IELEM) * Y(IKLE1(IELEM))
00226      &                    - XA32(IELEM) * Y(IKLE2(IELEM))
00227      &                    - XA34(IELEM) * Y(IKLE4(IELEM))
00228           ENDDO ! IELEM
00229 !
00230         ELSEIF(TYPEXT(1:1).EQ.'0') THEN
00231 !
00232           CALL OV ('X=C     ', W1 , Y , Z , 0.D0 , NELEM )
00233           CALL OV ('X=C     ', W2 , Y , Z , 0.D0 , NELEM )
00234           CALL OV ('X=C     ', W3 , Y , Z , 0.D0 , NELEM )
00235 !
00236         ELSE
00237 !
00238           IF (LNG.EQ.1) WRITE(LU,1000) TYPEXT
00239           IF (LNG.EQ.2) WRITE(LU,1001) TYPEXT
00240           CALL PLANTE(0)
00241           STOP
00242 !
00243         ENDIF
00244 !
00245 !   CONTRIBUTION OF THE DIAGONAL:
00246 !
00247         IF(TYPDIA(1:1).EQ.'Q') THEN
00248           CALL OV ('X=-YZ   ', X , Y , DA , C  , NPOIN )
00249         ELSEIF(TYPDIA(1:1).EQ.'I') THEN
00250           CALL OV ('X=-Y    ', X , Y , Z  , C  , NPOIN )
00251         ELSEIF(TYPDIA(1:1).EQ.'0') THEN
00252           CALL OV ('X=C     ', X , Y , Z  , 0.D0 , NPOIN )
00253         ELSE
00254           IF (LNG.EQ.1) WRITE(LU,2000) TYPDIA
00255           IF (LNG.EQ.2) WRITE(LU,2001) TYPDIA
00256           CALL PLANTE(0)
00257           STOP
00258         ENDIF
00259 !
00260 !-----------------------------------------------------------------------
00261 !
00262       ELSEIF(OP(1:8).EQ.'X=X+AY  ') THEN
00263 !
00264 !   CONTRIBUTION OF EXTRADIAGONAL TERMS:
00265 !
00266         IF(TYPEXT(1:1).EQ.'Q') THEN
00267 !
00268           DO IELEM = 1 , NELEM
00269             W1(IELEM) = W1(IELEM) + XA12(IELEM) * Y(IKLE2(IELEM))
00270      &                            + XA13(IELEM) * Y(IKLE3(IELEM))
00271      &                            + XA14(IELEM) * Y(IKLE4(IELEM))
00272             W2(IELEM) = W2(IELEM) + XA21(IELEM) * Y(IKLE1(IELEM))
00273      &                            + XA23(IELEM) * Y(IKLE3(IELEM))
00274      &                            + XA24(IELEM) * Y(IKLE4(IELEM))
00275             W3(IELEM) = W3(IELEM) + XA31(IELEM) * Y(IKLE1(IELEM))
00276      &                            + XA32(IELEM) * Y(IKLE2(IELEM))
00277      &                            + XA34(IELEM) * Y(IKLE4(IELEM))
00278           ENDDO ! IELEM
00279 !
00280         ELSEIF(TYPEXT(1:1).NE.'0') THEN
00281 !
00282           IF (LNG.EQ.1) WRITE(LU,1000) TYPEXT
00283           IF (LNG.EQ.2) WRITE(LU,1001) TYPEXT
00284           CALL PLANTE(0)
00285           STOP
00286 !
00287         ENDIF
00288 !
00289 !   CONTRIBUTION OF THE DIAGONAL:
00290 !
00291         IF(TYPDIA(1:1).EQ.'Q') THEN
00292           CALL OV ('X=X+YZ  ', X , Y , DA , C , NPOIN )
00293         ELSEIF(TYPDIA(1:1).EQ.'I') THEN
00294           CALL OV ('X=X+Y   ', X , Y , Z  , C  , NPOIN )
00295         ELSEIF(TYPDIA(1:1).NE.'0') THEN
00296           IF (LNG.EQ.1) WRITE(LU,2000) TYPDIA
00297           IF (LNG.EQ.2) WRITE(LU,2001) TYPDIA
00298           CALL PLANTE(0)
00299           STOP
00300         ENDIF
00301 !
00302 !-----------------------------------------------------------------------
00303 !
00304       ELSEIF(OP(1:8).EQ.'X=X-AY  ') THEN
00305 !
00306 !   CONTRIBUTION OF EXTRADIAGONAL TERMS:
00307 !
00308         IF(TYPEXT(1:1).EQ.'Q') THEN
00309 !
00310           DO IELEM = 1 , NELEM
00311             W1(IELEM) = W1(IELEM) - XA12(IELEM) * Y(IKLE2(IELEM))
00312      &                            - XA13(IELEM) * Y(IKLE3(IELEM))
00313      &                            - XA14(IELEM) * Y(IKLE4(IELEM))
00314             W2(IELEM) = W2(IELEM) - XA21(IELEM) * Y(IKLE1(IELEM))
00315      &                            - XA23(IELEM) * Y(IKLE3(IELEM))
00316      &                            - XA24(IELEM) * Y(IKLE4(IELEM))
00317             W3(IELEM) = W3(IELEM) - XA31(IELEM) * Y(IKLE1(IELEM))
00318      &                            - XA32(IELEM) * Y(IKLE2(IELEM))
00319      &                            - XA34(IELEM) * Y(IKLE4(IELEM))
00320           ENDDO ! IELEM
00321 !
00322         ELSEIF(TYPEXT(1:1).NE.'0') THEN
00323 !
00324           IF (LNG.EQ.1) WRITE(LU,1000) TYPEXT
00325           IF (LNG.EQ.2) WRITE(LU,1001) TYPEXT
00326           CALL PLANTE(0)
00327           STOP
00328 !
00329         ENDIF
00330 !
00331 !   CONTRIBUTION OF THE DIAGONAL:
00332 !
00333         IF(TYPDIA(1:1).EQ.'Q') THEN
00334           CALL OV ('X=X-YZ  ', X , Y , DA , C , NPOIN )
00335         ELSEIF(TYPDIA(1:1).EQ.'I') THEN
00336           CALL OV ('X=X-Y   ', X , Y , Z  , C  , NPOIN )
00337         ELSEIF(TYPDIA(1:1).NE.'0') THEN
00338           IF (LNG.EQ.1) WRITE(LU,2000) TYPDIA
00339           IF (LNG.EQ.2) WRITE(LU,2001) TYPDIA
00340           CALL PLANTE(0)
00341           STOP
00342         ENDIF
00343 !
00344 !-----------------------------------------------------------------------
00345 !
00346       ELSEIF(OP(1:8).EQ.'X=X+CAY ') THEN
00347 !
00348 !   CONTRIBUTION OF EXTRADIAGONAL TERMS:
00349 !
00350         IF(TYPEXT(1:1).EQ.'Q') THEN
00351 !
00352           DO IELEM = 1 , NELEM
00353             W1(IELEM) = W1(IELEM)
00354      &              + C * (      XA12(IELEM) * Y(IKLE2(IELEM))
00355      &                         + XA13(IELEM) * Y(IKLE3(IELEM))
00356      &                         + XA14(IELEM) * Y(IKLE4(IELEM)) )
00357             W2(IELEM) = W2(IELEM)
00358      &              + C * (      XA21(IELEM) * Y(IKLE1(IELEM))
00359      &                         + XA23(IELEM) * Y(IKLE3(IELEM))
00360      &                         + XA24(IELEM) * Y(IKLE4(IELEM)) )
00361             W3(IELEM) = W3(IELEM)
00362      &              + C * (      XA31(IELEM) * Y(IKLE1(IELEM))
00363      &                         + XA32(IELEM) * Y(IKLE2(IELEM))
00364      &                         + XA34(IELEM) * Y(IKLE4(IELEM)) )
00365           ENDDO ! IELEM
00366 !
00367         ELSEIF(TYPEXT(1:1).NE.'0') THEN
00368 !
00369           IF (LNG.EQ.1) WRITE(LU,1000) TYPEXT
00370           IF (LNG.EQ.2) WRITE(LU,1001) TYPEXT
00371           CALL PLANTE(0)
00372           STOP
00373 !
00374         ENDIF
00375 !
00376 !   CONTRIBUTION OF THE DIAGONAL:
00377 !
00378         IF(TYPDIA(1:1).EQ.'Q') THEN
00379           CALL OV ('X=X+CYZ  ', X , Y , DA , C , NPOIN )
00380         ELSEIF(TYPDIA(1:1).EQ.'I') THEN
00381           CALL OV ('X=X+CY   ', X , Y , Z  , C  , NPOIN )
00382         ELSEIF(TYPDIA(1:1).NE.'0') THEN
00383           IF (LNG.EQ.1) WRITE(LU,2000) TYPDIA
00384           IF (LNG.EQ.2) WRITE(LU,2001) TYPDIA
00385           CALL PLANTE(0)
00386           STOP
00387         ENDIF
00388 !
00389 !-----------------------------------------------------------------------
00390 !
00391       ELSEIF(OP(1:8).EQ.'X=TAY   ') THEN
00392 !
00393 !   CONTRIBUTION OF EXTRADIAGONAL TERMS:
00394 !
00395         IF(TYPEXT(1:1).EQ.'Q') THEN
00396 !
00397           DO IELEM = 1 , NELEM
00398             W1(IELEM) =   + XA21(IELEM) * Y(IKLE2(IELEM))
00399      &                    + XA31(IELEM) * Y(IKLE3(IELEM))
00400             W2(IELEM) =   + XA12(IELEM) * Y(IKLE1(IELEM))
00401      &                    + XA32(IELEM) * Y(IKLE3(IELEM))
00402             W3(IELEM) =   + XA13(IELEM) * Y(IKLE1(IELEM))
00403      &                    + XA23(IELEM) * Y(IKLE2(IELEM))
00404             W4(IELEM) =   + XA14(IELEM) * Y(IKLE1(IELEM))
00405      &                    + XA24(IELEM) * Y(IKLE2(IELEM))
00406      &                    + XA34(IELEM) * Y(IKLE3(IELEM))
00407             X(NPOIN+IELEM)=0.D0
00408           ENDDO ! IELEM
00409 !
00410         ELSEIF(TYPEXT(1:1).EQ.'0') THEN
00411 !
00412           CALL OV ('X=C     ', W1 , Y , Z , 0.D0 , NELEM )
00413           CALL OV ('X=C     ', W2 , Y , Z , 0.D0 , NELEM )
00414           CALL OV ('X=C     ', W3 , Y , Z , 0.D0 , NELEM )
00415           CALL OV ('X=C     ', W4 , Y , Z , 0.D0 , NELEM )
00416           CALL OV ('X=C     ', X(NPOIN+1) , Y , Z , 0.D0 , NELEM )
00417 !
00418         ELSE
00419 !
00420           IF (LNG.EQ.1) WRITE(LU,1000) TYPEXT
00421           IF (LNG.EQ.2) WRITE(LU,1001) TYPEXT
00422           CALL PLANTE(0)
00423           STOP
00424 !
00425         ENDIF
00426 !
00427 !   CONTRIBUTION OF THE DIAGONAL
00428 !
00429         IF(TYPDIA(1:1).EQ.'Q') THEN
00430           CALL OV ('X=YZ    ', X , Y , DA , C  , NPOIN )
00431         ELSEIF(TYPDIA(1:1).EQ.'I') THEN
00432           CALL OV ('X=Y     ', X , Y , Z  , C  , NPOIN )
00433         ELSEIF(TYPDIA(1:1).EQ.'0') THEN
00434           CALL OV ('X=C     ', X , Y , DA , 0.D0 , NPOIN )
00435         ELSE
00436           IF (LNG.EQ.1) WRITE(LU,2000) TYPDIA
00437           IF (LNG.EQ.2) WRITE(LU,2001) TYPDIA
00438           CALL PLANTE(0)
00439           STOP
00440         ENDIF
00441 !
00442 !-----------------------------------------------------------------------
00443 !
00444       ELSEIF(OP(1:8).EQ.'X=-TAY  ') THEN
00445 !
00446 !   CONTRIBUTION OF EXTRADIAGONAL TERMS:
00447 !
00448         IF(TYPEXT(1:1).EQ.'Q') THEN
00449 !
00450           DO IELEM = 1 , NELEM
00451             W1(IELEM) =   - XA21(IELEM) * Y(IKLE2(IELEM))
00452      &                    - XA31(IELEM) * Y(IKLE3(IELEM))
00453             W2(IELEM) =   - XA12(IELEM) * Y(IKLE1(IELEM))
00454      &                    - XA32(IELEM) * Y(IKLE3(IELEM))
00455             W3(IELEM) =   - XA13(IELEM) * Y(IKLE1(IELEM))
00456      &                    - XA23(IELEM) * Y(IKLE2(IELEM))
00457             W4(IELEM) =   - XA14(IELEM) * Y(IKLE1(IELEM))
00458      &                    - XA24(IELEM) * Y(IKLE2(IELEM))
00459      &                    - XA34(IELEM) * Y(IKLE3(IELEM))
00460             X(NPOIN+IELEM)=0.D0
00461           ENDDO ! IELEM
00462 !
00463         ELSEIF(TYPEXT(1:1).EQ.'0') THEN
00464 !
00465           CALL OV ('X=C     ', W1 , Y , Z , 0.D0 , NELEM )
00466           CALL OV ('X=C     ', W2 , Y , Z , 0.D0 , NELEM )
00467           CALL OV ('X=C     ', W3 , Y , Z , 0.D0 , NELEM )
00468           CALL OV ('X=C     ', W4 , Y , Z , 0.D0 , NELEM )
00469           CALL OV ('X=C     ', X(NPOIN+1) , Y , Z , 0.D0 , NELEM )
00470 !
00471         ELSE
00472 !
00473           IF (LNG.EQ.1) WRITE(LU,1000) TYPEXT
00474           IF (LNG.EQ.2) WRITE(LU,1001) TYPEXT
00475           CALL PLANTE(0)
00476           STOP
00477 !
00478         ENDIF
00479 !
00480 !   CONTRIBUTION OF THE DIAGONAL
00481 !
00482         IF(TYPDIA(1:1).EQ.'Q') THEN
00483           CALL OV ('X=-YZ   ', X , Y , DA , C  , NPOIN )
00484         ELSEIF(TYPDIA(1:1).EQ.'I') THEN
00485           CALL OV ('X=-Y    ', X , Y , Z  , C  , NPOIN )
00486         ELSEIF(TYPDIA(1:1).EQ.'0') THEN
00487           CALL OV ('X=C     ', X , Y , DA , 0.D0 , NPOIN )
00488         ELSE
00489           IF (LNG.EQ.1) WRITE(LU,2000) TYPDIA
00490           IF (LNG.EQ.2) WRITE(LU,2001) TYPDIA
00491           CALL PLANTE(0)
00492           STOP
00493         ENDIF
00494 !
00495 !-----------------------------------------------------------------------
00496 !
00497       ELSEIF(OP(1:8).EQ.'X=X+TAY ') THEN
00498 !
00499 !   CONTRIBUTION OF EXTRADIAGONAL TERMS:
00500 !
00501         IF(TYPEXT(1:1).EQ.'Q') THEN
00502 !
00503           DO IELEM = 1 , NELEM
00504             W1(IELEM) = W1(IELEM) + XA21(IELEM) * Y(IKLE2(IELEM))
00505      &                            + XA31(IELEM) * Y(IKLE3(IELEM))
00506             W2(IELEM) = W2(IELEM) + XA12(IELEM) * Y(IKLE1(IELEM))
00507      &                            + XA32(IELEM) * Y(IKLE3(IELEM))
00508             W3(IELEM) = W3(IELEM) + XA13(IELEM) * Y(IKLE1(IELEM))
00509      &                            + XA23(IELEM) * Y(IKLE2(IELEM))
00510             W4(IELEM) = W4(IELEM) + XA14(IELEM) * Y(IKLE1(IELEM))
00511      &                            + XA24(IELEM) * Y(IKLE2(IELEM))
00512      &                            + XA34(IELEM) * Y(IKLE3(IELEM))
00513           ENDDO ! IELEM
00514 !
00515         ELSEIF(TYPEXT(1:1).NE.'0') THEN
00516 !
00517           IF (LNG.EQ.1) WRITE(LU,1000) TYPEXT
00518           IF (LNG.EQ.2) WRITE(LU,1001) TYPEXT
00519           CALL PLANTE(0)
00520           STOP
00521 !
00522         ENDIF
00523 !
00524 !   CONTRIBUTION OF THE DIAGONAL
00525 !
00526         IF(TYPDIA(1:1).EQ.'Q') THEN
00527           CALL OV ('X=X+YZ  ', X , Y , DA , C , NPOIN )
00528         ELSEIF(TYPDIA(1:1).EQ.'I') THEN
00529           CALL OV ('X=X+Y   ', X , Y , Z  , C  , NPOIN )
00530         ELSEIF(TYPDIA(1:1).NE.'0') THEN
00531           IF (LNG.EQ.1) WRITE(LU,2000) TYPDIA
00532           IF (LNG.EQ.2) WRITE(LU,2001) TYPDIA
00533           CALL PLANTE(0)
00534           STOP
00535         ENDIF
00536 !
00537 !-----------------------------------------------------------------------
00538 !
00539       ELSEIF(OP(1:8).EQ.'X=X-TAY ') THEN
00540 !
00541 !   CONTRIBUTION OF EXTRADIAGONAL TERMS:
00542 !
00543         IF(TYPEXT(1:1).EQ.'Q') THEN
00544 !
00545           DO IELEM = 1 , NELEM
00546             W1(IELEM) = W1(IELEM) - XA21(IELEM) * Y(IKLE2(IELEM))
00547      &                            - XA31(IELEM) * Y(IKLE3(IELEM))
00548             W2(IELEM) = W2(IELEM) - XA12(IELEM) * Y(IKLE1(IELEM))
00549      &                            - XA32(IELEM) * Y(IKLE3(IELEM))
00550             W3(IELEM) = W3(IELEM) - XA13(IELEM) * Y(IKLE1(IELEM))
00551      &                            - XA23(IELEM) * Y(IKLE2(IELEM))
00552             W4(IELEM) = W4(IELEM) - XA14(IELEM) * Y(IKLE1(IELEM))
00553      &                            - XA24(IELEM) * Y(IKLE2(IELEM))
00554      &                            - XA34(IELEM) * Y(IKLE3(IELEM))
00555           ENDDO ! IELEM
00556 !
00557         ELSEIF(TYPEXT(1:1).NE.'0') THEN
00558 !
00559           IF (LNG.EQ.1) WRITE(LU,1000) TYPEXT
00560           IF (LNG.EQ.2) WRITE(LU,1001) TYPEXT
00561           CALL PLANTE(0)
00562           STOP
00563 !
00564         ENDIF
00565 !
00566 !   CONTRIBUTION OF THE DIAGONAL
00567 !
00568         IF(TYPDIA(1:1).EQ.'Q') THEN
00569           CALL OV ('X=X-YZ  ', X , Y , DA , C , NPOIN )
00570         ELSEIF(TYPDIA(1:1).EQ.'I') THEN
00571           CALL OV ('X=X-Y   ', X , Y , Z  , C  , NPOIN )
00572         ELSEIF(TYPDIA(1:1).NE.'0') THEN
00573           IF (LNG.EQ.1) WRITE(LU,2000) TYPDIA
00574           IF (LNG.EQ.2) WRITE(LU,2001) TYPDIA
00575           CALL PLANTE(0)
00576           STOP
00577         ENDIF
00578 !
00579 !-----------------------------------------------------------------------
00580 !
00581       ELSEIF(OP(1:8).EQ.'X=X+CTAY') THEN
00582 !
00583 !   CONTRIBUTION OF EXTRADIAGONAL TERMS:
00584 !
00585         IF(TYPEXT(1:1).EQ.'Q') THEN
00586 !
00587           DO IELEM = 1 , NELEM
00588             W1(IELEM) = W1(IELEM)
00589      &                + C * (    + XA21(IELEM) * Y(IKLE2(IELEM))
00590      &                           + XA31(IELEM) * Y(IKLE3(IELEM)) )
00591             W2(IELEM) = W2(IELEM)
00592      &                + C * (    + XA12(IELEM) * Y(IKLE1(IELEM))
00593      &                           + XA32(IELEM) * Y(IKLE3(IELEM)) )
00594             W3(IELEM) = W3(IELEM)
00595      &                + C * (    + XA13(IELEM) * Y(IKLE1(IELEM))
00596      &                           + XA23(IELEM) * Y(IKLE2(IELEM)) )
00597             W4(IELEM) = W4(IELEM)
00598      &                + C * (    + XA14(IELEM) * Y(IKLE1(IELEM))
00599      &                           + XA24(IELEM) * Y(IKLE2(IELEM))
00600      &                           + XA34(IELEM) * Y(IKLE3(IELEM)) )
00601           ENDDO ! IELEM
00602 !
00603         ELSEIF(TYPEXT(1:1).NE.'0') THEN
00604 !
00605           IF (LNG.EQ.1) WRITE(LU,1000) TYPEXT
00606           IF (LNG.EQ.2) WRITE(LU,1001) TYPEXT
00607           CALL PLANTE(0)
00608           STOP
00609 !
00610         ENDIF
00611 !
00612 !   CONTRIBUTION OF THE DIAGONAL
00613 !
00614         IF(TYPDIA(1:1).EQ.'Q') THEN
00615           CALL OV ('X=X+CYZ ', X , Y , DA , C , NPOIN )
00616         ELSEIF(TYPDIA(1:1).EQ.'I') THEN
00617           CALL OV ('X=X+CY  ', X , Y , Z  , C  , NPOIN )
00618         ELSEIF(TYPDIA(1:1).NE.'0') THEN
00619           IF (LNG.EQ.1) WRITE(LU,2000) TYPDIA
00620           IF (LNG.EQ.2) WRITE(LU,2001) TYPDIA
00621           CALL PLANTE(0)
00622           STOP
00623         ENDIF
00624 !
00625 !-----------------------------------------------------------------------
00626 !
00627       ELSE
00628 !
00629         IF (LNG.EQ.1) WRITE(LU,3000) OP
00630         IF (LNG.EQ.2) WRITE(LU,3001) OP
00631         CALL PLANTE(0)
00632         STOP
00633 !
00634 !-----------------------------------------------------------------------
00635 !
00636       ENDIF
00637 !
00638 !-----------------------------------------------------------------------
00639 !
00640       RETURN
00641 !
00642 1000  FORMAT(1X,'MV0304 (BIEF) : TERMES EXTRADIAG. TYPE INCONNU: ',A1)
00643 1001  FORMAT(1X,'MV0304 (BIEF) : EXTRADIAG. TERMS  UNKNOWN TYPE : ',A1)
00644 2000  FORMAT(1X,'MV0304 (BIEF) : DIAGONALE : TYPE INCONNU: ',A1)
00645 2001  FORMAT(1X,'MV0304 (BIEF) : DIAGONAL : UNKNOWN TYPE : ',A1)
00646 3000  FORMAT(1X,'MV0304 (BIEF) : OPERATION INCONNUE : ',A8)
00647 3001  FORMAT(1X,'MV0304 (BIEF) : UNKNOWN OPERATION : ',A8)
00648 !
00649 !-----------------------------------------------------------------------
00650 !
00651       END

Generated on Fri Aug 31 2013 18:12:58 by S.E.Bourban (HRW) using doxygen 1.7.0