as3_1111_q.f

Go to the documentation of this file.
00001 C:\opentelemac\v7p0\sources\utils\bief\as3_1111_q.f
00002 !
00062                      SUBROUTINE AS3_1111_Q
00063 !                    *********************
00064 !
00065      &(XM,NSEG1,XMT,DIM1XMT,DIM2XMT,NELMAX,NELEM,STOXMT,
00066      & ELTSEG1,ELTSEG2,ELTSEG3,ORISEG1,ORISEG2,ORISEG3)
00067 !
00068 !***********************************************************************
00069 ! BIEF   V6P1                                   21/08/2010
00070 !***********************************************************************
00071 !
00072 !
00073 !
00074 !
00075 !
00076 !
00077 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00078 !| ELTSEG1        |-->| FIRST SEGMENT OF A TRIANGLE
00079 !| ELTSEG2        |-->| SECOND SEGMENT OF A TRIANGLE
00080 !| ELTSEG3        |-->| THIRD SEGMENT OF A TRIANGLE
00081 !| NELEM          |-->| NUMBER OF ELEMENTS IN THE MESH
00082 !| NELMAX         |-->| FIRST DIMENSION OF IKLE AND W.
00083 !| NSEG1          |-->| NUMBER OF SEGMENTS (HERE JOINING LINEAR POINTS)
00084 !| ORISEG1        |-->| ORIENTATION OF SEGMENT 1 OF TRIANGLE
00085 !| ORISEG2        |-->| ORIENTATION OF SEGMENT 2 OF TRIANGLE
00086 !| ORISEG3        |-->| ORIENTATION OF SEGMENT 3 OF TRIANGLE
00087 !| XM             |<--| ASSEMBLED OFF-DIAGONAL TERMS XA12,23,31
00088 !| XMT            |-->| ELEMENT BY ELEMENT STORAGE OF MATRIX
00089 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00090 !
00091       IMPLICIT NONE
00092       INTEGER LNG,LU
00093       COMMON/INFO/LNG,LU
00094 !
00095 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00096 !
00097       INTEGER         , INTENT(IN)    :: NELMAX,NELEM,NSEG1
00098       INTEGER         , INTENT(IN)    :: DIM1XMT,DIM2XMT,STOXMT
00099       INTEGER         , INTENT(IN)    :: ELTSEG1(NELMAX)
00100       INTEGER         , INTENT(IN)    :: ELTSEG2(NELMAX)
00101       INTEGER         , INTENT(IN)    :: ELTSEG3(NELMAX)
00102       INTEGER         , INTENT(IN)    :: ORISEG1(NELMAX)
00103       INTEGER         , INTENT(IN)    :: ORISEG2(NELMAX)
00104       INTEGER         , INTENT(IN)    :: ORISEG3(NELMAX)
00105       DOUBLE PRECISION, INTENT(INOUT) :: XMT(DIM1XMT,DIM2XMT)
00106       DOUBLE PRECISION, INTENT(INOUT) :: XM(NSEG1,2)
00107 !
00108 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00109 !
00110       INTEGER ISEG,IELEM
00111 !
00112 !-----------------------------------------------------------------------
00113 !
00114 !  INITIALISES
00115 !
00116       DO ISEG = 1 , NSEG1
00117         XM(ISEG,1) = 0.D0
00118         XM(ISEG,2) = 0.D0
00119       ENDDO
00120 !
00121 !  ASSEMBLES
00122 !
00123       IF(STOXMT.EQ.1) THEN
00124 !
00125       DO IELEM = 1,NELEM
00126 !         TERM 12
00127           XM(ELTSEG1(IELEM),  ORISEG1(IELEM))
00128      &  = XM(ELTSEG1(IELEM),  ORISEG1(IELEM)) + XMT(IELEM,1)
00129 !         TERM 23
00130           XM(ELTSEG2(IELEM),  ORISEG2(IELEM))
00131      &  = XM(ELTSEG2(IELEM),  ORISEG2(IELEM)) + XMT(IELEM,3)
00132 !         TERM 31
00133           XM(ELTSEG3(IELEM),  ORISEG3(IELEM))
00134      &  = XM(ELTSEG3(IELEM),  ORISEG3(IELEM)) + XMT(IELEM,5)
00135 !         TERM 21
00136           XM(ELTSEG1(IELEM),3-ORISEG1(IELEM))
00137      &  = XM(ELTSEG1(IELEM),3-ORISEG1(IELEM)) + XMT(IELEM,4)
00138 !         TERM 32
00139           XM(ELTSEG2(IELEM),3-ORISEG2(IELEM))
00140      &  = XM(ELTSEG2(IELEM),3-ORISEG2(IELEM)) + XMT(IELEM,6)
00141 !         TERM 13
00142           XM(ELTSEG3(IELEM),3-ORISEG3(IELEM))
00143      &  = XM(ELTSEG3(IELEM),3-ORISEG3(IELEM)) + XMT(IELEM,2)
00144       ENDDO
00145 !
00146 !-----------------------------------------------------------------------
00147 !
00148       ELSEIF(STOXMT.EQ.2) THEN
00149 !
00150 !     ASSEMBLES
00151 !
00152       DO IELEM = 1,NELEM
00153 !         TERM 12
00154           XM(ELTSEG1(IELEM),  ORISEG1(IELEM))
00155      &  = XM(ELTSEG1(IELEM),  ORISEG1(IELEM)) + XMT(1,IELEM)
00156 !         TERM 23
00157           XM(ELTSEG2(IELEM),  ORISEG2(IELEM))
00158      &  = XM(ELTSEG2(IELEM),  ORISEG2(IELEM)) + XMT(3,IELEM)
00159 !         TERM 31
00160           XM(ELTSEG3(IELEM),  ORISEG3(IELEM))
00161      &  = XM(ELTSEG3(IELEM),  ORISEG3(IELEM)) + XMT(5,IELEM)
00162 !         TERM 21
00163           XM(ELTSEG1(IELEM),3-ORISEG1(IELEM))
00164      &  = XM(ELTSEG1(IELEM),3-ORISEG1(IELEM)) + XMT(4,IELEM)
00165 !         TERM 32
00166           XM(ELTSEG2(IELEM),3-ORISEG2(IELEM))
00167      &  = XM(ELTSEG2(IELEM),3-ORISEG2(IELEM)) + XMT(6,IELEM)
00168 !         TERM 13
00169           XM(ELTSEG3(IELEM),3-ORISEG3(IELEM))
00170      &  = XM(ELTSEG3(IELEM),3-ORISEG3(IELEM)) + XMT(2,IELEM)
00171 !
00172       ENDDO
00173 !
00174 !-----------------------------------------------------------------------
00175 !
00176       ELSE
00177         IF(LNG.EQ.1) THEN
00178           WRITE(LU,*) 'AS3_1111_Q : STOCKAGE DE XMT INCONNU : ',STOXMT
00179         ENDIF
00180         IF(LNG.EQ.2) THEN
00181           WRITE(LU,*) 'AS3_1111_Q: UNKNOWN STORAGE OF XMT : ',STOXMT
00182         ENDIF
00183         CALL PLANTE(1)
00184         STOP
00185       ENDIF
00186 !
00187 !-----------------------------------------------------------------------
00188 !
00189       RETURN
00190       END

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