OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
copy_elbuf_1.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!|| copy_elbuf_1 ../engine/source/elements/elbuf/copy_elbuf_1.F
25!||--- called by ------------------------------------------------------
26!|| copy_elbuf ../engine/source/elements/elbuf/copy_elbuf.F
27!||--- uses -----------------------------------------------------
28!|| elbufdef_mod ../common_source/modules/mat_elem/elbufdef_mod.F90
29!||====================================================================
30 SUBROUTINE copy_elbuf_1(ELBUF_SRC,ELBUF_TGT,IPARG,NGROUP,NG)
31C-----------------------------------------------
32C M o d u l e s
33C-----------------------------------------------
34 USE elbufdef_mod
35C-----------------------------------------------
36C I m p l i c i t T y p e s
37C-----------------------------------------------
38#include "implicit_f.inc"
39C-----------------------------------------------
40C C o m m o n B l o c k s
41C-----------------------------------------------
42#include "param_c.inc"
43C-----------------------------------------------
44C D u m m y A r g u m e n t s
45C-----------------------------------------------
46 INTEGER NGROUP,NG
47 INTEGER IPARG(NPARG,NGROUP)
48 TYPE(elbuf_struct_), DIMENSION(NGROUP) :: ELBUF_SRC,ELBUF_TGT
49 TARGET :: elbuf_src,elbuf_tgt
50C-----------------------------------------------
51C L o c a l V a r i a b l e s
52C-----------------------------------------------
53 INTEGER IL,IR,IS,IT,ITY,K,NUVAR,NVARTMP,NFAIL,NLAY,NPTR,NPTS,NPTT,NPT,
54 . NPG,NEL,IGTYP,LEN1,LEN2,NPTTOT,I,NONL,INLOC
55 INTEGER ! global variables
56 . G_GAMA,G_SIG,G_OFF,G_NOFF,G_EINT,G_EINS,G_TEMP,
57 . G_RHO,G_PLA,G_VOL,G_EPSD,G_QVIS,G_DELTAX,G_TB,G_RK,G_RE,G_WPLA,
58 . G_SMSTR,G_HOURG,G_BFRAC,G_THK,G_FOR,G_MOM,G_TAG22,G_STRA,G_SIGI,
59 . G_DMG,G_FORPG,G_MOMPG,G_STRPG,G_EPSQ,G_UELR,G_UELR1,G_IERR,
60 . G_DAMDL,G_FORTH,G_EINTTH,G_SEQ,G_STRW,G_STRWPG,
61 . G_AREA,G_SKEW,G_LENGTH,G_TOTDEPL,G_TOTROT,G_FOREP,G_MOMEP,
62 . G_DEP_IN_TENS,G_DEP_IN_COMP,G_ROT_IN_TENS,G_ROT_IN_COMP,
63 . G_POSX,G_POSY,G_POSZ,G_POSXX,G_POSYY,G_POSZZ,G_YIELD,G_LENGTH_ERR,
64 . G_DV,G_DFS,G_SKEW_ERR,G_E6,G_RUPTCRIT,G_MASS,G_V_REPCVT,
65 . G_VR_REPCVT,G_NUVAR,G_NUVARN,G_INIFRIC,G_DT,G_ISMS,G_STRHG,G_ABURN,G_MU,
66 . G_PLANL,G_EPSDNL,G_BPRELD,G_COR_NF,G_COR_FR,G_COR_XR,G_DEFINI,G_FORINI,
67 . G_FORPGPINCH,G_MOMPGPINCH,G_EPGPINCHXZ,G_EPGPINCHYZ,G_EPGPINCHZZ,
68 . G_SKEW_ID,G_MAXFRAC,G_MAXEPS,G_SLIPRING_ID,G_SLIPRING_STRAND,G_RETRACTOR_ID,
69 . G_RINGSLIP,G_ADD_NODE,G_UPDATE,G_INTVAR,G_BETAORTH,G_AMU,G_SLIPRING_FRAM_ID,
70 . G_FRAM_FACTOR,G_TSAIWU,G_DMGSCL,G_SH_IOFFSET,G_FOR_G,G_FORPG_G,G_YIELD_IN_COMP,
71 . G_XXOLD_IN_COMP
72 INTEGER ! layer variables
73 . LY_DMG,LY_GAMA,LY_DIRA,LY_DIRB,LY_CRKDIR,LY_PLAPT,LY_SIGPT,LY_HOURG,
74 . LY_UELR,LY_UELR1,LY_OFFPG,LY_OFF,LEN_PLAPT,LEN_SIGPT
75 INTEGER ! local variables
76 . L_OFF,L_EINT,L_EINS,L_RHO,L_DP_DRHO,L_VOL,L_PLA,L_TB,L_TEMP,L_WPLA,
77 . L_RK,L_RE,L_VK,L_ROB,L_SIG,L_SIGV,L_SIGL,L_SIGA,L_SIGD,L_SIGB,
78 . L_SIGC,L_SIGF,L_STRA,L_EPSA,L_EPSD,L_EPSQ,L_EPSF,L_CRAK,
79 . L_ANG,L_SF,L_QVIS,L_DELTAX,L_GAMA,
80 . L_DAM,L_DSUM,L_DGLO,L_EPE,L_EPC,L_XST,L_SSP,L_Z,L_FRAC,L_VISC,
81 . L_THK,L_FOR,L_MOM,L_SMSTR,L_BFRAC,L_DMG,LF_DAM,LF_DAMMX,LF_TDEL,
82 . LF_INDX,LF_OFF,L_FORTH,L_EINTTH,L_SEQ,L_SIGPLY,L_FAC_YLD,L_ABURN,
83 . L_MU,L_PLANL,L_EPSDNL,L_DMGSCL,L_TSAIWU,LF_DAMINI,IFAIL,IDFAIL
84 TYPE(buf_lay_) , POINTER :: BUFLY
85 TYPE(l_bufel_) , POINTER :: LBUF
86 TYPE(g_bufel_) , POINTER :: GBUFS,GBUFT
87 TYPE(l_bufel_) , POINTER :: LBUFS,LBUFT
88 TYPE(fail_loc_) , POINTER :: FLOCS,FLOCT
89 TYPE(buf_visc_) , POINTER :: VISCS,VISCT
90 TYPE(buf_eos_) , POINTER :: EOSS,EOST
91 TYPE(buf_nloc_) , POINTER :: BUFNLS,BUFNLT
92 TYPE(buf_nlocts_),POINTER :: BUFNLSTS,BUFNLTTS
93c-------------------------------------------------
94c copy the element buffer : ELBUF_SRC -> ELBUF_TGT
95c target must be allocated
96C=======================================================================
97 ity = iparg(5,ng)
98 inloc = iparg(78,ng)
99 ly_sigpt = 0
100 ly_plapt = 0
101 IF (ity == 1 .OR. ity == 2 .OR. ity == 51 .OR.
102 . ity == 3 .OR. ity == 7 .OR.
103 . ity == 4 .OR. ity == 5 .OR. ity == 6 .OR. ity == 100) THEN
104c-------------------------------------------------
105 igtyp = elbuf_src(ng)%IGTYP
106 nel = elbuf_src(ng)%NEL
107 nlay = elbuf_src(ng)%NLAY
108 nptr = elbuf_src(ng)%NPTR
109 npts = elbuf_src(ng)%NPTS
110 nptt = elbuf_src(ng)%NPTT
111 npt = nlay*nptr*npts*nptt
112 IF (ity == 1 .OR. ity == 2 .OR. ity == 51) THEN
113 npg = nptr*npts*nptt
114 npttot = npt
115 ELSEIF (ity == 3 .OR. ity == 7) THEN
116 npg = nptr*npts
117 npttot = 0
118 DO il=1,nlay
119 npttot = npttot + npg*elbuf_src(ng)%BUFLY(il)%NPTT
120 ENDDO
121 IF (npt == 0) npttot = npt
122 ELSEIF (ity == 4 .OR. ity == 5 .OR. ity == 6 .OR. ity == 100) THEN
123 npg = 0
124 npttot = 0
125 ELSE
126 npg = 0
127 npttot = 0
128 ENDIF
129
130 elbuf_tgt(ng)%IGTYP = igtyp
131 elbuf_tgt(ng)%NEL = nel
132 elbuf_tgt(ng)%NLAY = nlay
133 elbuf_tgt(ng)%NPTR = nptr
134 elbuf_tgt(ng)%NPTS = npts
135 elbuf_tgt(ng)%NPTT = nptt
136c
137 DO il = 1,nlay
138 elbuf_tgt(ng)%BUFLY(il)%ILAW = elbuf_src(ng)%BUFLY(il)%ILAW
139 elbuf_tgt(ng)%BUFLY(il)%IMAT = elbuf_src(ng)%BUFLY(il)%IMAT
140 elbuf_tgt(ng)%BUFLY(il)%IEOS = elbuf_src(ng)%BUFLY(il)%IEOS
141 elbuf_tgt(ng)%BUFLY(il)%IVISC = elbuf_src(ng)%BUFLY(il)%IVISC
142 elbuf_tgt(ng)%BUFLY(il)%IPORO = elbuf_src(ng)%BUFLY(il)%IPORO
143 elbuf_tgt(ng)%BUFLY(il)%NFAIL = elbuf_src(ng)%BUFLY(il)%NFAIL
144 elbuf_tgt(ng)%BUFLY(il)%NVAR_MAT = elbuf_src(ng)%BUFLY(il)%NVAR_MAT
145 elbuf_tgt(ng)%BUFLY(il)%NVAR_EOS = elbuf_src(ng)%BUFLY(il)%NVAR_EOS
146 elbuf_tgt(ng)%BUFLY(il)%NVARTMP = elbuf_src(ng)%BUFLY(il)%NVARTMP
147 elbuf_tgt(ng)%BUFLY(il)%NVARTMP_EOS = elbuf_src(ng)%BUFLY(il)%NVARTMP_EOS
148 elbuf_tgt(ng)%BUFLY(il)%NVAR_EOS = elbuf_src(ng)%BUFLY(il)%NVAR_EOS
149 elbuf_tgt(ng)%BUFLY(il)%NVAR_VISC = elbuf_src(ng)%BUFLY(il)%NVAR_VISC
150 elbuf_tgt(ng)%BUFLY(il)%NVAR_LOC = elbuf_src(ng)%BUFLY(il)%NVAR_LOC
151 elbuf_tgt(ng)%BUFLY(il)%NVAR_LAY = elbuf_src(ng)%BUFLY(il)%NVAR_LAY
152 elbuf_tgt(ng)%BUFLY(il)%NPTT = elbuf_src(ng)%BUFLY(il)%NPTT
153 ENDDO
154c
155 DO il = 1, nlay
156 bufly => elbuf_src(ng)%BUFLY(il)
157c
158 ly_dmg = bufly%LY_DMG
159 ly_gama = bufly%LY_GAMA
160 ly_dira = bufly%LY_DIRA
161 ly_dirb = bufly%LY_DIRB
162 ly_crkdir= bufly%LY_CRKDIR
163 ly_plapt = bufly%LY_PLAPT
164 ly_sigpt = bufly%LY_SIGPT
165 ly_hourg = bufly%LY_HOURG
166 ly_uelr = bufly%LY_UELR
167 ly_uelr1 = bufly%LY_UELR1
168 ly_offpg = bufly%LY_OFFPG
169 ly_off = bufly%LY_OFF
170c
171 l_off = bufly%L_OFF
172 l_gama = bufly%L_GAMA
173 l_stra = bufly%L_STRA
174 l_frac = bufly%L_FRAC
175 l_bfrac = bufly%L_BFRAC
176 l_eint = bufly%L_EINT
177 l_eins = bufly%L_EINS
178 l_rho = bufly%L_RHO
179 l_dp_drho= bufly%L_DP_DRHO
180 l_qvis = bufly%L_QVIS
181 l_deltax = bufly%L_DELTAX
182 l_vol = bufly%L_VOL
183 l_epsa = bufly%L_EPSA
184 l_epsd = bufly%L_EPSD
185 l_epsq = bufly%L_EPSQ
186 l_epsf = bufly%L_EPSF
187 l_pla = bufly%L_PLA
188 l_wpla = bufly%L_WPLA
189 l_temp = bufly%L_TEMP
190 l_tb = bufly%L_TB
191 l_rk = bufly%L_RK
192 l_re = bufly%L_RE
193 l_vk = bufly%L_VK
194 l_sf = bufly%L_SF
195 l_rob = bufly%L_ROB
196 l_dam = bufly%L_DAM
197 l_dsum = bufly%L_DSUM
198 l_dglo = bufly%L_DGLO
199 l_crak = bufly%L_CRAK
200 l_ang = bufly%L_ANG
201 l_epe = bufly%L_EPE
202 l_epc = bufly%L_EPC
203 l_xst = bufly%L_XST
204 l_ssp = bufly%L_SSP
205 l_z = bufly%L_Z
206 l_visc = bufly%L_VISC
207 l_sigl = bufly%L_SIGL
208 l_sigv = bufly%L_SIGV
209 l_siga = bufly%L_SIGA
210 l_sigb = bufly%L_SIGB
211 l_sigc = bufly%L_SIGC
212 l_sigd = bufly%L_SIGD
213 l_sigf = bufly%L_SIGF
214 l_sig = bufly%L_SIG
215 l_sigply = bufly%L_SIGPLY
216 l_for = bufly%L_FOR
217 l_mom = bufly%L_MOM
218 l_thk = bufly%L_THK
219 l_smstr = bufly%L_SMSTR
220 l_dmg = bufly%L_DMG
221 l_forth = bufly%L_FORTH
222 l_eintth = bufly%L_EINTTH
223 l_seq = bufly%L_SEQ
224 l_fac_yld = bufly%L_FAC_YLD
225 l_aburn = bufly%L_ABURN
226 l_mu = bufly%L_MU
227 l_planl = bufly%L_PLANL
228 l_epsdnl = bufly%L_EPSDNL
229 l_dmgscl = bufly%L_DMGSCL
230 l_tsaiwu = bufly%L_TSAIWU
231
232c
233 elbuf_tgt(ng)%BUFLY(il)%DMG(1:nel*ly_dmg) =
234 . bufly%DMG(1:nel*ly_dmg)
235 elbuf_tgt(ng)%BUFLY(il)%GAMA(1:nel*ly_gama) =
236 . bufly%GAMA(1:nel*ly_gama)
237 elbuf_tgt(ng)%BUFLY(il)%DIRA(1:nel*ly_dira) =
238 . bufly%DIRA(1:nel*ly_dira)
239 elbuf_tgt(ng)%BUFLY(il)%DIRB(1:nel*ly_dirb) =
240 . bufly%DIRB(1:nel*ly_dirb)
241 elbuf_tgt(ng)%BUFLY(il)%CRKDIR(1:nel*ly_crkdir) =
242 . bufly%CRKDIR(1:nel*ly_crkdir)
243 elbuf_tgt(ng)%BUFLY(il)%HOURG(1:nel*ly_hourg) =
244 . bufly%HOURG(1:nel*ly_hourg)
245 elbuf_tgt(ng)%BUFLY(il)%UELR(1:nel*ly_uelr) =
246 . bufly%UELR(1:nel*ly_uelr)
247 elbuf_tgt(ng)%BUFLY(il)%UELR1(1:nel*ly_uelr1) =
248 . bufly%UELR1(1:nel*ly_uelr1)
249 elbuf_tgt(ng)%BUFLY(il)%OFFPG(1:nel*ly_offpg) =
250 . bufly%OFFPG(1:nel*ly_offpg)
251 elbuf_tgt(ng)%BUFLY(il)%OFF(1:nel*ly_off) =
252 . bufly%OFF(1:nel*ly_off)
253c
254 IF (igtyp == 51 .OR. igtyp == 52) THEN
255 nptt = elbuf_src(ng)%BUFLY(il)%NPTT
256 ELSE
257 nptt = elbuf_src(ng)%NPTT
258 ENDIF
259c
260 DO ir = 1,nptr
261 DO is = 1,npts
262 DO it = 1,nptt
263 lbufs => elbuf_src(ng)%BUFLY(il)%LBUF(ir,is,it)
264 lbuft => elbuf_tgt(ng)%BUFLY(il)%LBUF(ir,is,it)
265c
266 lbuft%OFF(1:nel*l_off) =lbufs%OFF(1:nel*l_off)
267 lbuft%GAMA(1:nel*l_gama) =lbufs%GAMA(1:nel*l_gama)
268 lbuft%STRA(1:nel*l_stra) =lbufs%STRA(1:nel*l_stra)
269 lbuft%FRAC(1:nel*l_frac) =lbufs%FRAC(1:nel*l_frac)
270 lbuft%BFRAC(1:nel*l_bfrac) =lbufs%BFRAC(1:nel*l_bfrac)
271 lbuft%EINT(1:nel*l_eint) =lbufs%EINT(1:nel*l_eint)
272 lbuft%EINS(1:nel*l_eins) =lbufs%EINS(1:nel*l_eins)
273 lbuft%RHO(1:nel*l_rho) =lbufs%RHO(1:nel*l_rho)
274 lbuft%DP_DRHO(1:nel*l_dp_drho)=lbufs%DP_DRHO(1:nel*l_dp_drho)
275 lbuft%QVIS(1:nel*l_qvis) =lbufs%QVIS(1:nel*l_qvis)
276 lbuft%DELTAX(1:nel*l_deltax) =lbufs%DELTAX(1:nel*l_deltax)
277 lbuft%VOL(1:nel*l_vol) =lbufs%VOL(1:nel*l_vol)
278 lbuft%EPSA(1:nel*l_epsa) =lbufs%EPSA(1:nel*l_epsa)
279 lbuft%EPSD(1:nel*l_epsd) =lbufs%EPSD(1:nel*l_epsd)
280 lbuft%EPSQ(1:nel*l_epsq) =lbufs%EPSQ(1:nel*l_epsq)
281 lbuft%EPSF(1:nel*l_epsf) =lbufs%EPSF(1:nel*l_epsf)
282 lbuft%PLA(1:nel*l_pla) =lbufs%PLA(1:nel*l_pla)
283 lbuft%WPLA(1:nel*l_wpla) =lbufs%WPLA(1:nel*l_wpla)
284 lbuft%TEMP(1:nel*l_temp) =lbufs%TEMP(1:nel*l_temp)
285 lbuft%TB(1:nel*l_tb) =lbufs%TB(1:nel*l_tb)
286 lbuft%RK(1:nel*l_rk) =lbufs%RK(1:nel*l_rk)
287 lbuft%RE(1:nel*l_re) =lbufs%RE(1:nel*l_re)
288 lbuft%VK(1:nel*l_vk) =lbufs%VK(1:nel*l_vk)
289 lbuft%SF(1:nel*l_sf) =lbufs%SF(1:nel*l_sf)
290 lbuft%ROB(1:nel*l_rob) =lbufs%ROB(1:nel*l_rob)
291 lbuft%DAM(1:nel*l_dam) =lbufs%DAM(1:nel*l_dam)
292 lbuft%DSUM(1:nel*l_dsum) =lbufs%DSUM(1:nel*l_dsum)
293 lbuft%DGLO(1:nel*l_dglo) =lbufs%DGLO(1:nel*l_dglo)
294 lbuft%CRAK(1:nel*l_crak) =lbufs%CRAK(1:nel*l_crak)
295 lbuft%ANG(1:nel*l_ang) =lbufs%ANG(1:nel*l_ang)
296 lbuft%EPE(1:nel*l_epe) =lbufs%EPE(1:nel*l_epe)
297 lbuft%EPC(1:nel*l_epc) =lbufs%EPC(1:nel*l_epc)
298 lbuft%XST(1:nel*l_xst) =lbufs%XST(1:nel*l_xst)
299 lbuft%SSP(1:nel*l_ssp) =lbufs%SSP(1:nel*l_ssp)
300 lbuft%Z(1:nel*l_z) =lbufs%Z(1:nel*l_z)
301 lbuft%VISC(1:nel*l_visc) =lbufs%VISC(1:nel*l_visc)
302 lbuft%SIGL(1:nel*l_sigl) =lbufs%SIGL(1:nel*l_sigl)
303 lbuft%SIGV(1:nel*l_sigv) =lbufs%SIGV(1:nel*l_sigv)
304 lbuft%SIGA(1:nel*l_siga) =lbufs%SIGA(1:nel*l_siga)
305 lbuft%SIGB(1:nel*l_sigb) =lbufs%SIGB(1:nel*l_sigb)
306 lbuft%SIGC(1:nel*l_sigc) =lbufs%SIGC(1:nel*l_sigc)
307 lbuft%SIGD(1:nel*l_sigd) =lbufs%SIGD(1:nel*l_sigd)
308 lbuft%SIGF(1:nel*l_sigf) =lbufs%SIGF(1:nel*l_sigf)
309 lbuft%SIG(1:nel*l_sig) =lbufs%SIG(1:nel*l_sig)
310 lbuft%SIGPLY(1:nel*l_sigply) =lbufs%SIGPLY(1:nel*l_sigply)
311 lbuft%FOR(1:nel*l_for) =lbufs%FOR(1:nel*l_for)
312 lbuft%MOM(1:nel*l_mom) =lbufs%MOM(1:nel*l_mom)
313 lbuft%THK(1:nel*l_thk) =lbufs%THK(1:nel*l_thk)
314 lbuft%SMSTR(1:nel*l_smstr) =lbufs%SMSTR(1:nel*l_smstr)
315 lbuft%DMG(1:nel*l_dmg) =lbufs%DMG(1:nel*l_dmg)
316 lbuft%FORTH(1:nel*l_forth) =lbufs%FORTH(1:nel*l_forth)
317 lbuft%EINTTH(1:nel*l_eintth) =lbufs%EINTTH(1:nel*l_eintth)
318 lbuft%SEQ(1:nel*l_seq) =lbufs%SEQ(1:nel*l_seq)
319 lbuft%FAC_YLD(1:nel*l_fac_yld)=lbufs%FAC_YLD(1:nel*l_fac_yld)
320 lbuft%ABURN(1:nel*l_aburn) =lbufs%ABURN(1:nel*l_aburn)
321 lbuft%MU(1:nel*l_mu) =lbufs%MU(1:nel*l_mu)
322 lbuft%PLANL(1:nel*l_planl) =lbufs%PLANL(1:nel*l_planl)
323 lbuft%EPSDNL(1:nel*l_epsdnl) =lbufs%EPSDNL(1:nel*l_epsdnl)
324 lbuft%DMGSCL(1:nel*l_dmgscl) =lbufs%DMGSCL(1:nel*l_dmgscl)
325 lbuft%TSAIWU(1:nel*l_tsaiwu) =lbufs%TSAIWU(1:nel*l_tsaiwu)
326 ENDDO
327 ENDDO
328 ENDDO
329 ENDDO ! IL = 1, NLAY
330c------
331 IF (npg > 1) THEN
332 DO il = 1, nlay
333 bufly => elbuf_src(ng)%BUFLY(il)
334 IF (nlay > 1) THEN
335 len_plapt = nel*ly_plapt
336 len_sigpt = nel*ly_sigpt
337 ELSE
338 IF (igtyp /= 51 .AND. igtyp /= 52 ) THEN
339 len_plapt = nel*ly_plapt*npt
340 len_sigpt = nel*ly_sigpt*npt
341 ELSE
342 len_plapt = nel*ly_plapt*bufly%NPTT
343 len_sigpt = nel*ly_sigpt*bufly%NPTT
344 ENDIF
345 ENDIF
346 elbuf_tgt(ng)%BUFLY(il)%PLAPT(1:len_plapt) =
347 . bufly%PLAPT(1:len_plapt)
348 elbuf_tgt(ng)%BUFLY(il)%SIGPT(1:len_sigpt) =
349 . bufly%SIGPT(1:len_sigpt)
350 ENDDO ! IL = 1, NLAY
351 ELSE
352 IF (nlay > 1) THEN
353 DO il = 1, nlay
354 IF (igtyp == 51 .OR. igtyp == 52) THEN
355 nptt = elbuf_src(ng)%BUFLY(il)%NPTT
356 DO it=1,nptt
357 lbuf => elbuf_src(ng)%BUFLY(il)%LBUF(1,1,it)
358 elbuf_tgt(ng)%BUFLY(il)%PLAPT(1:nel*ly_plapt)
359 . => lbuf%PLA(1:nel*l_pla)
360 elbuf_tgt(ng)%BUFLY(il)%SIGPT(1:nel*ly_sigpt)
361 . => lbuf%SIG(1:nel*l_sig)
362 ENDDO
363 ELSE
364 lbuf => elbuf_src(ng)%BUFLY(il)%LBUF(1,1,1)
365 elbuf_tgt(ng)%BUFLY(il)%PLAPT(1:nel*ly_plapt)
366 . => lbuf%PLA(1:nel*l_pla)
367 elbuf_tgt(ng)%BUFLY(il)%SIGPT(1:nel*ly_sigpt)
368 . => lbuf%SIG(1:nel*l_sig)
369 ENDIF
370 ENDDO ! IL = 1, NLAY
371 ELSE ! NLAY = 1, NPG = 1
372 bufly => elbuf_src(ng)%BUFLY(1)
373 IF (igtyp == 51 .OR. igtyp == 52) THEN
374 nptt = bufly%NPTT
375 DO it = 1,nptt
376 len1 = 1+(it-1)*nel*ly_plapt
377 len2 = it*nel*ly_plapt
378 elbuf_tgt(ng)%BUFLY(1)%PLAPT(len1:len2)
379 . => bufly%LBUF(1,1,it)%PLA(1:nel*l_pla)
380 len1 = 1+(it-1)*nel*ly_sigpt
381 len2 = it*nel*ly_sigpt
382 elbuf_tgt(ng)%BUFLY(1)%SIGPT(len1:len2)
383 . => bufly%LBUF(1,1,it)%SIG(1:nel*l_sig)
384 ENDDO
385 ELSE
386 DO it = 1,npt
387 len1 = 1+(it-1)*nel*ly_plapt
388 len2 = it*nel*ly_plapt
389 elbuf_tgt(ng)%BUFLY(1)%PLAPT(len1:len2)
390 . => bufly%LBUF(1,1,it)%PLA(1:nel*l_pla)
391 len1 = 1+(it-1)*nel*ly_sigpt
392 len2 = it*nel*ly_sigpt
393 elbuf_tgt(ng)%BUFLY(1)%SIGPT(len1:len2)
394 . => bufly%LBUF(1,1,it)%SIG(1:nel*l_sig)
395 ENDDO
396 ENDIF ! IF (IGTYP == 51) THEN
397cc DO IT = 1,NPT
398cc ELBUF_TGT(NG)%BUFLY(1)%PLAPT(1:NEL*LY_PLAPT)
399cc . => BUFLY%LBUF(1,1,IT)%PLA(1:NEL*L_PLA)
400cc ELBUF_TGT(NG)%BUFLY(1)%SIGPT(1:NEL*LY_SIGPT)
401cc . => BUFLY%LBUF(1,1,IT)%SIG(1:NEL*L_SIG)
402cc ENDDO ! IT = 1,NPT
403 ENDIF
404C
405C SIGPLY (PLYXFEM) not available w/implicit
406 ENDIF
407c
408c----- Material buffer - per integration point
409c
410 DO il = 1, nlay
411 nuvar = elbuf_src(ng)%BUFLY(il)%NVAR_MAT
412 nvartmp = elbuf_src(ng)%BUFLY(il)%NVARTMP
413 IF (igtyp == 51 .OR. igtyp == 52) THEN
414 nptt = elbuf_src(ng)%BUFLY(il)%NPTT
415 ELSE
416 nptt = elbuf_src(ng)%NPTT
417 ENDIF
418 DO ir = 1,nptr
419 DO is = 1,npts
420 DO it = 1,nptt
421 elbuf_tgt(ng)%BUFLY(il)%MAT(ir,is,it)%VAR(1:nel*nuvar)=
422 . elbuf_src(ng)%BUFLY(il)%MAT(ir,is,it)%VAR(1:nel*nuvar)
423 elbuf_tgt(ng)%BUFLY(il)%MAT(ir,is,it)%VARTMP(1:nel*nvartmp)=
424 . elbuf_src(ng)%BUFLY(il)%MAT(ir,is,it)%VARTMP(1:nel*nvartmp)
425 ENDDO
426 ENDDO
427 ENDDO
428 ENDDO
429c-------------------------------
430c failure model variables
431c-------------------------------
432 DO il = 1, nlay
433 nfail = elbuf_src(ng)%BUFLY(il)%NFAIL
434 IF (igtyp == 51 .OR. igtyp == 52) THEN
435 nptt = elbuf_src(ng)%BUFLY(il)%NPTT
436 ELSE
437 nptt = elbuf_src(ng)%NPTT
438 ENDIF
439 DO ir = 1,nptr
440 DO is = 1,npts
441 DO it = 1,nptt
442 DO k = 1,nfail
443 flocs=>elbuf_src(ng)%BUFLY(il)%FAIL(ir,is,it)%FLOC(k)
444 floct=>elbuf_tgt(ng)%BUFLY(il)%FAIL(ir,is,it)%FLOC(k)
445 ifail = flocs%ILAWF
446 floct%ILAWF = ifail
447 idfail = flocs%IDFAIL
448 floct%IDFAIL = idfail
449 nuvar = flocs%NVAR
450 floct%NVAR = nuvar
451 floct%VAR(1:nel*nuvar) = flocs%VAR(1:nel*nuvar)
452c
453 lf_dam = flocs%LF_DAM
454 floct%LF_DAM = lf_dam
455 floct%DAM(1:nel*lf_dam) = flocs%DAM(1:nel*lf_dam)
456c
457 lf_dammx = flocs%LF_DAMMX
458 floct%LF_DAMMX = lf_dammx
459 floct%DAMMX(1:nel*lf_dammx) = flocs%DAMMX(1:nel*lf_dammx)
460c
461 lf_damini = flocs%LF_DAMINI
462 floct%LF_DAMINI = lf_damini
463 floct%DAMINI(1:nel*lf_damini) = flocs%DAMINI(1:nel*lf_damini)
464c
465 lf_tdel = flocs%LF_TDEL
466 floct%LF_TDEL = lf_tdel
467 floct%TDEL(1:nel*lf_tdel) = flocs%TDEL(1:nel*lf_tdel)
468c
469 lf_indx = flocs%LF_INDX
470 floct%LF_INDX = lf_indx
471 floct%INDX(1:nel*lf_indx) = flocs%INDX(1:nel*lf_indx)
472c
473 lf_off = flocs%LF_OFF
474 floct%LF_OFF = lf_off
475 floct%OFF(1:nel*lf_off) = flocs%OFF(1:nel*lf_off)
476
477 ENDDO
478 ENDDO
479 ENDDO
480 ENDDO
481 ENDDO
482c-------------------------------
483c Viscosity model variables
484c-------------------------------
485 DO il = 1, nlay
486 nuvar = elbuf_src(ng)%BUFLY(il)%NVAR_VISC
487 IF (igtyp == 51 .OR. igtyp == 52) THEN
488 nptt = elbuf_src(ng)%BUFLY(il)%NPTT
489 ELSE
490 nptt = elbuf_src(ng)%NPTT
491 ENDIF
492 DO ir = 1,nptr
493 DO is = 1,npts
494 DO it = 1,nptt
495 viscs => elbuf_src(ng)%BUFLY(il)%VISC(ir,is,it)
496 visct => elbuf_tgt(ng)%BUFLY(il)%VISC(ir,is,it)
497 visct%VAR(1:nel*nuvar) = viscs%VAR(1:nel*nuvar)
498c-----
499 ENDDO
500 ENDDO
501 ENDDO
502 ENDDO
503c-------------------------------
504c Non-local regularization in the shell thickness
505c-------------------------------
506 IF ((ity==3).OR.(ity==7)) THEN
507 ! Number of integration points in the shell thickness
508 nptt = elbuf_src(ng)%NPTT
509 IF ((inloc>0).AND.(nptt>1)) THEN
510 ! Number of non-local nodes in the thickness
511 IF (nptt>2) THEN
512 nonl = nptt+1
513 ELSE
514 nonl = nptt
515 ENDIF
516 ! Loop over integration points in the plane of the shell
517 DO ir = 1,nptr
518 DO is = 1,npts
519 ! Pointing the non-local buffer of the source
520 bufnls => elbuf_src(ng)%NLOC(ir,is)
521 ! Pointing the non-local buffer of the target
522 bufnlt => elbuf_tgt(ng)%NLOC(ir,is)
523 ! Copying the buffer
524 DO i = 1,nel
525 ! Nodal masses
526 bufnlt%MASSTH(i,1:nonl) = bufnls%MASSTH(i,1:nonl)
527 ! Non-local in-thickness cumulated variables
528 bufnlt%UNLTH(i,1:nonl) = bufnls%UNLTH(i,1:nonl)
529 ! Non-local in-thickness velocities
530 bufnlt%VNLTH(i,1:nonl) = bufnls%VNLTH(i,1:nonl)
531 ! Non-local in-thickness forces
532 bufnlt%FNLTH(i,1:nonl) = bufnls%FNLTH(i,1:nonl)
533 ENDDO
534 ENDDO
535 ENDDO
536 ENDIF
537c-------------------------------
538c Non-local regularization in the thickshell thickness
539c-------------------------------
540 ELSEIF (ity==1) THEN
541 ! Number of integration points in the shell thickness
542 nptt = elbuf_src(ng)%NLAY
543 IF ((inloc>0).AND.(nptt>1)) THEN
544 ! Number of non-local nodes in the thickness
545 nonl = nptt+1
546 ! Loop over integration points in the plane of the shell
547 DO ir = 1,nptr
548 DO is = 1,npts
549 ! Pointing the non-local buffer of the source
550 bufnlsts => elbuf_src(ng)%NLOCTS(ir,is)
551 ! Pointing the non-local buffer of the target
552 bufnltts => elbuf_tgt(ng)%NLOCTS(ir,is)
553 ! Copying the buffer
554 DO i = 1,nel
555 ! Nodal masses
556 bufnltts%MASSTH(i,1:nonl) = bufnlsts%MASSTH(i,1:nonl)
557 ! Non-local in-thickness cumulated variables
558 bufnltts%UNLTH(i,1:nonl) = bufnlsts%UNLTH(i,1:nonl)
559 ! Non-local in-thickness velocities
560 bufnltts%VNLTH(i,1:nonl) = bufnlsts%VNLTH(i,1:nonl)
561 ! Non-local in-thickness forces
562 bufnltts%FNLTH(i,1:nonl) = bufnlsts%FNLTH(i,1:nonl)
563 ENDDO
564 ENDDO
565 ENDDO
566 ENDIF
567 ENDIF
568c-------------------------------
569c EoS
570c-------------------------------
571 DO il = 1, nlay
572 nuvar = elbuf_src(ng)%BUFLY(il)%NVAR_EOS
573 nvartmp = elbuf_src(ng)%BUFLY(il)%NVARTMP_EOS
574 IF (igtyp == 51 .OR. igtyp == 52) THEN
575 nptt = elbuf_src(ng)%BUFLY(il)%NPTT
576 ELSE
577 nptt = elbuf_src(ng)%NPTT
578 ENDIF
579 DO ir = 1,nptr
580 DO is = 1,npts
581 DO it = 1,nptt
582 eoss => elbuf_src(ng)%BUFLY(il)%EOS(ir,is,it)
583 eost => elbuf_tgt(ng)%BUFLY(il)%EOS(ir,is,it)
584 eost%VAR(1:nel*nuvar) = eoss%VAR(1:nel*nuvar)
585 eost%VARTMP(1:nel*nvartmp) = eoss%VARTMP(1:nel*nvartmp)
586 ENDDO
587 ENDDO
588 ENDDO
589 ENDDO
590c-------------------------------------------------
591c Global buffer variables
592c-------------------------------------------------
593 gbufs => elbuf_src(ng)%GBUF
594 gbuft => elbuf_tgt(ng)%GBUF
595c
596 gbuft%NVAR_GLOB = gbufs%NVAR_GLOB
597c
598 g_noff = gbufs%G_NOFF
599 g_ierr = gbufs%G_IERR
600 g_off = gbufs%G_OFF
601 g_gama = gbufs%G_GAMA
602 g_smstr = gbufs%G_SMSTR
603 g_hourg = gbufs%G_HOURG
604 g_bfrac = gbufs%G_BFRAC
605 g_eint = gbufs%G_EINT
606 g_eins = gbufs%G_EINS
607 g_rho = gbufs%G_RHO
608 g_qvis = gbufs%G_QVIS
609 g_deltax= gbufs%G_DELTAX
610 g_vol = gbufs%G_VOL
611 g_epsd = gbufs%G_EPSD
612 g_epsq = gbufs%G_EPSQ
613 g_pla = gbufs%G_PLA
614 g_wpla = gbufs%G_WPLA
615 g_temp = gbufs%G_TEMP
616 g_tb = gbufs%G_TB
617 g_rk = gbufs%G_RK
618 g_re = gbufs%G_RE
619 g_sig = gbufs%G_SIG
620 g_for = gbufs%G_FOR
621 g_mom = gbufs%G_MOM
622 g_thk = gbufs%G_THK
623 g_tag22 = gbufs%G_TAG22
624 g_stra = gbufs%G_STRA
625 g_sigi = gbufs%G_SIGI
626 g_dmg = gbufs%G_DMG
627 g_forpg = gbufs%G_FORPG
628 g_mompg = gbufs%G_MOMPG
629C
630 g_forpgpinch = gbufs%G_FORPGPINCH
631 g_mompgpinch = gbufs%G_MOMPGPINCH
632 g_epgpinchxz = gbufs%G_EPGPINCHXZ
633 g_epgpinchyz = gbufs%G_EPGPINCHYZ
634 g_epgpinchzz = gbufs%G_EPGPINCHZZ
635C
636 g_strpg = gbufs%G_STRPG
637 g_uelr = gbufs%G_UELR
638 g_uelr1 = gbufs%G_UELR1
639 g_damdl = gbufs%G_DAMDL
640 g_forth = gbufs%G_FORTH
641 g_eintth= gbufs%G_EINTTH
642 g_seq = gbufs%G_SEQ
643 g_strw = gbufs%G_STRW
644 g_strwpg= gbufs%G_STRWPG
645 g_dt = gbufs%G_DT
646 g_isms = gbufs%G_ISMS
647 g_aburn = gbufs%G_ABURN
648 g_mu = gbufs%G_MU
649 g_planl = gbufs%G_PLANL
650 g_epsdnl = gbufs%G_EPSDNL
651 g_dmgscl = gbufs%G_DMGSCL
652 g_tsaiwu = gbufs%G_TSAIWU
653 g_bpreld= gbufs%G_BPRELD
654 g_cor_nf = gbufs%G_COR_NF
655 g_cor_fr = gbufs%G_COR_FR
656 g_cor_xr = gbufs%G_COR_XR
657 g_maxfrac= gbufs%G_MAXFRAC
658 g_maxeps = gbufs%G_MAXEPS
659 g_betaorth = gbufs%G_BETAORTH
660 g_amu = gbufs%G_AMU
661 g_for_g = gbufs%G_FOR_G
662 g_forpg_g= gbufs%G_FORPG_G
663c---
664c 1-D elements (TRUSS, BEAM, SPRING, NSTRAND)
665c---
666 g_area = gbufs%G_AREA
667 g_skew = gbufs%G_SKEW
668 g_length = gbufs%G_LENGTH
669 g_totdepl = gbufs%G_TOTDEPL
670 g_totrot = gbufs%G_TOTROT
671 g_forep = gbufs%G_FOREP
672 g_momep = gbufs%G_MOMEP
673 g_dep_in_tens = gbufs%G_DEP_IN_TENS
674 g_dep_in_comp = gbufs%G_DEP_IN_COMP
675 g_rot_in_tens = gbufs%G_ROT_IN_TENS
676 g_rot_in_comp = gbufs%G_ROT_IN_COMP
677 g_posx = gbufs%G_POSX
678 g_posy = gbufs%G_POSY
679 g_posz = gbufs%G_POSZ
680 g_posxx = gbufs%G_POSXX
681 g_posyy = gbufs%G_POSYY
682 g_poszz = gbufs%G_POSZZ
683 g_yield = gbufs%G_YIELD
684 g_length_err = gbufs%G_LENGTH_ERR
685 g_dv = gbufs%G_DV
686 g_dfs = gbufs%G_DFS
687 g_skew_err = gbufs%G_SKEW_ERR
688 g_e6 = gbufs%G_E6
689 g_ruptcrit = gbufs%G_RUPTCRIT
690 g_mass = gbufs%G_MASS
691 g_v_repcvt = gbufs%G_V_REPCVT
692 g_vr_repcvt = gbufs%G_VR_REPCVT
693 g_nuvar = gbufs%G_NUVAR
694 g_nuvarn = gbufs%G_NUVARN
695 g_defini = gbufs%G_DEFINI
696 g_forini = gbufs%G_FORINI
697 g_inifric = gbufs%G_INIFRIC
698 g_strhg = gbufs%G_STRHG
699 g_skew_id = gbufs%G_SKEW_ID
700 g_yield_in_comp = gbufs%G_YIELD_IN_COMP
701 g_xxold_in_comp = gbufs%G_XXOLD_IN_COMP
702c---
703c seatbelt elements
704c---
705 g_slipring_id = gbufs%G_SLIPRING_ID
706 g_slipring_fram_id = gbufs%G_SLIPRING_FRAM_ID
707 g_slipring_strand = gbufs%G_SLIPRING_STRAND
708 g_retractor_id = gbufs%G_RETRACTOR_ID
709 g_ringslip = gbufs%G_RINGSLIP
710 g_add_node = gbufs%G_ADD_NODE
711 g_update = gbufs%G_UPDATE
712 g_fram_factor = gbufs%G_FRAM_FACTOR
713 g_intvar = gbufs%G_INTVAR
714c
715 gbuft%NOFF(1:nel*g_noff) = gbufs%NOFF(1:nel*g_noff)
716 gbuft%IERR(1:nel*g_ierr) = gbufs%IERR(1:nel*g_ierr)
717 gbuft%GAMA(1:nel*g_gama) = gbufs%GAMA(1:nel*g_gama)
718 gbuft%SMSTR(1:nel*g_smstr) = gbufs%SMSTR(1:nel*g_smstr)
719 gbuft%HOURG(1:nel*g_hourg) = gbufs%HOURG(1:nel*g_hourg)
720 gbuft%BFRAC(1:nel*g_bfrac) = gbufs%BFRAC(1:nel*g_bfrac)
721 gbuft%TAG22(1:nel*g_tag22) = gbufs%TAG22(1:nel*g_tag22)
722 gbuft%STRA(1:nel*g_stra) = gbufs%STRA(1:nel*g_stra)
723 gbuft%SIGI(1:nel*g_sigi) = gbufs%SIGI(1:nel*g_sigi)
724 gbuft%DMG(1:nel*g_dmg) = gbufs%DMG(1:nel*g_dmg)
725 gbuft%UELR(1:nel*g_uelr) = gbufs%UELR(1:nel*g_uelr)
726 gbuft%UELR1(1:nel*g_uelr1) = gbufs%UELR1(1:nel*g_uelr1)
727 gbuft%DAMDL(1:nel*g_damdl) = gbufs%DAMDL(1:nel*g_damdl)
728 gbuft%FOR(1:nel*g_for) = gbufs%FOR(1:nel*g_for)
729 gbuft%MOM(1:nel*g_mom) = gbufs%MOM(1:nel*g_mom)
730 gbuft%THK(1:nel*g_thk) = gbufs%THK(1:nel*g_thk)
731 gbuft%STRW(1:nel*g_strw) = gbufs%STRW(1:nel*g_strw)
732 gbuft%ABURN(1:nel*g_aburn) = gbufs%ABURN(1:nel*g_aburn)
733 gbuft%MU(1:nel*g_mu) = gbufs%MU(1:nel*g_mu)
734 gbuft%BPRELD(1:nel*g_bpreld) = gbufs%BPRELD(1:nel*g_bpreld)
735 gbuft%COR_NF(1:nel*g_cor_nf) = gbufs%COR_NF(1:nel*g_cor_nf)
736 gbuft%COR_FR(1:nel*g_cor_fr) = gbufs%COR_FR(1:nel*g_cor_fr)
737 gbuft%COR_XR(1:nel*g_cor_xr) = gbufs%COR_XR(1:nel*g_cor_xr)
738 gbuft%MAXFRAC(1:nel*g_maxfrac) = gbufs%MAXFRAC(1:nel*g_maxfrac)
739 gbuft%MAXEPS(1:nel*g_maxeps) = gbufs%MAXEPS(1:nel*g_maxeps)
740 gbuft%BETAORTH(1:nel*g_betaorth) = gbufs%BETAORTH(1:nel*g_betaorth)
741 gbuft%AMU(1:nel*g_amu) = gbufs%AMU(1:nel*g_amu)
742 gbuft%FOR_G(1:nel*g_for_g) = gbufs%FOR_G(1:nel*g_for_g)
743 gbuft%WPLA(1:nel*g_wpla) = gbufs%WPLA(1:nel*g_wpla)
744c
745 IF (npttot == 1) THEN ! global variables are pointing to local ones
746 lbuft => elbuf_tgt(ng)%BUFLY(1)%LBUF(1,1,1)
747 elbuf_tgt(ng)%GBUF%BFRAC => lbuft%BFRAC
748 elbuf_tgt(ng)%GBUF%OFF => lbuft%OFF
749 elbuf_tgt(ng)%GBUF%EINT => lbuft%EINT
750 elbuf_tgt(ng)%GBUF%EINS => lbuft%EINS
751 elbuf_tgt(ng)%GBUF%RHO => lbuft%RHO
752 elbuf_tgt(ng)%GBUF%QVIS => lbuft%QVIS
753 elbuf_tgt(ng)%GBUF%DELTAX => lbuft%DELTAX
754 elbuf_tgt(ng)%GBUF%VOL => lbuft%VOL
755 elbuf_tgt(ng)%GBUF%EPSD => lbuft%EPSD
756 elbuf_tgt(ng)%GBUF%EPSQ => lbuft%EPSQ
757 elbuf_tgt(ng)%GBUF%PLA => lbuft%PLA
758 elbuf_tgt(ng)%GBUF%WPLA => lbuft%WPLA
759 elbuf_tgt(ng)%GBUF%TEMP => lbuft%TEMP
760 elbuf_tgt(ng)%GBUF%TB => lbuft%TB
761 elbuf_tgt(ng)%GBUF%RK => lbuft%RK
762 elbuf_tgt(ng)%GBUF%RE => lbuft%RE
763 elbuf_tgt(ng)%GBUF%SIG => lbuft%SIG
764 elbuf_tgt(ng)%GBUF%FORTH => lbuft%FORTH
765 elbuf_tgt(ng)%GBUF%EINTTH => lbuft%EINTTH
766 elbuf_tgt(ng)%GBUF%SEQ => lbuft%SEQ
767 elbuf_tgt(ng)%GBUF%ABURN => lbuft%ABURN
768 elbuf_tgt(ng)%GBUF%MU => lbuft%MU
769 ELSE ! NPTTOT /= 1
770 gbuft%BFRAC(1:nel*g_bfrac) = gbufs%BFRAC(1:nel*g_bfrac)
771 gbuft%OFF(1:nel*g_off) = gbufs%OFF(1:nel*g_off)
772 gbuft%EINT(1:nel*g_eint) = gbufs%EINT(1:nel*g_eint)
773 gbuft%EINS(1:nel*g_eins) = gbufs%EINS(1:nel*g_eins)
774 gbuft%RHO(1:nel*g_rho) = gbufs%RHO(1:nel*g_rho)
775 gbuft%QVIS(1:nel*g_qvis) = gbufs%QVIS(1:nel*g_qvis)
776 gbuft%DELTAX(1:nel*g_deltax)= gbufs%DELTAX(1:nel*g_deltax)
777 gbuft%VOL(1:nel*g_vol) = gbufs%VOL(1:nel*g_vol)
778 gbuft%EPSD(1:nel*g_epsd) = gbufs%EPSD(1:nel*g_epsd)
779 gbuft%EPSQ(1:nel*g_epsq) = gbufs%EPSQ(1:nel*g_epsq)
780 gbuft%PLA(1:nel*g_pla) = gbufs%PLA(1:nel*g_pla)
781 gbuft%TEMP(1:nel*g_temp) = gbufs%TEMP(1:nel*g_temp)
782 gbuft%TB(1:nel*g_tb) = gbufs%TB(1:nel*g_tb)
783 gbuft%RK(1:nel*g_rk) = gbufs%RK(1:nel*g_rk)
784 gbuft%RE(1:nel*g_re) = gbufs%RE(1:nel*g_re)
785 gbuft%SIG(1:nel*g_sig) = gbufs%SIG(1:nel*g_sig)
786 gbuft%FORTH(1:nel*g_forth) = gbufs%FORTH(1:nel*g_forth)
787 gbuft%EINTTH(1:nel*g_eintth)= gbufs%EINTTH(1:nel*g_eintth)
788 gbuft%SEQ(1:nel*g_seq) = gbufs%SEQ(1:nel*g_seq)
789 gbuft%ABURN(1:nel*g_aburn) = gbufs%ABURN(1:nel*g_aburn)
790 gbuft%MU(1:nel*g_mu) = gbufs%MU(1:nel*g_mu)
791 ENDIF ! NPTTOT
792c---
793c 1-D elements (TRUSS, BEAM, SPRING, NSTRAND)
794c---
795 IF(igtyp == 3 .and. ity == 5) THEN
796 gbuft%DMGSCL(1:nel*g_dmgscl)= gbufs%DMGSCL(1:nel*g_dmgscl)
797 ENDIF
798 gbuft%AREA(1:nel*g_area)= gbufs%AREA(1:nel*g_area)
799 gbuft%SKEW(1:nel*g_skew)= gbufs%SKEW(1:nel*g_skew)
800 gbuft%LENGTH(1:nel*g_length)= gbufs%LENGTH(1:nel*g_length)
801 gbuft%TOTDEPL(1:nel*g_totdepl)= gbufs%TOTDEPL(1:nel*g_totdepl)
802 gbuft%TOTROT(1:nel*g_totrot)= gbufs%TOTROT(1:nel*g_totrot)
803 gbuft%FOREP(1:nel*g_forep)= gbufs%FOREP(1:nel*g_forep)
804 gbuft%MOMEP(1:nel*g_momep)= gbufs%MOMEP(1:nel*g_momep)
805 gbuft%DEP_IN_TENS(1:nel*g_dep_in_tens)= gbufs%DEP_IN_TENS(1:nel*g_dep_in_tens)
806 gbuft%DEP_IN_COMP(1:nel*g_dep_in_comp)= gbufs%DEP_IN_COMP(1:nel*g_dep_in_comp)
807 gbuft%ROT_IN_TENS(1:nel*g_rot_in_tens)= gbufs%ROT_IN_TENS(1:nel*g_rot_in_tens)
808 gbuft%ROT_IN_COMP(1:nel*g_rot_in_comp)= gbufs%ROT_IN_COMP(1:nel*g_rot_in_comp)
809 gbuft%POSX(1:nel*g_posx)= gbufs%POSX(1:nel*g_posx)
810 gbuft%POSY(1:nel*g_posy)= gbufs%POSY(1:nel*g_posy)
811 gbuft%POSZ(1:nel*g_posz)= gbufs%POSZ(1:nel*g_posz)
812 gbuft%POSXX(1:nel*g_posxx)= gbufs%POSXX(1:nel*g_posxx)
813 gbuft%POSYY(1:nel*g_posyy)= gbufs%POSYY(1:nel*g_posyy)
814 gbuft%POSZZ(1:nel*g_poszz)= gbufs%POSZZ(1:nel*g_poszz)
815 gbuft%YIELD(1:nel*g_yield)= gbufs%YIELD(1:nel*g_yield)
816 gbuft%LENGTH_ERR(1:nel*g_length_err)= gbufs%LENGTH_ERR(1:nel*g_length_err)
817 gbuft%DV(1:nel*g_dv)= gbufs%DV(1:nel*g_dv)
818 gbuft%DFS(1:nel*g_dfs)= gbufs%DFS(1:nel*g_dfs)
819 gbuft%SKEW_ERR(1:nel*g_skew_err)= gbufs%SKEW_ERR(1:nel*g_skew_err)
820 gbuft%E6(1:nel*g_e6)= gbufs%E6(1:nel*g_e6)
821 gbuft%RUPTCRIT(1:nel*g_ruptcrit)= gbufs%RUPTCRIT(1:nel*g_ruptcrit)
822 gbuft%MASS(1:nel*g_mass)= gbufs%MASS(1:nel*g_mass)
823 gbuft%V_REPCVT(1:nel*g_v_repcvt)= gbufs%V_REPCVT(1:nel*g_v_repcvt)
824 gbuft%VR_REPCVT(1:nel*g_vr_repcvt)= gbufs%VR_REPCVT(1:nel*g_vr_repcvt)
825 gbuft%VAR(1:nel*g_nuvar)= gbufs%VAR(1:nel*g_nuvar)
826 gbuft%VARN(1:nel*g_nuvarn)= gbufs%VARN(1:nel*g_nuvarn)
827 gbuft%DEFINI(1:nel*g_defini)= gbufs%DEFINI(1:nel*g_defini)
828 gbuft%FORINI(1:nel*g_forini)= gbufs%FORINI(1:nel*g_forini)
829 gbuft%INIFRIC(1:nel*g_inifric)= gbufs%INIFRIC(1:nel*g_inifric)
830 gbuft%STRHG(1:nel*g_strhg) = gbufs%STRHG(1:nel*g_strhg)
831 gbuft%SKEW_ID(1:nel*g_skew_id)= gbufs%SKEW_ID(1:nel*g_skew_id)
832 gbuft%YIELD_IN_COMP(1:nel*g_yield_in_comp) = gbufs%YIELD_IN_COMP(1:nel*g_yield_in_comp)
833 gbuft%XXOLD_IN_COMP(1:nel*g_xxold_in_comp) = gbufs%XXOLD_IN_COMP(1:nel*g_xxold_in_comp)
834c---
835c seatbelt elements
836c---
837 gbuft%SLIPRING_ID(1:nel*g_slipring_id)=gbufs%SLIPRING_ID(1:nel*g_slipring_id)
838 gbuft%SLIPRING_FRAM_ID(1:nel*g_slipring_fram_id)=gbufs%SLIPRING_FRAM_ID(1:nel*g_slipring_fram_id)
839 gbuft%SLIPRING_STRAND(1:nel*g_slipring_strand)= gbufs%SLIPRING_STRAND(1:nel*g_slipring_strand)
840 gbuft%RETRACTOR_ID(1:nel*g_retractor_id)=gbufs%RETRACTOR_ID(1:nel*g_retractor_id)
841 gbuft%RINGSLIP(1:nel*g_ringslip)=gbufs%RINGSLIP(1:nel*g_ringslip)
842 gbuft%ADD_NODE(1:nel*g_add_node)=gbufs%ADD_NODE(1:nel*g_add_node)
843 gbuft%UPDATE(1:nel*g_update)=gbufs%UPDATE(1:nel*g_update)
844 gbuft%FRAM_FACTOR(1:nel*g_fram_factor)=gbufs%FRAM_FACTOR(1:nel*g_fram_factor)
845 gbuft%INTVAR(1:nel*g_intvar)=gbufs%INTVAR(1:nel*g_intvar)
846c
847 IF (npg == 1) THEN
848 IF (npttot == 1) THEN
849 lbuft => elbuf_tgt(ng)%BUFLY(1)%LBUF(1,1,1)
850 elbuf_tgt(ng)%GBUF%FORPG => lbuft%FOR
851 elbuf_tgt(ng)%GBUF%MOMPG => lbuft%MOM
852C
853C ELBUF_TGT(NG)%GBUF%FORPGPINCH => LBUFT%FORPINCH ! [PM] add later
854C ELBUF_TGT(NG)%GBUF%MOMPGPINCH => LBUFT%MOMPINCH ! [PM] add later
855C ELBUF_TGT(NG)%GBUF%EPGPINCHXZ => LBUFT%EPGPINCHXZ ! [PM] add later
856C ELBUF_TGT(NG)%GBUF%EPGPINCHYZ => LBUFT%EPGPINCHYZ ! [PM] add later
857C ELBUF_TGT(NG)%GBUF%EPGPINCHZZ => LBUFT%EPGPINCHZZ ! [PM] add later
858C
859 IF (g_strpg<=g_stra) elbuf_tgt(ng)%GBUF%STRPG => lbuft%STRA
860 ELSE
861 elbuf_tgt(ng)%GBUF%FORPG => elbuf_tgt(ng)%GBUF%FOR
862 elbuf_tgt(ng)%GBUF%MOMPG => elbuf_tgt(ng)%GBUF%MOM
863C
864C ELBUF_TGT(NG)%GBUF%FORPGPINCH => ELBUF_TGT(NG)%GBUF%FORPINCH ! [PM] add later
865C ELBUF_TGT(NG)%GBUF%MOMPGPINCH => ELBUF_TGT(NG)%GBUF%MOMPINCH ! [PM] add later
866C ELBUF_TGT(NG)%GBUF%EPGPINCHXZ => ELBUF_TGT(NG)%GBUF%EPGPINCHXZ ! [PM] add later
867C ELBUF_TGT(NG)%GBUF%EPGPINCHYZ => ELBUF_TGT(NG)%GBUF%EPGPINCHYZ ! [PM] add later
868C ELBUF_TGT(NG)%GBUF%EPGPINCHZZ => ELBUF_TGT(NG)%GBUF%EPGPINCHZZ ! [PM] add later
869C
870 IF (g_strpg<=g_stra) elbuf_tgt(ng)%GBUF%STRPG => elbuf_tgt(ng)%GBUF%STRA
871 ENDIF
872 elbuf_tgt(ng)%GBUF%STRWPG=> elbuf_tgt(ng)%GBUF%STRW
873 IF (g_strpg>g_stra) gbuft%STRPG(1:nel*g_strpg) = gbufs%STRPG(1:nel*g_strpg)
874 elbuf_tgt(ng)%GBUF%FORPG_G => elbuf_tgt(ng)%GBUF%FOR_G
875 ELSEIF (npg > 1) THEN
876 gbuft%FORPG(1:nel*g_forpg) = gbufs%FORPG(1:nel*g_forpg)
877 gbuft%MOMPG(1:nel*g_mompg) = gbufs%MOMPG(1:nel*g_mompg)
878C
879 gbuft%FORPGPINCH(1:nel*g_forpgpinch) = gbufs%FORPGPINCH(1:nel*g_forpgpinch)
880 gbuft%MOMPGPINCH(1:nel*g_mompgpinch) = gbufs%MOMPGPINCH(1:nel*g_mompgpinch)
881 gbuft%EPGPINCHXZ(1:nel*g_epgpinchxz) = gbufs%EPGPINCHXZ(1:nel*g_epgpinchxz)
882 gbuft%EPGPINCHYZ(1:nel*g_epgpinchyz) = gbufs%EPGPINCHYZ(1:nel*g_epgpinchyz)
883 gbuft%EPGPINCHZZ(1:nel*g_epgpinchzz) = gbufs%EPGPINCHZZ(1:nel*g_epgpinchzz)
884C
885 gbuft%STRPG(1:nel*g_strpg) = gbufs%STRPG(1:nel*g_strpg)
886 gbuft%STRWPG(1:nel*g_strwpg)= gbufs%STRWPG(1:nel*g_strwpg)
887 gbuft%FORPG_G(1:nel*g_forpg_g)= gbufs%FORPG_G(1:nel*g_forpg_g)
888 ENDIF
889c
890 ENDIF ! ITY
891C-----------------------------------------------
892 RETURN
893 END SUBROUTINE copy_elbuf_1
894
subroutine copy_elbuf_1(elbuf_src, elbuf_tgt, iparg, ngroup, ng)