matbou.f

Go to the documentation of this file.
00001 C:\opentelemac\v7p0\sources\telemac2d\matbou.f
00002 !
00067                      SUBROUTINE MATBOU
00068 !                    *****************
00069 !
00070      &(MESH,M1,M2,A11,A12,A21,A22,SMU,SMV,VR,VS,H0,MSK,MASKEL,S)
00071 !
00072 !***********************************************************************
00073 ! TELEMAC2D   V6P1                                   21/08/2010
00074 !***********************************************************************
00075 !
00076 !
00077 !
00078 !
00079 !
00080 !
00081 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00082 !| A11            |<->| WORK MATRIX STRUCTURE
00083 !| A12            |<->| WORK MATRIX STRUCTURE
00084 !| A21            |<->| WORK MATRIX STRUCTURE
00085 !| A22            |<->| WORK MATRIX STRUCTURE
00086 !| H0             |-->| REFERENCE DEPTH
00087 !| M1             |<->| WORK MATRIX STRUCTURE
00088 !| M2             |<->| WORK MATRIX STRUCTURE
00089 !| MASKEL         |-->| MASKING OF ELEMENTS
00090 !|                |   | =1. : NORMAL   =0. : MASKED ELEMENT
00091 !| MESH           |-->| MESH STRUCTURE
00092 !| MSK            |-->| IF YES, THERE IS MASKED ELEMENTS.
00093 !| S              |-->| VOID STRUCTURE
00094 !| SMU            |<--| RIGHT-HAND SIDE OF U EQUATION
00095 !| SMV            |<--| RIGHT-HAND SIDE OF V EQUATION
00096 !| VR             |<->| ADDITIONAL VARIABLE IN BOUSSINESQ COIMBRA MODEL
00097 !| VS             |<->| ADDITIONAL VARIABLE IN BOUSSINESQ COIMBRA MODEL
00098 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00099 !
00100       USE BIEF
00101 !
00102       IMPLICIT NONE
00103       INTEGER LNG,LU
00104       COMMON/INFO/LNG,LU
00105 !
00106 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00107 !
00108       LOGICAL, INTENT(IN) :: MSK
00109 !
00110 !  STRUCTURES OF MATRICES
00111 !
00112       TYPE(BIEF_OBJ), INTENT(INOUT) :: A11,A12,A21,A22,M1,M2
00113 !
00114 !  MESH STRUCTURE
00115 !
00116       TYPE(BIEF_MESH), INTENT(INOUT) :: MESH
00117 !
00118 !  STRUCTURES OF VECTORS
00119 !
00120       TYPE(BIEF_OBJ), INTENT(INOUT) :: SMU,SMV
00121       TYPE(BIEF_OBJ), INTENT(IN)    :: MASKEL,H0,S,VR,VS
00122 !
00123 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00124 !
00125       INTEGER IELMU,IELMH
00126 !
00127       DOUBLE PRECISION SL1,SL11,C
00128 !
00129       CHARACTER*16 FORMUL
00130 !
00131 !-----------------------------------------------------------------------
00132 !
00133       IELMH=H0%ELM
00134       IELMU=VR%ELM
00135 !
00136 !     MASS MATRIX (FOR COMPUTATION OF A11 AND OF SECOND MEMBER SMU)
00137 !
00138       FORMUL='MATMAS          '
00139       SL1 = 1.D0
00140       CALL MATRIX(M1,'M=N     ',FORMUL,IELMU,IELMU,
00141      &            SL1,S,S,S,S,S,S,MESH,MSK,MASKEL)
00142 !
00143 !------------------------------------------------------------------
00144 !
00145 !     SECOND MEMBER IN THE EQUATION FOR U
00146 !
00147       CALL MATVEC( 'X=AY    ',SMU,M1,VR,C,MESH)
00148 !
00149 !------------------------------------------------------------------
00150 !
00151 !     MATRIX FOR U IN THE EQUATION FOR U (MASS MATRIX ALREADY
00152 !     COMPUTED)
00153 !
00154       FORMUL='FFBT        0XX0'
00155       SL11 = 1.D0 / 6.D0
00156       CALL MATRIX(A11,'M=N     ',FORMUL,IELMU,IELMU,
00157      &            SL11,H0,S,S,S,S,S,MESH,MSK,MASKEL)
00158 !
00159       FORMUL='FFBT        0YY0'
00160       SL11 = 2.D0 / 3.D0
00161       CALL MATRIX(A11,'M=M+N   ',FORMUL,IELMU,IELMU,
00162      &            SL11,H0,S,S,S,S,S,MESH,MSK,MASKEL)
00163 !
00164       FORMUL='FFBT        XX00'
00165       SL11 = 1.D0 / 2.D0
00166       CALL MATRIX(A11,'M=M+N   ',FORMUL,IELMU,IELMU,
00167      &            SL11,H0,S,S,S,S,S,MESH,MSK,MASKEL)
00168 !
00169 !     FORMUL='FFBT        0X0X'
00170       FORMUL='FFBT        0XX0'
00171       SL11 = 1.D0 / 2.D0
00172       CALL MATRIX(A11,'M=M+TN  ',FORMUL,IELMU,IELMU,
00173      &            SL11,H0,S,S,S,S,S,MESH,MSK,MASKEL)
00174 !
00175       FORMUL='FFBT   00XX+00YY'
00176       SL11 = 1.D0 / 3.D0
00177       CALL MATRIX(A11,'M=M+N   ',FORMUL,IELMU,IELMU,
00178      &            SL11,H0,S,S,S,S,S,MESH,MSK,MASKEL)
00179 !
00180 !     ADDS THE MASS MATRIX
00181 !
00182       CALL OM( 'M=M+N   ' , A11 , M1 , S , C , MESH )
00183 !
00184 !------------------------------------------------------------------
00185 !
00186 !     MATRIX FOR V IN THE EQUATION FOR U
00187 !
00188       FORMUL='FFBT        0Y0X'
00189       SL11 = 1.D0 / 2.D0
00190       CALL MATRIX(A12,'M=N     ',FORMUL,IELMU,IELMU,
00191      &            SL11,H0,S,S,S,S,S,MESH,MSK,MASKEL)
00192 !
00193       FORMUL='FFBT        XY00'
00194       SL11 = 1.D0 / 2.D0
00195       CALL MATRIX(A12,'M=M+N   ',FORMUL,IELMU,IELMU,
00196      &            SL11,H0,S,S,S,S,S,MESH,MSK,MASKEL)
00197 !
00198 !     FORMUL='FFBT        0XY0'
00199       FORMUL='FFBT        0X0Y'
00200       SL11 = -1.D0 / 2.D0
00201       CALL MATRIX(A12,'M=M+TN  ',FORMUL,IELMU,IELMU,
00202      &            SL11,H0,S,S,S,S,S,MESH,MSK,MASKEL)
00203 !
00204 !------------------------------------------------------------------
00205 !
00206 !     MASS MATRIX (FOR COMPUTATION OF A22 AND OF SECOND MEMBER SMV)
00207 !
00208       FORMUL='MATMAS          '
00209       SL1 = 1.D0
00210       CALL MATRIX(M2,'M=N     ',FORMUL,IELMU,IELMU,
00211      &            SL1,S,S,S,S,S,S,MESH,MSK,MASKEL)
00212 !
00213 !     SECOND MEMBER SMV
00214 !
00215       CALL MATVEC( 'X=AY    ',SMV,M2,VS,C,MESH)
00216 !
00217 !------------------------------------------------------------------
00218 !
00219 !     MATRIX FOR V IN THE EQUATION FOR V
00220 !
00221       FORMUL='FFBT        0YY0'
00222       SL11 = 1.D0 / 6.D0
00223       CALL MATRIX(A22,'M=N     ',FORMUL,IELMU,IELMU,
00224      &            SL11,H0,S,S,S,S,S,MESH,MSK,MASKEL)
00225 !
00226       FORMUL='FFBT        0XX0'
00227       SL11 = 2.D0 / 3.D0
00228       CALL MATRIX(A22,'M=M+N   ',FORMUL,IELMU,IELMU,
00229      &            SL11,H0,S,S,S,S,S,MESH,MSK,MASKEL)
00230 !
00231       FORMUL='FFBT        YY00'
00232       SL11 = 1.D0 / 2.D0
00233       CALL MATRIX(A22,'M=M+N   ',FORMUL,IELMU,IELMU,
00234      &            SL11,H0,S,S,S,S,S,MESH,MSK,MASKEL)
00235 !
00236 !     FORMUL='FFBT        0Y0Y'
00237       FORMUL='FFBT        0YY0'
00238       SL11 = 1.D0 / 2.D0
00239       CALL MATRIX(A22,'M=M+TN  ',FORMUL,IELMU,IELMU,
00240      &            SL11,H0,S,S,S,S,S,MESH,MSK,MASKEL)
00241 !
00242       FORMUL='FFBT   00XX+00YY'
00243       SL11 = 1.D0 / 3.D0
00244       CALL MATRIX(A22,'M=M+N   ',FORMUL,IELMU,IELMU,
00245      &            SL11,H0,S,S,S,S,S,MESH,MSK,MASKEL)
00246 !
00247 !     ADDS THE MASS MATRIX
00248 !
00249       CALL OM( 'M=M+N   ' , A22 , M2 , S , C , MESH )
00250 !
00251 !------------------------------------------------------------------
00252 !
00253 !     MATRIX FOR U IN THE EQUATION FOR V
00254 !
00255       FORMUL='FFBT        0X0Y'
00256       SL11 = 1.D0 / 2.D0
00257       CALL MATRIX(A21,'M=N     ',FORMUL,IELMU,IELMU,
00258      &            SL11,H0,S,S,S,S,S,MESH,MSK,MASKEL)
00259 !
00260       FORMUL='FFBT        XY00'
00261       SL11 = 1.D0 / 2.D0
00262       CALL MATRIX(A21,'M=M+N   ',FORMUL,IELMU,IELMU,
00263      &            SL11,H0,S,S,S,S,S,MESH,MSK,MASKEL)
00264 !
00265 !     FORMUL='FFBT        0YX0'
00266       FORMUL='FFBT        0Y0X'
00267       SL11 = -1.D0 / 2.D0
00268       CALL MATRIX(A21,'M=M+TN  ',FORMUL,IELMU,IELMU,
00269      &            SL11,H0,S,S,S,S,S,MESH,MSK,MASKEL)
00270 !
00271 !------------------------------------------------------------------
00272 !
00273       RETURN
00274       END

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