grad2d.f

Go to the documentation of this file.
00001 C:\opentelemac\v7p0\sources\telemac3d\grad2d.f
00002 !
00064                      SUBROUTINE GRAD2D
00065 !                    *****************
00066 !
00067      &(DFDX,DFDY,FU,NPLAN,S,UNSV2D,FU2,FU3,FU4,IELM2,MESH2D,MSK,MASKEL)
00068 !
00069 !***********************************************************************
00070 ! TELEMAC3D   V6P1                                   21/08/2010
00071 !***********************************************************************
00072 !
00073 !
00074 !
00075 !
00076 !
00077 !
00078 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00079 !| DFDX           |<->| DF/DX
00080 !| DFDY           |<->| DF/DY
00081 !| FU             |-->| FUNCTION TO DIFFERENTIATE
00082 !| FU2            |<->| POINTER ON FU
00083 !| FU3            |<->| POINTER ON DF/DX
00084 !| FU4            |<->| POINTER ON DF/DY
00085 !| IELM2          |-->| TYPE OF 2D DISCRETISATION
00086 !| MASKEL         |-->| MASKING OF ELEMENTS
00087 !|                |   | =1. : NORMAL   =0. : MASKED ELEMENT
00088 !| MESH2D         |<->| 2D MESH
00089 !| MSK            |-->| IF YES, THERE IS MASKED ELEMENTS.
00090 !| NPLAN          |-->| NUMBER OF PLANES IN THE 3D MESH OF PRISMS
00091 !| S              |<->| VOID STRUCTURE
00092 !| UNSV2D         |<->| INVERSE OF INTEGRALS OF TEST FUNCTIONS
00093 !|                |   | (VOLUME OF BASES)IN 2D
00094 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00095 !
00096       USE BIEF
00097       USE DECLARATIONS_TELEMAC
00098       IMPLICIT NONE
00099       INTEGER LNG,LU
00100       COMMON/INFO/LNG,LU
00101 !
00102 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00103 !
00104       TYPE(BIEF_OBJ), INTENT(INOUT) :: DFDX, DFDY
00105       TYPE(BIEF_OBJ), INTENT(IN)    :: FU
00106       TYPE(BIEF_OBJ), INTENT(INOUT) :: UNSV2D,S
00107       TYPE(BIEF_OBJ), INTENT(IN)    :: MASKEL
00108       TYPE(BIEF_MESH), INTENT(INOUT):: MESH2D
00109       INTEGER, INTENT(IN)           :: NPLAN, IELM2
00110       LOGICAL, INTENT(IN)           :: MSK
00111 !     FU2,3,4 MUST BE 2D WORK FIELD - NO CHECKING
00112       TYPE(BIEF_OBJ), INTENT(INOUT) :: FU2,FU3,FU4
00113 !
00114 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00115 !
00116       INTEGER NPOIN,IPLAN
00117       DOUBLE PRECISION, POINTER :: SAVEFU2(:),SAVEFU3(:),SAVEFU4(:)
00118 !
00119 !-----------------------------------------------------------------------
00120 !
00121       NPOIN = MESH2D%NPOIN
00122 !
00123       SAVEFU2=> FU2%R
00124       SAVEFU3=> FU3%R
00125       SAVEFU4=> FU4%R
00126 !
00127       DO IPLAN=1,NPLAN
00128 !
00129 !     WORKING ON POINTERS RATHER THAN COPYING
00130       FU2%R=>  FU%R((IPLAN-1)*NPOIN+1:IPLAN*NPOIN)
00131       FU3%R=>DFDX%R((IPLAN-1)*NPOIN+1:IPLAN*NPOIN)
00132       FU4%R=>DFDY%R((IPLAN-1)*NPOIN+1:IPLAN*NPOIN)
00133 !
00134 !     CALCUL DE LA DERIVEE DF/DX
00135 !
00136       CALL VECTOR(FU3,'=','GRADF          X',IELM2,1.D0,FU2,S,S,
00137      &            S,S,S,MESH2D,MSK,MASKEL)
00138       IF (NCSIZE.GT.1) CALL PARCOM (FU3, 2, MESH2D)
00139       CALL OS('X=XY    ' ,X=FU3,Y=UNSV2D)
00140 !
00141 !     CALCUL DE LA DERIVEE DF/DY
00142 !
00143       CALL VECTOR(FU4,'=','GRADF          Y',IELM2,1.D0,FU2,S,S,
00144      &            S,S,S,MESH2D,MSK,MASKEL)
00145       IF (NCSIZE.GT.1) CALL PARCOM (FU4, 2, MESH2D)
00146       CALL OS('X=XY    ' ,X=FU4,Y=UNSV2D)
00147 !
00148       ENDDO
00149 !
00150       FU2%R=>SAVEFU2
00151       FU3%R=>SAVEFU3
00152       FU4%R=>SAVEFU4
00153 !
00154 !-----------------------------------------------------------------------
00155 !
00156       RETURN
00157       END

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