mt13ab.f

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

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