OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
allocbuf_auto.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| allocbuf_auto ../starter/source/elements/elbuf_init/allocbuf_auto.F
25!||--- called by ------------------------------------------------------
26!|| elbuf_ini ../starter/source/elements/elbuf_init/elbuf_ini.F
27!||--- calls -----------------------------------------------------
28!|| ancmsg ../starter/source/output/message/message.F
29!||--- uses -----------------------------------------------------
30!|| message_mod ../starter/share/message_module/message_mod.F
31!||====================================================================
32 SUBROUTINE allocbuf_auto(ELBUF_TAB,NLAY,NPTR,NPTS,NPTT,
33 . NINTLAY,NEL,NPT,NG,NGROUP,ITY,
34 . IGTYP,NUMMAT,MAT_PARAM)
35C-----------------------------------------------
36C M o d u l e s
37C-----------------------------------------------
38 USE my_alloc_mod
39 USE mat_elem_mod
40 USE message_mod
41 USE constant_mod , ONLY : ep21
42C-----------------------------------------------
43C I n c l u d e
44C-----------------------------------------------
45#include "implicit_f.inc"
46C-----------------------------------------------
47C D u m m y A r g u m e n t s
48C-----------------------------------------------
49 INTEGER ,INTENT(IN) :: NUMMAT
50 INTEGER NLAY,NINTLAY,NPTR,NPTS,NPTT,NEL,NPT,NG,NGROUP,ITY,IGTYP
51 TYPE(elbuf_struct_),TARGET ,DIMENSION(NGROUP) :: ELBUF_TAB
52 TYPE(matparam_struct_) ,DIMENSION(NUMMAT) ,INTENT(IN) :: MAT_PARAM
53C-----------------------------------------------
54C L o c a l V a r i a b l e s
55C-----------------------------------------------
56 INTEGER I,IR,IS,IT,Stat,NPG,ILAYER,IPT,IMAT,LEN1,LEN2,LEN_PLAPT,LEN_SIGPT,NPTTOT,IDRAPE
57 TYPE(BUF_LAY_) , POINTER :: BUFLY
58 TYPE(buf_intlay_) , POINTER :: INTLAY
59 TYPE(g_bufel_) , POINTER :: GBUF
60 TYPE(L_BUFEL_) , POINTER :: LBUF
61 TYPE(buf_intloc_) , POINTER :: ILBUF
62 TYPE (L_BUFEL_DIR_), POINTER :: LBUF_DIR
63C=======================================================================
64 stat = 0
65 IF (ity == 1 .OR. ity == 2 .OR. ity == 51 .OR. ity == 101) THEN
66 npg = nptr*npts*nptt
67 npttot = npt
68 ELSEIF (ity == 3 .OR. ity == 7) THEN
69 npg = nptr*npts
70 npttot = 0
71 DO i=1,nlay
72 npttot = npttot + npg*elbuf_tab(ng)%BUFLY(i)%NPTT
73 ENDDO
74 IF (npt == 0) npttot = npt
75 ELSE !IF (ITY == 4 .OR. ITY == 5 .OR. ITY == 6 .OR. ITY == 100)THEN
76 npg = 0
77 npttot = 0
78 ENDIF
79 idrape = elbuf_tab(ng)%IDRAPE
80c-------------------------------------------------
81C layer buffer allocation
82c-------------------------------------------------
83 DO i = 1, nlay
84 bufly => elbuf_tab(ng)%BUFLY(i)
85c
86 CALL my_alloc(bufly%DMG,nel*bufly%LY_DMG)
87 bufly%DMG = zero
88 CALL my_alloc(bufly%GAMA,nel*bufly%LY_GAMA)
89 bufly%GAMA = zero
90 IF(idrape == 0 .OR. (idrape >0 .AND. igtyp == 17)) THEN
91 CALL my_alloc(bufly%DIRA,nel*bufly%LY_DIRA)
92 bufly%DIRA = zero
93 CALL my_alloc(bufly%DIRB,nel*bufly%LY_DIRB)
94 bufly%DIRB = zero
95 ENDIF
96 CALL my_alloc(bufly%CRKDIR,nel*bufly%LY_CRKDIR)
97 bufly%CRKDIR = zero
98 CALL my_alloc(bufly%OFFPG,nel*bufly%LY_OFFPG)
99 bufly%OFFPG = 1
100 CALL my_alloc(bufly%OFF,nel*bufly%LY_OFF)
101 bufly%OFF = 1
102c
103 IF (npg > 1) THEN
104 IF (nlay > 1) THEN
105 len_plapt = nel*bufly%LY_PLAPT
106 len_sigpt = nel*bufly%LY_SIGPT
107 ELSE
108 IF (igtyp /= 51 .AND. igtyp /= 52 ) THEN
109 len_plapt = nel*bufly%LY_PLAPT*npt
110 len_sigpt = nel*bufly%LY_SIGPT*npt
111 ELSE
112 len_plapt = nel*bufly%LY_PLAPT*bufly%NPTT
113 len_sigpt = nel*bufly%LY_SIGPT*bufly%NPTT
114 ENDIF
115 ENDIF
116 CALL my_alloc(bufly%PLAPT,len_plapt)
117 bufly%PLAPT = zero
118 CALL my_alloc(bufly%SIGPT,len_sigpt)
119 bufly%SIGPT = zero
120 ELSEIF (npg == 1) THEN
121C
122C PLAPT & SIGPT will point to LBUF%PLA and LBUF%SIG after allocation
123C
124 ENDIF
125C
126 CALL my_alloc(bufly%HOURG,nel*bufly%LY_HOURG)
127 bufly%HOURG = zero
128 CALL my_alloc(bufly%UELR,nel*bufly%LY_UELR)
129 bufly%UELR = zero
130 CALL my_alloc(bufly%UELR1,nel*bufly%LY_UELR1)
131 bufly%UELR1 = zero
132 ENDDO
133c---
134c-------------------------------------------------
135C LAYER Local variables per integration point
136c-------------------------------------------------
137 idrape = elbuf_tab(ng)%IDRAPE
138 DO i = 1, nlay
139 bufly => elbuf_tab(ng)%BUFLY(i)
140 imat = elbuf_tab(ng)%BUFLY(i)%IMAT
141 IF (igtyp == 51 .OR. igtyp == 52) THEN
142 nptt = bufly%NPTT
143 ELSE
144 nptt = elbuf_tab(ng)%NPTT
145 ENDIF
146 DO ir = 1,nptr
147 DO is = 1,npts
148 DO it = 1,nptt
149 lbuf => elbuf_tab(ng)%BUFLY(i)%LBUF(ir,is,it)
150c
151 CALL my_alloc(lbuf%OFF,nel*bufly%L_OFF)
152 lbuf%OFF = one
153 CALL my_alloc (lbuf%GAMA,nel*bufly%L_GAMA)
154 lbuf%GAMA = zero
155 CALL my_alloc(lbuf%STRA,nel*bufly%L_STRA)
156 lbuf%STRA = zero
157 CALL my_alloc(lbuf%FRAC,nel*bufly%L_FRAC)
158 lbuf%FRAC = zero
159 CALL my_alloc(lbuf%BFRAC,nel*bufly%L_BFRAC)
160 lbuf%BFRAC = zero
161 CALL my_alloc(lbuf%EINT,nel*bufly%L_EINT)
162 lbuf%EINT = zero
163 CALL my_alloc(lbuf%EINS,nel*bufly%L_EINS)
164 lbuf%EINS = zero
165 CALL my_alloc(lbuf%RHO,nel*bufly%L_RHO)
166 lbuf%RHO = zero
167 CALL my_alloc(lbuf%DP_DRHO,nel)
168 lbuf%DP_DRHO = zero
169 CALL my_alloc(lbuf%QVIS,nel*bufly%L_QVIS)
170 lbuf%QVIS = zero
171 CALL my_alloc(lbuf%DELTAX,nel*bufly%L_DELTAX)
172 lbuf%DELTAX = zero
173 CALL my_alloc(lbuf%VOL,nel*bufly%L_VOL)
174 lbuf%VOL = zero
175 CALL my_alloc(lbuf%EPSA,nel*bufly%L_EPSA)
176 lbuf%EPSA = zero
177 CALL my_alloc(lbuf%EPSD,nel*bufly%L_EPSD)
178 lbuf%EPSD = zero
179 CALL my_alloc(lbuf%EPSQ,nel*bufly%L_EPSQ)
180 lbuf%EPSQ = zero
181 CALL my_alloc(lbuf%EPSF,nel*bufly%L_EPSF)
182 lbuf%EPSF = zero
183 CALL my_alloc(lbuf%PLA,nel*bufly%L_PLA)
184 lbuf%PLA = zero
185 CALL my_alloc(lbuf%WPLA,nel*bufly%L_WPLA)
186 lbuf%WPLA = zero
187 CALL my_alloc(lbuf%TEMP,nel*bufly%L_TEMP)
188 lbuf%TEMP = min(bufly%L_TEMP,1)*mat_param(imat)%THERM%TINI
189 CALL my_alloc(lbuf%TB,nel*bufly%L_TB)
190 lbuf%TB = -ep21
191 CALL my_alloc(lbuf%RK,nel*bufly%L_RK)
192 lbuf%RK = zero
193 CALL my_alloc(lbuf%RE,nel*bufly%L_RE)
194 lbuf%RE = zero
195 CALL my_alloc(lbuf%VK,nel*bufly%L_VK)
196 lbuf%VK = zero
197 CALL my_alloc(lbuf%SF,nel*bufly%L_SF)
198 lbuf%SF = zero
199 CALL my_alloc(lbuf%ROB,nel*bufly%L_ROB)
200 lbuf%ROB = zero
201 CALL my_alloc(lbuf%DAM,nel*bufly%L_DAM)
202 lbuf%DAM = zero
203 CALL my_alloc(lbuf%DSUM,nel*bufly%L_DSUM)
204 lbuf%DSUM = zero
205 CALL my_alloc(lbuf%DGLO,nel*bufly%L_DGLO)
206 lbuf%DGLO = zero
207 CALL my_alloc(lbuf%CRAK,nel*bufly%L_CRAK)
208 lbuf%CRAK = zero
209 CALL my_alloc(lbuf%EPE,nel*bufly%L_EPE)
210 lbuf%EPE = zero
211 CALL my_alloc(lbuf%ANG,nel*bufly%L_ANG)
212 lbuf%ANG = zero
213 CALL my_alloc(lbuf%EPC,nel*bufly%L_EPC)
214 lbuf%EPC = zero
215 CALL my_alloc(lbuf%XST,nel*bufly%L_XST)
216 lbuf%XST = zero
217 CALL my_alloc(lbuf%SSP,nel*bufly%L_SSP)
218 lbuf%SSP = zero
219 CALL my_alloc(lbuf%Z,nel*bufly%L_Z)
220 lbuf%Z = zero
221 CALL my_alloc(lbuf%VISC,nel*bufly%L_VISC)
222 lbuf%VISC = zero
223 CALL my_alloc(lbuf%SIGL,nel*bufly%L_SIGL)
224 lbuf%SIGL = zero
225 CALL my_alloc(lbuf%SIGV,nel*bufly%L_SIGV)
226 lbuf%SIGV = zero
227 CALL my_alloc(lbuf%SIGA,nel*bufly%L_SIGA)
228 lbuf%SIGA = zero
229 CALL my_alloc(lbuf%SIGB,nel*bufly%L_SIGB)
230 lbuf%SIGB = zero
231 CALL my_alloc(lbuf%SIGC,nel*bufly%L_SIGC)
232 lbuf%SIGC = zero
233 CALL my_alloc(lbuf%SIGD,nel*bufly%L_SIGD)
234 lbuf%SIGD = zero
235 CALL my_alloc(lbuf%SIGF,nel*bufly%L_SIGF)
236 lbuf%SIGF = zero
237 CALL my_alloc(lbuf%SIG,nel*bufly%L_SIG)
238 lbuf%SIG = zero
239 CALL my_alloc(lbuf%SIGPLY,nel*bufly%L_SIGPLY)
240 lbuf%SIGPLY = zero
241 CALL my_alloc(lbuf%FOR,nel*bufly%L_FOR)
242 lbuf%FOR = zero
243 CALL my_alloc(lbuf%MOM,nel*bufly%L_MOM)
244 lbuf%MOM = zero
245 CALL my_alloc(lbuf%THK,nel*bufly%L_THK)
246 lbuf%THK = zero
247 CALL my_alloc(lbuf%SMSTR,nel*bufly%L_SMSTR)
248 lbuf%SMSTR = zero
249 CALL my_alloc(lbuf%DMG,nel*bufly%L_DMG)
250 lbuf%DMG = zero
251 CALL my_alloc(lbuf%FORTH,nel*bufly%L_FORTH)
252 lbuf%FORTH = zero
253 CALL my_alloc(lbuf%EINTTH,nel*bufly%L_EINTTH)
254 lbuf%EINTTH = zero
255 CALL my_alloc(lbuf%SEQ,nel*bufly%L_SEQ)
256 lbuf%SEQ = zero
257 CALL my_alloc(lbuf%JAC_I,nel*bufly%L_JAC_I)
258 lbuf%JAC_I = zero
259 CALL my_alloc(lbuf%FAC_YLD,nel*bufly%L_FAC_YLD)
260 lbuf%FAC_YLD = one
261 CALL my_alloc(lbuf%ABURN,nel*bufly%L_ABURN)
262 lbuf%ABURN = zero
263 CALL my_alloc(lbuf%MU,nel*bufly%L_MU)
264 lbuf%MU = zero
265 CALL my_alloc(lbuf%PLANL,nel*bufly%L_PLANL)
266 lbuf%PLANL = zero
267 CALL my_alloc(lbuf%EPSDNL,nel*bufly%L_EPSDNL)
268 lbuf%EPSDNL = zero
269 CALL my_alloc(lbuf%DMGSCL,nel*bufly%L_DMGSCL)
270 lbuf%DMGSCL = one
271 CALL my_alloc(lbuf%TSAIWU,nel*bufly%L_TSAIWU)
272 lbuf%TSAIWU = zero
273
274 CALL my_alloc(lbuf%PIJ,nel*bufly%L_PIJ)
275 lbuf%PIJ = zero
276C-------------initialization even in DP in Starter only---
277 CALL my_alloc(lbuf%VOL0DP,nel)
278 lbuf%VOL0DP = zero
279 ENDDO
280 ENDDO
281 ENDDO
282 IF ( idrape > 0 .AND. (igtyp == 51 .OR. igtyp == 52)) THEN
283 DO it= 1,nptt
284 lbuf_dir => elbuf_tab(ng)%BUFLY(i)%LBUF_DIR(it)
285 CALL my_alloc(lbuf_dir%DIRA,nel*bufly%LY_DIRA)
286 lbuf_dir%DIRA = zero
287 CALL my_alloc(lbuf_dir%DIRB,nel*bufly%LY_DIRB)
288 lbuf_dir%DIRB = zero
289 ENDDO
290 ENDIF
291 ENDDO ! NLAY
292c---
293C
294C layer mean variable (NPG = 1)
295C
296 DO i = 1, nlay
297 bufly => elbuf_tab(ng)%BUFLY(i)
298 IF (npg == 1) THEN
299 ilayer = i
300 IF (nlay > 1) THEN
301 IF (igtyp == 51 .OR. igtyp == 52) THEN
302 nptt = bufly%NPTT
303 DO it=1,nptt
304 lbuf => elbuf_tab(ng)%BUFLY(ilayer)%LBUF(1,1,it)
305 bufly%PLAPT(1:nel*bufly%LY_PLAPT) => lbuf%PLA
306 bufly%SIGPT(1:nel*bufly%LY_SIGPT) => lbuf%SIG
307 ENDDO
308 ELSE
309 lbuf => elbuf_tab(ng)%BUFLY(ilayer)%LBUF(1,1,1)
310 bufly%PLAPT(1:nel*bufly%LY_PLAPT) => lbuf%PLA
311 bufly%SIGPT(1:nel*bufly%LY_SIGPT) => lbuf%SIG
312 ENDIF
313 ELSE
314 IF (igtyp == 51 .OR. igtyp == 52) THEN
315 nptt = bufly%NPTT
316 DO ipt = 1,nptt
317 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,ipt)
318 len1 = 1+(ipt-1)*nel*bufly%LY_PLAPT
319 len2 = ipt*nel*bufly%LY_PLAPT
320 bufly%PLAPT(len1:len2) => lbuf%PLA
321 len1 = 1+(ipt-1)*nel*bufly%LY_SIGPT
322 len2 = ipt*nel*bufly%LY_SIGPT
323 bufly%SIGPT(len1:len2) => lbuf%SIG
324 ENDDO
325 ELSE
326 DO ipt = 1,npt
327 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,ipt)
328 len1 = 1+(ipt-1)*nel*bufly%LY_PLAPT
329 len2 = ipt*nel*bufly%LY_PLAPT
330 bufly%PLAPT(len1:len2) => lbuf%PLA(1:nel*bufly%L_PLA)
331 len1 = 1+(ipt-1)*nel*bufly%LY_SIGPT
332 len2 = ipt*nel*bufly%LY_SIGPT
333 bufly%SIGPT(len1:len2) => lbuf%SIG
334 ENDDO
335 ENDIF
336 ENDIF
337 ENDIF
338 ENDDO
339c-------------------------------------------------
340C Inter layers (ply xfem)
341c-------------------------------------------------
342 DO i = 1, nintlay
343 intlay => elbuf_tab(ng)%INTLAY(i)
344 CALL my_alloc(elbuf_tab(ng)%INTLAY(i)%EINT,nel)
345 elbuf_tab(ng)%INTLAY(i)%EINT = zero
346 CALL my_alloc(elbuf_tab(ng)%INTLAY(i)%COUNT,nel)
347 elbuf_tab(ng)%INTLAY(i)%COUNT = zero
348c
349 DO ir = 1,nptr
350 DO is = 1,npts
351 ilbuf => elbuf_tab(ng)%INTLAY(i)%ILBUF(ir,is)
352 CALL my_alloc(ilbuf%EPS,nel*3)
353 ilbuf%EPS = zero
354 CALL my_alloc (ilbuf%SIG,nel*3)
355 ilbuf%SIG = zero
356 ENDDO
357 ENDDO
358 ENDDO
359c-------------------------------------------------
360C global buffer allocation
361c-------------------------------------------------
362 gbuf => elbuf_tab(ng)%GBUF
363 CALL my_alloc(gbuf%NOFF,nel*gbuf%G_NOFF)
364 elbuf_tab(ng)%GBUF%NOFF = 0
365 CALL my_alloc(gbuf%IERR,nel*gbuf%G_IERR)
366 elbuf_tab(ng)%GBUF%IERR = 0
367 CALL my_alloc(gbuf%GAMA,nel*gbuf%G_GAMA)
368 elbuf_tab(ng)%GBUF%GAMA = zero
369 CALL my_alloc(gbuf%SMSTR,nel*gbuf%G_SMSTR)
370 elbuf_tab(ng)%GBUF%SMSTR = zero
371 CALL my_alloc(gbuf%HOURG,nel*gbuf%G_HOURG)
372 elbuf_tab(ng)%GBUF%HOURG = zero
373 CALL my_alloc(gbuf%TAG22,nel*gbuf%G_TAG22)
374 elbuf_tab(ng)%GBUF%TAG22 = zero
375 CALL my_alloc(gbuf%STRA,nel*gbuf%G_STRA)
376 elbuf_tab(ng)%GBUF%STRA = zero
377 CALL my_alloc(gbuf%STRW,nel*gbuf%G_STRW)
378 elbuf_tab(ng)%GBUF%STRW = zero
379 CALL my_alloc(gbuf%SIGI,nel*gbuf%G_SIGI)
380 elbuf_tab(ng)%GBUF%SIGI = zero
381 CALL my_alloc(gbuf%DMG,nel*gbuf%G_DMG)
382 elbuf_tab(ng)%GBUF%DMG = zero
383 CALL my_alloc(gbuf%UELR,nel*gbuf%G_UELR)
384 elbuf_tab(ng)%GBUF%UELR = zero
385 CALL my_alloc(gbuf%UELR1,nel*gbuf%G_UELR1)
386 elbuf_tab(ng)%GBUF%UELR1 = zero
387 CALL my_alloc(gbuf%DAMDL,nel*gbuf%G_DAMDL)
388 elbuf_tab(ng)%GBUF%DAMDL = zero
389 CALL my_alloc(gbuf%FOR,nel*gbuf%G_FOR)
390 elbuf_tab(ng)%GBUF%FOR = zero
391 CALL my_alloc(gbuf%MOM,nel*gbuf%G_MOM)
392 elbuf_tab(ng)%GBUF%MOM = zero
393 CALL my_alloc(gbuf%THK,nel*gbuf%G_THK)
394 elbuf_tab(ng)%GBUF%THK = zero
395 CALL my_alloc(gbuf%THK_I,nel*gbuf%G_THK_I)
396 elbuf_tab(ng)%GBUF%THK_I = zero
397 CALL my_alloc(gbuf%JAC_I,nel*gbuf%G_JAC_I)
398 elbuf_tab(ng)%GBUF%JAC_I = zero
399 CALL my_alloc(gbuf%DT,nel*gbuf%G_DT)
400 elbuf_tab(ng)%GBUF%DT = zero
401 CALL my_alloc(gbuf%ISMS,nel*gbuf%G_ISMS)
402 elbuf_tab(ng)%GBUF%ISMS = 0
403 CALL my_alloc(gbuf%STRHG,nel*gbuf%G_STRHG)
404 elbuf_tab(ng)%GBUF%STRHG = zero
405 CALL my_alloc(gbuf%BPRELD,nel*gbuf%G_BPRELD)
406 elbuf_tab(ng)%GBUF%BPRELD = zero
407 CALL my_alloc(gbuf%COR_NF,nel*gbuf%G_COR_NF)
408 elbuf_tab(ng)%GBUF%COR_NF = zero
409 CALL my_alloc(gbuf%COR_FR,nel*gbuf%G_COR_FR)
410 elbuf_tab(ng)%GBUF%COR_FR = zero
411 CALL my_alloc(gbuf%COR_XR,nel*gbuf%G_COR_XR)
412 elbuf_tab(ng)%GBUF%COR_XR = zero
413 CALL my_alloc(gbuf%MAXFRAC,nel*gbuf%G_MAXFRAC)
414 elbuf_tab(ng)%GBUF%MAXFRAC = zero
415 CALL my_alloc(gbuf%MAXEPS,nel*gbuf%G_MAXEPS)
416 elbuf_tab(ng)%GBUF%MAXEPS = zero
417 CALL my_alloc(gbuf%GAMA_R,nel*gbuf%G_GAMA_R)
418 elbuf_tab(ng)%GBUF%GAMA_R = zero
419C Allocate Orthotropic Beta angle (dyna input format)
420 CALL my_alloc(gbuf%BETAORTH,nel*gbuf%G_BETAORTH)
421 elbuf_tab(ng)%GBUF%BETAORTH= zero
422 CALL my_alloc(gbuf%AMU,nel*gbuf%G_AMU)
423 elbuf_tab(ng)%GBUF%AMU = zero
424 CALL my_alloc(gbuf%SH_IOFFSET,nel*gbuf%G_SH_IOFFSET)
425 elbuf_tab(ng)%GBUF%SH_IOFFSET = 0
426 CALL my_alloc(gbuf%EINT_DISTOR,nel*gbuf%G_EINT_DISTOR)
427 elbuf_tab(ng)%GBUF%EINT_DISTOR = zero
428 CALL my_alloc(gbuf%FOR_G,nel*gbuf%G_FOR_G)
429 elbuf_tab(ng)%GBUF%FOR_G = zero
430
431c
432 IF (npg == 1) THEN
433 elbuf_tab(ng)%GBUF%FORPG => gbuf%FOR
434 elbuf_tab(ng)%GBUF%MOMPG => gbuf%MOM
435C
436C ELBUF_TAB(NG)%GBUF%FORPGPINCH => GBUF%FORPINCH ! [PM] add later
437C ELBUF_TAB(NG)%GBUF%MOMPGPINCH => GBUF%MOMPINCH ! [PM] add later
438C ELBUF_TAB(NG)%GBUF%EPGPINCHXZ => GBUF%EPGPINCHXZ ! [PM] add later
439C ELBUF_TAB(NG)%GBUF%EPGPINCHYZ => GBUF%EPGPINCHYZ ! [PM] add later
440C ELBUF_TAB(NG)%GBUF%EPGPINCHZZ => GBUF%EPGPINCHZZ ! [PM] add later
441C
442 elbuf_tab(ng)%GBUF%STRWPG=> gbuf%STRW
443 IF (gbuf%G_STRPG<=gbuf%G_STRA) THEN
444 elbuf_tab(ng)%GBUF%STRPG => gbuf%STRA
445 ELSE
446 CALL my_alloc(elbuf_tab(ng)%GBUF%STRPG,nel*gbuf%G_STRPG)
447 elbuf_tab(ng)%GBUF%STRPG = zero
448 END IF
449 elbuf_tab(ng)%GBUF%FORPG_G=> gbuf%FOR_G
450 ELSEIF (npg > 1) THEN
451 CALL my_alloc(elbuf_tab(ng)%GBUF%FORPG,nel*gbuf%G_FORPG)
452 elbuf_tab(ng)%GBUF%FORPG = zero
453 CALL my_alloc(elbuf_tab(ng)%GBUF%MOMPG,nel*gbuf%G_MOMPG)
454 elbuf_tab(ng)%GBUF%MOMPG = zero
455C
456 CALL my_alloc(elbuf_tab(ng)%GBUF%FORPGPINCH,nel*gbuf%G_FORPGPINCH)
457 elbuf_tab(ng)%GBUF%FORPGPINCH = zero
458 CALL my_alloc(elbuf_tab(ng)%GBUF%MOMPGPINCH,nel*gbuf%G_MOMPGPINCH)
459 elbuf_tab(ng)%GBUF%MOMPGPINCH = zero
460 CALL my_alloc(elbuf_tab(ng)%GBUF%EPGPINCHXZ,nel*gbuf%G_EPGPINCHXZ)
461 elbuf_tab(ng)%GBUF%EPGPINCHXZ = zero
462 CALL my_alloc(elbuf_tab(ng)%GBUF%EPGPINCHYZ,nel*gbuf%G_EPGPINCHYZ)
463 elbuf_tab(ng)%GBUF%EPGPINCHYZ = zero
464 CALL my_alloc(elbuf_tab(ng)%GBUF%EPGPINCHZZ,nel*gbuf%G_EPGPINCHZZ)
465 elbuf_tab(ng)%GBUF%EPGPINCHZZ = zero
466C
467 CALL my_alloc(elbuf_tab(ng)%GBUF%STRPG,nel*gbuf%G_STRPG)
468 elbuf_tab(ng)%GBUF%STRPG = zero
469 CALL my_alloc(elbuf_tab(ng)%GBUF%STRWPG,nel*gbuf%G_STRWPG)
470 elbuf_tab(ng)%GBUF%STRWPG = zero
471 CALL my_alloc(elbuf_tab(ng)%GBUF%FORPG_G,nel*gbuf%G_FORPG_G)
472 elbuf_tab(ng)%GBUF%FORPG_G = zero
473 ENDIF
474c
475c-------------------------------------------------
476C IF (NPT == 1) THEN ! NPT = 1 ! global variables are pointing to local ones
477 IF (npttot == 1) THEN ! NPTTOT = 1 ! global variables are pointing to local ones, BEAM3 not included
478 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)
479c
480 elbuf_tab(ng)%GBUF%BFRAC => lbuf%BFRAC
481 elbuf_tab(ng)%GBUF%OFF => lbuf%OFF
482 elbuf_tab(ng)%GBUF%EINT => lbuf%EINT
483 elbuf_tab(ng)%GBUF%EINS => lbuf%EINS
484 elbuf_tab(ng)%GBUF%RHO => lbuf%RHO
485 elbuf_tab(ng)%GBUF%QVIS => lbuf%QVIS
486 elbuf_tab(ng)%GBUF%DELTAX => lbuf%DELTAX
487 elbuf_tab(ng)%GBUF%VOL => lbuf%VOL
488 elbuf_tab(ng)%GBUF%EPSD => lbuf%EPSD
489 elbuf_tab(ng)%GBUF%EPSQ => lbuf%EPSQ
490 elbuf_tab(ng)%GBUF%PLA => lbuf%PLA
491 elbuf_tab(ng)%GBUF%WPLA => lbuf%WPLA
492 elbuf_tab(ng)%GBUF%TEMP => lbuf%TEMP
493 elbuf_tab(ng)%GBUF%TB => lbuf%TB
494 elbuf_tab(ng)%GBUF%RK => lbuf%RK
495 elbuf_tab(ng)%GBUF%RE => lbuf%RE
496 elbuf_tab(ng)%GBUF%SIG => lbuf%SIG
497 elbuf_tab(ng)%GBUF%FORTH => lbuf%FORTH
498 elbuf_tab(ng)%GBUF%EINTTH => lbuf%EINTTH
499 elbuf_tab(ng)%GBUF%SEQ => lbuf%SEQ
500 elbuf_tab(ng)%GBUF%ABURN => lbuf%ABURN
501 elbuf_tab(ng)%GBUF%MU => lbuf%MU
502 ELSE ! NPT > 1 OR BEAM3
503 CALL my_alloc(elbuf_tab(ng)%GBUF%BFRAC,nel*gbuf%G_BFRAC)
504 elbuf_tab(ng)%GBUF%BFRAC = zero
505 CALL my_alloc(elbuf_tab(ng)%GBUF%OFF,nel*gbuf%G_OFF)
506 elbuf_tab(ng)%GBUF%OFF = one
507 CALL my_alloc(elbuf_tab(ng)%GBUF%EINT,nel*gbuf%G_EINT)
508 elbuf_tab(ng)%GBUF%EINT = zero
509 CALL my_alloc(elbuf_tab(ng)%GBUF%EINS,nel*gbuf%G_EINS)
510 elbuf_tab(ng)%GBUF%EINS = zero
511 CALL my_alloc(elbuf_tab(ng)%GBUF%RHO,nel*gbuf%G_RHO)
512 elbuf_tab(ng)%GBUF%RHO = zero
513 CALL my_alloc(elbuf_tab(ng)%GBUF%QVIS,nel*gbuf%G_QVIS)
514 elbuf_tab(ng)%GBUF%QVIS = zero
515 CALL my_alloc(elbuf_tab(ng)%GBUF%DELTAX,nel*gbuf%G_DELTAX)
516 elbuf_tab(ng)%GBUF%DELTAX = zero
517 CALL my_alloc(elbuf_tab(ng)%GBUF%VOL,nel*gbuf%G_VOL)
518 elbuf_tab(ng)%GBUF%VOL = zero
519 CALL my_alloc(elbuf_tab(ng)%GBUF%EPSD,nel*gbuf%G_EPSD)
520 elbuf_tab(ng)%GBUF%EPSD = zero
521 CALL my_alloc(elbuf_tab(ng)%GBUF%EPSQ,nel*gbuf%G_EPSQ)
522 elbuf_tab(ng)%GBUF%EPSQ = zero
523 CALL my_alloc(elbuf_tab(ng)%GBUF%PLA,nel*gbuf%G_PLA)
524 elbuf_tab(ng)%GBUF%PLA = zero
525 CALL my_alloc(elbuf_tab(ng)%GBUF%WPLA,nel*gbuf%G_WPLA)
526 elbuf_tab(ng)%GBUF%WPLA = zero
527 CALL my_alloc(elbuf_tab(ng)%GBUF%TEMP,nel*gbuf%G_TEMP)
528 elbuf_tab(ng)%GBUF%TEMP = zero
529 CALL my_alloc(elbuf_tab(ng)%GBUF%TB,nel*gbuf%G_TB)
530 elbuf_tab(ng)%GBUF%TB = -ep21
531 CALL my_alloc(elbuf_tab(ng)%GBUF%RK,nel*gbuf%G_RK)
532 elbuf_tab(ng)%GBUF%RK = zero
533 CALL my_alloc(elbuf_tab(ng)%GBUF%RE,nel*gbuf%G_RE)
534 elbuf_tab(ng)%GBUF%RE = zero
535 CALL my_alloc(elbuf_tab(ng)%GBUF%SIG,nel*gbuf%G_SIG)
536 elbuf_tab(ng)%GBUF%SIG = zero
537 CALL my_alloc(elbuf_tab(ng)%GBUF%FORTH,nel*gbuf%G_FORTH)
538 elbuf_tab(ng)%GBUF%FORTH = zero
539 CALL my_alloc(elbuf_tab(ng)%GBUF%EINTTH,nel*gbuf%G_EINTTH)
540 elbuf_tab(ng)%GBUF%EINTTH = zero
541 CALL my_alloc(elbuf_tab(ng)%GBUF%SEQ,nel*gbuf%G_SEQ)
542 elbuf_tab(ng)%GBUF%SEQ = zero
543 CALL my_alloc(elbuf_tab(ng)%GBUF%ABURN,nel*gbuf%G_ABURN)
544 elbuf_tab(ng)%GBUF%ABURN = zero
545 CALL my_alloc(elbuf_tab(ng)%GBUF%MU,nel*gbuf%G_MU)
546 elbuf_tab(ng)%GBUF%MU = zero
547 ENDIF ! NPT
548c---
549 ALLOCATE(elbuf_tab(ng)%GBUF%FILL(nel*gbuf%G_FILL),stat=stat)
550 elbuf_tab(ng)%GBUF%FILL = one
551
552c---
553C 1-D elements (TRUSS, BEAM, SPRING, NSTRAND)
554c---
555 IF(igtyp == 3 .and. ity == 5) THEN
556 ALLOCATE (gbuf%DMGSCL(nel*gbuf%G_DMGSCL) ,stat=stat)
557 gbuf%DMGSCL = one
558 ENDIF
559 ALLOCATE (gbuf%AREA(nel*gbuf%G_AREA) ,stat=stat)
560 gbuf%AREA = zero
561 ALLOCATE (gbuf%SKEW(nel*gbuf%G_SKEW) ,stat=stat)
562 gbuf%SKEW = zero
563 ALLOCATE (gbuf%LENGTH(nel*gbuf%G_LENGTH) ,stat=stat)
564 gbuf%LENGTH = zero
565 ALLOCATE (gbuf%TOTDEPL(nel*gbuf%G_TOTDEPL) ,stat=stat)
566 gbuf%TOTDEPL = zero
567 ALLOCATE (gbuf%TOTROT(nel*gbuf%G_TOTROT) ,stat=stat)
568 gbuf%TOTROT = zero
569 ALLOCATE (gbuf%FOREP(nel*gbuf%G_FOREP) ,stat=stat)
570 gbuf%FOREP = zero
571 ALLOCATE (gbuf%MOMEP(nel*gbuf%G_MOMEP) ,stat=stat)
572 gbuf%MOMEP = zero
573 ALLOCATE (gbuf%DEP_IN_TENS(nel*gbuf%G_DEP_IN_TENS) ,stat=stat)
574 gbuf%DEP_IN_TENS = zero
575 ALLOCATE (gbuf%DEP_IN_COMP(nel*gbuf%G_DEP_IN_COMP) ,stat=stat)
576 gbuf%DEP_IN_COMP = zero
577 ALLOCATE (gbuf%ROT_IN_TENS(nel*gbuf%G_ROT_IN_TENS) ,stat=stat)
578 gbuf%ROT_IN_TENS = zero
579 ALLOCATE (gbuf%ROT_IN_COMP(nel*gbuf%G_ROT_IN_COMP) ,stat=stat)
580 gbuf%ROT_IN_COMP = zero
581 ALLOCATE (gbuf%POSX(nel*gbuf%G_POSX) ,stat=stat)
582 gbuf%POSX = zero
583 ALLOCATE (gbuf%POSY(nel*gbuf%G_POSY) ,stat=stat)
584 gbuf%POSY = zero
585 ALLOCATE (gbuf%POSZ(nel*gbuf%G_POSZ) ,stat=stat)
586 gbuf%POSZ = zero
587 ALLOCATE (gbuf%POSXX(nel*gbuf%G_POSXX) ,stat=stat)
588 gbuf%POSXX = zero
589 ALLOCATE (gbuf%POSYY(nel*gbuf%G_POSYY) ,stat=stat)
590 gbuf%POSYY = zero
591 ALLOCATE (gbuf%POSZZ(nel*gbuf%G_POSZZ) ,stat=stat)
592 gbuf%POSZZ = zero
593 ALLOCATE (gbuf%YIELD(nel*gbuf%G_YIELD) ,stat=stat)
594 gbuf%YIELD = zero
595 ALLOCATE (gbuf%LENGTH_ERR(nel*gbuf%G_LENGTH_ERR) ,stat=stat)
596 gbuf%LENGTH_ERR = zero
597 ALLOCATE (gbuf%DV(nel*gbuf%G_DV) ,stat=stat)
598 gbuf%DV = zero
599 ALLOCATE (gbuf%DFS(nel*gbuf%G_DFS) ,stat=stat)
600 gbuf%DFS = zero
601 ALLOCATE (gbuf%SKEW_ERR(nel*gbuf%G_SKEW_ERR) ,stat=stat)
602 gbuf%SKEW_ERR = zero
603 ALLOCATE (gbuf%E6(nel*gbuf%G_E6) ,stat=stat)
604 gbuf%E6 = zero
605 ALLOCATE (gbuf%RUPTCRIT(nel*gbuf%G_RUPTCRIT) ,stat=stat)
606 gbuf%RUPTCRIT = zero
607 ALLOCATE (gbuf%MASS(nel*gbuf%G_MASS) ,stat=stat)
608 gbuf%MASS = zero
609 ALLOCATE (gbuf%V_REPCVT(nel*gbuf%G_V_REPCVT) ,stat=stat)
610 gbuf%V_REPCVT = zero
611 ALLOCATE (gbuf%VR_REPCVT(nel*gbuf%G_VR_REPCVT) ,stat=stat)
612 gbuf%VR_REPCVT = zero
613 ALLOCATE (gbuf%VAR(nel*gbuf%G_NUVAR) ,stat=stat)
614 gbuf%VAR = zero
615 ALLOCATE (gbuf%VARN(nel*gbuf%G_NUVARN) ,stat=stat)
616 gbuf%VARN = zero
617 ALLOCATE (gbuf%DEFINI(nel*gbuf%G_DEFINI) ,stat=stat)
618 gbuf%DEFINI = zero
619 ALLOCATE (gbuf%FORINI(nel*gbuf%G_FORINI) ,stat=stat)
620 gbuf%FORINI = zero
621 ALLOCATE (gbuf%INIFRIC(nel*gbuf%G_INIFRIC) ,stat=stat)
622 gbuf%INIFRIC = zero
623c---
624 ALLOCATE (gbuf%DT_PITER(nel*gbuf%G_DT_PITER) ,stat=stat)
625 gbuf%DT_PITER = zero
626 ALLOCATE (gbuf%IDT_TSH(nel*gbuf%G_IDT_TSH) ,stat=stat)
627 gbuf%IDT_TSH = 1
628C --- needed for batoz shell and /heat/mat
629 IF (npg == 1) THEN
630 elbuf_tab(ng)%GBUF%TEMPG => gbuf%TEMP
631 ELSEIF (npg > 1) THEN
632 CALL my_alloc(elbuf_tab(ng)%GBUF%TEMPG,nel*gbuf%G_TEMPG)
633 elbuf_tab(ng)%GBUF%TEMPG = zero
634 ENDIF
635C
636 ALLOCATE (gbuf%SKEW_ID(nel*gbuf%G_SKEW_ID) ,stat=stat)
637 gbuf%SKEW_ID = 0
638 ALLOCATE (gbuf%YIELD_IN_COMP(nel*gbuf%G_YIELD_IN_COMP) ,stat=stat)
639 gbuf%YIELD_IN_COMP = zero
640 ALLOCATE (gbuf%XXOLD_IN_COMP(nel*gbuf%G_XXOLD_IN_COMP) ,stat=stat)
641 gbuf%XXOLD_IN_COMP = zero
642c---
643C seatbelt elements
644c---
645 ALLOCATE (gbuf%SLIPRING_ID(nel*gbuf%G_SLIPRING_ID) ,stat=stat)
646 gbuf%SLIPRING_ID = 0
647 ALLOCATE (gbuf%SLIPRING_FRAM_ID(nel*gbuf%G_SLIPRING_FRAM_ID) ,stat=stat)
648 gbuf%SLIPRING_FRAM_ID = 0
649 ALLOCATE (gbuf%SLIPRING_STRAND(nel*gbuf%G_SLIPRING_STRAND) ,stat=stat)
650 gbuf%SLIPRING_STRAND = 0
651 ALLOCATE (gbuf%RETRACTOR_ID(nel*gbuf%G_RETRACTOR_ID) ,stat=stat)
652 gbuf%RETRACTOR_ID = 0
653 ALLOCATE (gbuf%RINGSLIP(nel*gbuf%G_RINGSLIP) ,stat=stat)
654 gbuf%RINGSLIP = zero
655 ALLOCATE (gbuf%ADD_NODE(nel*gbuf%G_ADD_NODE) ,stat=stat)
656 gbuf%ADD_NODE = 0
657 ALLOCATE (gbuf%UPDATE(nel*gbuf%G_UPDATE) ,stat=stat)
658 gbuf%UPDATE = 0
659 ALLOCATE (gbuf%FRAM_FACTOR(nel*gbuf%G_FRAM_FACTOR) ,stat=stat)
660 gbuf%FRAM_FACTOR = zero
661 ALLOCATE (gbuf%INTVAR(nel*gbuf%G_INTVAR) ,stat=stat)
662 gbuf%INTVAR = zero
663c---
664C ---H3D/TMAX in BUFLEN
665c---
666 ALLOCATE (gbuf%TM_YIELD(nel*gbuf%G_TM_YIELD) ,stat=stat)
667 gbuf%TM_YIELD = zero
668 ALLOCATE (gbuf%TM_SEQ(nel*gbuf%G_TM_SEQ) ,stat=stat)
669 gbuf%TM_SEQ = zero
670 ALLOCATE (gbuf%TM_EINT(nel*gbuf%G_TM_EINT) ,stat=stat)
671 gbuf%TM_EINT = zero
672 ALLOCATE (gbuf%TM_DMG(nel*gbuf%G_TM_DMG) ,stat=stat)
673 gbuf%TM_DMG = zero
674 ALLOCATE (gbuf%TM_SIG1(nel*gbuf%G_TM_SIG) ,stat=stat)
675 gbuf%TM_SIG1 = zero
676 ALLOCATE (gbuf%TM_STRA1(nel*gbuf%G_TM_STRA) ,stat=stat)
677 gbuf%TM_STRA1 = zero
678 ALLOCATE (gbuf%TM_SIG3(nel*gbuf%G_TM_SIG) ,stat=stat)
679 gbuf%TM_SIG3 = zero
680 ALLOCATE (gbuf%TM_STRA3(nel*gbuf%G_TM_STRA) ,stat=stat)
681 gbuf%TM_STRA3 = zero
682
683 IF (stat /= 0) THEN
684 CALL ancmsg(msgid=727,msgtype=msgerror,anmode=anstop,c1='ELEMENT BUFFER')
685 ENDIF
686
687
688C-----------------------------------------------
689 RETURN
690 END SUBROUTINE allocbuf_auto
#define min(a, b)
Definition macros.h:20
subroutine allocbuf_auto(elbuf_tab, nlay, nptr, npts, nptt, nintlay, nel, npt, ng, ngroup, ity, igtyp, nummat, mat_param)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
Definition message.F:895