flux3dlim.f

Go to the documentation of this file.
00001 C:\opentelemac\v7p0\sources\utils\bief\flux3dlim.f
00002 !
00061                      SUBROUTINE FLUX3DLIM
00062 !                    ********************
00063 !
00064      &(FLOW,FLULIM,NPLAN,NSEG2D,NPOIN2,OPT)
00065 !
00066 !***********************************************************************
00067 ! BIEF   V6P3                                   21/08/2010
00068 !***********************************************************************
00069 !
00070 !
00071 !
00072 !
00073 !
00074 !
00075 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00076 !| FLOW           |-->| FLUXES (SIZE OF FLOW MAY NOT EXCEED
00077 !|                |   | NSEG2D*NPLAN, THOUGH THE TOTAL NUMBER OF
00078 !|                |   | SEGMENTS IS LARGER)
00079 !| FLULIM         |-->| LIMITING FACTOR OF 2D SEGMENTS
00080 !| NPLAN          |-->| NUMBER OF PLANES
00081 !| NPOIN2         |-->| NUMBER OF POINTS IN 2D
00082 !| NSEG2D         |-->| NUMBER OF SEGMENTS IN 2D
00083 !| OPT            |-->| 1: HORIZONTAL SEGMENTS
00084 !|                |   | 2: HORIZONTAL AND CROSSED SEGMENTS FOR PRISMS
00085 !|                |   | 3: HORIZONTAL AND CROSSED SEGMENTS FOR PRISMS
00086 !|                |   |    CUT INTO TETRAHEDRA
00087 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00088 !
00089       USE BIEF
00090 !
00091       IMPLICIT NONE
00092       INTEGER LNG,LU
00093       COMMON/INFO/LNG,LU
00094 !
00095 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00096 !
00097       INTEGER, INTENT(IN)             :: NSEG2D,NPLAN,OPT,NPOIN2
00098       DOUBLE PRECISION, INTENT(INOUT) :: FLOW(*)
00099 !                                        HERE * = NESG2D*NPLAN
00100       DOUBLE PRECISION, INTENT(IN)    :: FLULIM(NSEG2D)
00101 !
00102 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00103 !
00104       INTEGER ISEG,ISEG3D,IPLAN,OTHERS
00105 !
00106 !-----------------------------------------------------------------------
00107 !
00108 !     LIMITS 3D FLUXES BY COEFFICIENT OF 2D FLUXES
00109 !
00110 !-----------------------------------------------------------------------
00111 !
00112 !     HORIZONTAL SEGMENTS
00113 !
00114       DO IPLAN=1,NPLAN
00115         DO ISEG=1,NSEG2D
00116           ISEG3D=ISEG+(IPLAN-1)*NSEG2D
00117           FLOW(ISEG3D)=FLOW(ISEG3D)*FLULIM(ISEG)
00118         ENDDO
00119       ENDDO
00120 !
00121 !     OPTIONALLY: CROSSED SEGMENTS
00122 !
00123       IF(OPT.EQ.2) THEN
00124 !
00125 !       FOR PRISMS
00126 !
00127         OTHERS=NPLAN*NSEG2D+NPOIN2*(NPLAN-1)
00128         DO IPLAN=1,NPLAN-1
00129           DO ISEG=1,NSEG2D
00130             ISEG3D=ISEG+(IPLAN-1)*2*NSEG2D+OTHERS
00131             FLOW(ISEG3D)=FLOW(ISEG3D)*FLULIM(ISEG)
00132             ISEG3D=ISEG3D+NSEG2D
00133             FLOW(ISEG3D)=FLOW(ISEG3D)*FLULIM(ISEG)
00134           ENDDO
00135         ENDDO
00136 !
00137       ELSEIF(OPT.EQ.3) THEN
00138 !
00139 !       FOR PRISMS CUT INTO TETRAHEDRA
00140 !
00141         OTHERS=NPLAN*NSEG2D+NPOIN2*(NPLAN-1)
00142         DO IPLAN=1,NPLAN-1
00143           DO ISEG=1,NSEG2D
00144             ISEG3D=ISEG+(IPLAN-1)*NSEG2D+OTHERS
00145             FLOW(ISEG3D)=FLOW(ISEG3D)*FLULIM(ISEG)
00146           ENDDO
00147         ENDDO
00148 !
00149       ELSEIF(OPT.NE.1) THEN
00150 !
00151         IF(LNG.EQ.1) THEN
00152           WRITE(LU,*) 'FLUX3DLIM : OPT NON PREVU : ',OPT
00153         ENDIF
00154         IF(LNG.EQ.2) THEN
00155           WRITE(LU,*) 'FLUX3DLIM : UNEXPECTED OPT:',OPT
00156         ENDIF
00157         CALL PLANTE(1)
00158         STOP
00159 !
00160       ENDIF
00161 !
00162 !-----------------------------------------------------------------------
00163 !
00164       RETURN
00165       END

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