mt06oo.f

Go to the documentation of this file.
00001 C:\opentelemac\v7p0\sources\utils\bief\mt06oo.f
00002 !
00075                      SUBROUTINE MT06OO
00076 !                    *****************
00077 !
00078      &(A11,A12,A22,XMUL,SF,F,LGSEG,IKLE1,IKLE2,NBOR,NELEM,NELMAX)
00079 !
00080 !***********************************************************************
00081 ! BIEF   V6P1                                   21/08/2010
00082 !***********************************************************************
00083 !
00084 !
00085 !
00086 !
00087 !
00088 !
00089 !
00090 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00091 !| A11            |<--| ELEMENTS OF MATRIX
00092 !| A12            |<--| ELEMENTS OF MATRIX
00093 !| A13            |<--| ELEMENTS OF MATRIX
00094 !| A22            |<--| ELEMENTS OF MATRIX
00095 !| A23            |<--| ELEMENTS OF MATRIX
00096 !| A33            |<--| ELEMENTS OF MATRIX
00097 !| F              |-->| FUNCTION F USED IN THE FORMULA
00098 !| IKLE1          |-->| FIRST POINTS OF SEGMENTS
00099 !| IKLE2          |-->| SECOND POINTS OF SEGMENTS
00100 !| LGSEG          |-->| LENGTH OF SEGMENTS
00101 !| NBOR           |-->| GLOBAL NUMBER OF BOUNDARY POINTS
00102 !| NELEM          |-->| NUMBER OF ELEMENTS
00103 !| NELMAX         |-->| MAXIMUM NUMBER OF ELEMENTS
00104 !| SF             |-->| BIEF_OBJ STRUCTURE OF F
00105 !| SURFAC         |-->| AREA OF TRIANGLES
00106 !| XMUL           |-->| MULTIPLICATION FACTOR
00107 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00108 !
00109       USE BIEF, EX_MT06OO => MT06OO
00110 !
00111       IMPLICIT NONE
00112       INTEGER LNG,LU
00113       COMMON/INFO/LNG,LU
00114 !
00115 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00116 !
00117       INTEGER, INTENT(IN) :: NELEM,NELMAX
00118       INTEGER, INTENT(IN) :: IKLE1(*),IKLE2(*),NBOR(*)
00119 !
00120       DOUBLE PRECISION, INTENT(IN) :: XMUL
00121 !
00122       DOUBLE PRECISION, INTENT(IN) :: F(*)
00123 !
00124 !     STRUCTURE OF F
00125       TYPE(BIEF_OBJ), INTENT(IN) :: SF
00126 !
00127       DOUBLE PRECISION, INTENT(IN)    :: LGSEG(NELMAX)
00128       DOUBLE PRECISION, INTENT(INOUT) :: A11(NELMAX)
00129       DOUBLE PRECISION, INTENT(INOUT) :: A12(NELMAX)
00130       DOUBLE PRECISION, INTENT(INOUT) :: A22(NELMAX)
00131 !
00132 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00133 !
00134       INTEGER IELEM,IELMF
00135       DOUBLE PRECISION SUR12,DET1,F1,F2,F12
00136 !
00137 !-----------------------------------------------------------------------
00138 !
00139       SUR12  = XMUL/12.D0
00140 !
00141 !-----------------------------------------------------------------------
00142 !
00143       IELMF = SF%ELM
00144 !
00145 !     F CONSTANT BY SEGMENT, IN A BOUNDARY ARRAY
00146 !
00147       IF(IELMF.EQ.0) THEN
00148 !
00149         DO IELEM = 1 , NELEM
00150 !         TO BE OPTIMISED...
00151           F1 = F(IELEM)
00152           F2 = F(IELEM)
00153 !
00154           F12 = F1 + F2
00155 !
00156           DET1 = LGSEG(IELEM) * SUR12
00157 !
00158           A11(IELEM) = DET1 * (F12+2*F1)
00159           A12(IELEM) = DET1 * F12
00160           A22(IELEM) = DET1 * (F12+2*F2)
00161 !
00162         ENDDO
00163 !
00164 !     F LINEAR BY SEGMENT, IN A BOUNDARY ARRAY
00165 !     NOTE: IKLE IS HERE A BOUNDARY IKLE
00166 !
00167       ELSEIF(IELMF.EQ.1) THEN
00168 !
00169         DO IELEM = 1 , NELEM
00170 !
00171           F1 = F(IKLE1(IELEM))
00172           F2 = F(IKLE2(IELEM))
00173           F12 = F1 + F2
00174           DET1 = LGSEG(IELEM) * SUR12
00175           A11(IELEM) = DET1 * (F12+2*F1)
00176           A12(IELEM) = DET1 * F12
00177           A22(IELEM) = DET1 * (F12+2*F2)
00178 !
00179         ENDDO
00180 !
00181 !     F LINEAR, IN AN ARRAY DEFINED ON THE DOMAIN
00182 !
00183       ELSEIF(IELMF.EQ.11.OR.IELMF.EQ.21) THEN
00184 !
00185         DO IELEM = 1 , NELEM
00186 !
00187           F1 = F(NBOR(IKLE1(IELEM)))
00188           F2 = F(NBOR(IKLE2(IELEM)))
00189           F12 = F1 + F2
00190           DET1 = LGSEG(IELEM) * SUR12
00191           A11(IELEM) = DET1 * (F12+2*F1)
00192           A12(IELEM) = DET1 * F12
00193           A22(IELEM) = DET1 * (F12+2*F2)
00194 !
00195         ENDDO
00196 !
00197 !     OTHER TYPES OF DISCRETISATION OF F
00198 !
00199       ELSE
00200 !
00201         IF (LNG.EQ.1) WRITE(LU,100) IELMF,SF%NAME
00202         IF (LNG.EQ.2) WRITE(LU,101) IELMF,SF%NAME
00203 100     FORMAT(1X,'MT0600 (BIEF) :',/,
00204      &         1X,'DISCRETISATION DE F NON PREVUE : ',1I6,
00205      &         1X,'NOM REEL : ',A6)
00206 101     FORMAT(1X,'MT0600 (BIEF) :',/,
00207      &         1X,'DISCRETIZATION OF F NOT AVAILABLE:',1I6,
00208      &         1X,'REAL NAME: ',A6)
00209         CALL PLANTE(1)
00210         STOP
00211 !
00212       ENDIF
00213 !
00214 !-----------------------------------------------------------------------
00215 !
00216       RETURN
00217       END

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