mt13aa.f

Go to the documentation of this file.
00001 C:\opentelemac\v7p0\sources\utils\bief\mt13aa.f
00002 !
00072                      SUBROUTINE MT13AA
00073 !                    *****************
00074 !
00075      &(  A11 , A12 , A13 ,
00076      &   A21 , A22 , A23 ,
00077      &   A31 , A32 , A33 ,
00078      &   XMUL,XEL,YEL,NELEM,NELMAX,ICOORD)
00079 !
00080 !***********************************************************************
00081 ! BIEF   V6P1                                   21/08/2010
00082 !***********************************************************************
00083 !
00084 !
00085 !
00086 !
00087 !
00088 !
00089 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00090 !| A11            |<--| ELEMENTS OF MATRIX
00091 !| A12            |<--| ELEMENTS OF MATRIX
00092 !| A13            |<--| ELEMENTS OF MATRIX
00093 !| A21            |<--| ELEMENTS OF MATRIX
00094 !| A22            |<--| ELEMENTS OF MATRIX
00095 !| A23            |<--| ELEMENTS OF MATRIX
00096 !| A31            |<--| ELEMENTS OF MATRIX
00097 !| A32            |<--| ELEMENTS OF MATRIX
00098 !| A33            |<--| ELEMENTS OF MATRIX
00099 !| ICOORD         |-->| 1: DERIVATIVE ALONG X, 2: ALONG Y
00100 !| NELEM          |-->| NUMBER OF ELEMENTS
00101 !| NELMAX         |-->| MAXIMUM NUMBER OF ELEMENTS
00102 !| XEL            |-->| ABSCISSAE OF POINTS IN THE MESH, PER ELEMENT
00103 !| YEL            |-->| ORDINATES OF POINTS IN THE MESH, PER ELEMENT
00104 !| XMUL           |-->| MULTIPLICATION FACTOR
00105 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00106 !
00107       USE BIEF, EX_MT13AA => MT13AA
00108 !
00109       IMPLICIT NONE
00110       INTEGER LNG,LU
00111       COMMON/INFO/LNG,LU
00112 !
00113 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00114 !
00115       INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
00116 !
00117       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
00118       DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*)
00119       DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*)
00120 !
00121       DOUBLE PRECISION, INTENT(IN) :: XMUL
00122 !
00123       DOUBLE PRECISION, INTENT(IN) :: XEL(NELMAX,3),YEL(NELMAX,3)
00124 !
00125 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00126 !
00127       INTEGER IELEM
00128       DOUBLE PRECISION XSUR6
00129 !
00130 !-----------------------------------------------------------------------
00131 !
00132       XSUR6 = XMUL/6.D0
00133 !
00134 !================================
00135 !  DERIVATIVE WRT X  =
00136 !================================
00137 !
00138       IF(ICOORD.EQ.1) THEN
00139 !
00140 !   LOOP ON THE ELEMENTS
00141 !
00142       DO IELEM = 1 , NELEM
00143 !
00144 !   DIAGONAL TERMS
00145 !
00146       A22(IELEM) =    YEL(IELEM,3) * XSUR6
00147       A33(IELEM) = -  YEL(IELEM,2) * XSUR6
00148       A11(IELEM) = - A22(IELEM) - A33(IELEM)
00149 !
00150 !   EXTRADIAGONAL TERMS
00151 !
00152       A21(IELEM) = A11(IELEM)
00153       A31(IELEM) = A11(IELEM)
00154       A32(IELEM) = A22(IELEM)
00155       A12(IELEM) = A22(IELEM)
00156       A13(IELEM) = A33(IELEM)
00157       A23(IELEM) = A33(IELEM)
00158 !
00159       ENDDO ! IELEM
00160 !
00161       ELSEIF(ICOORD.EQ.2) THEN
00162 !
00163 !================================
00164 !  DERIVATIVE WRT Y  =
00165 !================================
00166 !
00167       DO IELEM = 1 , NELEM
00168 !
00169 !   DIAGONAL TERMS
00170 !
00171       A22(IELEM) = - XEL(IELEM,3) * XSUR6
00172       A33(IELEM) =   XEL(IELEM,2) * XSUR6
00173       A11(IELEM) = - A22(IELEM) - A33(IELEM)
00174 !
00175 !   EXTRADIAGONAL TERMS
00176 !
00177       A21(IELEM) = A11(IELEM)
00178       A31(IELEM) = A11(IELEM)
00179       A32(IELEM) = A22(IELEM)
00180       A12(IELEM) = A22(IELEM)
00181       A13(IELEM) = A33(IELEM)
00182       A23(IELEM) = A33(IELEM)
00183 !
00184       ENDDO ! IELEM
00185 !
00186         ELSE
00187 !
00188           IF (LNG.EQ.1) WRITE(LU,200) ICOORD
00189           IF (LNG.EQ.2) WRITE(LU,201) ICOORD
00190 200       FORMAT(1X,'MT13AA (BIEF) : COMPOSANTE IMPOSSIBLE ',
00191      &              1I6,' VERIFIER ICOORD')
00192 201       FORMAT(1X,'MT13AA (BIEF) : IMPOSSIBLE COMPONENT ',
00193      &              1I6,' CHECK ICOORD')
00194           CALL PLANTE(0)
00195           STOP
00196 !
00197         ENDIF
00198 !
00199 !-----------------------------------------------------------------------
00200 !
00201       RETURN
00202       END

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