sd_strsg4.f

Go to the documentation of this file.
00001 C:\opentelemac\v7p0\sources\utils\bief\sd_strsg4.f
00002 !
00052                      SUBROUTINE SD_STRSG4
00053 !                    ********************
00054 !
00055      &(NPOIN,NSEG,GLOSEGB,NPBLK,NSEGBLK,GLOSEG4)
00056 !
00057 !***********************************************************************
00058 ! BIEF   V6P1                                   21/08/2010
00059 !***********************************************************************
00060 !
00061 !          THE SEGMENTS OF A SINGLE BLOCK.
00062 !
00063 !
00064 !
00065 !
00066 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00067 !| GLOSEG4        |<--| FIRST AND SECOND POINT OF SEGMENTS IN BLOCK
00068 !| GLOSEGB        |-->| FIRST AND SECOND POINT OF SEGMENTS
00069 !| NPBLK          |-->| FINAL NUMBER OF UNKNOWNS IN THE BLOCK
00070 !| NPOIN          |-->| NUMBER OF POINTS
00071 !| NSEG           |-->| NUMBER OF SEGMENTS
00072 !| NSEGBLK        |-->| NUMBER OF SEGMENTS IN THE FINAL BLOCK
00073 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00074 !
00075       USE BIEF, EX_SD_STRSG4 => SD_STRSG4
00076 !
00077       IMPLICIT NONE
00078       INTEGER LNG,LU
00079       COMMON/INFO/LNG,LU
00080 !
00081 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00082 !
00083       INTEGER, INTENT(IN)    :: NSEGBLK,NPBLK,NSEG,NPOIN
00084       INTEGER, INTENT(IN)    :: GLOSEGB(NSEG,2)
00085       INTEGER, INTENT(INOUT) :: GLOSEG4(2*NSEGBLK)
00086 !
00087 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00088 !
00089       INTEGER I,ISEG,JSEG
00090 !
00091 !----------------------------------------------
00092 !     INFO :     NPBLK = NPOIN*NBLOC
00093 !                NSEGBLK=NSEG*4 + 2*NPOIN
00094 ! NOTE JMH : NO  NSEGBLK=NSEG*4 +   NPOIN !!!!
00095 !----------------------------------------------
00096 !
00097 !     MATRIX ASSEMBLES TOTAL BLOCKS:
00098 !
00099 !----------------------------------------------
00100 !
00101       JSEG=0
00102 !
00103 !     BLOCK 1 (EXTRA-DIAGONAL TERMS)
00104 !     ------------------------------
00105 !
00106       DO ISEG=1,NSEG
00107         JSEG=JSEG+1
00108         GLOSEG4(JSEG)= GLOSEGB(ISEG,1)
00109         GLOSEG4(JSEG+NSEGBLK)= GLOSEGB(ISEG,2)
00110       ENDDO
00111 !
00112 !     BLOCKS 2 AND 3 (PREVIOUSLY DIAGONAL TERMS)
00113 !     ------------------------------------------
00114 !
00115       DO I=1,NPOIN
00116         JSEG=JSEG+1
00117         GLOSEG4(JSEG)= I
00118         GLOSEG4(JSEG+NSEGBLK)= I+NPOIN
00119       ENDDO
00120 !
00121 !     BLOCKS 2 AND 3 (EXTRA-DIAGONAL TERMS)
00122 !     -------------------------------------
00123 !
00124       DO ISEG=1,NSEG
00125         JSEG=JSEG+1
00126         GLOSEG4(JSEG)= GLOSEGB(ISEG,1)
00127         GLOSEG4(JSEG+NSEGBLK)= GLOSEGB(ISEG,2)+ NPOIN
00128         JSEG=JSEG+1
00129         GLOSEG4(JSEG)= GLOSEGB(ISEG,2)
00130         GLOSEG4(JSEG+NSEGBLK)= GLOSEGB(ISEG,1)+ NPOIN
00131       ENDDO
00132 !
00133 !     BLOCK 4 (EXTRA-DIAGONAL TERMS)
00134 !     ------------------------------
00135 !
00136       DO ISEG=1,NSEG
00137         JSEG=JSEG+1
00138         GLOSEG4(JSEG)         = GLOSEGB(ISEG,1)+NPOIN
00139         GLOSEG4(JSEG+NSEGBLK) = GLOSEGB(ISEG,2)+NPOIN
00140       ENDDO
00141 !
00142 !-----------------------------------------------------------------------
00143 !
00144       RETURN
00145       END

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