34
35
36
37#include "implicit_f.inc"
38
39
40
41 INTEGER NUMNOD, NUMNOD_L,LEN_IA,
42 . NODGLOB(*), NODLOCAL(*), ELEMID_L(*), NWALE
43 TYPE(t_ale_connectivity), INTENT(IN) :: ALE_CONNECTIVITY
44
45
46
47 INTEGER I, J, NI, LEN, IAD1, IAD2
48 INTEGER, DIMENSION(:), ALLOCATABLE :: NB_CONNECT, CONNECTED, IAD_CONNECT, ADSKY
49
50 ALLOCATE(iad_connect(numnod_l + 1), nb_connect(numnod_l), adsky(numnod_l))
51 IF (ale_connectivity%has_nn_connect) THEN
52 DO i = 1, numnod_l
53 iad1 = ale_connectivity%NN_CONNECT%IAD_CONNECT(nodglob(i))
54 iad2 = ale_connectivity%NN_CONNECT%IAD_CONNECT(nodglob(i) + 1) - 1
55 nb_connect(i) = 0
56 DO j = iad1, iad2
57 IF (nodlocal(ale_connectivity%NN_CONNECT%CONNECTED(j)) > 0) THEN
58 nb_connect(i) = nb_connect(i) + 1
59 ENDIF
60 ENDDO
61 ENDDO
62
63 iad_connect(1) = 1
64 DO i = 2, numnod_l + 1
65 iad_connect(i) = iad_connect(i - 1) + nb_connect(i - 1)
66 ENDDO
67
68 len = iad_connect(numnod_l + 1)
69 ALLOCATE(connected(len))
70 connected(1:len) = 0
71 DO i = 1, numnod_l
72 adsky(i) = iad_connect(i)
73 ENDDO
74
75
76 DO i = 1, numnod_l
77 iad1 = ale_connectivity%NN_CONNECT%IAD_CONNECT(nodglob(i))
78 iad2 = ale_connectivity%NN_CONNECT%IAD_CONNECT(nodglob(i) + 1) - 1
79 DO j = iad1, iad2
80 IF (nodlocal(ale_connectivity%NN_CONNECT%CONNECTED(j)) > 0) THEN
81 connected(adsky(i)) = nodlocal(ale_connectivity%NN_CONNECT%CONNECTED(j))
82 adsky(i) = adsky(i) + 1
83 ENDIF
84 ENDDO
85 ENDDO
86
89
90 len_ia = len_ia + numnod_l + 1 + len
91 ENDIF
92
93 IF (ale_connectivity%has_ne_connect) THEN
94
95 IF (ALLOCATED(connected)) DEALLOCATE(connected)
96 DO i = 1, numnod_l
97 iad1 = ale_connectivity%NE_CONNECT%IAD_CONNECT(nodglob(i))
98 iad2 = ale_connectivity%NE_CONNECT%IAD_CONNECT(nodglob(i) + 1) - 1
99 nb_connect(i) = 0
100 DO j = iad1, iad2
101 IF (elemid_l(ale_connectivity%NE_CONNECT%CONNECTED(j)) > 0) THEN
102 nb_connect(i) = nb_connect(i) + 1
103 ENDIF
104 ENDDO
105 ENDDO
106
107 iad_connect(1) = 1
108 DO i = 2, numnod_l + 1
109 iad_connect(i) = iad_connect(i - 1) + nb_connect(i - 1)
110 ENDDO
111
112 len = iad_connect(numnod_l + 1)
113 ALLOCATE(connected(len))
114
115 DO i = 1, numnod_l
116 adsky(i) = iad_connect(i)
117 ENDDO
118
119
120 DO i = 1, numnod_l
121 iad1 = ale_connectivity%NE_CONNECT%IAD_CONNECT(nodglob(i))
122 iad2 = ale_connectivity%NE_CONNECT%IAD_CONNECT(nodglob(i) + 1) - 1
123 DO j = iad1, iad2
124 IF (elemid_l(ale_connectivity%NE_CONNECT%CONNECTED(j)) > 0) THEN
125 connected(adsky(i)) = elemid_l(ale_connectivity%NE_CONNECT%CONNECTED(j))
126 adsky(i) = adsky(i) + 1
127 ENDIF
128 ENDDO
129 ENDDO
130
131 CALL write_i_c(iad_connect, numnod_l + 1)
133
134 len_ia = len_ia + numnod_l + 1 + len
135 ENDIF
136
137 IF (ALLOCATED(iad_connect)) DEALLOCATE(iad_connect)
138 IF (ALLOCATED(connected)) DEALLOCATE(connected)
139 IF (ALLOCATED(adsky)) DEALLOCATE(adsky)
140 IF (ALLOCATED(nb_connect)) DEALLOCATE(nb_connect)
141
142 RETURN
void write_i_c(int *w, int *len)