OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
h3d_oned_tensor.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!|| h3d_oned_tensor ../engine/source/output/h3d/h3d_results/h3d_oned_tensor.F
25!||--- called by ------------------------------------------------------
26!|| genh3d ../engine/source/output/h3d/h3d_results/genh3d.f
27!||--- calls -----------------------------------------------------
28!|| h3d_write_tensor ../engine/source/output/h3d/h3d_results/h3d_write_tensor.F
29!||--- uses -----------------------------------------------------
30!|| elbufdef_mod ../common_source/modules/mat_elem/elbufdef_mod.F90
31!|| names_and_titles_mod ../common_source/modules/names_and_titles_mod.F
32!||====================================================================
33 SUBROUTINE h3d_oned_tensor(
34 . ELBUF_TAB , IFUNC , IPARG , GEO , IXT ,
35 . IXP , IXR , PM , ANIM ,
36 . ONED_TENSOR , ID_ELEM , ITY_ELEM , INFO1 , INFO2 ,
37 . IS_WRITTEN_ONED, IPARTT , IPARTP , IPARTR, H3D_PART,
38 . KEYWORD , X , D , IPT_INPUT)
39C-----------------------------------------------
40C M o d u l e s
41C-----------------------------------------------
42 USE elbufdef_mod
44C-----------------------------------------------
45C I m p l i c i t T y p e s
46C-----------------------------------------------
47#include "implicit_f.inc"
48C-----------------------------------------------
49C C o m m o n B l o c k s
50C-----------------------------------------------
51#include "mvsiz_p.inc"
52#include "com01_c.inc"
53#include "com04_c.inc"
54#include "param_c.inc"
55C-----------------------------------------------
56C D u m m y A r g u m e n t s
57C-----------------------------------------------
58C REAL
60 . pm(npropm,*), geo(npropg,*),
61 . anim(*),oned_tensor(6,*),x(3,*),d(3,*)
62 INTEGER IPARG(NPARG,*),
63 . IXT(NIXT,*),IXP(NIXP,*),IXR(NIXR,*),IFUNC,
64 . nanim1d_l,
65 . is_written_oned(*),id_elem(*),ity_elem(*),
66 . ipartt(*) ,ipartp(*),ipartr(*),h3d_part(*)
67 INTEGER BUF,INFO1,INFO2,IPT_INPUT
68C
69 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP), TARGET :: ELBUF_TAB
70 CHARACTER(NCHARLINE100)::KEYWORD
71C-----------------------------------------------
72C L o c a l V a r i a b l e s
73C-----------------------------------------------
74C REAL
76 . evar(6,mvsiz),
77 . off, p, vonm2, vonm, s1, s2, s12, s3, value(3),
78 . a1,b1,b2,b3,yeq,f1,m1,m2,m3, xm,
79 . for, area, feq, eplas, rho0, a0, xx1, yy1, zz1, al0
80 INTEGER I, II, NG, NEL, NFT, IAD, ITY, LFT, NPT, ISS, ISC,
81 . IADD, N, J, LLT, MLW, NB1, NB2, NB3, NB4, NB5,
82 . NB6, NB7, NB8, NB9, NB10, NB11, NB12, NB13, NB14, NB15,
83 . NB16, LLL,NUVAR,IGTYP,
84 . ISTRAIN,NN, K1, K2,JTURB,MT,JALE, IMID, IALEL,IPID,
85 . nn1,nn2,nn3,nn4,nn5,nn6,nn7,nn8,nn9,nn10,nf,
86 . offset,k,inc,kk,ihbe,isrot,ilayer,ir,is,jj(6),iok_part(mvsiz),
87 . is_written_tensor(mvsiz),n1, n2, ipt
88 REAL R4
89C
90 TYPE(G_BUFEL_) ,POINTER :: GBUF
91 TYPE(BUF_LAY_) ,POINTER :: BUFLY
92 TYPE(L_BUFEL_),POINTER :: LBUF
93C-----------------------------------------------
94C
95 nn1 = 1
96 nn3 = 1
97 nn4 = nn3
98 nn5 = nn4
99 nn6 = nn5
100 nn7 = nn6 + numelt
101 nn8 = nn7 + numelp
102 nn9 = nn8 + numelr
103 nn10= nn9
104C
105 DO ng=1,ngroup
106 mlw =iparg(1,ng)
107 nel =iparg(2,ng)
108 ity =iparg(5,ng)
109 igtyp =iparg(38,ng)
110C---
111 gbuf => elbuf_tab(ng)%GBUF
112C---
113 nft =iparg(3,ng)
114 npt = iparg(6,ng)
115!
116 DO i=1,3
117 jj(i) = nel*(i-1)
118 ENDDO
119
120 evar(1:6,1:nel) = zero
121 is_written_tensor(1:nel) = 0
122c
123 IF (ity == 4) offset = 0
124 IF (ity == 5) offset = numelt
125 IF (ity == 6) offset = numelt+numelp
126c
127 DO i=1,nel
128 IF (ity == 4) THEN
129 id_elem(offset+nft+i) = ixt(nixt,nft+i)
130 ity_elem(offset+nft+i) = 4
131 IF( h3d_part(ipartt(nft+i)) == 1) iok_part(i) = 1
132 ELSEIF (ity == 5) THEN
133 id_elem(offset+nft+i) = ixp(nixp,nft+i)
134 ity_elem(offset+nft+i) = 5
135 IF( h3d_part(ipartp(nft+i)) == 1) iok_part(i) = 1
136 ELSEIF (ity == 6) THEN
137 id_elem(offset+nft+i) = ixr(nixr,nft+i)
138 ity_elem(offset+nft+i) = 6
139 IF( h3d_part(ipartr(nft+i)) == 1) iok_part(i) = 1
140 ENDIF
141 ENDDO
142
143 ipt = ipt_input
144
145 IF(ity==4 .OR. ity==5 .OR. ity==6)THEN
146 DO i=1,nel
147 oned_tensor(1:6,offset+nft+i) = zero ! Default = zero in all cases !
148 ENDDO
149 ENDIF
150C-----------------------------------------------
151C TRUSS
152C-----------------------------------------------
153 IF(ity==4)THEN
154C--------------------------------------------------
155 IF (keyword == 'TEST') THEN
156C--------------------------------------------------
157 DO i=1,nel
158 evar(1,i) = zero
159 evar(2,i) = zero
160 evar(3,i) = zero
161 evar(4,i) = zero
162 evar(5,i) = zero
163 evar(6,i) = zero
164 is_written_tensor(i) = 1
165 ENDDO
166C--------------------------------------------------
167c ELSEIF (KEYWORD == '') THEN
168C--------------------------------------------------
169c DO I=1,NEL
170c VALUE(1) =
171c VALUE(2) =
172c VALUE(3) =
173c ENDDO
174C--------------------------------------------------
175 ELSEIF (keyword == 'TENS/STRESS') THEN
176C--------------------------------------------------
177 DO i=1,nel
178 for = gbuf%FOR(i)
179 area = gbuf%AREA(i)
180 evar(1,i) = for/area
181 is_written_tensor(i) = 1
182 ENDDO
183C--------------------------------------------------
184 ELSEIF (keyword == 'TENS/STRAIN') THEN
185C--------------------------------------------------
186 DO i=1,nel
187 evar(1,i) = gbuf%STRA(i)
188 is_written_tensor(i) = 1
189 ENDDO
190 ENDIF
191C-----------------------------------------------
192C POUTRES
193C-----------------------------------------------
194 ELSEIF(ity==5)THEN
195C--------------------------------------------------
196 IF (keyword == 'TENS/STRESS') THEN
197C--------------------------------------------------
198c NPT=NULL
199 IF(ipt < 0) THEN
200 DO i=1,nel
201 n = i + nft
202 evar(1,i) = gbuf%FOR(jj(1)+i) / geo(1,ixp(5,n))
203 evar(4,i) = gbuf%FOR(jj(2)+i) / geo(1,ixp(5,n))
204 evar(6,i) = gbuf%FOR(jj(3)+i) / geo(1,ixp(5,n))
205 is_written_tensor(i) = 1
206 ENDDO
207c NPT=IPT
208 ELSEIF(ipt > 0 .AND. ipt <= npt) THEN
209 ilayer = 1
210 bufly => elbuf_tab(ng)%BUFLY(ilayer)
211 IF (bufly%L_SIG > 0) THEN
212 lbuf => bufly%LBUF(1,1,ipt)
213 DO i=1,nel
214 evar(1,i) = lbuf%SIG(jj(1)+i)
215 evar(4,i) = lbuf%SIG(jj(2)+i)
216 evar(6,i) = lbuf%SIG(jj(3)+i)
217 is_written_tensor(i) = 1
218 ENDDO
219 END IF !(BUFLY%L_SIG > 0) THEN
220 ENDIF
221C--------------------------------------------------
222 ELSEIF (keyword == 'TENS/STRAIN') THEN
223C--------------------------------------------------
224c NPT=NULL
225 IF(ipt < 0 .AND. npt > 0) THEN
226 ilayer = 1
227 bufly => elbuf_tab(ng)%BUFLY(ilayer)
228 IF (bufly%L_STRA > 0) THEN
229 DO ipt = 1,npt
230 lbuf => bufly%LBUF(1,1,ipt)
231 DO i=1,nel
232 evar(1,i) =evar(1,i)+ lbuf%STRA(jj(1)+i)/npt
233 evar(4,i) =evar(4,i)+ lbuf%STRA(jj(2)+i)/npt
234 evar(6,i) =evar(6,i)+ lbuf%STRA(jj(3)+i)/npt
235 is_written_tensor(i) = 1
236 ENDDO
237 ENDDO
238 END IF !(BUFLY%L_STRA > 0) THEN
239c NPT=IPT
240 ELSEIF(ipt > 0 .AND. ipt <= npt) THEN
241 ilayer = 1
242 bufly => elbuf_tab(ng)%BUFLY(ilayer)
243 lbuf => bufly%LBUF(1,1,ipt)
244 IF (bufly%L_STRA > 0) THEN
245 DO i=1,nel
246 evar(1,i) = lbuf%STRA(jj(1)+i)
247 evar(4,i) = lbuf%STRA(jj(2)+i)
248 evar(6,i) = lbuf%STRA(jj(3)+i)
249 is_written_tensor(i) = 1
250 ENDDO
251 END IF !(BUFLY%L_STRA > 0) THEN
252 ENDIF !IPT
253C--------------------------------------------------
254 ELSEIF (keyword == 'TENS/STRAIN/MAX') THEN
255C--------------------------------------------------
256 DO ipt = 1,npt
257 ilayer = 1
258 bufly => elbuf_tab(ng)%BUFLY(ilayer)
259 lbuf => bufly%LBUF(1,1,ipt)
260 IF (bufly%L_STRA > 0) THEN
261 DO i=1,nel
262 evar(1,i) =max(evar(1,i), abs(lbuf%STRA(jj(1)+i)))
263 evar(4,i) =max(evar(4,i), abs(lbuf%STRA(jj(2)+i)))
264 evar(6,i) =max(evar(6,i), abs(lbuf%STRA(jj(3)+i)))
265 is_written_tensor(i) = 1
266 ENDDO
267 END IF !(BUFLY%L_STRA > 0) THEN
268 ENDDO
269C--------------------------------------------------
270 ELSEIF (keyword == 'TENS/STRAIN/TMAX') THEN
271C--------------------------------------------------
272 DO i=1,nel
273 evar(1,i) =gbuf%MAXEPS(jj(1)+i)
274 evar(4,i) =gbuf%MAXEPS(jj(2)+i)
275 evar(6,i) =gbuf%MAXEPS(jj(3)+i)
276 is_written_tensor(i) = 1
277 ENDDO
278C--------------------------------------------------
279C--------------------------------------------------
280c ELSEIF (KEYWORD == '') THEN
281C--------------------------------------------------
282c DO I=1,NEL
283c VALUE(1) =
284c VALUE(2) =
285c VALUE(3) =
286c ENDDO
287 ENDIF
288C-----------------------------------------------
289C RESSORTS
290C-----------------------------------------------
291 ELSEIF(ity==6)THEN
292C--------------------------------------------------
293 IF (keyword == 'TEST') THEN
294C--------------------------------------------------
295 DO i=1,nel
296 evar(1,i) = zero
297 evar(2,i) = zero
298 evar(3,i) = zero
299 evar(4,i) = zero
300 evar(5,i) = zero
301 evar(6,i) = zero
302 is_written_tensor(i) = 1
303 ENDDO
304C--------------------------------------------------
305c ELSEIF (KEYWORD == '') THEN
306C--------------------------------------------------
307c DO I=1,NEL
308c VALUE(1) =
309c VALUE(2) =
310c VALUE(3) =
311c ENDDO
312 ENDIF
313 ENDIF
314C-----------------------------------------------
315 IF(ity==4 .OR. ity==5 .OR. ity==6)THEN
316 CALL h3d_write_tensor(iok_part,is_written_oned,oned_tensor,nel,offset,nft,
317 . evar,is_written_tensor)
318 ENDIF
319C
320 ENDDO
321
322 RETURN
323 END
#define my_real
Definition cppsort.cpp:32
subroutine genh3d(timers, x, d, v, a, bufel, ixs, ixq, ixc, ixt, ixp, ixr, ixtg, swaft, smas, sxnorm, siad, iparg, pm, geo, ms, sinvert, cont, smater, icut, skew, xcut, fint, itab, sel2fa, fext, fopt, anin, lpby, npby, nstrf, rwbuf, nprw, tani, elbuf_tab, mat_param, dd_iad, weight, eani, ipart, cluster, iparts, ipartq, ipartc, ipartt, ipartp, ipartr, ipartur, iparttg, rby, swa4, tors, nom_opt, bufsf, idata, rdata, siadg, bufmat, bufgeo, kxx, ixx, ipartx, suix, sxusr, snfacptx, sixedge, sixfacet, sixsolid, snumx1, snumx2, snumx3, soffx1, soffx2, soffx3, smass1, smass2, smass3, sfunc1, sfunc2, sfunc3, kxsp, ixsp, nod2sp, ipartsp, spbuf, ixs10, ixs20, ixs16, vr, monvol, volmon, ipm, igeo, nodglob, iad_elem, fr_elem, fr_sec, fr_rby2, iad_rby2, fr_wall, iflow, rflow, fncont, ftcont, temp, thke, err_thk_sh4, err_thk_sh3, diag_sms, ipari, fncont2, dr, ale_connect, irbe2, irbe3, lrbe2, lrbe3, fr_rbe2, fr_rbe3m, iad_rbe2, dxancg, nod_pxfem, iel_pxfem, zi_ply, vgaz, fcontg, fncontg, ftcontg, fanreac, inod_crk, iel_crk, elcutc, iadc_crk, pdama2, res_sms, weight_md, nodglobxfe, nodedge, fcluster, mcluster, xfem_tab, w, nv46, ipartig3d, kxig3d, ixig3d, sig3dsolid, knot, wige, nercvois, nesdvois, lercvois, lesdvois, crkedge, indx_crk, xedge4n, xedge3n, stack, sph2sol, stifn, stifr, igrnod, sh4tree, sh3tree, h3d_data, multi_fvm, subset, pskids, tag_skins6, tf, npf, fcont_max, mds_matid, fncontp2, ftcontp2, ibcl, iloadp, lloadp, fac, sensors, tagncont, loadp_hyd_inter, xframe, forc, ar, csefric, csefricg, csefric_stamp, csefricg_stamp, table, iframe, loads, drape_sh4n, drape_sh3n, drapeg, x_c, glob_therm, pblast)
Definition genh3d.F:212
subroutine h3d_oned_tensor(elbuf_tab, ifunc, iparg, geo, ixt, ixp, ixr, pm, anim, oned_tensor, id_elem, ity_elem, info1, info2, is_written_oned, ipartt, ipartp, ipartr, h3d_part, keyword, x, d, ipt_input)
subroutine h3d_write_tensor(iok_part, is_written, tensor, nel, offset, nft, value, is_written_tensor)
subroutine area(d1, x, x2, y, y2, eint, stif0)
#define max(a, b)
Definition macros.h:21
for(i8=*sizetab-1;i8 >=0;i8--)
integer, parameter ncharline100