om4121.f

Go to the documentation of this file.
00001 C:\opentelemac\v7p0\sources\utils\bief\om4121.f
00002 !
00092                      SUBROUTINE OM4121
00093 !                    *****************
00094 !
00095      &(OP ,  DM,TYPDIM,XM,TYPEXM,   DN,TYPDIN,XN,TYPEXN,   C,
00096      & NULONE,NELBOR,NBOR,NELMAX,SIZDN,SIZXN,SZMXN)
00097 !
00098 !***********************************************************************
00099 ! BIEF   V6P1                                   21/08/2010
00100 !***********************************************************************
00101 !
00102 !
00103 !
00104 !
00105 !
00106 !
00107 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00108 !| C              |-->| A GIVEN CONSTANT USED IN OPERATION OP
00109 !| DM             |<->| DIAGONAL OF M
00110 !| DN             |-->| DIAGONAL OF N
00111 !| NBOR           |-->| GLOBAL NUMBER OF BOUNDARY POINTS
00112 !| NELBOR         |-->| FOR THE KTH BOUNDARY EDGE, GIVES THE CORRESPONDING
00113 !|                |   | ELEMENT.
00114 !| NELMAX         |-->| MAXIMUM NUMBER OF ELEMENTS
00115 !| NULONE         |-->| GOES WITH ARRAY NELBOR. NELBOR GIVES THE
00116 !|                |   | ADJACENT ELEMENT, NULONE GIVES THE LOCAL
00117 !|                |   | NUMBER OF THE FIRST NODE OF THE BOUNDARY EDGE
00118 !|                |   | I.E. 1, 2 OR 3 FOR TRIANGLES.
00119 !| OP             |-->| OPERATION TO BE DONE (SEE ABOVE)
00120 !| SIZDN          |-->| SIZE OF DIAGONAL DN
00121 !| SIZXN          |-->| SIZE OF OFF-DIAGONAL TERMS XN
00122 !| SZMDN          |-->| MAXIMUM SIZE OF DIAGONAL DN
00123 !| SZMXN          |-->| MAXIMUM SIZE OF OFF-DIAGONAL TERMS XN
00124 !| TYPDIM         |<->| TYPE OF DIAGONAL OF M:
00125 !|                |   | TYPDIM = 'Q' : ANY VALUE
00126 !|                |   | TYPDIM = 'I' : IDENTITY
00127 !|                |   | TYPDIM = '0' : ZERO
00128 !| TYPDIN         |<->| TYPE OF DIAGONAL OF N:
00129 !|                |   | TYPDIN = 'Q' : ANY VALUE
00130 !|                |   | TYPDIN = 'I' : IDENTITY
00131 !|                |   | TYPDIN = '0' : ZERO
00132 !| TYPEXM         |-->| TYPE OF OFF-DIAGONAL TERMS OF M:
00133 !|                |   | TYPEXM = 'Q' : ANY VALUE
00134 !|                |   | TYPEXM = 'S' : SYMMETRIC
00135 !|                |   | TYPEXM = '0' : ZERO
00136 !| TYPEXN         |-->| TYPE OF OFF-DIAGONAL TERMS OF N:
00137 !|                |   | TYPEXN = 'Q' : ANY VALUE
00138 !|                |   | TYPEXN = 'S' : SYMMETRIC
00139 !|                |   | TYPEXN = '0' : ZERO
00140 !| XM             |-->| OFF-DIAGONAL TERMS OF M
00141 !| XN             |-->| OFF-DIAGONAL TERMS OF N
00142 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00143 !
00144       USE BIEF, EX_OM4121 => OM4121
00145 !
00146       IMPLICIT NONE
00147       INTEGER LNG,LU
00148       COMMON/INFO/LNG,LU
00149 !
00150 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00151 !
00152       INTEGER, INTENT(IN)             :: NELMAX,SIZDN,SIZXN,SZMXN
00153       CHARACTER(LEN=8), INTENT(IN)    :: OP
00154       INTEGER, INTENT(IN)             :: NULONE(*),NELBOR(*),NBOR(*)
00155       DOUBLE PRECISION, INTENT(IN)    :: DN(*),XN(SZMXN,*)
00156       DOUBLE PRECISION, INTENT(INOUT) :: DM(*),XM(NELMAX,*)
00157       CHARACTER(LEN=1), INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
00158       DOUBLE PRECISION, INTENT(IN)    :: C
00159 !
00160 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00161 !
00162       INTEGER K,IEL
00163 !
00164       DOUBLE PRECISION Z(1)
00165 !
00166       INTEGER CORNSY(3,12),CORSYM(3,6)
00167 !
00168 !-----------------------------------------------------------------------
00169 !
00170       DATA CORNSY/ 1, 6,17, 4, 9,10, 3, 8,12, 8,12, 3, 7,11, 5,28,30,14,
00171      &            16,21, 2,19,24,25,18,23,27,23,27,18,22,26,20,13,15,29/
00172       DATA CORSYM/ 1, 6, 2, 4, 9,10, 3, 8,12, 8,12, 3, 7,11, 5,13,15,14/
00173 !
00174 !***********************************************************************
00175 !
00176       IF(OP(1:8).EQ.'M=M+N   ') THEN
00177 !
00178         IF(TYPDIM.EQ.'Q'.AND.TYPDIN.EQ.'Q') THEN
00179           CALL OVDB( 'X=X+Y   ' , DM , DN , Z , C , NBOR , SIZDN )
00180         ELSE
00181           IF (LNG.EQ.1) WRITE(LU,198) TYPDIM(1:1),OP(1:8),TYPDIN(1:1)
00182           IF (LNG.EQ.2) WRITE(LU,199) TYPDIM(1:1),OP(1:8),TYPDIN(1:1)
00183 198       FORMAT(1X,'OM4121 (BIEF) : TYPDIM = ',A1,' NON PROGRAMME',
00184      &      /,1X,'POUR L''OPERATION : ',A8,' AVEC TYPDIN = ',A1)
00185 199       FORMAT(1X,'OM4121 (BIEF) : TYPDIM = ',A1,' NOT IMPLEMENTED',
00186      &      /,1X,'FOR THE OPERATION : ',A8,' WITH TYPDIN = ',A1)
00187           CALL PLANTE(1)
00188           STOP
00189         ENDIF
00190 !
00191         IF(TYPEXM(1:1).EQ.'Q'.AND.TYPEXN(1:1).EQ.'Q') THEN
00192 !
00193 !          CASE WHERE BOTH MATRICES ARE NONSYMMETRICAL
00194 !
00195            IF(NCSIZE.GT.1) THEN
00196            DO K = 1 , SIZXN
00197              IEL = NELBOR(K)
00198              IF(IEL.GT.0) THEN
00199              XM( IEL , CORNSY(NULONE(K), 1) ) =
00200      &       XM( IEL , CORNSY(NULONE(K), 1) ) + XN(K, 1)
00201              XM( IEL , CORNSY(NULONE(K), 2) ) =
00202      &       XM( IEL , CORNSY(NULONE(K), 2) ) + XN(K, 2)
00203              XM( IEL , CORNSY(NULONE(K), 3) ) =
00204      &       XM( IEL , CORNSY(NULONE(K), 3) ) + XN(K, 3)
00205              XM( IEL , CORNSY(NULONE(K), 4) ) =
00206      &       XM( IEL , CORNSY(NULONE(K), 4) ) + XN(K, 4)
00207              XM( IEL , CORNSY(NULONE(K), 5) ) =
00208      &       XM( IEL , CORNSY(NULONE(K), 5) ) + XN(K, 5)
00209              XM( IEL , CORNSY(NULONE(K), 6) ) =
00210      &       XM( IEL , CORNSY(NULONE(K), 6) ) + XN(K, 6)
00211              XM( IEL , CORNSY(NULONE(K), 7) ) =
00212      &       XM( IEL , CORNSY(NULONE(K), 7) ) + XN(K, 7)
00213              XM( IEL , CORNSY(NULONE(K), 8) ) =
00214      &       XM( IEL , CORNSY(NULONE(K), 8) ) + XN(K, 8)
00215              XM( IEL , CORNSY(NULONE(K), 9) ) =
00216      &       XM( IEL , CORNSY(NULONE(K), 9) ) + XN(K, 9)
00217              XM( IEL , CORNSY(NULONE(K),10) ) =
00218      &       XM( IEL , CORNSY(NULONE(K),10) ) + XN(K,10)
00219              XM( IEL , CORNSY(NULONE(K),11) ) =
00220      &       XM( IEL , CORNSY(NULONE(K),11) ) + XN(K,11)
00221              XM( IEL , CORNSY(NULONE(K),12) ) =
00222      &       XM( IEL , CORNSY(NULONE(K),12) ) + XN(K,12)
00223              ENDIF
00224            ENDDO
00225            ELSE
00226            DO K = 1 , SIZXN
00227              IEL = NELBOR(K)
00228              XM( IEL , CORNSY(NULONE(K), 1) ) =
00229      &       XM( IEL , CORNSY(NULONE(K), 1) ) + XN(K, 1)
00230              XM( IEL , CORNSY(NULONE(K), 2) ) =
00231      &       XM( IEL , CORNSY(NULONE(K), 2) ) + XN(K, 2)
00232              XM( IEL , CORNSY(NULONE(K), 3) ) =
00233      &       XM( IEL , CORNSY(NULONE(K), 3) ) + XN(K, 3)
00234              XM( IEL , CORNSY(NULONE(K), 4) ) =
00235      &       XM( IEL , CORNSY(NULONE(K), 4) ) + XN(K, 4)
00236              XM( IEL , CORNSY(NULONE(K), 5) ) =
00237      &       XM( IEL , CORNSY(NULONE(K), 5) ) + XN(K, 5)
00238              XM( IEL , CORNSY(NULONE(K), 6) ) =
00239      &       XM( IEL , CORNSY(NULONE(K), 6) ) + XN(K, 6)
00240              XM( IEL , CORNSY(NULONE(K), 7) ) =
00241      &       XM( IEL , CORNSY(NULONE(K), 7) ) + XN(K, 7)
00242              XM( IEL , CORNSY(NULONE(K), 8) ) =
00243      &       XM( IEL , CORNSY(NULONE(K), 8) ) + XN(K, 8)
00244              XM( IEL , CORNSY(NULONE(K), 9) ) =
00245      &       XM( IEL , CORNSY(NULONE(K), 9) ) + XN(K, 9)
00246              XM( IEL , CORNSY(NULONE(K),10) ) =
00247      &       XM( IEL , CORNSY(NULONE(K),10) ) + XN(K,10)
00248              XM( IEL , CORNSY(NULONE(K),11) ) =
00249      &       XM( IEL , CORNSY(NULONE(K),11) ) + XN(K,11)
00250              XM( IEL , CORNSY(NULONE(K),12) ) =
00251      &       XM( IEL , CORNSY(NULONE(K),12) ) + XN(K,12)
00252            ENDDO
00253            ENDIF
00254 !
00255         ELSEIF(TYPEXM(1:1).EQ.'Q'.AND.TYPEXN(1:1).EQ.'S') THEN
00256 !
00257 !          CASE WHERE M CAN BE ANYTHING AND N IS SYMMETRICAL
00258 !
00259            IF(NCSIZE.GT.1) THEN
00260            DO K = 1 , SIZXN
00261              IEL = NELBOR(K)
00262              IF(IEL.GT.0) THEN
00263              XM( IEL , CORNSY(NULONE(K), 1) ) =
00264      &       XM( IEL , CORNSY(NULONE(K), 1) ) + XN(K, 1)
00265              XM( IEL , CORNSY(NULONE(K), 2) ) =
00266      &       XM( IEL , CORNSY(NULONE(K), 2) ) + XN(K, 2)
00267              XM( IEL , CORNSY(NULONE(K), 3) ) =
00268      &       XM( IEL , CORNSY(NULONE(K), 3) ) + XN(K, 3)
00269              XM( IEL , CORNSY(NULONE(K), 4) ) =
00270      &       XM( IEL , CORNSY(NULONE(K), 4) ) + XN(K, 4)
00271              XM( IEL , CORNSY(NULONE(K), 5) ) =
00272      &       XM( IEL , CORNSY(NULONE(K), 5) ) + XN(K, 5)
00273              XM( IEL , CORNSY(NULONE(K), 6) ) =
00274      &       XM( IEL , CORNSY(NULONE(K), 6) ) + XN(K, 6)
00275              XM( IEL , CORNSY(NULONE(K), 7) ) =
00276      &       XM( IEL , CORNSY(NULONE(K), 7) ) + XN(K, 1)
00277              XM( IEL , CORNSY(NULONE(K), 8) ) =
00278      &       XM( IEL , CORNSY(NULONE(K), 8) ) + XN(K, 2)
00279              XM( IEL , CORNSY(NULONE(K), 9) ) =
00280      &       XM( IEL , CORNSY(NULONE(K), 9) ) + XN(K, 3)
00281              XM( IEL , CORNSY(NULONE(K),10) ) =
00282      &       XM( IEL , CORNSY(NULONE(K),10) ) + XN(K, 4)
00283              XM( IEL , CORNSY(NULONE(K),11) ) =
00284      &       XM( IEL , CORNSY(NULONE(K),11) ) + XN(K, 5)
00285              XM( IEL , CORNSY(NULONE(K),12) ) =
00286      &       XM( IEL , CORNSY(NULONE(K),12) ) + XN(K, 6)
00287              ENDIF
00288            ENDDO
00289            ELSE
00290            DO K = 1 , SIZXN
00291              IEL = NELBOR(K)
00292              XM( IEL , CORNSY(NULONE(K), 1) ) =
00293      &       XM( IEL , CORNSY(NULONE(K), 1) ) + XN(K, 1)
00294              XM( IEL , CORNSY(NULONE(K), 2) ) =
00295      &       XM( IEL , CORNSY(NULONE(K), 2) ) + XN(K, 2)
00296              XM( IEL , CORNSY(NULONE(K), 3) ) =
00297      &       XM( IEL , CORNSY(NULONE(K), 3) ) + XN(K, 3)
00298              XM( IEL , CORNSY(NULONE(K), 4) ) =
00299      &       XM( IEL , CORNSY(NULONE(K), 4) ) + XN(K, 4)
00300              XM( IEL , CORNSY(NULONE(K), 5) ) =
00301      &       XM( IEL , CORNSY(NULONE(K), 5) ) + XN(K, 5)
00302              XM( IEL , CORNSY(NULONE(K), 6) ) =
00303      &       XM( IEL , CORNSY(NULONE(K), 6) ) + XN(K, 6)
00304              XM( IEL , CORNSY(NULONE(K), 7) ) =
00305      &       XM( IEL , CORNSY(NULONE(K), 7) ) + XN(K, 1)
00306              XM( IEL , CORNSY(NULONE(K), 8) ) =
00307      &       XM( IEL , CORNSY(NULONE(K), 8) ) + XN(K, 2)
00308              XM( IEL , CORNSY(NULONE(K), 9) ) =
00309      &       XM( IEL , CORNSY(NULONE(K), 9) ) + XN(K, 3)
00310              XM( IEL , CORNSY(NULONE(K),10) ) =
00311      &       XM( IEL , CORNSY(NULONE(K),10) ) + XN(K, 4)
00312              XM( IEL , CORNSY(NULONE(K),11) ) =
00313      &       XM( IEL , CORNSY(NULONE(K),11) ) + XN(K, 5)
00314              XM( IEL , CORNSY(NULONE(K),12) ) =
00315      &       XM( IEL , CORNSY(NULONE(K),12) ) + XN(K, 6)
00316            ENDDO
00317            ENDIF
00318 !
00319         ELSEIF(TYPEXM(1:1).EQ.'S'.AND.TYPEXN(1:1).EQ.'S') THEN
00320 !
00321 !          CASE WHERE BOTH MATRICES ARE SYMMETRICAL
00322 !
00323            IF(NCSIZE.GT.1) THEN
00324            DO K = 1 , SIZXN
00325              IEL = NELBOR(K)
00326              IF(IEL.GT.0) THEN
00327              XM( IEL , CORSYM(NULONE(K), 1) ) =
00328      &       XM( IEL , CORSYM(NULONE(K), 1) ) + XN(K, 1)
00329              XM( IEL , CORSYM(NULONE(K), 2) ) =
00330      &       XM( IEL , CORSYM(NULONE(K), 2) ) + XN(K, 2)
00331              XM( IEL , CORSYM(NULONE(K), 3) ) =
00332      &       XM( IEL , CORSYM(NULONE(K), 3) ) + XN(K, 3)
00333              XM( IEL , CORSYM(NULONE(K), 4) ) =
00334      &       XM( IEL , CORSYM(NULONE(K), 4) ) + XN(K, 4)
00335              XM( IEL , CORSYM(NULONE(K), 5) ) =
00336      &       XM( IEL , CORSYM(NULONE(K), 5) ) + XN(K, 5)
00337              XM( IEL , CORSYM(NULONE(K), 6) ) =
00338      &       XM( IEL , CORSYM(NULONE(K), 6) ) + XN(K, 6)
00339              ENDIF
00340            ENDDO
00341            ELSE
00342            DO K = 1 , SIZXN
00343              IEL = NELBOR(K)
00344              XM( IEL , CORSYM(NULONE(K), 1) ) =
00345      &       XM( IEL , CORSYM(NULONE(K), 1) ) + XN(K, 1)
00346              XM( IEL , CORSYM(NULONE(K), 2) ) =
00347      &       XM( IEL , CORSYM(NULONE(K), 2) ) + XN(K, 2)
00348              XM( IEL , CORSYM(NULONE(K), 3) ) =
00349      &       XM( IEL , CORSYM(NULONE(K), 3) ) + XN(K, 3)
00350              XM( IEL , CORSYM(NULONE(K), 4) ) =
00351      &       XM( IEL , CORSYM(NULONE(K), 4) ) + XN(K, 4)
00352              XM( IEL , CORSYM(NULONE(K), 5) ) =
00353      &       XM( IEL , CORSYM(NULONE(K), 5) ) + XN(K, 5)
00354              XM( IEL , CORSYM(NULONE(K), 6) ) =
00355      &       XM( IEL , CORSYM(NULONE(K), 6) ) + XN(K, 6)
00356            ENDDO
00357            ENDIF
00358 !
00359         ELSE
00360            IF (LNG.EQ.1) WRITE(LU,98) TYPEXM(1:1),OP(1:8),TYPEXN(1:1)
00361            IF (LNG.EQ.2) WRITE(LU,99) TYPEXM(1:1),OP(1:8),TYPEXN(1:1)
00362 98         FORMAT(1X,'OM4121 (BIEF) : TYPEXM = ',A1,' NE CONVIENT PAS',
00363      &       /,1X,'POUR L''OPERATION : ',A8,' AVEC TYPEXN = ',A1)
00364 99         FORMAT(1X,'OM4121 (BIEF) : TYPEXM = ',A1,' DOES NOT GO',
00365      &       /,1X,'FOR THE OPERATION : ',A8,' WITH TYPEXN = ',A1)
00366            CALL PLANTE(1)
00367            STOP
00368         ENDIF
00369 !
00370 !-----------------------------------------------------------------------
00371 !
00372       ELSEIF(OP(1:8).EQ.'M=M+TN  ') THEN
00373 !
00374         CALL OVDB( 'X=X+Y   ' , DM , DN , Z , C , NBOR , SIZXN )
00375 !
00376         IF(TYPEXM(1:1).EQ.'Q'.AND.TYPEXN(1:1).EQ.'Q') THEN
00377 !
00378 !          CASE WHERE BOTH MATRICES ARE NONSYMMETRICAL
00379 !
00380            IF(NCSIZE.GT.1) THEN
00381            DO K = 1 , SIZXN
00382              IEL = NELBOR(K)
00383              IF(IEL.GT.0) THEN
00384              XM( IEL , CORNSY(NULONE(K), 1) ) =
00385      &       XM( IEL , CORNSY(NULONE(K), 1) ) + XN(K, 7)
00386              XM( IEL , CORNSY(NULONE(K), 2) ) =
00387      &       XM( IEL , CORNSY(NULONE(K), 2) ) + XN(K, 8)
00388              XM( IEL , CORNSY(NULONE(K), 3) ) =
00389      &       XM( IEL , CORNSY(NULONE(K), 3) ) + XN(K, 9)
00390              XM( IEL , CORNSY(NULONE(K), 4) ) =
00391      &       XM( IEL , CORNSY(NULONE(K), 4) ) + XN(K,10)
00392              XM( IEL , CORNSY(NULONE(K), 5) ) =
00393      &       XM( IEL , CORNSY(NULONE(K), 5) ) + XN(K,11)
00394              XM( IEL , CORNSY(NULONE(K), 6) ) =
00395      &       XM( IEL , CORNSY(NULONE(K), 6) ) + XN(K,12)
00396              XM( IEL , CORNSY(NULONE(K), 7) ) =
00397      &       XM( IEL , CORNSY(NULONE(K), 7) ) + XN(K, 1)
00398              XM( IEL , CORNSY(NULONE(K), 8) ) =
00399      &       XM( IEL , CORNSY(NULONE(K), 8) ) + XN(K, 2)
00400              XM( IEL , CORNSY(NULONE(K), 9) ) =
00401      &       XM( IEL , CORNSY(NULONE(K), 9) ) + XN(K, 3)
00402              XM( IEL , CORNSY(NULONE(K),10) ) =
00403      &       XM( IEL , CORNSY(NULONE(K),10) ) + XN(K, 4)
00404              XM( IEL , CORNSY(NULONE(K),11) ) =
00405      &       XM( IEL , CORNSY(NULONE(K),11) ) + XN(K, 5)
00406              XM( IEL , CORNSY(NULONE(K),12) ) =
00407      &       XM( IEL , CORNSY(NULONE(K),12) ) + XN(K, 6)
00408              ENDIF
00409            ENDDO
00410            ELSE
00411            DO K = 1 , SIZXN
00412              IEL = NELBOR(K)
00413              XM( IEL , CORNSY(NULONE(K), 1) ) =
00414      &       XM( IEL , CORNSY(NULONE(K), 1) ) + XN(K, 7)
00415              XM( IEL , CORNSY(NULONE(K), 2) ) =
00416      &       XM( IEL , CORNSY(NULONE(K), 2) ) + XN(K, 8)
00417              XM( IEL , CORNSY(NULONE(K), 3) ) =
00418      &       XM( IEL , CORNSY(NULONE(K), 3) ) + XN(K, 9)
00419              XM( IEL , CORNSY(NULONE(K), 4) ) =
00420      &       XM( IEL , CORNSY(NULONE(K), 4) ) + XN(K,10)
00421              XM( IEL , CORNSY(NULONE(K), 5) ) =
00422      &       XM( IEL , CORNSY(NULONE(K), 5) ) + XN(K,11)
00423              XM( IEL , CORNSY(NULONE(K), 6) ) =
00424      &       XM( IEL , CORNSY(NULONE(K), 6) ) + XN(K,12)
00425              XM( IEL , CORNSY(NULONE(K), 7) ) =
00426      &       XM( IEL , CORNSY(NULONE(K), 7) ) + XN(K, 1)
00427              XM( IEL , CORNSY(NULONE(K), 8) ) =
00428      &       XM( IEL , CORNSY(NULONE(K), 8) ) + XN(K, 2)
00429              XM( IEL , CORNSY(NULONE(K), 9) ) =
00430      &       XM( IEL , CORNSY(NULONE(K), 9) ) + XN(K, 3)
00431              XM( IEL , CORNSY(NULONE(K),10) ) =
00432      &       XM( IEL , CORNSY(NULONE(K),10) ) + XN(K, 4)
00433              XM( IEL , CORNSY(NULONE(K),11) ) =
00434      &       XM( IEL , CORNSY(NULONE(K),11) ) + XN(K, 5)
00435              XM( IEL , CORNSY(NULONE(K),12) ) =
00436      &       XM( IEL , CORNSY(NULONE(K),12) ) + XN(K, 6)
00437            ENDDO
00438            ENDIF
00439 !
00440         ELSEIF(TYPEXM(1:1).EQ.'Q'.AND.TYPEXN(1:1).EQ.'S') THEN
00441 !
00442 !          CASE WHERE M CAN BE ANYTHING AND N IS SYMMETRICAL
00443 !
00444            IF(NCSIZE.GT.1) THEN
00445            DO K = 1 , SIZXN
00446              IEL = NELBOR(K)
00447              IF(IEL.GT.0) THEN
00448              XM( IEL , CORNSY(NULONE(K), 1) ) =
00449      &       XM( IEL , CORNSY(NULONE(K), 1) ) + XN(K, 1)
00450              XM( IEL , CORNSY(NULONE(K), 2) ) =
00451      &       XM( IEL , CORNSY(NULONE(K), 2) ) + XN(K, 2)
00452              XM( IEL , CORNSY(NULONE(K), 3) ) =
00453      &       XM( IEL , CORNSY(NULONE(K), 3) ) + XN(K, 3)
00454              XM( IEL , CORNSY(NULONE(K), 4) ) =
00455      &       XM( IEL , CORNSY(NULONE(K), 4) ) + XN(K, 4)
00456              XM( IEL , CORNSY(NULONE(K), 5) ) =
00457      &       XM( IEL , CORNSY(NULONE(K), 5) ) + XN(K, 5)
00458              XM( IEL , CORNSY(NULONE(K), 6) ) =
00459      &       XM( IEL , CORNSY(NULONE(K), 6) ) + XN(K, 6)
00460              XM( IEL , CORNSY(NULONE(K), 7) ) =
00461      &       XM( IEL , CORNSY(NULONE(K), 7) ) + XN(K, 1)
00462              XM( IEL , CORNSY(NULONE(K), 8) ) =
00463      &       XM( IEL , CORNSY(NULONE(K), 8) ) + XN(K, 2)
00464              XM( IEL , CORNSY(NULONE(K), 9) ) =
00465      &       XM( IEL , CORNSY(NULONE(K), 9) ) + XN(K, 3)
00466              XM( IEL , CORNSY(NULONE(K),10) ) =
00467      &       XM( IEL , CORNSY(NULONE(K),10) ) + XN(K, 4)
00468              XM( IEL , CORNSY(NULONE(K),11) ) =
00469      &       XM( IEL , CORNSY(NULONE(K),11) ) + XN(K, 5)
00470              XM( IEL , CORNSY(NULONE(K),12) ) =
00471      &       XM( IEL , CORNSY(NULONE(K),12) ) + XN(K, 6)
00472              ENDIF
00473            ENDDO
00474            ELSE
00475            DO K = 1 , SIZXN
00476              IEL = NELBOR(K)
00477              XM( IEL , CORNSY(NULONE(K), 1) ) =
00478      &       XM( IEL , CORNSY(NULONE(K), 1) ) + XN(K, 1)
00479              XM( IEL , CORNSY(NULONE(K), 2) ) =
00480      &       XM( IEL , CORNSY(NULONE(K), 2) ) + XN(K, 2)
00481              XM( IEL , CORNSY(NULONE(K), 3) ) =
00482      &       XM( IEL , CORNSY(NULONE(K), 3) ) + XN(K, 3)
00483              XM( IEL , CORNSY(NULONE(K), 4) ) =
00484      &       XM( IEL , CORNSY(NULONE(K), 4) ) + XN(K, 4)
00485              XM( IEL , CORNSY(NULONE(K), 5) ) =
00486      &       XM( IEL , CORNSY(NULONE(K), 5) ) + XN(K, 5)
00487              XM( IEL , CORNSY(NULONE(K), 6) ) =
00488      &       XM( IEL , CORNSY(NULONE(K), 6) ) + XN(K, 6)
00489              XM( IEL , CORNSY(NULONE(K), 7) ) =
00490      &       XM( IEL , CORNSY(NULONE(K), 7) ) + XN(K, 1)
00491              XM( IEL , CORNSY(NULONE(K), 8) ) =
00492      &       XM( IEL , CORNSY(NULONE(K), 8) ) + XN(K, 2)
00493              XM( IEL , CORNSY(NULONE(K), 9) ) =
00494      &       XM( IEL , CORNSY(NULONE(K), 9) ) + XN(K, 3)
00495              XM( IEL , CORNSY(NULONE(K),10) ) =
00496      &       XM( IEL , CORNSY(NULONE(K),10) ) + XN(K, 4)
00497              XM( IEL , CORNSY(NULONE(K),11) ) =
00498      &       XM( IEL , CORNSY(NULONE(K),11) ) + XN(K, 5)
00499              XM( IEL , CORNSY(NULONE(K),12) ) =
00500      &       XM( IEL , CORNSY(NULONE(K),12) ) + XN(K, 6)
00501            ENDDO
00502            ENDIF
00503 !
00504         ELSEIF(TYPEXM(1:1).EQ.'S'.AND.TYPEXN(1:1).EQ.'S') THEN
00505 !
00506 !          CASE WHERE BOTH MATRICES ARE SYMMETRICAL
00507 !
00508            IF(NCSIZE.GT.1) THEN
00509            DO K = 1 , SIZXN
00510              IEL = NELBOR(K)
00511              IF(IEL.GT.0) THEN
00512              XM( IEL , CORSYM(NULONE(K), 1) ) =
00513      &       XM( IEL , CORSYM(NULONE(K), 1) ) + XN(K, 1)
00514              XM( IEL , CORSYM(NULONE(K), 2) ) =
00515      &       XM( IEL , CORSYM(NULONE(K), 2) ) + XN(K, 2)
00516              XM( IEL , CORSYM(NULONE(K), 3) ) =
00517      &       XM( IEL , CORSYM(NULONE(K), 3) ) + XN(K, 3)
00518              XM( IEL , CORSYM(NULONE(K), 4) ) =
00519      &       XM( IEL , CORSYM(NULONE(K), 4) ) + XN(K, 4)
00520              XM( IEL , CORSYM(NULONE(K), 5) ) =
00521      &       XM( IEL , CORSYM(NULONE(K), 5) ) + XN(K, 5)
00522              XM( IEL , CORSYM(NULONE(K), 6) ) =
00523      &       XM( IEL , CORSYM(NULONE(K), 6) ) + XN(K, 6)
00524              ENDIF
00525            ENDDO
00526            ELSE
00527            DO K = 1 , SIZXN
00528              IEL = NELBOR(K)
00529              XM( IEL , CORSYM(NULONE(K), 1) ) =
00530      &       XM( IEL , CORSYM(NULONE(K), 1) ) + XN(K, 1)
00531              XM( IEL , CORSYM(NULONE(K), 2) ) =
00532      &       XM( IEL , CORSYM(NULONE(K), 2) ) + XN(K, 2)
00533              XM( IEL , CORSYM(NULONE(K), 3) ) =
00534      &       XM( IEL , CORSYM(NULONE(K), 3) ) + XN(K, 3)
00535              XM( IEL , CORSYM(NULONE(K), 4) ) =
00536      &       XM( IEL , CORSYM(NULONE(K), 4) ) + XN(K, 4)
00537              XM( IEL , CORSYM(NULONE(K), 5) ) =
00538      &       XM( IEL , CORSYM(NULONE(K), 5) ) + XN(K, 5)
00539              XM( IEL , CORSYM(NULONE(K), 6) ) =
00540      &       XM( IEL , CORSYM(NULONE(K), 6) ) + XN(K, 6)
00541            ENDDO
00542            ENDIF
00543 !
00544         ELSE
00545            IF (LNG.EQ.1) WRITE(LU,98) TYPEXM(1:1),OP(1:8),TYPEXN(1:1)
00546            IF (LNG.EQ.2) WRITE(LU,99) TYPEXM(1:1),OP(1:8),TYPEXN(1:1)
00547            CALL PLANTE(1)
00548            STOP
00549         ENDIF
00550 !
00551 !-----------------------------------------------------------------------
00552 !
00553       ELSE
00554 !
00555         IF (LNG.EQ.1) WRITE(LU,70) OP
00556         IF (LNG.EQ.2) WRITE(LU,71) OP
00557 70      FORMAT(1X,'OM4121 (BIEF) : OPERATION INCONNUE : ',A8)
00558 71      FORMAT(1X,'OM4121 (BIEF) : UNKNOWN OPERATION : ',A8)
00559         CALL PLANTE(1)
00560         STOP
00561 !
00562       ENDIF
00563 !
00564 !-----------------------------------------------------------------------
00565 !
00566       RETURN
00567       END

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