OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
allocbuf_auto.F File Reference
#include "implicit_f.inc"
#include "com_xfem1.inc"
#include "scr17_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine allocbuf_auto (elbuf_str, buflen, npt, ity, isnod, newlen, inloc, idamp_freq_range)

Function/Subroutine Documentation

◆ allocbuf_auto()

subroutine allocbuf_auto ( type(elbuf_struct_), target elbuf_str,
integer buflen,
integer npt,
integer ity,
integer isnod,
integer newlen,
integer inloc,
integer, intent(in) idamp_freq_range )

Definition at line 34 of file allocbuf_auto.F.

36C-----------------------------------------------
37C M o d u l e s
38C-----------------------------------------------
39 USE elbufdef_mod
40 USE h3d_inc_mod
41C-----------------------------------------------
42C I m p l i c i t T y p e s
43C-----------------------------------------------
44#include "implicit_f.inc"
45C-----------------------------------------------
46C C o m m o n B l o c k s
47C-----------------------------------------------
48#include "com_xfem1.inc"
49#include "scr17_c.inc"
50C-----------------------------------------------
51C D u m m y A r g u m e n t s
52C-----------------------------------------------
53 INTEGER BUFLEN,NPT,ITY,ISNOD,NEWLEN,INLOC
54 INTEGER, INTENT(IN) :: IDAMP_FREQ_RANGE
55 TYPE(ELBUF_STRUCT_) , TARGET :: ELBUF_STR
56C-----------------------------------------------
57C L o c a l V a r i a b l e s
58C-----------------------------------------------
59 INTEGER I,K,IL,IR,IS,IT,IAD,ERR,NUVAR,NVARTMP,NVARTMP_EOS,IGTYP,IXFEM,NLAY,
60 . NINTLAY,NPTR,NPTS,NPTT,NEL,NPG,IPT,LEN1,LEN2,ILAW,IMAT,IEOS,NONL,
61 . IVISC,IPORO,NFAIL,NVAR_MAT,NVAR_EOS,NVAR_VISC,NVAR_LOC,NVAR_LAY,NPTTOT,IADP,
62 . IDRAPE
63 INTEGER ! global variables
64 . G_GAMA,G_SIG,G_OFF,G_NOFF,G_EINT,G_EINS,G_TEMP,
65 . G_RHO,G_PLA,G_VOL,G_EPSD,G_QVIS,G_DELTAX,G_TB,G_RK,G_RE,G_WPLA,
66 . G_SMSTR,G_HOURG,G_BFRAC,G_THK,G_FOR,G_MOM,G_TAG22,G_STRA,G_SIGI,
67 . G_DMG,G_FORPG,G_MOMPG,G_STRPG,G_UELR,G_UELR1,G_EPSQ,G_IERR,
68 . G_DAMDL,G_FORTH,G_EINTTH,G_FILL,G_SEQ,G_STRW,G_STRWPG,G_THK_I,
69 . G_JAC_I,G_AREA,G_SKEW,G_LENGTH,G_TOTDEPL,G_TOTROT,G_FOREP,G_MOMEP,
70 . G_DEP_IN_TENS,G_DEP_IN_COMP,G_ROT_IN_TENS,G_ROT_IN_COMP,
71 . G_POSX,G_POSY,G_POSZ,G_POSXX,G_POSYY,G_POSZZ,G_YIELD,G_LENGTH_ERR,
72 . G_DV,G_DFS,G_SKEW_ERR,G_E6,G_RUPTCRIT,G_MASS,G_V_REPCVT,
73 . G_VR_REPCVT,G_NUVAR,G_NUVARN,G_INIFRIC,G_DT,G_ISMS,G_STRHG,G_ETOTSH,
74 . G_BPRELD,G_ABURN,G_MU,G_PLANL,G_EPSDNL,G_DT_PITER_OLD,G_DT_PITER,G_TEMPG,
75 . G_COR_NF,G_COR_FR,G_COR_XR,G_DEFINI,G_FORINI,G_IDT_TSH,
76 . G_FORPGPINCH,G_MOMPGPINCH,G_EPGPINCHXZ,G_EPGPINCHYZ,G_EPGPINCHZZ,
77 . G_SKEW_ID,G_MAXFRAC,G_MAXEPS,G_GAMA_R,G_SLIPRING_ID,G_SLIPRING_STRAND,G_RETRACTOR_ID,
78 . G_RINGSLIP,G_ADD_NODE,G_UPDATE,G_INTVAR,G_BETAORTH,G_AMU,G_SLIPRING_FRAM_ID,G_FRAM_FACTOR,
79 . G_TM_YIELD,G_TM_SEQ,G_TM_EINT,G_TM_DMG,G_TM_SIG,G_TM_STRA,G_TSAIWU,G_DMGSCL,
80 . G_SH_IOFFSET,G_EINT_DISTOR,G_FOR_G,G_FORPG_G,G_YIELD_IN_COMP,G_XXOLD_IN_COMP
81 INTEGER ! layer variables
82 . LY_DMG,LY_GAMA,LY_DIRA,LY_DIRB,LY_CRKDIR,LY_PLAPT,LY_SIGPT,
83 . LY_HOURG,LY_UELR,LY_UELR1,LY_OFFPG,LY_OFF,LEN_PLAPT,LEN_SIGPT
84 INTEGER ! interlayer variables
85 . LY_EINT,LY_COUNT
86 INTEGER ! local variables
87 . L_OFF,L_EINT,L_EINS,L_RHO,L_DP_DRHO,L_VOL,L_PLA,L_TB,L_TEMP,
88 . L_RK,L_RE,L_VK,L_ROB,L_SIG,L_SIGV,L_SIGL,L_SIGA,L_SIGD,L_SIGB,
89 . L_SIGC,L_SIGF,L_STRA,L_EPSA,L_EPSD,L_EPSQ,L_EPSF,L_CRAK,L_WPLA,
90 . L_ANG,L_SF,L_QVIS,L_DELTAX,L_GAMA,
91 . L_DAM,L_DSUM,L_DGLO,L_EPE,L_EPC,L_XST,L_SSP,L_Z,L_FRAC,L_VISC,
92 . L_THK,L_FOR,L_MOM,L_EPS,L_SMSTR,L_BFRAC,L_DMG,L_FORTH,L_EINTTH,
93 . L_SEQ,L_SIGPLY,L_JAC_I,L_FAC_YLD,L_ABURN,L_MU,L_PLANL,L_EPSDNL,
94 . L_DMGSCL,L_PIJ,L_VOL0DP,L_TSAIWU
95 INTEGER ! failure variables
96 . LF_DAM,LF_DAMMX,LF_DAMINI,LF_TDEL,LF_INDX,LF_OFF
97 my_real,
98 . ALLOCATABLE, DIMENSION(:) :: rbuf
99
100 DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: DP_RBUF
101 INTEGER SDP_RBUF
102
103
104 TYPE(BUF_MAT_) , POINTER :: MATBUF
105 TYPE(BUF_LAY_) , POINTER :: BUFLY
106 TYPE(BUF_INTLAY_) , POINTER :: INTLAY
107 TYPE(BUF_VISC_) , POINTER :: VISCBUF
108 TYPE(G_BUFEL_) , POINTER :: GBUF
109 TYPE(L_BUFEL_) , POINTER :: LBUF
110 TYPE(BUF_INTLOC_) , POINTER :: ILBUF
111 TYPE(FAIL_LOC_) , POINTER :: FLOC
112 TYPE(BUF_NLOC_) , POINTER :: BUFNL
113 TYPE(BUF_NLOCTS_) , POINTER :: BUFNLTS
114 TYPE(L_BUFEL_DIR_) , POINTER :: LBUF_DIR
115
116
117 ly_sigpt = 0
118 l_vol0dp = 0
119 npg = 0
120 ly_plapt = 0
121 npttot = 0
122c-------------------------------------------------
123C allocation of sub-structures of the element buffer
124C=======================================================================
125c------ Allocate and read element data from restart
126 ALLOCATE (rbuf(buflen) ,stat=err)
127 CALL read_db(rbuf, buflen)
128c-------------------------------------------------
129C read element buffer
130c-------------------------------------------------
131 iad = 0
132C part of DP in elbuf
133 sdp_rbuf = 0
134c-----
135 igtyp = nint(rbuf(iad+1))
136 iad = iad+1
137 nel = nint(rbuf(iad+1))
138 iad = iad+1
139 nlay = nint(rbuf(iad+1))
140 iad = iad+1
141 nintlay= nint(rbuf(iad+1))
142 iad = iad+1
143 nptr = nint(rbuf(iad+1))
144 iad = iad+1
145 npts = nint(rbuf(iad+1))
146 iad = iad+1
147 nptt = nint(rbuf(iad+1))
148 iad = iad+1
149 ixfem = nint(rbuf(iad+1))
150 iad = iad+1
151 nxel = nint(rbuf(iad+1))
152 iad = iad+1
153 idrape = nint(rbuf(iad+1))
154 iad = iad+1
155c-------------------------------------------------
156 elbuf_str%IGTYP = igtyp
157 elbuf_str%NEL = nel
158 elbuf_str%NLAY = nlay
159 elbuf_str%NINTLAY= nintlay
160 elbuf_str%NPTR = nptr
161 elbuf_str%NPTS = npts
162 elbuf_str%NPTT = nptt
163 elbuf_str%IXFEM = ixfem
164 elbuf_str%NXEL = nxel
165 elbuf_str%IDRAPE = idrape
166 npt = nlay*nptr*npts*nptt
167c-------------------------------------------------
168 IF (ity == 1 .OR. ity == 2 .OR. ity == 51 .OR. ity == 101) THEN
169 npg = nptr*npts*nptt
170 npttot = npt
171 ELSEIF (ity == 3 .OR. ity == 7) THEN
172 npg = nptr*npts
173 npttot = 0 ! filled below
174 ELSEIF (ity == 4 .OR. ity == 5 .OR. ity == 6 .OR. ity == 100) THEN
175 npg = 0
176 npttot = 0
177 ENDIF
178c---------------------------------------------------
179C Damping parameters for frequency range
180c---------------------------------------------------
181 IF (idamp_freq_range > 0) THEN
182 ALLOCATE (elbuf_str%DAMP_RANGE%ALPHA(3) ,stat=err)
183 ALLOCATE (elbuf_str%DAMP_RANGE%TAU(3) ,stat=err)
184 elbuf_str%DAMP_RANGE%ALPHA(1:3) = rbuf(iad+1:iad+3)
185 elbuf_str%DAMP_RANGE%TAU(1:3) = rbuf(iad+4:iad+6)
186 iad = iad + 6
187 ENDIF
188c-------------------------------------------------
189 ALLOCATE (elbuf_str%BUFLY(nlay) ,stat=err)
190C
191C moved below because of various NPTT through each layer for IGTYP = 51
192C
193C DO IL = 1, NLAY
194C ALLOCATE(ELBUF_STR%BUFLY(IL)%LBUF(NPTR,NPTS,NPTT),STAT=ERR)
195C ALLOCATE(ELBUF_STR%BUFLY(IL)%MAT (NPTR,NPTS,NPTT),STAT=ERR)
196C ALLOCATE(ELBUF_STR%BUFLY(IL)%FAIL(NPTR,NPTS,NPTT),STAT=ERR)
197C ALLOCATE(ELBUF_STR%BUFLY(IL)%PROP(NPTR,NPTS,NPTT),STAT=ERR)
198C ALLOCATE(ELBUF_STR%BUFLY(IL)%EOS (NPTR,NPTS,NPTT),STAT=ERR)
199C ALLOCATE(ELBUF_STR%BUFLY(IL)%VISC(NPTR,NPTS,NPTT),STAT=ERR)
200C ALLOCATE(ELBUF_STR%BUFLY(IL)%PORO(NPTR,NPTS,NPTT),STAT=ERR)
201C ENDDO
202c-------------------------------------------------
203 ALLOCATE (elbuf_str%INTLAY(nintlay) ,stat=err)
204 DO il = 1, nintlay
205 ALLOCATE(elbuf_str%INTLAY(il)%ILBUF(nptr,npts),stat=err)
206 ALLOCATE(elbuf_str%INTLAY(il)%MAT (nptr,npts),stat=err)
207 ALLOCATE(elbuf_str%INTLAY(il)%FAIL (nptr,npts),stat=err)
208 ENDDO
209c-------------------------------------------------
210C LAYER VARIABLES
211c-------------------------------------------------
212 DO il = 1,elbuf_str%NLAY
213C Layer parameters : NPAR_LAY = 13
214c
215 bufly => elbuf_str%BUFLY(il)
216c
217 ilaw = nint(rbuf(iad+1))
218 iad = iad+1
219 imat = nint(rbuf(iad+1))
220 iad = iad+1
221 ieos = nint(rbuf(iad+1))
222 iad = iad+1
223 ivisc = nint(rbuf(iad+1))
224 iad = iad+1
225 iporo = nint(rbuf(iad+1))
226 iad = iad+1
227 nfail = nint(rbuf(iad+1))
228 iad = iad+1
229 nvar_mat = nint(rbuf(iad+1))
230 iad = iad+1
231 nvar_eos = nint(rbuf(iad+1))
232 iad = iad+1
233 nvartmp = nint(rbuf(iad+1))
234 iad = iad+1
235 nvartmp_eos = nint(rbuf(iad+1))
236 iad = iad+1
237 nvar_visc= nint(rbuf(iad+1))
238 iad = iad+1
239 nvar_loc = nint(rbuf(iad+1))
240 iad = iad+1
241 nvar_lay = nint(rbuf(iad+1))
242 iad = iad+1
243 nptt = nint(rbuf(iad+1))
244 iad = iad+1
245c
246c--- layer variable lengths (BUFLY%NVAR_LAY = 6
247C
248 ly_dmg = nint(rbuf(iad+1))
249 iad = iad+1
250 ly_gama = nint(rbuf(iad+1))
251 iad = iad+1
252 ly_dira = nint(rbuf(iad+1))
253 iad = iad+1
254 ly_dirb = nint(rbuf(iad+1))
255 iad = iad+1
256 ly_crkdir= nint(rbuf(iad+1))
257 iad = iad+1
258 ly_plapt = nint(rbuf(iad+1))
259 iad = iad+1
260 ly_sigpt = nint(rbuf(iad+1))
261 iad = iad+1
262 ly_hourg = nint(rbuf(iad+1))
263 iad = iad+1
264 ly_uelr = nint(rbuf(iad+1))
265 iad = iad+1
266 ly_uelr1 = nint(rbuf(iad+1))
267 iad = iad+1
268 ly_offpg = nint(rbuf(iad+1))
269 iad = iad+1
270 ly_off = nint(rbuf(iad+1))
271 iad = iad+1
272c
273C local variable lengths : NVAR_LOC = 48
274c
275 l_off = nint(rbuf(iad+1))
276 iad = iad+1
277 l_gama = nint(rbuf(iad+1))
278 iad = iad+1
279 l_stra = nint(rbuf(iad+1))
280 iad = iad+1
281 l_frac = nint(rbuf(iad+1))
282 iad = iad+1
283 l_bfrac = nint(rbuf(iad+1))
284 iad = iad+1
285 l_eint = nint(rbuf(iad+1))
286 iad = iad+1
287 l_eins = nint(rbuf(iad+1))
288 iad = iad+1
289 l_rho = nint(rbuf(iad+1))
290 iad = iad+1
291 l_dp_drho= nint(rbuf(iad+1))
292 iad = iad+1
293 l_qvis = nint(rbuf(iad+1))
294 iad = iad+1
295 l_deltax = nint(rbuf(iad+1))
296 iad = iad+1
297 l_vol = nint(rbuf(iad+1))
298 iad = iad+1
299 l_epsa = nint(rbuf(iad+1))
300 iad = iad+1
301 l_epsd = nint(rbuf(iad+1))
302 iad = iad+1
303 l_epsq = nint(rbuf(iad+1))
304 iad = iad+1
305 l_epsf = nint(rbuf(iad+1))
306 iad = iad+1
307 l_pla = nint(rbuf(iad+1))
308 iad = iad+1
309 l_wpla = nint(rbuf(iad+1))
310 iad = iad+1
311 l_temp = nint(rbuf(iad+1))
312 iad = iad+1
313 l_tb = nint(rbuf(iad+1))
314 iad = iad+1
315 l_rk = nint(rbuf(iad+1))
316 iad = iad+1
317 l_re = nint(rbuf(iad+1))
318 iad = iad+1
319 l_vk = nint(rbuf(iad+1))
320 iad = iad+1
321 l_sf = nint(rbuf(iad+1))
322 iad = iad+1
323 l_rob = nint(rbuf(iad+1))
324 iad = iad+1
325 l_dam = nint(rbuf(iad+1))
326 iad = iad+1
327 l_dsum = nint(rbuf(iad+1))
328 iad = iad+1
329 l_dglo = nint(rbuf(iad+1))
330 iad = iad+1
331 l_crak = nint(rbuf(iad+1))
332 iad = iad+1
333 l_ang = nint(rbuf(iad+1))
334 iad = iad+1
335 l_epe = nint(rbuf(iad+1))
336 iad = iad+1
337 l_epc = nint(rbuf(iad+1))
338 iad = iad+1
339 l_xst = nint(rbuf(iad+1))
340 iad = iad+1
341 l_ssp = nint(rbuf(iad+1))
342 iad = iad+1
343 l_z = nint(rbuf(iad+1))
344 iad = iad+1
345 l_visc = nint(rbuf(iad+1))
346 iad = iad+1
347 l_sigl = nint(rbuf(iad+1))
348 iad = iad+1
349 l_sigv = nint(rbuf(iad+1))
350 iad = iad+1
351 l_siga = nint(rbuf(iad+1))
352 iad = iad+1
353 l_sigb = nint(rbuf(iad+1))
354 iad = iad+1
355 l_sigc = nint(rbuf(iad+1))
356 iad = iad+1
357 l_sigd = nint(rbuf(iad+1))
358 iad = iad+1
359 l_sigf = nint(rbuf(iad+1))
360 iad = iad+1
361 l_sig = nint(rbuf(iad+1))
362 iad = iad+1
363 l_sigply = nint(rbuf(iad+1))
364 iad = iad+1
365 l_for = nint(rbuf(iad+1))
366 iad = iad+1
367 l_mom = nint(rbuf(iad+1))
368 iad = iad+1
369 l_thk = nint(rbuf(iad+1))
370 iad = iad+1
371 l_smstr = nint(rbuf(iad+1))
372 iad = iad+1
373 l_dmg = nint(rbuf(iad+1))
374 iad = iad+1
375 l_forth = nint(rbuf(iad+1))
376 iad = iad+1
377 l_eintth = nint(rbuf(iad+1))
378 iad = iad+1
379 l_seq = nint(rbuf(iad+1))
380 iad = iad+1
381 l_jac_i = nint(rbuf(iad+1))
382 iad = iad+1
383 l_fac_yld = nint(rbuf(iad+1))
384 iad = iad+1
385 l_aburn = nint(rbuf(iad+1))
386 iad = iad+1
387 l_mu = nint(rbuf(iad+1))
388 iad = iad+1
389 l_planl = nint(rbuf(iad+1))
390 iad = iad+1
391 l_epsdnl = nint(rbuf(iad+1))
392 iad = iad+1
393 l_dmgscl = nint(rbuf(iad+1))
394 iad = iad+1
395 l_tsaiwu = nint(rbuf(iad+1))
396 iad = iad+1
397 l_pij = nint(rbuf(iad+1))
398 iad = iad+1
399 l_vol0dp = nint(rbuf(iad+1))
400 iad = iad+1
401c-------
402c
403 bufly%ILAW = ilaw
404 bufly%IMAT = imat
405 bufly%IEOS = ieos
406 bufly%IVISC = ivisc
407 bufly%IPORO = iporo
408 bufly%NFAIL = nfail
409 bufly%NVAR_MAT = nvar_mat
410 bufly%NVAR_EOS = nvar_eos
411 bufly%NVARTMP = nvartmp
412 bufly%NVARTMP_EOS = nvartmp_eos
413 bufly%NVAR_VISC = nvar_visc
414 bufly%NVAR_LOC = nvar_loc
415 bufly%NVAR_LAY = nvar_lay
416 bufly%NPTT = nptt
417c
418 bufly%LY_DMG = ly_dmg
419 bufly%LY_GAMA = ly_gama
420 bufly%LY_DIRA = ly_dira
421 bufly%LY_DIRB = ly_dirb
422 bufly%LY_CRKDIR = ly_crkdir
423 bufly%LY_PLAPT = ly_plapt
424 bufly%LY_SIGPT = ly_sigpt
425 bufly%LY_HOURG = ly_hourg
426 bufly%LY_UELR = ly_uelr
427 bufly%LY_UELR1 = ly_uelr1
428 bufly%LY_OFFPG = ly_offpg
429 bufly%LY_OFF = ly_off
430c
431 bufly%L_OFF = l_off
432 bufly%L_GAMA = l_gama
433 bufly%L_STRA = l_stra
434 bufly%L_FRAC = l_frac
435 bufly%L_BFRAC = l_bfrac
436 bufly%L_EINT = l_eint
437 bufly%L_EINS = l_eins
438 bufly%L_RHO = l_rho
439 bufly%L_DP_DRHO = l_dp_drho
440 bufly%L_QVIS = l_qvis
441 bufly%L_DELTAX = l_deltax
442 bufly%L_VOL = l_vol
443 bufly%L_EPSA = l_epsa
444 bufly%L_EPSD = l_epsd
445 bufly%L_EPSQ = l_epsq
446 bufly%L_EPSF = l_epsf
447 bufly%L_PLA = l_pla
448 bufly%L_WPLA = l_wpla
449 bufly%L_TEMP = l_temp
450 bufly%L_TB = l_tb
451 bufly%L_RK = l_rk
452 bufly%L_RE = l_re
453 bufly%L_VK = l_vk
454 bufly%L_SF = l_sf
455 bufly%L_ROB = l_rob
456 bufly%L_DAM = l_dam
457 bufly%L_DSUM = l_dsum
458 bufly%L_DGLO = l_dglo
459 bufly%L_CRAK = l_crak
460 bufly%L_ANG = l_ang
461 bufly%L_EPE = l_epe
462 bufly%L_EPC = l_epc
463 bufly%L_XST = l_xst
464 bufly%L_SSP = l_ssp
465 bufly%L_Z = l_z
466 bufly%L_VISC = l_visc
467 bufly%L_SIGL = l_sigl
468 bufly%L_SIGV = l_sigv
469 bufly%L_SIGA = l_siga
470 bufly%L_SIGB = l_sigb
471 bufly%L_SIGC = l_sigc
472 bufly%L_SIGD = l_sigd
473 bufly%L_SIGF = l_sigf
474 bufly%L_SIG = l_sig
475 bufly%L_SIGPLY = l_sigply
476 bufly%L_FOR = l_for
477 bufly%L_MOM = l_mom
478 bufly%L_THK = l_thk
479 bufly%L_SMSTR = l_smstr
480 bufly%L_DMG = l_dmg
481 bufly%L_FORTH = l_forth
482 bufly%L_EINTTH = l_eintth
483 bufly%L_SEQ = l_seq
484 bufly%L_JAC_I = l_jac_i
485 bufly%L_FAC_YLD = l_fac_yld
486 bufly%L_ABURN = l_aburn
487 bufly%L_MU = l_mu
488 bufly%L_PLANL = l_planl
489 bufly%L_EPSDNL = l_epsdnl
490 bufly%L_DMGSCL = l_dmgscl
491 bufly%L_TSAIWU = l_tsaiwu
492 bufly%L_PIJ = l_pij
493 bufly%L_VOL0DP = l_vol0dp
494c-------------------------------------------------
495 IF (igtyp == 51 .OR. igtyp == 52) THEN
496 nptt = elbuf_str%BUFLY(il)%NPTT
497 ELSE
498 nptt = elbuf_str%NPTT
499 ENDIF
500 ALLOCATE(elbuf_str%BUFLY(il)%LBUF(nptr,npts,nptt),stat=err)
501 ALLOCATE(elbuf_str%BUFLY(il)%MAT (nptr,npts,nptt),stat=err)
502 ALLOCATE(elbuf_str%BUFLY(il)%FAIL(nptr,npts,nptt),stat=err)
503 ALLOCATE(elbuf_str%BUFLY(il)%PROP(nptr,npts,nptt),stat=err)
504 ALLOCATE(elbuf_str%BUFLY(il)%EOS (nptr,npts,nptt),stat=err)
505 ALLOCATE(elbuf_str%BUFLY(il)%VISC(nptr,npts,nptt),stat=err)
506 ALLOCATE(elbuf_str%BUFLY(il)%PORO(nptr,npts,nptt),stat=err)
507 IF(idrape > 0 .AND. (igtyp == 51 .OR. igtyp ==52))
508 . ALLOCATE(elbuf_str%BUFLY(il)%LBUF_DIR(nptt),stat=err)
509c-------------------------------------------------
510c-------------------------------------------------
511C allocation & read of layer variables
512c-------------------------------------------------
513 ALLOCATE(bufly%DMG (nel*ly_dmg) ,stat=err)
514 bufly%DMG(1:nel*ly_dmg) = rbuf(iad+1:iad+nel*ly_dmg)
515 iad = iad+nel*ly_dmg
516 ALLOCATE(bufly%GAMA (nel*ly_gama) ,stat=err)
517 bufly%GAMA(1:nel*ly_gama) = rbuf(iad+1:iad+nel*ly_gama)
518 iad = iad+nel*ly_gama
519 IF(idrape == 0 .OR. (idrape > 0 .AND. igtyp == 17)) THEN
520 ALLOCATE(bufly%DIRA (nel*ly_dira) ,stat=err)
521 bufly%DIRA(1:nel*ly_dira) = rbuf(iad+1:iad+nel*ly_dira)
522 iad = iad+nel*ly_dira
523 ALLOCATE(bufly%DIRB (nel*ly_dirb) ,stat=err)
524 bufly%DIRB(1:nel*ly_dirb) = rbuf(iad+1:iad+nel*ly_dirb)
525 iad = iad+nel*ly_dirb
526 ENDIF
527 ALLOCATE(bufly%CRKDIR(nel*ly_crkdir) ,stat=err)
528 bufly%CRKDIR(1:nel*ly_crkdir) = rbuf(iad+1:iad+nel*ly_crkdir)
529 iad = iad+nel*ly_crkdir
530
531 IF (npg > 1) THEN
532 IF (nlay > 1) THEN
533 len_plapt = nel*ly_plapt
534 len_sigpt = nel*ly_sigpt
535 ELSE
536 IF (igtyp /= 51 .AND. igtyp /= 52) THEN
537 len_plapt = nel*ly_plapt*npt
538 len_sigpt = nel*ly_sigpt*npt
539 ELSE
540 len_plapt = nel*ly_plapt*bufly%NPTT
541 len_sigpt = nel*ly_sigpt*bufly%NPTT
542 ENDIF
543 ENDIF
544 ALLOCATE(bufly%PLAPT(len_plapt) ,stat=err)
545 bufly%PLAPT(1:len_plapt) = rbuf(iad+1:iad+len_plapt)
546 iad = iad + len_plapt
547 ALLOCATE(bufly%SIGPT (len_sigpt) ,stat=err)
548 bufly%SIGPT(1:len_sigpt) = rbuf(iad+1:iad+len_sigpt)
549 iad = iad+len_sigpt
550 ELSEIF (npg == 1) THEN
551C
552C must point after => LBUF%PLA and LBUF%SIG
553C
554 ENDIF
555 ALLOCATE(bufly%HOURG(nel*ly_hourg) ,stat=err)
556 bufly%HOURG(1:nel*ly_hourg) = rbuf(iad+1:iad+nel*ly_hourg)
557 iad = iad+nel*ly_hourg
558 ALLOCATE(bufly%UELR(nel*ly_uelr) ,stat=err)
559 bufly%UELR(1:nel*ly_uelr) = rbuf(iad+1:iad+nel*ly_uelr)
560 iad = iad+nel*ly_uelr
561 ALLOCATE(bufly%UELR1(nel*ly_uelr1) ,stat=err)
562 bufly%UELR1(1:nel*ly_uelr1) = rbuf(iad+1:iad+nel*ly_uelr1)
563 iad = iad+nel*ly_uelr1
564 ALLOCATE(bufly%OFFPG(nel*ly_offpg) ,stat=err)
565 bufly%OFFPG(1:nel*ly_offpg) = rbuf(iad+1:iad+nel*ly_offpg)
566 iad = iad+nel*ly_offpg
567 ALLOCATE(bufly%OFF(nel*ly_off) ,stat=err)
568 bufly%OFF(1:nel*ly_off) = rbuf(iad+1:iad+nel*ly_off)
569 iad = iad+nel*ly_off
570c-------------------------------------------------
571C allocation & read of local buffer variables
572c-------------------------------------------------
573 DO ir = 1,nptr
574 DO is = 1,npts
575 DO it = 1,nptt
576 lbuf => elbuf_str%BUFLY(il)%LBUF(ir,is,it)
577c--------
578 lbuf%MLAW = nint(rbuf(iad+1))
579 iad = iad+1
580 lbuf%lawID = nint(rbuf(iad+1))
581 iad = iad+1
582c--------
583 ALLOCATE(lbuf%OFF (nel*l_off) ,stat=err)
584 lbuf%OFF(1:nel*l_off) = rbuf(iad+1:iad+nel*l_off)
585 iad = iad+nel*l_off
586 ALLOCATE (lbuf%GAMA(nel*l_gama) ,stat=err)
587 lbuf%GAMA(1:nel*l_gama) = rbuf(iad+1:iad+nel*l_gama)
588 iad = iad+nel*l_gama
589 ALLOCATE(lbuf%STRA (nel*l_stra) ,stat=err)
590 lbuf%STRA(1:nel*l_stra) = rbuf(iad+1:iad+nel*l_stra)
591 iad = iad+nel*l_stra
592 ALLOCATE(lbuf%FRAC (nel*l_frac) ,stat=err)
593 lbuf%FRAC(1:nel*l_frac) = rbuf(iad+1:iad+nel*l_frac)
594 iad = iad+nel*l_frac
595 ALLOCATE(lbuf%BFRAC(nel*l_bfrac) ,stat=err)
596 lbuf%BFRAC(1:nel*l_bfrac) = rbuf(iad+1:iad+nel*l_bfrac)
597 iad = iad+nel*l_bfrac
598 ALLOCATE(lbuf%EINT(nel*l_eint) ,stat=err)
599 lbuf%EINT(1:nel*l_eint) = rbuf(iad+1:iad+nel*l_eint)
600 iad = iad+nel*l_eint
601 ALLOCATE(lbuf%EINS(nel*l_eins) ,stat=err)
602 lbuf%EINS(1:nel*l_eins) = rbuf(iad+1:iad+nel*l_eins)
603 iad = iad+nel*l_eins
604 ALLOCATE(lbuf%RHO(nel*l_rho) ,stat=err)
605 lbuf%RHO(1:nel*l_rho) = rbuf(iad+1:iad+nel*l_rho)
606 iad = iad+nel*l_rho
607 ALLOCATE(lbuf%DP_DRHO(nel*l_dp_drho) ,stat=err)
608 lbuf%DP_DRHO(1:nel*l_dp_drho)=rbuf(iad+1:iad+nel*l_dp_drho)
609 iad = iad+nel*l_dp_drho
610 ALLOCATE(lbuf%QVIS(nel*l_qvis) ,stat=err)
611 lbuf%QVIS(1:nel*l_qvis) = rbuf(iad+1:iad+nel*l_qvis)
612 iad = iad+nel*l_qvis
613 ALLOCATE(lbuf%DELTAX(nel*l_deltax),stat=err)
614 lbuf%DELTAX(1:nel*l_deltax)=rbuf(iad+1:iad+nel*l_deltax)
615 iad = iad+nel*l_deltax
616 ALLOCATE(lbuf%VOL (nel*l_vol) ,stat=err)
617 lbuf%VOL(1:nel*l_vol) = rbuf(iad+1:iad+nel*l_vol)
618 iad = iad+nel*l_vol
619 ALLOCATE(lbuf%EPSA (nel*l_epsa) ,stat=err)
620 lbuf%EPSA(1:nel*l_epsa) = rbuf(iad+1:iad+nel*l_epsa)
621 iad = iad+nel*l_epsa
622 ALLOCATE(lbuf%EPSD (nel*l_epsd) ,stat=err)
623 lbuf%EPSD(1:nel*l_epsd) = rbuf(iad+1:iad+nel*l_epsd)
624 iad = iad+nel*l_epsd
625 ALLOCATE(lbuf%EPSQ (nel*l_epsq) ,stat=err)
626 lbuf%EPSQ(1:nel*l_epsq) = rbuf(iad+1:iad+nel*l_epsq)
627 iad = iad+nel*l_epsq
628 ALLOCATE(lbuf%EPSF (nel*l_epsf) ,stat=err)
629 lbuf%EPSF(1:nel*l_epsf) = rbuf(iad+1:iad+nel*l_epsf)
630 iad = iad+nel*l_epsf
631 ALLOCATE(lbuf%PLA (nel*l_pla) ,stat=err)
632 lbuf%PLA(1:nel*l_pla) = rbuf(iad+1:iad+nel*l_pla)
633 iad = iad+nel*l_pla
634 ALLOCATE(lbuf%WPLA (nel*l_wpla) ,stat=err)
635 lbuf%WPLA(1:nel*l_wpla) = rbuf(iad+1:iad+nel*l_wpla)
636 iad = iad+nel*l_wpla
637 ALLOCATE(lbuf%TEMP(nel*l_temp), stat=err)
638 lbuf%TEMP(1:nel*l_temp) = rbuf(iad+1:iad+nel*l_temp)
639 iad = iad+nel*l_temp
640 ALLOCATE(lbuf%TB(nel*l_tb), stat=err)
641 lbuf%TB(1:nel*l_tb) = rbuf(iad+1:iad+nel*l_tb)
642 iad = iad+nel*l_tb
643 ALLOCATE(lbuf%RK(nel*l_rk), stat=err)
644 lbuf%RK(1:nel*l_rk) = rbuf(iad+1:iad+nel*l_rk)
645 iad = iad+nel*l_rk
646 ALLOCATE(lbuf%RE(nel*l_re), stat=err)
647 lbuf%RE(1:nel*l_re) = rbuf(iad+1:iad+nel*l_re)
648 iad = iad+nel*l_re
649 ALLOCATE(lbuf%VK(nel*l_vk), stat=err)
650 lbuf%VK(1:nel*l_vk) = rbuf(iad+1:iad+nel*l_vk)
651 iad = iad+nel*l_vk
652 ALLOCATE(lbuf%SF(nel*l_sf), stat=err)
653 lbuf%SF(1:nel*l_sf) = rbuf(iad+1:iad+nel*l_sf)
654 iad = iad+nel*l_sf
655 ALLOCATE(lbuf%ROB(nel*l_rob), stat=err)
656 lbuf%ROB(1:nel*l_rob) = rbuf(iad+1:iad+nel*l_rob)
657 iad = iad+nel*l_rob
658 ALLOCATE(lbuf%DAM (nel*l_dam) ,stat=err)
659 lbuf%DAM(1:nel*l_dam) = rbuf(iad+1:iad+nel*l_dam)
660 iad = iad+nel*l_dam
661 ALLOCATE(lbuf%DSUM (nel*l_dsum) ,stat=err)
662 lbuf%DSUM(1:nel*l_dsum) = rbuf(iad+1:iad+nel*l_dsum)
663 iad = iad+nel*l_dsum
664 ALLOCATE(lbuf%DGLO (nel*l_dglo) ,stat=err)
665 lbuf%DGLO(1:nel*l_dglo) = rbuf(iad+1:iad+nel*l_dglo)
666 iad = iad+nel*l_dglo
667 ALLOCATE(lbuf%CRAK (nel*l_crak) ,stat=err)
668 lbuf%CRAK(1:nel*l_crak) = rbuf(iad+1:iad+nel*l_crak)
669 iad = iad+nel*l_crak
670 ALLOCATE(lbuf%ANG (nel*l_ang) ,stat=err)
671 lbuf%ANG(1:nel*l_ang) = rbuf(iad+1:iad+nel*l_ang)
672 iad = iad+nel*l_ang
673 ALLOCATE(lbuf%EPE (nel*l_epe) ,stat=err)
674 lbuf%EPE(1:nel*l_epe) = rbuf(iad+1:iad+nel*l_epe)
675 iad = iad+nel*l_epe
676 ALLOCATE(lbuf%EPC (nel*l_epc) ,stat=err)
677 lbuf%EPC(1:nel*l_epc) = rbuf(iad+1:iad+nel*l_epc)
678 iad = iad+nel*l_epc
679 ALLOCATE(lbuf%XST (nel*l_xst) ,stat=err)
680 lbuf%XST(1:nel*l_xst) = rbuf(iad+1:iad+nel*l_xst)
681 iad = iad+nel*l_xst
682 ALLOCATE(lbuf%SSP (nel*l_ssp) ,stat=err)
683 lbuf%SSP(1:nel*l_ssp) = rbuf(iad+1:iad+nel*l_ssp)
684 iad = iad+nel*l_ssp
685 ALLOCATE(lbuf%Z (nel*l_z) ,stat=err)
686 lbuf%Z(1:nel*l_z) = rbuf(iad+1:iad+nel*l_z)
687 iad = iad+nel*l_z
688 ALLOCATE(lbuf%VISC (nel*l_visc) ,stat=err)
689 lbuf%VISC(1:nel*l_visc) = rbuf(iad+1:iad+nel*l_visc)
690 iad = iad+nel*l_visc
691 ALLOCATE(lbuf%SIGL (nel*l_sigl) ,stat=err)
692 lbuf%SIGL(1:nel*l_sigl) = rbuf(iad+1:iad+nel*l_sigl)
693 iad = iad+nel*l_sigl
694 ALLOCATE(lbuf%SIGV (nel*l_sigv) ,stat=err)
695 lbuf%SIGV(1:nel*l_sigv) = rbuf(iad+1:iad+nel*l_sigv)
696 iad = iad+nel*l_sigv
697 ALLOCATE(lbuf%SIGA (nel*l_siga) ,stat=err)
698 lbuf%SIGA(1:nel*l_siga) = rbuf(iad+1:iad+nel*l_siga)
699 iad = iad+nel*l_siga
700 ALLOCATE(lbuf%SIGB (nel*l_sigb) ,stat=err)
701 lbuf%SIGB(1:nel*l_sigb) = rbuf(iad+1:iad+nel*l_sigb)
702 iad = iad+nel*l_sigb
703 ALLOCATE(lbuf%SIGC (nel*l_sigc) ,stat=err)
704 lbuf%SIGC(1:nel*l_sigc) = rbuf(iad+1:iad+nel*l_sigc)
705 iad = iad+nel*l_sigc
706 ALLOCATE(lbuf%SIGD (nel*l_sigd) ,stat=err)
707 lbuf%SIGD(1:nel*l_sigd) = rbuf(iad+1:iad+nel*l_sigd)
708 iad = iad+nel*l_sigd
709 ALLOCATE(lbuf%SIGF (nel*l_sigf) ,stat=err)
710 lbuf%SIGF(1:nel*l_sigf) = rbuf(iad+1:iad+nel*l_sigf)
711 iad = iad+nel*l_sigf
712 ALLOCATE(lbuf%SIG(nel*l_sig) ,stat=err)
713 lbuf%SIG(1:nel*l_sig) = rbuf(iad+1:iad+nel*l_sig)
714 iad = iad+nel*l_sig
715 ALLOCATE(lbuf%SIGPLY(nel*l_sigply) ,stat=err)
716 lbuf%SIGPLY(1:nel*l_sigply) = rbuf(iad+1:iad+nel*l_sigply)
717 iad = iad+nel*l_sigply
718 ALLOCATE(lbuf%FOR (nel*l_for) ,stat=err)
719 lbuf%FOR(1:nel*l_for) = rbuf(iad+1:iad+nel*l_for)
720 iad = iad+nel*l_for
721 ALLOCATE(lbuf%MOM (nel*l_mom) ,stat=err)
722 lbuf%MOM(1:nel*l_mom) = rbuf(iad+1:iad+nel*l_mom)
723 iad = iad+nel*l_mom
724 ALLOCATE(lbuf%THK (nel*l_thk) ,stat=err)
725 lbuf%THK(1:nel*l_thk) = rbuf(iad+1:iad+nel*l_thk)
726 iad = iad+nel*l_thk
727 ALLOCATE(lbuf%SMSTR (nel*l_smstr) ,stat=err)
728 lbuf%SMSTR(1:nel*l_smstr) = rbuf(iad+1:iad+nel*l_smstr)
729 iad = iad+nel*l_smstr
730 ALLOCATE(lbuf%DMG (nel*l_dmg) ,stat=err)
731 lbuf%DMG(1:nel*l_dmg) = rbuf(iad+1:iad+nel*l_dmg)
732 iad = iad+nel*l_dmg
733 ALLOCATE(lbuf%FORTH (nel*l_forth) ,stat=err)
734 lbuf%FORTH(1:nel*l_forth) = rbuf(iad+1:iad+nel*l_forth)
735 iad = iad+nel*l_forth
736 ALLOCATE(lbuf%EINTTH (nel*l_eintth) ,stat=err)
737 lbuf%EINTTH(1:nel*l_eintth) = rbuf(iad+1:iad+nel*l_eintth)
738 iad = iad+nel*l_eintth
739 ALLOCATE(lbuf%SEQ (nel*l_seq) ,stat=err)
740 lbuf%SEQ(1:nel*l_seq) = rbuf(iad+1:iad+nel*l_seq)
741 iad = iad+nel*l_seq
742 ALLOCATE(lbuf%JAC_I (nel*l_jac_i) ,stat=err)
743 lbuf%JAC_I(1:nel*l_jac_i) = rbuf(iad+1:iad+nel*l_jac_i)
744 iad = iad+nel*l_jac_i
745 ALLOCATE(lbuf%FAC_YLD (nel*l_fac_yld) ,stat=err)
746 lbuf%FAC_YLD(1:nel*l_fac_yld) = rbuf(iad+1:iad+nel*l_fac_yld)
747 iad = iad+nel*l_fac_yld
748 ALLOCATE(lbuf%ABURN(nel*l_aburn) ,stat=err)
749 lbuf%ABURN(1:nel*l_aburn) = rbuf(iad+1:iad+nel*l_aburn)
750 iad = iad+nel*l_aburn
751 ALLOCATE(lbuf%MU(nel*l_mu) ,stat=err)
752 lbuf%MU(1:nel*l_mu) = rbuf(iad+1:iad+nel*l_mu)
753 iad = iad+nel*l_mu
754 ALLOCATE(lbuf%PLANL(nel*l_planl) ,stat=err)
755 lbuf%PLANL(1:nel*l_planl) = rbuf(iad+1:iad+nel*l_planl)
756 iad = iad+nel*l_planl
757 ALLOCATE(lbuf%EPSDNL(nel*l_epsdnl) ,stat=err)
758 lbuf%EPSDNL(1:nel*l_epsdnl) = rbuf(iad+1:iad+nel*l_epsdnl)
759 iad = iad+nel*l_epsdnl
760 ALLOCATE(lbuf%DMGSCL(nel*l_dmgscl) ,stat=err)
761 lbuf%DMGSCL(1:nel*l_dmgscl) = rbuf(iad+1:iad+nel*l_dmgscl)
762 iad = iad+nel*l_dmgscl
763 ALLOCATE(lbuf%TSAIWU(nel*l_tsaiwu) ,stat=err)
764 lbuf%TSAIWU(1:nel*l_tsaiwu) = rbuf(iad+1:iad+nel*l_tsaiwu)
765 iad = iad+nel*l_tsaiwu
766 ALLOCATE(lbuf%PIJ(nel*l_pij) ,stat=err)
767 lbuf%PIJ(1:nel*l_pij) = rbuf(iad+1:iad+nel*l_pij)
768 iad = iad+nel*l_pij
769C---------- size of DP ---
770 ALLOCATE(lbuf%VOL0DP(nel*l_vol0dp) ,stat=err)
771 sdp_rbuf = sdp_rbuf + nel*l_vol0dp
772!----------------------------------------------------------
773 ENDDO !next IT
774 ENDDO !next IS
775 ENDDO !next IR
776 IF(idrape > 0 .AND. (igtyp == 51 .OR. igtyp == 52)) THEN
777 DO it = 1, nptt
778 lbuf_dir => elbuf_str%BUFLY(il)%LBUF_DIR(it)
779 ALLOCATE(lbuf_dir%DIRA(nel*ly_dira))
780 lbuf_dir%DIRA(1:nel*ly_dira) = rbuf(iad+1:iad+nel*ly_dira)
781 iad = iad + nel*ly_dira
782 ALLOCATE(lbuf_dir%DIRB(nel*ly_dirb))
783 lbuf_dir%DIRB(1:nel*ly_dirb) = rbuf(iad+1:iad+nel*ly_dirb)
784 iad = iad + nel*ly_dirb
785 ENDDO !next IT
786 ENDIF
787 ENDDO !next IL
788C
789 IF (ity == 3 .OR. ity == 7) THEN
790cc NPTTOT = 0
791 DO il=1,elbuf_str%NLAY
792 npttot = npttot + npg*elbuf_str%BUFLY(il)%NPTT
793 ENDDO
794 IF (npt == 0) npttot = npt
795 ENDIF
796C
797C layer mean variable (NPG = 1)
798C
799 IF (npg == 1) THEN
800 IF (nlay > 1) THEN
801 DO il = 1,nlay
802 bufly => elbuf_str%BUFLY(il)
803 IF (igtyp == 51 .OR. igtyp == 52) THEN
804 nptt = bufly%NPTT
805 DO it=1,nptt
806 lbuf => bufly%LBUF(1,1,it)
807 bufly%PLAPT(1:nel*ly_plapt) => lbuf%PLA(1:nel*l_pla)
808 bufly%SIGPT(1:nel*ly_sigpt) => lbuf%SIG(1:nel*l_sig)
809 ENDDO
810 ELSE
811 lbuf => bufly%LBUF(1,1,1)
812 bufly%PLAPT(1:nel*ly_plapt) => lbuf%PLA(1:nel*l_pla)
813 bufly%SIGPT(1:nel*ly_sigpt) => lbuf%SIG(1:nel*l_sig)
814 ENDIF
815 ENDDO
816 ELSE ! this part seems to have pointer issues
817 bufly => elbuf_str%BUFLY(1)
818 IF (igtyp == 51 .OR. igtyp == 52) THEN
819 nptt = bufly%NPTT
820 DO ipt = 1,nptt
821 lbuf => elbuf_str%BUFLY(1)%LBUF(1,1,ipt)
822 len1 = 1+(ipt-1)*nel*ly_plapt
823 len2 = ipt*nel*ly_plapt
824 bufly%PLAPT(len1:len2) => lbuf%PLA(1:nel*l_pla)
825 len1 = 1+(ipt-1)*nel*ly_sigpt
826 len2 = ipt*nel*ly_sigpt
827 bufly%SIGPT(len1:len2) => lbuf%SIG(1:nel*l_sig)
828 ENDDO
829 ELSE
830 DO ipt = 1,npt
831 lbuf => elbuf_str%BUFLY(1)%LBUF(1,1,ipt)
832 len1 = 1+(ipt-1)*nel*ly_plapt
833 len2 = ipt*nel*ly_plapt
834 bufly%PLAPT(len1:len2) => lbuf%PLA(1:nel*l_pla)
835 len1 = 1+(ipt-1)*nel*ly_sigpt
836 len2 = ipt*nel*ly_sigpt
837 bufly%SIGPT(len1:len2) => lbuf%SIG(1:nel*l_sig)
838 ENDDO
839 ENDIF
840 ENDIF
841 ENDIF
842c
843c----- Material buffer - per integration point
844c
845 DO il = 1, nlay
846 nuvar = elbuf_str%BUFLY(il)%NVAR_MAT
847 nvartmp = elbuf_str%BUFLY(il)%NVARTMP
848 IF (igtyp == 51 .OR. igtyp == 52) THEN
849 nptt = elbuf_str%BUFLY(il)%NPTT
850 ELSE
851 nptt = elbuf_str%NPTT
852 ENDIF
853 DO ir = 1,nptr
854 DO is = 1,npts
855 DO it = 1,nptt
856 matbuf => elbuf_str%BUFLY(il)%MAT(ir,is,it)
857 ALLOCATE (matbuf%VAR(nel*nuvar), stat=err)
858 matbuf%VAR(1:nel*nuvar) = rbuf(iad+1:iad+nel*nuvar)
859 iad = iad+nel*nuvar
860 ALLOCATE (matbuf%VARTMP(nel*nvartmp), stat=err)
861 matbuf%VARTMP(1:nel*nvartmp) = 0
862c-----
863 ENDDO
864 ENDDO
865 ENDDO
866 ENDDO
867c-------------------------------
868C failure model variables
869c-------------------------------
870 DO il = 1, nlay
871 nfail = elbuf_str% BUFLY(il)%NFAIL
872 IF (igtyp == 51 .OR. igtyp == 52) THEN
873 nptt = elbuf_str%BUFLY(il)%NPTT
874 ELSE
875 nptt = elbuf_str%NPTT
876 ENDIF
877 DO ir = 1,nptr
878 DO is = 1,npts
879 DO it = 1,nptt
880 ALLOCATE (elbuf_str%BUFLY(il)%FAIL(ir,is,it)%FLOC(nfail),
881 . stat=err)
882 DO k = 1,nfail
883 floc=>elbuf_str%BUFLY(il)%FAIL(ir,is,it)%FLOC(k)
884
885 floc%ILAWF = rbuf(iad+1)
886 iad = iad+1
887
888 floc%IDFAIL = rbuf(iad+1)
889 iad = iad+1
890
891 nuvar = rbuf(iad+1)
892 iad = iad+1
893 floc%NVAR = nuvar
894
895 lf_dam = rbuf(iad+1)
896 iad = iad+1
897 floc%LF_DAM = lf_dam
898
899 lf_dammx = rbuf(iad+1)
900 iad = iad+1
901 floc%LF_DAMMX = lf_dammx
902
903 lf_damini = rbuf(iad+1)
904 iad = iad+1
905 floc%LF_DAMINI = lf_damini
906
907 lf_tdel = rbuf(iad+1)
908 iad = iad+1
909 floc%LF_TDEL = lf_tdel
910
911 lf_indx = rbuf(iad+1)
912 iad = iad+1
913 floc%LF_INDX = lf_indx
914
915 lf_off = rbuf(iad+1)
916 iad = iad+1
917 floc%LF_OFF = lf_off
918
919 ALLOCATE(floc%VAR(nel*nuvar), stat=err)
920 floc%VAR(1:nel*nuvar) = rbuf(iad+1:iad+nel*nuvar)
921 iad = iad + nel*nuvar
922
923 ALLOCATE(floc%DAM(nel*lf_dam), stat=err)
924 floc%DAM(1:nel*lf_dam) = rbuf(iad+1:iad+nel*lf_dam)
925 iad = iad + nel*lf_dam
926
927 ALLOCATE(floc%DAMMX(nel*lf_dammx), stat=err)
928 floc%DAMMX(1:nel*lf_dammx) = rbuf(iad+1:iad+nel*lf_dammx)
929 iad = iad + nel*lf_dammx
930
931 ALLOCATE(floc%DAMINI(nel*lf_damini), stat=err)
932 floc%DAMINI(1:nel*lf_damini) = rbuf(iad+1:iad+nel*lf_damini)
933 iad = iad + nel*lf_damini
934
935 ALLOCATE(floc%TDEL(nel*lf_tdel), stat=err)
936 floc%TDEL(1:nel*lf_tdel) = rbuf(iad+1:iad+nel*lf_tdel)
937 iad = iad + nel*lf_tdel
938
939 ALLOCATE(floc%INDX(nel*lf_indx), stat=err)
940 floc%INDX(1:nel*lf_indx) = rbuf(iad+1:iad+nel*lf_indx)
941 iad = iad + nel*lf_indx
942
943 ALLOCATE(floc%OFF(nel*lf_off), stat=err)
944 floc%OFF(1:nel*lf_off) = rbuf(iad+1:iad+nel*lf_off)
945 iad = iad + nel*lf_off
946 ENDDO
947 ENDDO
948 ENDDO
949 ENDDO
950 ENDDO
951c-------------------------------
952C Viscosity model variables
953c-------------------------------
954 DO il = 1, nlay
955 nuvar = elbuf_str% BUFLY(il)%NVAR_VISC
956 IF (igtyp == 51 .OR. igtyp == 52) THEN
957 nptt = elbuf_str%BUFLY(il)%NPTT
958 ELSE
959 nptt = elbuf_str%NPTT
960 ENDIF
961 DO ir = 1,nptr
962 DO is = 1,npts
963 DO it = 1,nptt
964 viscbuf => elbuf_str%BUFLY(il)%VISC(ir,is,it)
965 ALLOCATE (viscbuf%VAR(nel*nuvar), stat=err)
966 viscbuf%VAR(1:nel*nuvar) = rbuf(iad+1:iad+nel*nuvar)
967 iad = iad+nel*nuvar
968c-----
969 ENDDO
970 ENDDO
971 ENDDO
972 ENDDO
973c-------------------------------
974C Non-local regularization in the shell thickness
975c-------------------------------
976 IF ((ity==3).OR.(ity==7)) THEN
977 ! Number of integration points in the shell thickness
978 nptt = elbuf_str%NPTT
979 IF ((inloc>0).AND.(nptt>1)) THEN
980 ! Allocation of the non-local buffer
981 ALLOCATE(elbuf_str%NLOC(nptr,npts), stat=err)
982 ! Number of non-local nodes in the thickness
983 IF (nptt>2) THEN
984 nonl = nptt+1
985 ELSE
986 nonl = nptt
987 ENDIF
988 ! Loop over the elements
989 DO ir = 1, nptr
990 DO is = 1, npts
991 ! Pointing the non-local buffer
992 bufnl => elbuf_str%NLOC(ir,is)
993 ! Non-local in-thickness masses
994 ALLOCATE(bufnl%MASSTH(nel,nonl), stat=err)
995 ! Non-local in-thickness cumulated variables
996 ALLOCATE(bufnl%UNLTH(nel,nonl) , stat=err)
997 ! Non-local in-thickness velocities
998 ALLOCATE(bufnl%VNLTH(nel,nonl) , stat=err)
999 ! Non-local in-thickness forces
1000 ALLOCATE(bufnl%FNLTH(nel,nonl) , stat=err)
1001 ! Copying the buffer
1002 DO i = 1,nel
1003 ! Nodal masses
1004 bufnl%MASSTH(i,1:nonl) = rbuf(iad+1:iad+nonl)
1005 iad = iad + nonl
1006 ! Non-local in-thickness cumulated variables
1007 bufnl%UNLTH(i,1:nonl) = rbuf(iad+1:iad+nonl)
1008 iad = iad + nonl
1009 ! Non-local in-thickness velocities
1010 bufnl%VNLTH(i,1:nonl) = rbuf(iad+1:iad+nonl)
1011 iad = iad + nonl
1012 ! Non-local in-thickness forces
1013 bufnl%FNLTH(i,1:nonl) = rbuf(iad+1:iad+nonl)
1014 iad = iad + nonl
1015 ENDDO
1016 ENDDO
1017 ENDDO
1018 ENDIF
1019c-------------------------------
1020C Non-local regularization in the thickshell thickness
1021c-------------------------------
1022 ELSEIF (ity==1) THEN
1023 ! Number of integration points in the shell thickness
1024 nptt = elbuf_str%NLAY
1025 IF ((inloc>0).AND.(nptt>1)) THEN
1026 ! Allocation of the non-local buffer
1027 ALLOCATE(elbuf_str%NLOCTS(nptr,npts), stat=err)
1028 ! Number of non-local nodes in the thickness
1029 nonl = nptt+1
1030 ! Loop over the elements
1031 DO ir = 1, nptr
1032 DO is = 1, npts
1033 ! Pointing the non-local buffer
1034 bufnlts => elbuf_str%NLOCTS(ir,is)
1035 ! Non-local in-thickness masses
1036 ALLOCATE(bufnlts%MASSTH(nel,nonl), stat=err)
1037 ! Non-local in-thickness cumulated variables
1038 ALLOCATE(bufnlts%UNLTH(nel,nonl) , stat=err)
1039 ! Non-local in-thickness velocities
1040 ALLOCATE(bufnlts%VNLTH(nel,nonl) , stat=err)
1041 ! Non-local in-thickness forces
1042 ALLOCATE(bufnlts%FNLTH(nel,nonl) , stat=err)
1043 ! Copying the buffer
1044 DO i = 1,nel
1045 ! Nodal masses
1046 bufnlts%MASSTH(i,1:nonl) = rbuf(iad+1:iad+nonl)
1047 iad = iad + nonl
1048 ! Non-local in-thickness cumulated variables
1049 bufnlts%UNLTH(i,1:nonl) = rbuf(iad+1:iad+nonl)
1050 iad = iad + nonl
1051 ! Non-local in-thickness velocities
1052 bufnlts%VNLTH(i,1:nonl) = rbuf(iad+1:iad+nonl)
1053 iad = iad + nonl
1054 ! Non-local in-thickness forces
1055 bufnlts%FNLTH(i,1:nonl) = rbuf(iad+1:iad+nonl)
1056 iad = iad + nonl
1057 ENDDO
1058 ENDDO
1059 ENDDO
1060 ENDIF
1061 ENDIF
1062c-------------------------------
1063C EoS buffer
1064c-------------------------------
1065 DO il = 1, nlay
1066 nvar_eos = elbuf_str%BUFLY(il)%NVAR_EOS
1067 nvartmp_eos = elbuf_str%BUFLY(il)%NVARTMP_EOS
1068 IF (igtyp == 51 .OR. igtyp == 52) THEN
1069 nptt = elbuf_str%BUFLY(il)%NPTT
1070 ELSE
1071 nptt = elbuf_str%NPTT
1072 ENDIF
1073 DO ir = 1,nptr
1074 DO is = 1,npts
1075 DO it = 1,nptt
1076 ALLOCATE( elbuf_str%BUFLY(il)%EOS(ir,is,it)%VAR(nel*nvar_eos), stat=err)
1077 ALLOCATE( elbuf_str%BUFLY(il)%EOS(ir,is,it)%VARTMP(nel*nvartmp_eos), stat=err)
1078 elbuf_str%BUFLY(il)%EOS(ir,is,it)%VAR(1:nel*nvar_eos) = rbuf(iad+1:iad+nel*nvar_eos)
1079 elbuf_str%BUFLY(il)%EOS(ir,is,it)%VARTMP(1:nel*nvartmp_eos) = 0
1080 iad = iad+nel*nvar_eos
1081 ENDDO
1082 ENDDO
1083 ENDDO
1084 ENDDO
1085
1086c-------------------------------------------------
1087C INTER LAYER VARIABLES
1088c-------------------------------------------------
1089 l_eps = 3
1090 l_sig = 3
1091 ly_eint = 1
1092 ly_count= 1
1093c
1094 DO il = 1,elbuf_str%NINTLAY
1095 intlay => elbuf_str%INTLAY(il)
1096c
1097C Interlayer parameters : 4
1098 intlay%ILAW = nint(rbuf(iad+1))
1099 iad = iad+1
1100 intlay%IMAT = nint(rbuf(iad+1))
1101 iad = iad+1
1102 intlay%NFAIL = nint(rbuf(iad+1))
1103 iad = iad+1
1104 intlay%NVAR_MAT = nint(rbuf(iad+1))
1105 iad = iad+1
1106 intlay%NVARTMP = nint(rbuf(iad+1))
1107 iad = iad+1
1108c-------------------------------------------------
1109C Interlayer : allocation & read of local buffer variables
1110c-------------------------------------------------
1111 ALLOCATE(intlay%EINT (nel*ly_eint) ,stat=err)
1112 intlay%EINT(1:nel*ly_eint) = rbuf(iad+1:iad+nel*ly_eint)
1113 iad = iad+nel*ly_eint
1114 ALLOCATE(intlay%COUNT (nel*ly_count) ,stat=err)
1115 intlay%COUNT(1:nel*ly_count) = rbuf(iad+1:iad+nel*ly_count)
1116 iad = iad+nel*ly_count
1117c
1118 DO ir = 1,nptr
1119 DO is = 1,npts
1120 ilbuf => elbuf_str%INTLAY(il)%ILBUF(ir,is)
1121c--------
1122 ALLOCATE(ilbuf%EPS (nel*l_eps) ,stat=err)
1123 ilbuf%EPS(1:nel*l_eps) = rbuf(iad+1:iad+nel*l_eps)
1124 iad = iad+nel*l_eps
1125 ALLOCATE(ilbuf%SIG (nel*l_sig) ,stat=err)
1126 ilbuf%SIG(1:nel*l_sig) = rbuf(iad+1:iad+nel*l_sig)
1127 iad = iad+nel*l_sig
1128!----------------------------------------------------------
1129 ENDDO !next IS
1130 ENDDO !next IR
1131 ENDDO !next IL
1132c
1133c--- Interlayer Material buffer - per integration point
1134c
1135 DO il = 1, nintlay
1136 nuvar = elbuf_str%INTLAY(il)%NVAR_MAT
1137 nvartmp = elbuf_str%BUFLY(il)%NVARTMP
1138 DO ir = 1,nptr
1139 DO is = 1,npts
1140 matbuf => elbuf_str%INTLAY(il)%MAT(ir,is)
1141 ALLOCATE (matbuf%VAR(nel*nuvar), stat=err)
1142 matbuf%VAR(1:nel*nuvar) = rbuf(iad+1:iad+nel*nuvar)
1143 iad = iad+nel*nuvar
1144 ALLOCATE (matbuf%VARTMP(nel*nvartmp), stat=err)
1145 matbuf%VARTMP(1:nel*nvartmp) = 0
1146 ENDDO
1147 ENDDO
1148 ENDDO
1149c-------------------------------
1150C Interlayer failure model variables
1151c-------------------------------
1152 DO il = 1, nintlay
1153 nfail = elbuf_str% INTLAY(il)%NFAIL
1154 DO ir = 1,nptr
1155 DO is = 1,npts
1156 ALLOCATE (elbuf_str%INTLAY(il)%FAIL(ir,is)%FLOC(nfail),
1157 . stat=err)
1158 DO k = 1,nfail
1159 floc=>elbuf_str%INTLAY(il)%FAIL(ir,is)%FLOC(k)
1160 floc%ILAWF = rbuf(iad+1)
1161 iad = iad+1
1162 floc%IDFAIL = rbuf(iad+1)
1163 iad = iad+1
1164 nuvar = rbuf(iad+1)
1165 iad = iad+1
1166 floc%NVAR = nuvar
1167 ALLOCATE(floc%VAR(nel*nuvar), stat=err)
1168 floc%VAR(1:nel*nuvar) = rbuf(iad+1:iad+nel*nuvar)
1169 iad = iad+nel*nuvar
1170 ENDDO
1171 ENDDO
1172 ENDDO
1173 ENDDO
1174c-------------------------------
1175C Interlayer Viscosity model variables
1176c-------------------------------
1177! DO IL = 1, NINTLAY
1178! NUVAR = ELBUF_STR%INTLAY(IL)%NVAR_VISC
1179! DO IR = 1,NPTR
1180! DO IS = 1,NPTS
1181! VISCBUF => ELBUF_STR%INTLAY(IL)%VISC(IR,IS)
1182! ALLOCATE (VISCBUF%VAR(NEL*NUVAR), STAT=ERR)
1183! VISCBUF%VAR(1:NEL*NUVAR) = RBUF(IAD+1:IAD+NEL*NUVAR)
1184! IAD = IAD+NEL*NUVAR
1185!c-----
1186! ENDDO
1187! ENDDO
1188! ENDDO
1189c-------------------------------------------------
1190C allocation of global buffer variables
1191c-------------------------------------------------
1192 gbuf => elbuf_str%GBUF
1193C
1194 gbuf%NVAR_GLOB = nint(rbuf(iad+1))
1195 iad = iad + 1
1196c
1197 g_noff = nint(rbuf(iad+1))
1198 iad = iad + 1
1199 g_ierr = nint(rbuf(iad+1))
1200 iad = iad + 1
1201 g_off = nint(rbuf(iad+1))
1202 iad = iad + 1
1203 g_gama = nint(rbuf(iad+1))
1204 iad = iad + 1
1205 g_smstr= nint(rbuf(iad+1))
1206 iad = iad + 1
1207 g_hourg= nint(rbuf(iad+1))
1208 iad = iad + 1
1209 g_bfrac= nint(rbuf(iad+1))
1210 iad = iad + 1
1211 g_eint = nint(rbuf(iad+1))
1212 iad = iad + 1
1213 g_eins = nint(rbuf(iad+1))
1214 iad = iad + 1
1215 g_rho = nint(rbuf(iad+1))
1216 iad = iad + 1
1217 g_qvis = nint(rbuf(iad+1))
1218 iad = iad + 1
1219 g_deltax= nint(rbuf(iad+1))
1220 iad = iad + 1
1221 g_vol = nint(rbuf(iad+1))
1222 iad = iad + 1
1223 g_epsd = nint(rbuf(iad+1))
1224 iad = iad + 1
1225 g_epsq = nint(rbuf(iad+1))
1226 iad = iad + 1
1227 g_pla = nint(rbuf(iad+1))
1228 iad = iad + 1
1229 g_wpla = nint(rbuf(iad+1))
1230 iad = iad + 1
1231 g_temp = nint(rbuf(iad+1))
1232 iad = iad + 1
1233 g_tb = nint(rbuf(iad+1))
1234 iad = iad + 1
1235 g_rk = nint(rbuf(iad+1))
1236 iad = iad + 1
1237 g_re = nint(rbuf(iad+1))
1238 iad = iad + 1
1239 g_sig = nint(rbuf(iad+1))
1240 iad = iad + 1
1241 g_for = nint(rbuf(iad+1))
1242 iad = iad + 1
1243 g_mom = nint(rbuf(iad+1))
1244 iad = iad + 1
1245 g_thk = nint(rbuf(iad+1))
1246 iad = iad + 1
1247 g_tag22 = nint(rbuf(iad+1))
1248 iad = iad + 1
1249 g_stra = nint(rbuf(iad+1))
1250 iad = iad + 1
1251 g_sigi = nint(rbuf(iad+1))
1252 iad = iad + 1
1253 g_dmg = nint(rbuf(iad+1))
1254 iad = iad + 1
1255 g_forpg = nint(rbuf(iad+1))
1256 iad = iad + 1
1257 g_mompg = nint(rbuf(iad+1))
1258 iad = iad + 1
1259C
1260 g_forpgpinch = nint(rbuf(iad+1))
1261 iad = iad + 1
1262 g_mompgpinch = nint(rbuf(iad+1))
1263 iad = iad + 1
1264 g_epgpinchxz = nint(rbuf(iad+1))
1265 iad = iad + 1
1266 g_epgpinchyz = nint(rbuf(iad+1))
1267 iad = iad + 1
1268 g_epgpinchzz = nint(rbuf(iad+1))
1269 iad = iad + 1
1270C
1271 g_strpg = nint(rbuf(iad+1))
1272 iad = iad + 1
1273 g_uelr = nint(rbuf(iad+1))
1274 iad = iad + 1
1275 g_uelr1 = nint(rbuf(iad+1))
1276 iad = iad + 1
1277 g_damdl = nint(rbuf(iad+1))
1278 iad = iad + 1
1279 g_forth = nint(rbuf(iad+1))
1280 iad = iad + 1
1281 g_eintth = nint(rbuf(iad+1))
1282 iad = iad + 1
1283 g_fill = nint(rbuf(iad+1))
1284 iad = iad + 1
1285 g_seq = nint(rbuf(iad+1))
1286 iad = iad + 1
1287 g_strw = nint(rbuf(iad+1))
1288 iad = iad + 1
1289 g_strwpg = nint(rbuf(iad+1))
1290 iad = iad + 1
1291 g_thk_i = nint(rbuf(iad+1))
1292 iad = iad + 1
1293 g_jac_i = nint(rbuf(iad+1))
1294 iad = iad + 1
1295 g_dt = nint(rbuf(iad+1))
1296 iad = iad + 1
1297 g_isms = nint(rbuf(iad+1))
1298 iad = iad + 1
1299 g_bpreld = nint(rbuf(iad+1))
1300 iad = iad + 1
1301 g_aburn= nint(rbuf(iad+1))
1302 iad = iad + 1
1303 g_mu= nint(rbuf(iad+1))
1304 iad = iad + 1
1305 g_planl= nint(rbuf(iad+1))
1306 iad = iad + 1
1307 g_epsdnl= nint(rbuf(iad+1))
1308 iad = iad + 1
1309 g_dmgscl= nint(rbuf(iad+1))
1310 iad = iad + 1
1311 g_tsaiwu= nint(rbuf(iad+1))
1312 iad = iad + 1
1313 g_tempg = nint(rbuf(iad+1))
1314 iad = iad + 1
1315 g_cor_nf = nint(rbuf(iad+1))
1316 iad = iad + 1
1317 g_cor_fr = nint(rbuf(iad+1))
1318 iad = iad + 1
1319 g_cor_xr = nint(rbuf(iad+1))
1320 iad = iad + 1
1321 g_maxfrac= nint(rbuf(iad+1))
1322 iad = iad + 1
1323 g_maxeps= nint(rbuf(iad+1))
1324 iad = iad + 1
1325 g_betaorth = nint(rbuf(iad+1))
1326 iad = iad + 1
1327 g_amu= nint(rbuf(iad+1))
1328 iad = iad + 1
1329 g_sh_ioffset= nint(rbuf(iad+1))
1330 iad = iad + 1
1331 g_eint_distor= nint(rbuf(iad+1))
1332 iad = iad + 1
1333 g_for_g= nint(rbuf(iad+1))
1334 iad = iad + 1
1335 g_forpg_g= nint(rbuf(iad+1))
1336 iad = iad + 1
1337c---
1338C 1-D elements (TRUSS, BEAM, SPRING, NSTRAND)
1339c---
1340 g_area = nint(rbuf(iad+1))
1341 iad = iad + 1
1342 g_skew = nint(rbuf(iad+1))
1343 iad = iad + 1
1344 g_length = nint(rbuf(iad+1))
1345 iad = iad + 1
1346 g_totdepl = nint(rbuf(iad+1))
1347 iad = iad + 1
1348 g_totrot = nint(rbuf(iad+1))
1349 iad = iad + 1
1350 g_forep = nint(rbuf(iad+1))
1351 iad = iad + 1
1352 g_momep = nint(rbuf(iad+1))
1353 iad = iad + 1
1354 g_dep_in_tens = nint(rbuf(iad+1))
1355 iad = iad + 1
1356 g_dep_in_comp = nint(rbuf(iad+1))
1357 iad = iad + 1
1358 g_rot_in_tens = nint(rbuf(iad+1))
1359 iad = iad + 1
1360 g_rot_in_comp = nint(rbuf(iad+1))
1361 iad = iad + 1
1362 g_posx = nint(rbuf(iad+1))
1363 iad = iad + 1
1364 g_posy = nint(rbuf(iad+1))
1365 iad = iad + 1
1366 g_posz = nint(rbuf(iad+1))
1367 iad = iad + 1
1368 g_posxx = nint(rbuf(iad+1))
1369 iad = iad + 1
1370 g_posyy = nint(rbuf(iad+1))
1371 iad = iad + 1
1372 g_poszz = nint(rbuf(iad+1))
1373 iad = iad + 1
1374 g_yield = nint(rbuf(iad+1))
1375 iad = iad + 1
1376 g_length_err = nint(rbuf(iad+1))
1377 iad = iad + 1
1378 g_dv = nint(rbuf(iad+1))
1379 iad = iad + 1
1380 g_dfs = nint(rbuf(iad+1))
1381 iad = iad + 1
1382 g_skew_err = nint(rbuf(iad+1))
1383 iad = iad + 1
1384 g_e6 = nint(rbuf(iad+1))
1385 iad = iad + 1
1386 g_ruptcrit = nint(rbuf(iad+1))
1387 iad = iad + 1
1388 g_mass = nint(rbuf(iad+1))
1389 iad = iad + 1
1390 g_v_repcvt = nint(rbuf(iad+1))
1391 iad = iad + 1
1392 g_vr_repcvt = nint(rbuf(iad+1))
1393 iad = iad + 1
1394 g_nuvar = nint(rbuf(iad+1))
1395 iad = iad + 1
1396 g_nuvarn = nint(rbuf(iad+1))
1397 iad = iad + 1
1398 g_defini = nint(rbuf(iad+1))
1399 iad = iad + 1
1400 g_forini = nint(rbuf(iad+1))
1401 iad = iad + 1
1402 g_inifric = nint(rbuf(iad+1))
1403 iad = iad + 1
1404 g_strhg = nint(rbuf(iad+1))
1405 iad = iad + 1
1406 g_etotsh = nint(rbuf(iad+1))
1407 iad = iad + 1
1408c---
1409 g_dt_piter_old = nint(rbuf(iad+1))
1410 iad = iad + 1
1411
1412 g_dt_piter=0
1413 IF(isnod==10)THEN
1414 IF(g_dt_piter_old/=0)THEN
1415 g_dt_piter=g_dt_piter_old
1416 ELSEIF(idt1tet10 > 1)THEN
1417 g_dt_piter=30 ! New dimensioning and allocation of DT_PITER due to /DT1TET10/N for THIS run
1418 newlen =newlen+30*nel
1419 END IF
1420 END IF
1421C
1422 g_skew_id = nint(rbuf(iad+1))
1423 iad = iad + 1
1424 g_gama_r = nint(rbuf(iad+1))
1425 iad = iad + 1
1426 g_yield_in_comp = nint(rbuf(iad+1))
1427 iad = iad + 1
1428 g_xxold_in_comp = nint(rbuf(iad+1))
1429 iad = iad + 1
1430c---
1431C seatbelt elements
1432c---
1433 g_slipring_id = nint(rbuf(iad+1))
1434 iad = iad + 1
1435 g_slipring_fram_id = nint(rbuf(iad+1))
1436 iad = iad + 1
1437 g_slipring_strand = nint(rbuf(iad+1))
1438 iad = iad + 1
1439 g_retractor_id = nint(rbuf(iad+1))
1440 iad = iad + 1
1441 g_ringslip = nint(rbuf(iad+1))
1442 iad = iad + 1
1443 g_add_node = nint(rbuf(iad+1))
1444 iad = iad + 1
1445 g_update = nint(rbuf(iad+1))
1446 iad = iad + 1
1447 g_fram_factor = nint(rbuf(iad+1))
1448 iad = iad + 1
1449 g_intvar = nint(rbuf(iad+1))
1450 iad = iad + 1
1451 g_idt_tsh = nint(rbuf(iad+1))
1452 iad = iad + 1
1453C ---H3D/TMAX in BUFLEN
1454 g_tm_yield = nint(rbuf(iad+1))
1455 iad = iad + 1
1456 g_tm_seq = nint(rbuf(iad+1))
1457 iad = iad + 1
1458 g_tm_eint = nint(rbuf(iad+1))
1459 iad = iad + 1
1460 g_tm_dmg = nint(rbuf(iad+1))
1461 iad = iad + 1
1462 g_tm_sig = nint(rbuf(iad+1))
1463 iad = iad + 1
1464 g_tm_stra = nint(rbuf(iad+1))
1465 iad = iad + 1
1466c---
1467 gbuf%G_NOFF = g_noff
1468 gbuf%G_IERR = g_ierr
1469 gbuf%G_OFF = g_off
1470 gbuf%G_GAMA = g_gama
1471 gbuf%G_SMSTR = g_smstr
1472 gbuf%G_HOURG = g_hourg
1473 gbuf%G_BFRAC = g_bfrac
1474 gbuf%G_EINT = g_eint
1475 gbuf%G_EINS = g_eins
1476 gbuf%G_RHO = g_rho
1477 gbuf%G_QVIS = g_qvis
1478 gbuf%G_DELTAX = g_deltax
1479 gbuf%G_VOL = g_vol
1480 gbuf%G_EPSD = g_epsd
1481 gbuf%G_EPSQ = g_epsq
1482 gbuf%G_PLA = g_pla
1483 gbuf%G_WPLA = g_wpla
1484 gbuf%G_TEMP = g_temp
1485 gbuf%G_TB = g_tb
1486 gbuf%G_RK = g_rk
1487 gbuf%G_RE = g_re
1488 gbuf%G_SIG = g_sig
1489 gbuf%G_FOR = g_for
1490 gbuf%G_MOM = g_mom
1491 gbuf%G_THK = g_thk
1492 gbuf%G_TAG22 = g_tag22
1493 gbuf%G_STRA = g_stra
1494 gbuf%G_SIGI = g_sigi
1495 gbuf%G_DMG = g_dmg
1496 gbuf%G_FORPG = g_forpg
1497 gbuf%G_MOMPG = g_mompg
1498C
1499 gbuf%G_FORPGPINCH = g_forpgpinch
1500 gbuf%G_MOMPGPINCH = g_mompgpinch
1501 gbuf%G_EPGPINCHXZ = g_epgpinchxz
1502 gbuf%G_EPGPINCHYZ = g_epgpinchyz
1503 gbuf%G_EPGPINCHZZ = g_epgpinchzz
1504C
1505 gbuf%G_STRPG = g_strpg
1506 gbuf%G_UELR = g_uelr
1507 gbuf%G_UELR1 = g_uelr1
1508 gbuf%G_DAMDL = g_damdl
1509 gbuf%G_FORTH = g_forth
1510 gbuf%G_EINTTH = g_eintth
1511 gbuf%G_FILL = g_fill
1512 gbuf%G_SEQ = g_seq
1513 gbuf%G_STRW = g_strw
1514 gbuf%G_STRWPG = g_strwpg
1515 gbuf%G_THK_I = g_thk_i
1516 gbuf%G_JAC_I = g_jac_i
1517 gbuf%G_DT = g_dt
1518 gbuf%G_ISMS = g_isms
1519 gbuf%G_BPRELD = g_bpreld
1520 gbuf%G_ABURN = g_aburn
1521 gbuf%G_MU = g_mu
1522 gbuf%G_PLANL = g_planl
1523 gbuf%G_EPSDNL = g_epsdnl
1524 gbuf%G_DMGSCL = g_dmgscl
1525 gbuf%G_TSAIWU = g_tsaiwu
1526 gbuf%G_TEMPG = g_tempg
1527 gbuf%G_COR_NF = g_cor_nf
1528 gbuf%G_COR_FR = g_cor_fr
1529 gbuf%G_COR_XR = g_cor_xr
1530 gbuf%G_MAXFRAC= g_maxfrac
1531 gbuf%G_MAXEPS = g_maxeps
1532 gbuf%G_BETAORTH = g_betaorth
1533 gbuf%G_AMU = g_amu
1534 gbuf%G_SH_IOFFSET = g_sh_ioffset
1535 gbuf%G_EINT_DISTOR = g_eint_distor
1536 gbuf%G_FOR_G = g_for_g
1537 gbuf%G_FORPG_G = g_forpg_g
1538c---
1539C 1-D elements (TRUSS, BEAM, SPRING, NSTRAND)
1540c---
1541 gbuf%G_AREA = g_area
1542 gbuf%G_SKEW = g_skew
1543 gbuf%G_LENGTH = g_length
1544 gbuf%G_TOTDEPL = g_totdepl
1545 gbuf%G_TOTROT = g_totrot
1546 gbuf%G_FOREP = g_forep
1547 gbuf%G_MOMEP = g_momep
1548 gbuf%G_DEP_IN_TENS = g_dep_in_tens
1549 gbuf%G_DEP_IN_COMP = g_dep_in_comp
1550 gbuf%G_ROT_IN_TENS = g_rot_in_tens
1551 gbuf%G_ROT_IN_COMP = g_rot_in_comp
1552 gbuf%G_POSX = g_posx
1553 gbuf%G_POSY = g_posy
1554 gbuf%G_POSZ = g_posz
1555 gbuf%G_POSXX = g_posxx
1556 gbuf%G_POSYY = g_posyy
1557 gbuf%G_POSZZ = g_poszz
1558 gbuf%G_YIELD = g_yield
1559 gbuf%G_LENGTH_ERR = g_length_err
1560 gbuf%G_DV = g_dv
1561 gbuf%G_DFS = g_dfs
1562 gbuf%G_SKEW_ERR = g_skew_err
1563 gbuf%G_E6 = g_e6
1564 gbuf%G_RUPTCRIT = g_ruptcrit
1565 gbuf%G_MASS = g_mass
1566 gbuf%G_V_REPCVT = g_v_repcvt
1567 gbuf%G_VR_REPCVT = g_vr_repcvt
1568 gbuf%G_NUVAR = g_nuvar
1569 gbuf%G_NUVARN = g_nuvarn
1570 gbuf%G_DEFINI = g_defini
1571 gbuf%G_FORINI = g_forini
1572 gbuf%G_INIFRIC = g_inifric
1573 gbuf%G_STRHG = g_strhg
1574 gbuf%G_ETOTSH = g_etotsh
1575 gbuf%G_DT_PITER = g_dt_piter
1576 gbuf%G_SKEW_ID = g_skew_id
1577 gbuf%G_GAMA_R = g_gama_r
1578 gbuf%G_YIELD_IN_COMP = g_yield_in_comp
1579 gbuf%G_XXOLD_IN_COMP = g_xxold_in_comp
1580c---
1581C seatbelt elements
1582c---
1583 gbuf%G_SLIPRING_ID = g_slipring_id
1584 gbuf%G_SLIPRING_FRAM_ID = g_slipring_fram_id
1585 gbuf%G_SLIPRING_STRAND = g_slipring_strand
1586 gbuf%G_RETRACTOR_ID= g_retractor_id
1587 gbuf%G_RINGSLIP = g_ringslip
1588 gbuf%G_ADD_NODE = g_add_node
1589 gbuf%G_UPDATE = g_update
1590 gbuf%G_FRAM_FACTOR = g_fram_factor
1591 gbuf%G_INTVAR = g_intvar
1592 gbuf%G_IDT_TSH = g_idt_tsh
1593C ---H3D/TMAX in BUFLEN
1594 gbuf%G_TM_YIELD = g_tm_yield
1595 gbuf%G_TM_SEQ = g_tm_seq
1596 gbuf%G_TM_EINT = g_tm_eint
1597 gbuf%G_TM_DMG = g_tm_dmg
1598 gbuf%G_TM_SIG = g_tm_sig
1599 gbuf%G_TM_STRA = g_tm_stra
1600
1601C------------ ETOTSH Work array used for free shear locking of S17
1602 ALLOCATE(elbuf_str%GBUF%ETOTSH(nel*g_etotsh) ,stat=err)
1603 gbuf%ETOTSH = zero
1604C------------ Work array GAMA_R : co-rotational local sys
1605 ALLOCATE(elbuf_str%GBUF%GAMA_R(nel*g_gama_r) ,stat=err)
1606 gbuf%GAMA_R = zero
1607c---
1608 ALLOCATE (elbuf_str%GBUF%NOFF(nel*g_noff) ,stat=err)
1609 gbuf%NOFF(1:nel*g_noff) = nint(rbuf(iad+1:iad+nel*g_noff))
1610 iad = iad+nel*g_noff
1611 ALLOCATE (elbuf_str%GBUF%IERR(nel*g_ierr) ,stat=err)
1612 gbuf%IERR(1:nel*g_ierr) = nint(rbuf(iad+1:iad+nel*g_ierr))
1613 iad = iad+nel*g_ierr
1614 ALLOCATE (elbuf_str%GBUF%GAMA(nel*g_gama) ,stat=err)
1615 gbuf%GAMA(1:nel*g_gama) = rbuf(iad+1:iad+nel*g_gama)
1616 iad = iad+nel*g_gama
1617C ALLOCATE (ELBUF_STR%GBUF%SMSTR(NEL*G_SMSTR) ,STAT=ERR)
1618C GBUF%SMSTR(1:NEL*G_SMSTR) = RBUF(IAD+1:IAD+NEL*G_SMSTR)
1619C IAD = IAD+NEL*G_SMSTR
1620 ALLOCATE (elbuf_str%GBUF%HOURG(nel*g_hourg) ,stat=err)
1621 gbuf%HOURG(1:nel*g_hourg) = rbuf(iad+1:iad+nel*g_hourg)
1622 iad = iad+nel*g_hourg
1623 ALLOCATE (elbuf_str%GBUF%TAG22(nel*g_tag22) ,stat=err)
1624 gbuf%TAG22(1:nel*g_tag22) = rbuf(iad+1:iad+nel*g_tag22)
1625 iad = iad+nel*g_tag22
1626 ALLOCATE (elbuf_str%GBUF%STRA(nel*g_stra) ,stat=err)
1627 gbuf%STRA(1:nel*g_stra) = rbuf(iad+1:iad+nel*g_stra)
1628 iad = iad+nel*g_stra
1629 ALLOCATE (elbuf_str%GBUF%SIGI(nel*g_sigi) ,stat=err)
1630 gbuf%SIGI(1:nel*g_sigi) = rbuf(iad+1:iad+nel*g_sigi)
1631 iad = iad+nel*g_sigi
1632 ALLOCATE (elbuf_str%GBUF%DMG(nel*g_dmg) ,stat=err)
1633 gbuf%DMG(1:nel*g_dmg) = rbuf(iad+1:iad+nel*g_dmg)
1634 iad = iad+nel*g_dmg
1635 ALLOCATE (elbuf_str%GBUF%UELR(nel*g_uelr) ,stat=err)
1636 gbuf%UELR(1:nel*g_uelr) = rbuf(iad+1:iad+nel*g_uelr)
1637 iad = iad+nel*g_uelr
1638 ALLOCATE (elbuf_str%GBUF%UELR1(nel*g_uelr1) ,stat=err)
1639 gbuf%UELR1(1:nel*g_uelr1) = rbuf(iad+1:iad+nel*g_uelr1)
1640 iad = iad+nel*g_uelr1
1641 ALLOCATE (elbuf_str%GBUF%DAMDL(nel*g_damdl) ,stat=err)
1642 gbuf%DAMDL(1:nel*g_damdl) = rbuf(iad+1:iad+nel*g_damdl)
1643 iad = iad+nel*g_damdl
1644 ALLOCATE (elbuf_str%GBUF%FOR (nel*g_for) ,stat=err)
1645 gbuf%FOR(1:nel*g_for) = rbuf(iad+1:iad+nel*g_for)
1646 iad = iad+nel*g_for
1647 ALLOCATE (elbuf_str%GBUF%MOM (nel*g_mom) ,stat=err)
1648 gbuf%MOM(1:nel*g_mom) = rbuf(iad+1:iad+nel*g_mom)
1649 iad = iad+nel*g_mom
1650 ALLOCATE (elbuf_str%GBUF%THK (nel*g_thk) ,stat=err)
1651 gbuf%THK(1:nel*g_thk) = rbuf(iad+1:iad+nel*g_thk)
1652 iad = iad+nel*g_thk
1653 ALLOCATE (elbuf_str%GBUF%STRW(nel*g_strw),stat=err)
1654 gbuf%STRW(1:nel*g_strw)=rbuf(iad+1:iad+nel*g_strw)
1655 iad = iad+nel*g_strw
1656 ALLOCATE (elbuf_str%GBUF%THK_I(nel*g_thk_i),stat=err)
1657 gbuf%THK_I(1:nel*g_thk_i)=rbuf(iad+1:iad+nel*g_thk_i)
1658 iad = iad+nel*g_thk_i
1659 ALLOCATE (elbuf_str%GBUF%JAC_I(nel*g_jac_i),stat=err)
1660 gbuf%JAC_I(1:nel*g_jac_i)=rbuf(iad+1:iad+nel*g_jac_i)
1661 iad = iad+nel*g_jac_i
1662 ALLOCATE (elbuf_str%GBUF%DT(nel*g_dt),stat=err)
1663 gbuf%DT(1:nel*g_dt)=rbuf(iad+1:iad+nel*g_dt)
1664 iad = iad+nel*g_dt
1665 ALLOCATE (elbuf_str%GBUF%ISMS(nel*g_isms),stat=err)
1666 gbuf%ISMS(1:nel*g_isms)=rbuf(iad+1:iad+nel*g_isms)
1667 iad = iad+nel*g_isms
1668 ALLOCATE (elbuf_str%GBUF%BPRELD(nel*g_bpreld),stat=err)
1669 gbuf%BPRELD(1:nel*g_bpreld)=rbuf(iad+1:iad+nel*g_bpreld)
1670 iad = iad+nel*g_bpreld
1671 ALLOCATE (elbuf_str%GBUF%COR_NF(nel*g_cor_nf),stat=err)
1672 gbuf%COR_NF(1:nel*g_cor_nf)=rbuf(iad+1:iad+nel*g_cor_nf)
1673 iad = iad+nel*g_cor_nf
1674 ALLOCATE (elbuf_str%GBUF%COR_FR(nel*g_cor_fr),stat=err)
1675 gbuf%COR_FR(1:nel*g_cor_fr)=rbuf(iad+1:iad+nel*g_cor_fr)
1676 iad = iad+nel*g_cor_fr
1677 ALLOCATE (elbuf_str%GBUF%COR_XR(nel*g_cor_xr),stat=err)
1678 gbuf%COR_XR(1:nel*g_cor_xr)=rbuf(iad+1:iad+nel*g_cor_xr)
1679 iad = iad+nel*g_cor_xr
1680 ALLOCATE (elbuf_str%GBUF%MAXFRAC(nel*g_maxfrac),stat=err)
1681 gbuf%MAXFRAC(1:nel*g_maxfrac)=rbuf(iad+1:iad+nel*g_maxfrac)
1682 iad = iad+nel*g_maxfrac
1683 ALLOCATE (elbuf_str%GBUF%MAXEPS(nel*g_maxeps),stat=err)
1684 gbuf%MAXEPS(1:nel*g_maxeps)=rbuf(iad+1:iad+nel*g_maxeps)
1685 iad = iad+nel*g_maxeps
1686 ALLOCATE (elbuf_str%GBUF%BETAORTH (nel*g_betaorth) ,stat=err)
1687 gbuf%BETAORTH(1:nel*g_betaorth) = rbuf(iad+1:iad+nel*g_betaorth)
1688 iad = iad+nel*g_betaorth
1689 ALLOCATE (elbuf_str%GBUF%AMU(nel*g_amu),stat=err)
1690 gbuf%AMU(1:nel*g_amu)=rbuf(iad+1:iad+nel*g_amu)
1691 iad = iad+nel*g_amu
1692 ALLOCATE (elbuf_str%GBUF%SH_IOFFSET(nel*g_sh_ioffset),stat=err)
1693 gbuf%SH_IOFFSET(1:nel*g_sh_ioffset)=rbuf(iad+1:iad+nel*g_sh_ioffset)
1694 iad = iad+nel*g_sh_ioffset
1695 ALLOCATE (elbuf_str%GBUF%EINT_DISTOR(nel*g_eint_distor),stat=err)
1696 gbuf%EINT_DISTOR(1:nel*g_eint_distor)=rbuf(iad+1:iad+nel*g_eint_distor)
1697 iad = iad+nel*g_eint_distor
1698 ALLOCATE (elbuf_str%GBUF%FOR_G(nel*g_for_g),stat=err)
1699 gbuf%FOR_G(1:nel*g_for_g)=rbuf(iad+1:iad+nel*g_for_g)
1700 iad = iad+nel*g_for_g
1701 ALLOCATE (elbuf_str%GBUF%WPLA (nel*g_wpla) ,stat=err)
1702 gbuf%WPLA(1:nel*g_wpla) = rbuf(iad+1:iad+nel*g_wpla)
1703 iad = iad+nel*g_wpla
1704c-------
1705 IF (npg == 1) THEN
1706 elbuf_str%GBUF%FORPG => gbuf%FOR
1707 elbuf_str%GBUF%MOMPG => gbuf%MOM
1708C
1709C ELBUF_STR%GBUF%FORPGPINCH => GBUF%FORPINCH ! [PM] add later
1710C ELBUF_STR%GBUF%MOMPGPINCH => GBUF%MOMPINCH ! [PM] add later
1711C ELBUF_STR%GBUF%EPGPINCHXZ => GBUF%EPGPINCHXZ ! [PM] add later
1712C ELBUF_STR%GBUF%EPGPINCHYZ => GBUF%EPGPINCHYZ ! [PM] add later
1713C ELBUF_STR%GBUF%EPGPINCHZZ => GBUF%EPGPINCHZZ ! [PM] add later
1714C
1715 IF (g_strpg<=g_stra) THEN
1716 elbuf_str%GBUF%STRPG => gbuf%STRA
1717 ELSE
1718 ALLOCATE (elbuf_str%GBUF%STRPG(nel*g_strpg) ,stat=err)
1719 gbuf%STRPG(1:nel*g_strpg) = rbuf(iad+1:iad+nel*g_strpg)
1720 iad = iad+nel*g_strpg
1721 END IF
1722 elbuf_str%GBUF%FORPG_G => gbuf%FOR_G
1723 ELSEIF (npg > 1) THEN
1724 ALLOCATE (elbuf_str%GBUF%FORPG(nel*g_forpg) ,stat=err)
1725 gbuf%FORPG(1:nel*g_forpg) = rbuf(iad+1:iad+nel*g_forpg)
1726 iad = iad+nel*g_forpg
1727 ALLOCATE (elbuf_str%GBUF%MOMPG(nel*g_mompg) ,stat=err)
1728 gbuf%MOMPG(1:nel*g_mompg) = rbuf(iad+1:iad+nel*g_mompg)
1729 iad = iad+nel*g_mompg
1730C
1731 ALLOCATE (elbuf_str%GBUF%FORPGPINCH(nel*g_forpgpinch) ,stat=err)
1732 gbuf%FORPGPINCH(1:nel*g_forpgpinch) = rbuf(iad+1:iad+nel*g_forpgpinch)
1733 iad = iad+nel*g_forpgpinch
1734 ALLOCATE (elbuf_str%GBUF%MOMPGPINCH(nel*g_mompgpinch) ,stat=err)
1735 gbuf%MOMPG(1:nel*g_mompgpinch) = rbuf(iad+1:iad+nel*g_mompgpinch)
1736 iad = iad+nel*g_mompgpinch
1737 ALLOCATE (elbuf_str%GBUF%EPGPINCHXZ(nel*g_epgpinchxz) ,stat=err)
1738 gbuf%EPGPINCHXZ(1:nel*g_epgpinchxz) = rbuf(iad+1:iad+nel*g_epgpinchxz)
1739 iad = iad+nel*g_epgpinchxz
1740 ALLOCATE (elbuf_str%GBUF%EPGPINCHYZ(nel*g_epgpinchyz) ,stat=err)
1741 gbuf%EPGPINCHYZ(1:nel*g_epgpinchyz) = rbuf(iad+1:iad+nel*g_epgpinchyz)
1742 iad = iad+nel*g_epgpinchyz
1743 ALLOCATE (elbuf_str%GBUF%EPGPINCHZZ(nel*g_epgpinchzz) ,stat=err)
1744 gbuf%EPGPINCHZZ(1:nel*g_epgpinchzz) = rbuf(iad+1:iad+nel*g_epgpinchzz)
1745 iad = iad+nel*g_epgpinchzz
1746C
1747 ALLOCATE (elbuf_str%GBUF%STRPG(nel*g_strpg) ,stat=err)
1748 gbuf%STRPG(1:nel*g_strpg) = rbuf(iad+1:iad+nel*g_strpg)
1749 iad = iad+nel*g_strpg
1750 ALLOCATE (elbuf_str%GBUF%STRWPG(nel*g_strwpg),stat=err)
1751 gbuf%STRWPG(1:nel*g_strwpg)=rbuf(iad+1:iad+nel*g_strwpg)
1752 iad = iad+nel*g_strwpg
1753 ALLOCATE (elbuf_str%GBUF%FORPG_G(nel*g_forpg_g),stat=err)
1754 gbuf%FORPG_G(1:nel*g_forpg_g)=rbuf(iad+1:iad+nel*g_forpg_g)
1755 iad = iad+nel*g_forpg_g
1756 ENDIF
1757c------------------------------------------------
1758 IF (npttot == 1) THEN ! NPTTOT = 1 ! global variables are pointing to local ones
1759 lbuf => elbuf_str%BUFLY(1)%LBUF(1,1,1)
1760 elbuf_str%GBUF%BFRAC => lbuf%BFRAC
1761 elbuf_str%GBUF%OFF => lbuf%OFF
1762 elbuf_str%GBUF%EINT => lbuf%EINT
1763 elbuf_str%GBUF%EINS => lbuf%EINS
1764 elbuf_str%GBUF%RHO => lbuf%RHO
1765 elbuf_str%GBUF%QVIS => lbuf%QVIS
1766 elbuf_str%GBUF%DELTAX => lbuf%DELTAX
1767 elbuf_str%GBUF%VOL => lbuf%VOL
1768 elbuf_str%GBUF%EPSD => lbuf%EPSD
1769 elbuf_str%GBUF%EPSQ => lbuf%EPSQ
1770 elbuf_str%GBUF%PLA => lbuf%PLA
1771 elbuf_str%GBUF%WPLA => lbuf%WPLA
1772 elbuf_str%GBUF%TEMP => lbuf%TEMP
1773 elbuf_str%GBUF%TB => lbuf%TB
1774 elbuf_str%GBUF%RK => lbuf%RK
1775 elbuf_str%GBUF%RE => lbuf%RE
1776 elbuf_str%GBUF%SIG => lbuf%SIG
1777 elbuf_str%GBUF%FORTH => lbuf%FORTH
1778 elbuf_str%GBUF%EINTTH => lbuf%EINTTH
1779 elbuf_str%GBUF%SEQ => lbuf%SEQ
1780 elbuf_str%GBUF%ABURN => lbuf%ABURN
1781 elbuf_str%GBUF%MU => lbuf%MU
1782
1783 ELSE ! NPTTOT /= 1
1784 ALLOCATE (elbuf_str%GBUF%BFRAC(nel*g_bfrac) ,stat=err)
1785 gbuf%BFRAC(1:nel*g_bfrac) = rbuf(iad+1:iad+nel*g_bfrac)
1786 iad = iad+nel*g_bfrac
1787 ALLOCATE (elbuf_str%GBUF%OFF (nel*g_off) ,stat=err)
1788 gbuf%OFF(1:nel*g_off) = rbuf(iad+1:iad+nel*g_off)
1789 iad = iad+nel*g_off
1790 ALLOCATE (elbuf_str%GBUF%EINT(nel*g_eint) ,stat=err)
1791 gbuf%EINT(1:nel*g_eint) = rbuf(iad+1:iad+nel*g_eint)
1792 iad = iad+nel*g_eint
1793 ALLOCATE (elbuf_str%GBUF%EINS(nel*g_eins) ,stat=err)
1794 gbuf%EINS(1:nel*g_eins) = rbuf(iad+1:iad+nel*g_eins)
1795 iad = iad+nel*g_eins
1796 ALLOCATE (elbuf_str%GBUF%RHO (nel*g_rho) ,stat=err)
1797 gbuf%RHO(1:nel*g_rho) = rbuf(iad+1:iad+nel*g_rho)
1798 iad = iad+nel*g_rho
1799 ALLOCATE (elbuf_str%GBUF%QVIS(nel*g_qvis) ,stat=err)
1800 gbuf%QVIS(1:nel*g_qvis) = rbuf(iad+1:iad+nel*g_qvis)
1801 iad = iad+nel*g_qvis
1802 ALLOCATE (elbuf_str%GBUF%DELTAX(nel*g_deltax),stat=err)
1803 gbuf%DELTAX(1:nel*g_deltax) = rbuf(iad+1:iad+nel*g_deltax)
1804 iad = iad+nel*g_deltax
1805 ALLOCATE (elbuf_str%GBUF%VOL (nel*g_vol) ,stat=err)
1806 gbuf%VOL(1:nel*g_vol) = rbuf(iad+1:iad+nel*g_vol)
1807 iad = iad+nel*g_vol
1808 ALLOCATE (elbuf_str%GBUF%EPSD(nel*g_epsd) ,stat=err)
1809 gbuf%EPSD(1:nel*g_epsd) = rbuf(iad+1:iad+nel*g_epsd)
1810 iad = iad+nel*g_epsd
1811 ALLOCATE (elbuf_str%GBUF%EPSQ(nel*g_epsq) ,stat=err)
1812 gbuf%EPSQ(1:nel*g_epsq) = rbuf(iad+1:iad+nel*g_epsq)
1813 iad = iad+nel*g_epsq
1814 ALLOCATE (elbuf_str%GBUF%PLA (nel*g_pla) ,stat=err)
1815 gbuf%PLA(1:nel*g_pla) = rbuf(iad+1:iad+nel*g_pla)
1816 iad = iad+nel*g_pla
1817 ALLOCATE (elbuf_str%GBUF%TEMP(nel*g_temp) ,stat=err)
1818 gbuf%TEMP(1:nel*g_temp) = rbuf(iad+1:iad+nel*g_temp)
1819 iad = iad+nel*g_temp
1820 ALLOCATE (elbuf_str%GBUF%TB(nel*g_tb) ,stat=err)
1821 gbuf%TB(1:nel*g_tb) = rbuf(iad+1:iad+nel*g_tb)
1822 iad = iad+nel*g_tb
1823 ALLOCATE (elbuf_str%GBUF%RK(nel*g_rk) ,stat=err)
1824 gbuf%RK(1:nel*g_rk) = rbuf(iad+1:iad+nel*g_rk)
1825 iad = iad+nel*g_rk
1826 ALLOCATE (elbuf_str%GBUF%RE(nel*g_re) ,stat=err)
1827 gbuf%RE(1:nel*g_re) = rbuf(iad+1:iad+nel*g_re)
1828 iad = iad+nel*g_re
1829 ALLOCATE (elbuf_str%GBUF%SIG (nel*g_sig) ,stat=err)
1830 gbuf%SIG(1:nel*g_sig) = rbuf(iad+1:iad+nel*g_sig)
1831 iad = iad+nel*g_sig
1832 ALLOCATE (elbuf_str%GBUF%FORTH (nel*g_forth) ,stat=err)
1833 gbuf%FORTH(1:nel*g_forth) = rbuf(iad+1:iad+nel*g_forth)
1834 iad = iad+nel*g_forth
1835 ALLOCATE (elbuf_str%GBUF%EINTTH (nel*g_eintth) ,stat=err)
1836 gbuf%EINTTH(1:nel*g_eintth) = rbuf(iad+1:iad+nel*g_eintth)
1837 iad = iad+nel*g_eintth
1838 ALLOCATE (elbuf_str%GBUF%SEQ (nel*g_seq) ,stat=err)
1839 gbuf%SEQ(1:nel*g_seq) = rbuf(iad+1:iad+nel*g_seq)
1840 iad = iad+nel*g_seq
1841 ALLOCATE (elbuf_str%GBUF%ABURN(nel*g_aburn) ,stat=err)
1842 gbuf%ABURN(1:nel*g_aburn) = rbuf(iad+1:iad+nel*g_aburn)
1843 iad = iad+nel*g_aburn
1844 ALLOCATE (elbuf_str%GBUF%MU(nel*g_mu) ,stat=err)
1845 gbuf%MU(1:nel*g_mu) = rbuf(iad+1:iad+nel*g_mu)
1846 iad = iad+nel*g_mu
1847
1848 ENDIF ! NPT
1849c
1850 ALLOCATE (elbuf_str%GBUF%FILL (nel*g_fill) ,stat=err)
1851 gbuf%FILL(1:nel*g_fill) = rbuf(iad+1:iad+nel*g_fill)
1852 iad = iad+nel*g_fill
1853c
1854c---
1855C 1-D elements (TRUSS, BEAM, SPRING)
1856c---
1857 IF(igtyp == 3 .and. ity == 5) THEN
1858 ALLOCATE (elbuf_str%GBUF%DMGSCL (nel*g_dmgscl) ,stat=err)
1859 gbuf%DMGSCL(1:nel*g_dmgscl) = rbuf(iad+1:iad+nel*g_dmgscl)
1860 iad = iad+nel*g_dmgscl
1861 ENDIF
1862 ALLOCATE (elbuf_str%GBUF%AREA(nel*g_area) ,stat=err)
1863 gbuf%AREA(1:nel*g_area) = rbuf(iad+1:iad+nel*g_area)
1864 iad = iad+nel*g_area
1865 ALLOCATE (elbuf_str%GBUF%SKEW(nel*g_skew) ,stat=err)
1866 gbuf%SKEW(1:nel*g_skew) = rbuf(iad+1:iad+nel*g_skew)
1867 iad = iad+nel*g_skew
1868 ALLOCATE (elbuf_str%GBUF%LENGTH(nel*g_length) ,stat=err)
1869 gbuf%LENGTH(1:nel*g_length) = rbuf(iad+1:iad+nel*g_length)
1870 iad = iad+nel*g_length
1871 ALLOCATE (elbuf_str%GBUF%TOTDEPL(nel*g_totdepl) ,stat=err)
1872 gbuf%TOTDEPL(1:nel*g_totdepl) = rbuf(iad+1:iad+nel*g_totdepl)
1873 iad = iad+nel*g_totdepl
1874 ALLOCATE (elbuf_str%GBUF%TOTROT(nel*g_totrot) ,stat=err)
1875 gbuf%TOTROT(1:nel*g_totrot) = rbuf(iad+1:iad+nel*g_totrot)
1876 iad = iad+nel*g_totrot
1877 ALLOCATE (elbuf_str%GBUF%FOREP(nel*g_forep) ,stat=err)
1878 gbuf%FOREP(1:nel*g_forep) = rbuf(iad+1:iad+nel*g_forep)
1879 iad = iad+nel*g_forep
1880 ALLOCATE (elbuf_str%GBUF%MOMEP(nel*g_momep) ,stat=err)
1881 gbuf%MOMEP(1:nel*g_momep) = rbuf(iad+1:iad+nel*g_momep)
1882 iad = iad+nel*g_momep
1883 ALLOCATE (elbuf_str%GBUF%DEP_IN_TENS(nel*g_dep_in_tens) ,stat=err)
1884 gbuf%DEP_IN_TENS(1:nel*g_dep_in_tens) = rbuf(iad+1:iad+nel*g_dep_in_tens)
1885 iad = iad+nel*g_dep_in_tens
1886 ALLOCATE (elbuf_str%GBUF%DEP_IN_COMP(nel*g_dep_in_comp) ,stat=err)
1887 gbuf%DEP_IN_COMP(1:nel*g_dep_in_comp) = rbuf(iad+1:iad+nel*g_dep_in_comp)
1888 iad = iad+nel*g_dep_in_comp
1889 ALLOCATE (elbuf_str%GBUF%ROT_IN_TENS(nel*g_rot_in_tens) ,stat=err)
1890 gbuf%ROT_IN_TENS(1:nel*g_rot_in_tens) = rbuf(iad+1:iad+nel*g_rot_in_tens)
1891 iad = iad+nel*g_rot_in_tens
1892 ALLOCATE (elbuf_str%GBUF%ROT_IN_COMP(nel*g_rot_in_comp) ,stat=err)
1893 gbuf%ROT_IN_COMP(1:nel*g_rot_in_comp) = rbuf(iad+1:iad+nel*g_rot_in_comp)
1894 iad = iad+nel*g_rot_in_comp
1895 ALLOCATE (elbuf_str%GBUF%POSX(nel*g_posx) ,stat=err)
1896 gbuf%POSX(1:nel*g_posx) = rbuf(iad+1:iad+nel*g_posx)
1897 iad = iad+nel*g_posx
1898 ALLOCATE (elbuf_str%GBUF%POSY(nel*g_posy) ,stat=err)
1899 gbuf%POSY(1:nel*g_posy) = rbuf(iad+1:iad+nel*g_posy)
1900 iad = iad+nel*g_posy
1901 ALLOCATE (elbuf_str%GBUF%POSZ(nel*g_posz) ,stat=err)
1902 gbuf%POSZ(1:nel*g_posz) = rbuf(iad+1:iad+nel*g_posz)
1903 iad = iad+nel*g_posz
1904 ALLOCATE (elbuf_str%GBUF%POSXX(nel*g_posxx) ,stat=err)
1905 gbuf%POSXX(1:nel*g_posxx) = rbuf(iad+1:iad+nel*g_posxx)
1906 iad = iad+nel*g_posxx
1907 ALLOCATE (elbuf_str%GBUF%POSYY(nel*g_posyy) ,stat=err)
1908 gbuf%POSYY(1:nel*g_posyy) = rbuf(iad+1:iad+nel*g_posyy)
1909 iad = iad+nel*g_posyy
1910 ALLOCATE (elbuf_str%GBUF%POSZZ(nel*g_poszz) ,stat=err)
1911 gbuf%POSZZ(1:nel*g_poszz) = rbuf(iad+1:iad+nel*g_poszz)
1912 iad = iad+nel*g_poszz
1913 ALLOCATE (elbuf_str%GBUF%YIELD(nel*g_yield) ,stat=err)
1914 gbuf%YIELD(1:nel*g_yield) = rbuf(iad+1:iad+nel*g_yield)
1915 iad = iad+nel*g_yield
1916 ALLOCATE (elbuf_str%GBUF%LENGTH_ERR(nel*g_length_err) ,stat=err)
1917 gbuf%LENGTH_ERR(1:nel*g_length_err) = rbuf(iad+1:iad+nel*g_length_err)
1918 iad = iad+nel*g_length_err
1919 ALLOCATE (elbuf_str%GBUF%DV(nel*g_dv) ,stat=err)
1920 gbuf%DV(1:nel*g_dv) = rbuf(iad+1:iad+nel*g_dv)
1921 iad = iad+nel*g_dv
1922 ALLOCATE (elbuf_str%GBUF%DFS(nel*g_dfs) ,stat=err)
1923 gbuf%DFS(1:nel*g_dfs) = rbuf(iad+1:iad+nel*g_dfs)
1924 iad = iad+nel*g_dfs
1925 ALLOCATE (elbuf_str%GBUF%SKEW_ERR(nel*g_skew_err) ,stat=err)
1926 gbuf%SKEW_ERR(1:nel*g_skew_err) = rbuf(iad+1:iad+nel*g_skew_err)
1927 iad = iad+nel*g_skew_err
1928 ALLOCATE (elbuf_str%GBUF%E6(nel*g_e6) ,stat=err)
1929 gbuf%E6(1:nel*g_e6) = rbuf(iad+1:iad+nel*g_e6)
1930 iad = iad+nel*g_e6
1931 ALLOCATE (elbuf_str%GBUF%RUPTCRIT(nel*g_ruptcrit) ,stat=err)
1932 gbuf%RUPTCRIT(1:nel*g_ruptcrit) = rbuf(iad+1:iad+nel*g_ruptcrit)
1933 iad = iad+nel*g_ruptcrit
1934 ALLOCATE (elbuf_str%GBUF%MASS(nel*g_mass) ,stat=err)
1935 gbuf%MASS(1:nel*g_mass) = rbuf(iad+1:iad+nel*g_mass)
1936 iad = iad+nel*g_mass
1937 ALLOCATE (elbuf_str%GBUF%V_REPCVT(nel*g_v_repcvt) ,stat=err)
1938 gbuf%V_REPCVT(1:nel*g_v_repcvt) = rbuf(iad+1:iad+nel*g_v_repcvt)
1939 iad = iad+nel*g_v_repcvt
1940 ALLOCATE (elbuf_str%GBUF%VR_REPCVT(nel*g_vr_repcvt) ,stat=err)
1941 gbuf%VR_REPCVT(1:nel*g_vr_repcvt) = rbuf(iad+1:iad+nel*g_vr_repcvt)
1942 iad = iad+nel*g_vr_repcvt
1943 ALLOCATE (elbuf_str%GBUF%VAR(nel*g_nuvar) ,stat=err)
1944 gbuf%VAR(1:nel*g_nuvar) = rbuf(iad+1:iad+nel*g_nuvar)
1945 iad = iad+nel*g_nuvar
1946 ALLOCATE (elbuf_str%GBUF%VARN(nel*g_nuvarn) ,stat=err)
1947 gbuf%VARN(1:nel*g_nuvarn) = rbuf(iad+1:iad+nel*g_nuvarn)
1948 iad = iad+nel*g_nuvarn
1949 ALLOCATE (elbuf_str%GBUF%DEFINI(nel*g_defini) ,stat=err)
1950 gbuf%DEFINI(1:nel*g_defini) = rbuf(iad+1:iad+nel*g_defini)
1951 iad = iad+nel*g_defini
1952 ALLOCATE (elbuf_str%GBUF%FORINI(nel*g_forini) ,stat=err)
1953 gbuf%FORINI(1:nel*g_forini) = rbuf(iad+1:iad+nel*g_forini)
1954 iad = iad+nel*g_forini
1955 ALLOCATE (elbuf_str%GBUF%INIFRIC(nel*g_inifric) ,stat=err)
1956 gbuf%INIFRIC(1:nel*g_inifric) = rbuf(iad+1:iad+nel*g_inifric)
1957 iad = iad+nel*g_inifric
1958 ALLOCATE (elbuf_str%GBUF%STRHG(nel*g_strhg) ,stat=err)
1959 gbuf%STRHG(1:nel*g_strhg) = rbuf(iad+1:iad+nel*g_strhg)
1960 iad = iad+nel*g_strhg
1961 ALLOCATE (elbuf_str%GBUF%DT_PITER(nel*g_dt_piter) ,stat=err)
1962 IF(isnod==10)THEN
1963 IF(idt1tet10 > 1)THEN
1964 IF(g_dt_piter_old==0)THEN
1965 gbuf%DT_PITER(1:nel*g_dt_piter) = zero
1966 ELSE
1967 gbuf%DT_PITER(1:nel*g_dt_piter) = rbuf(iad+1:iad+nel*g_dt_piter) ! G_DT_PITER==G_DT_PITER_OLD
1968 END IF
1969 END IF
1970 END IF
1971 iad = iad+nel*g_dt_piter_old
1972C needed for batoz shell and /heat/mat
1973 IF (npg == 1) THEN
1974 elbuf_str%GBUF%TEMPG => gbuf%TEMP
1975 ENDIF
1976C
1977 ALLOCATE (elbuf_str%GBUF%SKEW_ID(nel*g_skew_id) ,stat=err)
1978 gbuf%SKEW_ID(1:nel*g_skew_id) = nint(rbuf(iad+1:iad+nel*g_skew_id))
1979 iad = iad+nel*g_skew_id
1980 ALLOCATE (elbuf_str%GBUF%YIELD_IN_COMP(nel*g_yield_in_comp),stat=err)
1981 gbuf%YIELD_IN_COMP(1:nel*g_yield_in_comp) = nint(rbuf(iad+1:iad+nel*g_yield_in_comp))
1982 iad = iad+nel*g_yield_in_comp
1983 ALLOCATE (elbuf_str%GBUF%XXOLD_IN_COMP(nel*g_xxold_in_comp),stat=err)
1984 gbuf%XXOLD_IN_COMP(1:nel*g_xxold_in_comp) = nint(rbuf(iad+1:iad+nel*g_xxold_in_comp))
1985 iad = iad+nel*g_xxold_in_comp
1986C
1987c---
1988C failure model for beams type 3
1989c---
1990 IF (igtyp == 3 .and. g_noff > 0) THEN
1991 ALLOCATE(elbuf_str%GBUF%FAIL(1) ,stat=err)
1992 gbuf%FAIL(1)%ILAWF = nint(rbuf(iad+1))
1993 iad = iad + 1
1994 gbuf%FAIL(1)%IDFAIL = nint(rbuf(iad+1))
1995 iad = iad + 1
1996 gbuf%FAIL(1)%NVAR = nint(rbuf(iad+1))
1997 iad = iad + 1
1998 gbuf%FAIL(1)%LF_DAM = nint(rbuf(iad+1))
1999 iad = iad + 1
2000 gbuf%FAIL(1)%LF_DAMMX = nint(rbuf(iad+1))
2001 iad = iad + 1
2002 gbuf%FAIL(1)%LF_DAMINI = nint(rbuf(iad+1))
2003 iad = iad + 1
2004 gbuf%FAIL(1)%LF_TDEL = nint(rbuf(iad+1))
2005 iad = iad + 1
2006 gbuf%FAIL(1)%LF_INDX = nint(rbuf(iad+1))
2007 iad = iad + 1
2008 gbuf%FAIL(1)%LF_OFF = nint(rbuf(iad+1))
2009 iad = iad + 1
2010
2011 ALLOCATE(elbuf_str%GBUF%FAIL(1)%VAR(gbuf%FAIL(1)%NVAR*nel) ,stat=err)
2012 gbuf%FAIL(1)%VAR(:) = rbuf(iad+1:iad+nel*gbuf%FAIL(1)%NVAR)
2013 iad = iad + nel*gbuf%FAIL(1)%NVAR
2014 ALLOCATE(elbuf_str%GBUF%FAIL(1)%DAM(gbuf%FAIL(1)%LF_DAM*nel) ,stat=err)
2015 gbuf%FAIL(1)%DAM(:) = rbuf(iad+1:iad+nel*gbuf%FAIL(1)%LF_DAM)
2016 iad = iad + nel*gbuf%FAIL(1)%LF_DAM
2017 ALLOCATE(elbuf_str%GBUF%FAIL(1)%DAMMX(gbuf%FAIL(1)%LF_DAMMX*nel) ,stat=err)
2018 gbuf%FAIL(1)%DAMMX(:) = rbuf(iad+1:iad+nel*gbuf%FAIL(1)%LF_DAMMX)
2019 iad = iad + nel*gbuf%FAIL(1)%LF_DAMMX
2020 ALLOCATE(elbuf_str%GBUF%FAIL(1)%DAMINI(gbuf%FAIL(1)%LF_DAMINI*nel) ,stat=err)
2021 gbuf%FAIL(1)%DAMINI(:) = rbuf(iad+1:iad+nel*gbuf%FAIL(1)%LF_DAMINI)
2022 iad = iad + nel*gbuf%FAIL(1)%LF_DAMINI
2023 ALLOCATE(elbuf_str%GBUF%FAIL(1)%TDEL(gbuf%FAIL(1)%LF_TDEL*nel) ,stat=err)
2024 gbuf%FAIL(1)%TDEL(:) = rbuf(iad+1:iad+nel*gbuf%FAIL(1)%LF_TDEL)
2025 iad = iad + nel*gbuf%FAIL(1)%LF_TDEL
2026 ALLOCATE(elbuf_str%GBUF%FAIL(1)%INDX(gbuf%FAIL(1)%LF_INDX*nel) ,stat=err)
2027 gbuf%FAIL(1)%INDX(:) = rbuf(iad+1:iad+nel*gbuf%FAIL(1)%LF_INDX)
2028 iad = iad + nel*gbuf%FAIL(1)%LF_INDX
2029 ALLOCATE(elbuf_str%GBUF%FAIL(1)%OFF(gbuf%FAIL(1)%LF_OFF*nel) ,stat=err)
2030 gbuf%FAIL(1)%OFF(:) = rbuf(iad+1:iad+nel*gbuf%FAIL(1)%LF_OFF)
2031 iad = iad + nel*gbuf%FAIL(1)%LF_OFF
2032 ENDIF
2033c---
2034C seatbelt elements
2035c---
2036 ALLOCATE (elbuf_str%GBUF%SLIPRING_ID(nel*g_slipring_id) ,stat=err)
2037 gbuf%SLIPRING_ID(1:nel*g_slipring_id) = nint(rbuf(iad+1:iad+nel*g_slipring_id))
2038 iad = iad+nel*g_slipring_id
2039 ALLOCATE (elbuf_str%GBUF%SLIPRING_FRAM_ID(nel*g_slipring_fram_id) ,stat=err)
2040 gbuf%SLIPRING_FRAM_ID(1:nel*g_slipring_fram_id) = nint(rbuf(iad+1:iad+nel*g_slipring_fram_id))
2041 iad = iad+nel*g_slipring_fram_id
2042 ALLOCATE (elbuf_str%GBUF%SLIPRING_STRAND(nel*g_slipring_strand) ,stat=err)
2043 gbuf%SLIPRING_STRAND(1:nel*g_slipring_strand) = nint(rbuf(iad+1:iad+nel*g_slipring_strand))
2044 iad = iad+nel*g_slipring_strand
2045 ALLOCATE (elbuf_str%GBUF%RETRACTOR_ID(nel*g_retractor_id) ,stat=err)
2046 gbuf%RETRACTOR_ID(1:nel*g_retractor_id) = nint(rbuf(iad+1:iad+nel*g_retractor_id))
2047 iad = iad+nel*g_retractor_id
2048 ALLOCATE (elbuf_str%GBUF%RINGSLIP(nel*g_ringslip) ,stat=err)
2049 gbuf%RINGSLIP(1:nel*g_ringslip) = rbuf(iad+1:iad+nel*g_ringslip)
2050 iad = iad+nel*g_ringslip
2051 ALLOCATE (elbuf_str%GBUF%ADD_NODE(nel*g_add_node) ,stat=err)
2052 gbuf%ADD_NODE(1:nel*g_add_node) = nint(rbuf(iad+1:iad+nel*g_add_node))
2053 iad = iad+nel*g_add_node
2054 ALLOCATE (elbuf_str%GBUF%UPDATE(nel*g_update) ,stat=err)
2055 gbuf%UPDATE(1:nel*g_update) = nint(rbuf(iad+1:iad+nel*g_update))
2056 iad = iad+nel*g_update
2057 ALLOCATE (elbuf_str%GBUF%FRAM_FACTOR(nel*g_fram_factor) ,stat=err)
2058 gbuf%FRAM_FACTOR(1:nel*g_fram_factor) = rbuf(iad+1:iad+nel*g_fram_factor)
2059 iad = iad+nel*g_fram_factor
2060 ALLOCATE (elbuf_str%GBUF%INTVAR(nel*g_intvar) ,stat=err)
2061 gbuf%INTVAR(1:nel*g_intvar) = rbuf(iad+1:iad+nel*g_intvar)
2062 iad = iad+nel*g_intvar
2063 ALLOCATE (elbuf_str%GBUF%IDT_TSH(nel*g_idt_tsh) ,stat=err)
2064 gbuf%IDT_TSH(1:nel*g_idt_tsh) = nint(rbuf(iad+1:iad+nel*g_idt_tsh))
2065 iad = iad+nel*g_idt_tsh
2066 IF (npg > 1) THEN
2067 ALLOCATE (elbuf_str%GBUF%TEMPG(nel*gbuf%G_TEMPG),stat=err)
2068 gbuf%TEMPG(1:nel*gbuf%G_TEMPG)=rbuf(iad+1:iad+nel*gbuf%G_TEMPG)
2069 iad = iad + nel*gbuf%G_TEMPG
2070 ENDIF
2071c---
2072C TMAX(H3D)
2073c---
2074 ALLOCATE (elbuf_str%GBUF%TM_YIELD(nel*g_tm_yield) ,stat=err)
2075 gbuf%TM_YIELD(1:nel*g_tm_yield) = rbuf(iad+1:iad+nel*g_tm_yield)
2076 iad = iad+nel*g_tm_yield
2077 ALLOCATE (elbuf_str%GBUF%TM_SEQ(nel*g_tm_seq) ,stat=err)
2078 gbuf%TM_SEQ(1:nel*g_tm_seq) = rbuf(iad+1:iad+nel*g_tm_seq)
2079 iad = iad+nel*g_tm_seq
2080 ALLOCATE (elbuf_str%GBUF%TM_EINT(nel*g_tm_eint) ,stat=err)
2081 gbuf%TM_EINT(1:nel*g_tm_eint) = rbuf(iad+1:iad+nel*g_tm_eint)
2082 iad = iad+nel*g_tm_eint
2083 ALLOCATE (elbuf_str%GBUF%TM_DMG(nel*g_tm_dmg) ,stat=err)
2084 gbuf%TM_DMG(1:nel*g_tm_dmg) = rbuf(iad+1:iad+nel*g_tm_dmg)
2085 iad = iad+nel*g_tm_dmg
2086 ALLOCATE (elbuf_str%GBUF%TM_SIG1(nel*g_tm_sig) ,stat=err)
2087 gbuf%TM_SIG1(1:nel*g_tm_sig) = rbuf(iad+1:iad+nel*g_tm_sig)
2088 iad = iad+nel*g_tm_sig
2089 ALLOCATE (elbuf_str%GBUF%TM_SIG3(nel*g_tm_sig) ,stat=err)
2090 gbuf%TM_SIG3(1:nel*g_tm_sig) = rbuf(iad+1:iad+nel*g_tm_sig)
2091 iad = iad+nel*g_tm_sig
2092 ALLOCATE (elbuf_str%GBUF%TM_STRA1(nel*g_tm_stra) ,stat=err)
2093 gbuf%TM_STRA1(1:nel*g_tm_stra) = rbuf(iad+1:iad+nel*g_tm_stra)
2094 iad = iad+nel*g_tm_stra
2095 ALLOCATE (elbuf_str%GBUF%TM_STRA3(nel*g_tm_stra) ,stat=err)
2096 gbuf%TM_STRA3(1:nel*g_tm_stra) = rbuf(iad+1:iad+nel*g_tm_stra)
2097 iad = iad+nel*g_tm_stra
2098c--- work array
2099 IF (g_tm_sig>0) ALLOCATE (elbuf_str%GBUF%TM_PSIG(nel*2),stat=err)
2100 IF (g_tm_stra>0) ALLOCATE (elbuf_str%GBUF%TM_PSTRA(nel*2),stat=err)
2101c
2102C-----
2103 IF (ALLOCATED(rbuf)) DEALLOCATE (rbuf)
2104 sdp_rbuf = sdp_rbuf + gbuf%G_SMSTR * nel
2105 ALLOCATE (elbuf_str%GBUF%SMSTR(nel*g_smstr) ,stat=err)
2106 IF (sdp_rbuf > 0)THEN
2107 ALLOCATE (dp_rbuf(sdp_rbuf))
2108 CALL read_dpdb(dp_rbuf,sdp_rbuf)
2109c-------------------------------------------------
2110C local buffer variables first
2111c-------------------------------------------------
2112 iadp = 0
2113 IF (l_vol0dp > 0)THEN
2114 DO il = 1,elbuf_str%NLAY
2115c
2116 bufly => elbuf_str%BUFLY(il)
2117 IF (igtyp == 51 .OR. igtyp == 52) THEN
2118 nptt = elbuf_str%BUFLY(il)%NPTT
2119 ELSE
2120 nptt = elbuf_str%NPTT
2121 ENDIF
2122 DO ir = 1,nptr
2123 DO is = 1,npts
2124 DO it = 1,nptt
2125 lbuf => elbuf_str%BUFLY(il)%LBUF(ir,is,it)
2126 lbuf%VOL0DP(1:nel*l_vol0dp) = dp_rbuf(iadp+1:iadp+nel*l_vol0dp)
2127 iadp = iadp+nel*l_vol0dp
2128 ENDDO !next IT
2129 ENDDO !next IS
2130 ENDDO !next IR
2131 ENDDO !next IL
2132 END IF !(L_VOL0DP > 0)THEN
2133C
2134 gbuf%SMSTR(1:nel*g_smstr) = dp_rbuf(iadp+1:iadp+nel*g_smstr)
2135 DEALLOCATE(dp_rbuf)
2136 ENDIF
2137
2138C-----------------------------------------------
#define my_real
Definition cppsort.cpp:32
subroutine read_dpdb(a, n)
Definition read_db.F:253
subroutine read_db(a, n)
Definition read_db.F:90