The TELEMAC-MASCARET system
trunk
sources
utils
bief
sd_strssd.f
Go to the documentation of this file.
1
! ********************
2
SUBROUTINE
sd_strssd
3
! ********************
4
!
5
&(npblk,nsegblk,gloseg1,gloseg2,in,ip,isegip,iw)
6
!
7
!***********************************************************************
8
! BIEF V6P2 21/08/2010
9
!***********************************************************************
10
!
11
!brief BUILDS COMPACT STORAGE
12
!+ (IN,IP) = (XADJ, ADJNCY)OF EXTRADIAGONAL TERMS
13
!+ VIA SEGMENT STORAGE.
14
!
15
!warning NSEG AND IW ARE THE SAME ARRAY IN THE MEMORY
16
!
17
!history E.RAZAFINDRAKOTO (LNH)
18
!+ 18/02/08
19
!+ V5P9
20
!+
21
!
22
!history N.DURAND (HRW), S.E.BOURBAN (HRW)
23
!+ 13/07/2010
24
!+ V6P0
25
!+ Translation of French comments within the FORTRAN sources into
26
!+ English comments
27
!
28
!history N.DURAND (HRW), S.E.BOURBAN (HRW)
29
!+ 21/08/2010
30
!+ V6P0
31
!+ Creation of DOXYGEN tags for automated documentation and
32
!+ cross-referencing of the FORTRAN sources
33
!
34
!history J-M HERVOUET (LNHE)
35
!+ 08/06/2012
36
!+ V6P2
37
!+ Dimensions changed in declarations and allocation.
38
!
39
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
40
!| GLOSEG1 |-->| FIRST POINT OF SEGMENTS
41
!| GLOSEG2 |-->| SECOND POINT OF SEGMENTS
42
!| IN |<--| (IN, IP) COMPACT STORAGE OF EXTRADIAGONAL TERMS
43
!| IP |<--| (IN, IP) COMPACT STORAGE OF EXTRADIAGONAL TERMS
44
!| ISEGIP |<--| INVERSE TABLE OF CONNECTIVITY: POINT-->SEGMENT
45
!| IW |<--| NUMBER OF NEIGHBOURS OF POINTS
46
!| NPBLK |-->| NUMBER OF POINTS
47
!| NSEGBLK |-->| NUMBER OF SEGMENTS
48
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49
!
50
USE
bief
,ex_sd_strssd =>
sd_strssd
51
!
52
USE
declarations_special
53
IMPLICIT NONE
54
!
55
!+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
56
!
57
INTEGER
,
INTENT(IN)
:: NSEGBLK,NPBLK
58
INTEGER
,
INTENT(IN)
:: GLOSEG1(nsegblk),GLOSEG2(nsegblk)
59
INTEGER
,
INTENT(INOUT)
:: IN(npblk+1),IP(nsegblk*2)
60
INTEGER
,
INTENT(INOUT)
:: ISEGIP(nsegblk*2)
61
INTEGER
,
INTENT(INOUT)
:: IW(npblk)
62
!
63
!+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
64
!
65
INTEGER
I,J1,J2,ISEG
66
!
67
! -----------------------
68
!
69
!---> DEGREE OF A POINT: NUMBER OF NEIGHBOURS
70
!
71
DO
i=1,npblk
72
iw(i)=0
73
ENDDO
74
!
75
! IW : NUMBER OF NEIGHBOURS FOR EACH POINT
76
!
77
DO
iseg=1,nsegblk
78
j1 = gloseg1(iseg)
79
j2 = gloseg2(iseg)
80
iw(j1) = iw(j1) + 1
81
iw(j2) = iw(j2) + 1
82
ENDDO
83
!
84
!---> COMPACT STORAGE WITHOUT THE DIAGONAL: (XADJ,ADJNCY) = (IN,IP)
85
!
86
! COEFFICIENTS FOR POINT I: FROM IN(I) TO IN(I+1)-1
87
!
88
in(1)=1
89
DO
i=1,npblk
90
in(i+1)=in(i)+iw(i)
91
ENDDO
92
!
93
! IW IS NO LONGER THE NUMBER OF NEIGHBOURS
94
!
95
DO
i=1,npblk
96
iw(i)=in(i)
97
ENDDO
98
!
99
DO
iseg=1,nsegblk
100
j1 = gloseg1(iseg)
101
j2 = gloseg2(iseg)
102
!
103
!--> TABLE OF CONNECTIVITY: SEGMENT ---> POINT
104
! WILL SAY TO WHAT POINT A COEFFICIENT REFERS TO
105
!
106
ip(iw(j1))=j2
107
ip(iw(j2))=j1
108
!
109
!--> INVERSE TABLE OF CONNECTIVITY: POINT ---> SEGMENT
110
! WILL SAY TO WHAT SEGMENT A COEFFICIENT REFERS TO
111
!
112
! NOTATION FOR TRIANGULAR SUPERIOR COEFF.
113
isegip(iw(j1))=-iseg
114
! NOTATION FOR TRIANGULAR INFERIOR COEFF.
115
isegip(iw(j2))= iseg
116
!
117
iw(j1) = iw(j1) + 1
118
iw(j2) = iw(j2) + 1
119
ENDDO
120
!
121
!-----------------------------------------------------------------------
122
!
123
RETURN
124
END
declarations_special
Definition:
declarations_special.F:3
sd_strssd
subroutine sd_strssd(NPBLK, NSEGBLK, GLOSEG1, GLOSEG2, IN, IP, ISEGIP, IW)
Definition:
sd_strssd.f:7
bief
Definition:
bief.f:3