34
35
36
38
39
40
41#include "implicit_f.inc"
42#include "parit_c.inc"
43#include "task_c.inc"
44
45
46
47#include "com01_c.inc"
48#include "com04_c.inc"
49#include "scr02_c.inc"
50#include "rad2r_c.inc"
51
52
53
54 TYPE (NLOCAL_STR_),TARGET :: NLOC_DMG
55
56
57
58 INTEGER I,ILOC,NNOD,L_NLOC,NUMELS_NL,,,
59 . NUMELTG_NL,LCNE_NL,MATSIZE
60 my_real,
DIMENSION(:),
POINTER :: fnl,stifnl
61 INTEGER, DIMENSION(8) ::
62 . HEAD
63
64
65
66
68 iloc = head(1)
69 nnod = head(2)
70 l_nloc = head(3)
71 numels_nl = head(4)
72 numelc_nl = head(5)
73 numeltg_nl = head(6)
74 nddmax = head(7)
75 lcne_nl = head(8)
76 nloc_dmg%IMOD = iloc
77 nloc_dmg%NNOD = nnod
78 nloc_dmg%L_NLOC = l_nloc
79 nloc_dmg%NUMELS_NL = numels_nl
80 nloc_dmg%NUMELC_NL = numelc_nl
81 nloc_dmg%NUMELTG_NL = numeltg_nl
82 nloc_dmg%NDDMAX = nddmax
83 nloc_dmg%LCNE_NL = lcne_nl
84
85 IF (iloc > 0) THEN
86
87 IF (r2r_siu > 0) THEN
88
89 matsize = nummat0
90 ELSE
91 matsize = nummat
92 ENDIF
93
94 ALLOCATE (nloc_dmg%LEN(matsize))
95 ALLOCATE (nloc_dmg%LE_MAX(matsize))
96 ALLOCATE (nloc_dmg%DENS(matsize))
97 ALLOCATE (nloc_dmg%DAMP(matsize))
98 ALLOCATE (nloc_dmg%SSPNL(matsize))
99 ALLOCATE (nloc_dmg%INDX(nnod))
100 ALLOCATE (nloc_dmg%POSI(nnod+1))
101 ALLOCATE (nloc_dmg%IDXI(numnod))
102 ALLOCATE (nloc_dmg%MASS(l_nloc))
103 ALLOCATE (nloc_dmg%MASS0(l_nloc))
104 ALLOCATE (nloc_dmg%VNL(l_nloc))
105 ALLOCATE (nloc_dmg%VNL_OLD(l_nloc))
106 ALLOCATE (nloc_dmg%DNL(l_nloc))
107 ALLOCATE (nloc_dmg%UNL(l_nloc))
108 ALLOCATE (nloc_dmg%CNE(0))
109
110
111 IF (ipari0 == 1) THEN
112 ALLOCATE (nloc_dmg%ADDCNE(nnod+1))
113 ALLOCATE (nloc_dmg%PROCNE(lcne_nl))
114 ALLOCATE (nloc_dmg%IADS(8,numels_nl))
115 ALLOCATE (nloc_dmg%IADC(4,numelc_nl))
116 ALLOCATE (nloc_dmg%IADTG(3,numeltg_nl))
117
118
119 ELSE
120 ALLOCATE (nloc_dmg%ADDCNE(0))
121 ALLOCATE (nloc_dmg%PROCNE(0))
122 ALLOCATE (nloc_dmg%IADS(0,0))
123 ALLOCATE (nloc_dmg%IADC(0,0))
124 ALLOCATE (nloc_dmg%IADTG(0,0))
125 ALLOCATE (nloc_dmg%FSKY(0,0))
126 ALLOCATE (nloc_dmg%STSKY(0,0))
127 ENDIF
128
129
130 IF (iparit == 1) THEN
131 ALLOCATE (nloc_dmg%FNL(l_nloc,1))
132 nloc_dmg%FNL(1:l_nloc,1) = zero
133
134 IF (nodadt > 0) THEN
135 ALLOCATE (nloc_dmg%STIFNL(l_nloc,1))
136 nloc_dmg%STIFNL(1:l_nloc,1) = zero
137 ELSE
138 ALLOCATE (nloc_dmg%STIFNL(0,0))
139 ENDIF
140
141 ELSE
142 ALLOCATE (nloc_dmg%FNL(l_nloc,nthread))
143 nloc_dmg%FNL(1:l_nloc,1:nthread) = zero
144
145 IF (nodadt > 0) THEN
146 ALLOCATE (nloc_dmg%STIFNL(l_nloc,nthread))
147 nloc_dmg%STIFNL(1:l_nloc,1:nthread) = zero
148 ELSE
149 ALLOCATE (nloc_dmg%STIFNL(0,0))
150 ENDIF
151 ENDIF
152
153 CALL read_db(nloc_dmg%DENS,matsize)
154
155 CALL read_db(nloc_dmg%DAMP,matsize)
156
157 CALL read_db(nloc_dmg%LEN,matsize)
158
159 CALL read_db(nloc_dmg%LE_MAX,matsize)
160
161 CALL read_db(nloc_dmg%SSPNL,matsize)
162
164
166
168
169
170 IF (ipari0 == 1) THEN
171
172
173 CALL read_i_c(nloc_dmg%ADDCNE,nnod+1)
174
175
176 CALL read_i_c(nloc_dmg%PROCNE,lcne_nl)
177
178
179 CALL read_i_c(nloc_dmg%IADS,8*numels_nl)
180
181
182 CALL read_i_c(nloc_dmg%IADC,4*numelc_nl)
183
184
185 CALL read_i_c(nloc_dmg%IADTG,3*numeltg_nl)
186
187
188 ALLOCATE (nloc_dmg%FSKY(nloc_dmg%ADDCNE(nnod+1),nddmax))
189 nloc_dmg%FSKY(1:nloc_dmg%ADDCNE(nnod+1),1:nddmax) = zero
190
191
192 IF (nodadt > 0) THEN
193 ALLOCATE (nloc_dmg%STSKY(nloc_dmg%ADDCNE(nnod+1),nddmax))
194 nloc_dmg%STSKY(1:nloc_dmg%ADDCNE(nnod+1),1:nddmax) = zero
195 ELSE
196 ALLOCATE (nloc_dmg%STSKY(0,0))
197 ENDIF
198
199 ENDIF
200
201 CALL read_db(nloc_dmg%MASS,l_nloc)
202
203 CALL read_db(nloc_dmg%MASS0,l_nloc)
204
205 fnl => nloc_dmg%FNL(1:l_nloc,1)
207
208 CALL read_db(nloc_dmg%VNL,l_nloc)
209
210 CALL read_db(nloc_dmg%VNL_OLD,l_nloc)
211
212 CALL read_db(nloc_dmg%DNL,l_nloc)
213
214 CALL read_db(nloc_dmg%UNL,l_nloc)
215
216 ELSE
217 nloc_dmg%NNOD = 0
218 nloc_dmg%L_NLOC = 0
219 nloc_dmg%NUMELS_NL = 0
220 nloc_dmg%NUMELC_NL = 0
221 nloc_dmg%NUMELTG_NL = 0
222 nloc_dmg%NDDMAX = 0
223 nloc_dmg%LCNE_NL = 0
224 ALLOCATE (nloc_dmg%DENS(0))
225 ALLOCATE (nloc_dmg%DAMP(0))
226 ALLOCATE (nloc_dmg%LEN(0))
227 ALLOCATE (nloc_dmg%LE_MAX(0))
228 ALLOCATE (nloc_dmg%SSPNL(0))
229 ALLOCATE (nloc_dmg%INDX(0))
230 ALLOCATE (nloc_dmg%POSI(0))
231 ALLOCATE (nloc_dmg%IDXI(0))
232 ALLOCATE (nloc_dmg%ADDCNE(0))
233 ALLOCATE (nloc_dmg%CNE(0))
234 ALLOCATE (nloc_dmg%PROCNE(0))
235 ALLOCATE (nloc_dmg%IADS(0,0))
236 ALLOCATE (nloc_dmg%IADC(0,0))
237 ALLOCATE (nloc_dmg%IADTG(0,0))
238 ALLOCATE (nloc_dmg%MASS(0))
239 ALLOCATE (nloc_dmg%MASS0(0))
240 ALLOCATE (nloc_dmg%FNL(0,0))
241 ALLOCATE (nloc_dmg%VNL(0))
242 ALLOCATE (nloc_dmg%VNL_OLD(0))
243 ALLOCATE (nloc_dmg%DNL(0))
244 ALLOCATE (nloc_dmg%UNL(0))
245 ALLOCATE (nloc_dmg%STIFNL(0,0))
246 ALLOCATE (nloc_dmg%FSKY(0,0))
247 ALLOCATE (nloc_dmg%STSKY(0,0))
248 ALLOCATE (nloc_dmg%IAD_ELEM(0))
249 ALLOCATE (nloc_dmg%IAD_SIZE(0))
250 ALLOCATE (nloc_dmg%FR_ELEM(0))
251 ENDIF
252
253 RETURN
void read_i_c(int *w, int *len)