OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
h3d_quad_vector.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_quad_vector ../engine/source/output/h3d/h3d_results/h3d_quad_vector.F
25!||--- called by ------------------------------------------------------
26!|| genh3d ../engine/source/output/h3d/h3d_results/genh3d.F
27!||--- calls -----------------------------------------------------
28!|| h3d_write_vectors ../engine/source/output/h3d/h3d_results/h3d_write_vectors.F
29!|| initbuf ../engine/share/resol/initbuf.F
30!|| qrota_vect ../engine/source/output/anim/generate/qrota_vect.F
31!||--- uses -----------------------------------------------------
32!|| alefvm_mod ../common_source/modules/ale/alefvm_mod.F
33!|| elbufdef_mod ../common_source/modules/mat_elem/elbufdef_mod.F90
34!|| initbuf_mod ../engine/share/resol/initbuf.f
35!|| multi_fvm_mod ../common_source/modules/ale/multi_fvm_mod.F90
36!|| names_and_titles_mod ../common_source/modules/names_and_titles_mod.F
37!|| schlieren_mod ../engine/share/modules/schlieren_mod.F
38!|| stack_mod ../engine/share/modules/stack_mod.F
39!||====================================================================
40 SUBROUTINE h3d_quad_vector(
41 . ELBUF_TAB ,QUAD_VECTOR,IFUNC ,IPARG ,GEO ,
42 . IXQ ,IXC ,IXTG ,PM ,
43 . EL2FA ,NBF ,IADP ,
44 . NBF_L ,EHOUR ,ANIM ,NBPART ,IADG ,
45 . IPM ,IGEO ,THKE ,ERR_THK_SH4 ,ERR_THK_SH3,
46 . INVERT ,X ,V ,W ,
47 . NV46 ,NERCVOIS ,NESDVOIS ,LERCVOIS ,LESDVOIS,
48 . STACK ,ID_ELEM ,INFO1 ,INFO2 ,
49 . IS_WRITTEN_QUAD,IPARTQ,IPARTTG ,LAYER_INPUT ,IPT_INPUT ,
50 . PLY_INPUT ,GAUSS_INPUT,IUVAR_INPUT,H3D_PART ,KEYWORD ,
51 . BUFMAT ,MULTI_FVM ,IR_INPUT ,IS_INPUT ,IT_INPUT)
52C-----------------------------------------------
53C M o d u l e s
54C-----------------------------------------------
55 USE initbuf_mod
56 USE elbufdef_mod
57 USE schlieren_mod
58 USE stack_mod
59 USE multi_fvm_mod
60 USE alefvm_mod
62C-----------------------------------------------
63C I m p l i c i t T y p e s
64C-----------------------------------------------
65#include "implicit_f.inc"
66C-----------------------------------------------
67C C o m m o n B l o c k s
68C-----------------------------------------------
69#include "vect01_c.inc"
70#include "mvsiz_p.inc"
71#include "com01_c.inc"
72#include "com04_c.inc"
73#include "param_c.inc"
74C-----------------------------------------------
75C D u m m y A r g u m e n t s
76C-----------------------------------------------
78 . quad_vector(3,*),x(3,numnod),v(3,numnod),w(3,numnod),thke(*),ehour(*),geo(npropg,numgeo),
79 . anim(*),pm(npropm,*),err_thk_sh4(*), err_thk_sh3(*)
80 INTEGER IPARG(NPARG,NGROUP),IXC(NIXC,NUMELC),IXTG(NIXTG,NUMELTG),EL2FA(*),
81 . IXQ(NIXQ,NUMELQ),IFUNC,NBF,
82 . IADP(*),NBF_L, NBPART,IADG(NSPMD,*),IPM(NPROPMI,NUMMAT),
83 . IGEO(NPROPGI,NUMGEO),INVERT(*), NV46,ID_ELEM(*),
84 . INFO1,INFO2,IS_WRITTEN_QUAD(*),IPARTQ(*),IPARTTG(*),H3D_PART(*),
85 . LAYER_INPUT ,IPT_INPUT,GAUSS_INPUT,PLY_INPUT,IUVAR_INPUT,
86 . IR_INPUT,IS_INPUT,IT_INPUT,IS_WRITTEN_VECTOR(MVSIZ)
87 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP), TARGET :: ELBUF_TAB
88 TYPE (STACK_PLY) :: STACK
89 CHARACTER(LEN=NCHARLINE100) :: KEYWORD
90 TYPE (MULTI_FVM_STRUCT), INTENT(IN) :: MULTI_FVM
91C-----------------------------------------------
92C L o c a l V a r i a b l e s
93C-----------------------------------------------
95 . dam1(mvsiz),dam2(mvsiz),
96 . wpla(mvsiz),dmax(mvsiz),wpmax(mvsiz),fail(mvsiz),
97 . epst1(mvsiz),epst2(mvsiz),epsf1(mvsiz),epsf2(mvsiz),
98 . value(3),ff0,gg0,hh0,ll0,mm0,nn0,mass(mvsiz)
100 . off, p,vonm2,s1,s2,s12,s3,dmgmx,fac,
101 . dir1_1,dir1_2,dir2_1,dir2_2,aa,bb,v1,v2,v3,x21,x32,x34,
102 . x41,y21,y32,y34,y41,z21,z32,z34,z41,suma,vr,vs,x31,y31,
103 . z31,e11,e12,e13,e21,e22,e23,sum,area,x2l,var,
104 . e1x,e1y,e1z,e2x,e2y,e2z,e3x,e3y,e3z,rx,ry,rz,sx,sy,sz,
105 . vg(5),vly(5),ve(5),bufmat(*),
106 . s11,s22,s33,s4,s5,s6,crit,value1,value2
107 my_real
108 . evar(3,mvsiz)
109 INTEGER I,I1,II,J,NG,NEL,NPTR,NPTS,NPTT,NLAY,L,IFAIL,ILAY,
110 . ir,is,it,il,mlw, nuvar,ius,lenf,ptf,ptm,pts,nfail,
111 . n,nn,k,k1,k2,jturb,mt,imid,ialel,ipid,ish3n,nni,
112 . nn1,nn2,nn3,nn4,nn5,nn6,nn9,nf,buf,nvarf,
113 . offset,ihbe,nptm,npg, mpt,ipt,iadd,iadr,ipmat,ifailt,
114 . iigeo,iadi,isubstack,ithk,nercvois(*),nesdvois(*),
115 . lercvois(*),lesdvois(*),id_ply,nb_plyoff,iok,iadbuf,nuparam,
116 . imat,ivisc,ipos,itrimat
117 INTEGER PID(MVSIZ),MAT(MVSIZ),MATLY(MVSIZ*100),FAILG(100,MVSIZ),
118 . pte(4),ptp(4),ptmat(4),ptvar(4),npt_all,iply,
119 . id_elem_tmp(mvsiz),nix,iok_part(mvsiz),jj(6),npgt,iuvar,
120 . is_written_value(mvsiz)
121 CHARACTER*5 BUFF
122 REAL R4
123 TYPE(G_BUFEL_) ,POINTER :: GBUF
124 TYPE(L_BUFEL_) ,POINTER :: LBUF
125 TYPE(BUF_LAY_) ,POINTER :: BUFLY
126 TYPE(BUF_FAIL_) ,POINTER :: FBUF
127 my_real,
128 . DIMENSION(:), POINTER :: uvar
129 TYPE(l_bufel_) ,POINTER :: LBUF1,LBUF2,LBUF3,LBUF4
130 TYPE(BUF_MAT_) ,POINTER :: MBUF
131 my_real, DIMENSION(:) ,POINTER :: UPARAM
132 TARGET :: bufmat
133C-----------------------------------------------
134 ilay = layer_input
135 iuvar = iuvar_input
136 ir = ir_input
137 is = is_input
138 it = it_input
139C
140 DO i=1,numelq
141 is_written_quad(i) = 0
142 ENDDO
143C-----------
144 DO 900 ng=1,ngroup
145 CALL initbuf(iparg ,ng ,
146 2 mlw ,nel ,nft ,iad ,ity ,
147 3 npt ,jale ,ismstr ,jeul ,jturb ,
148 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
149 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
150 6 irep ,iint ,igtyp ,israt ,isrot ,
151 7 icsen ,isorth ,isorthg ,ifailure,jsms )
152 IF(mlw /= 13) THEN
153 nft =iparg(3,ng)
154 iad =iparg(4,ng)
155 isubstack = iparg(71,ng)
156 ivisc = iparg(61,ng)
157 iok_part(1:nel) = 0
158 lft=1
159 llt=nel
160!
161 DO i=1,6
162 jj(i) = nel*(i-1)
163 ENDDO
164c
165 value(1:3) = zero
166 DO i=1,nel
167 is_written_value(i) = 0
168 ENDDO
169 evar(1:3,1:nel) = zero
170 is_written_vector(1:nel) = 0
171C-----------------------------------------------
172C QUAD
173C-----------------------------------------------
174 IF (ity == 2) THEN
175
176 gbuf => elbuf_tab(ng)%GBUF
177 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)
178 uvar => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)%VAR
179 jale=(iparg(7,ng)+iparg(11,ng))
180 jturb=iparg(12,ng)*jale
181 nptr = elbuf_tab(ng)%NPTR
182 npts = elbuf_tab(ng)%NPTS
183 nptt = elbuf_tab(ng)%NPTT
184 nlay = elbuf_tab(ng)%NLAY
185 nuvar = elbuf_tab(ng)%BUFLY(1)%NVAR_MAT
186c
187 DO i=1,nel
188 id_elem(nft+i) = ixq(nixq,nft+i)
189 IF( h3d_part(ipartq(nft+i)) == 1) iok_part(i) = 1
190 ENDDO
191C---------------------
192 DO i=1,nel
193 quad_vector(1:3,nft+i) = zero ! Default = zero in all cases !
194 ENDDO
195c
196 iuvar = iuvar_input
197C--------------------------------------------------
198 IF (keyword == 'VECT/VEL') THEN
199C--------------------------------------------------
200 IF (mlw == 151) THEN
201 DO i = 1, nel
202 evar(1,i) = multi_fvm%VEL(1, i + nft)
203 evar(2,i) = multi_fvm%VEL(2, i + nft)
204 evar(3,i) = multi_fvm%VEL(3, i + nft)
205 is_written_vector(i) = 1
206 ENDDO
207 ELSE
208 DO i=1,nel
209 IF(gbuf%G_MOM>0 .AND. alefvm_param%IEnabled > 0)THEN
210 evar(1,i) = gbuf%MOM(jj(1) + i) / gbuf%RHO(i)
211 evar(2,i) = gbuf%MOM(jj(2) + i) / gbuf%RHO(i)
212 evar(3,i) = gbuf%MOM(jj(3) + i) / gbuf%RHO(i)
213 is_written_vector(i) = 1
214 ENDIF
215 ENDDO
216 ENDIF
217 IF (jcvt == 0 .OR. isorth /= 0) THEN
218C OUTPUT TENSOR STORED IN GLOBAL SYSTEM TO BE TRANSFERRED IN THE ELEMENT LOCAL ONE
219 CALL qrota_vect(x,ixq(1,nft+1),jcvt,evar,gbuf%GAMA,nel)
220 ENDIF
221C--------------------------------------------------
222 ELSEIF (keyword == 'VECT/ACC') THEN
223C--------------------------------------------------
224 IF (mlw == 151 .AND. ALLOCATED(multi_fvm%ACC)) THEN
225 DO i = 1, nel
226 evar(1,i) = multi_fvm%ACC(1, i + nft)
227 evar(2,i) = multi_fvm%ACC(2, i + nft)
228 evar(3,i) = multi_fvm%ACC(3, i + nft)
229 is_written_vector(i) = 1
230 ENDDO
231 ENDIF
232C--------------------------------------------------
233 ENDIF ! KEYWORD
234C-----------------------------------------------
235 CALL h3d_write_vectors(iok_part,is_written_quad,quad_vector,nel,0,nft,evar,is_written_vector)
236C-----------------------------------------------
237 ENDIF ! ITY
238
239C-----------------------------------------------
240 ENDIF ! MLW /= 13
241 900 CONTINUE ! NG
242C-----------------------------------------------
243 RETURN
244 END
#define my_real
Definition cppsort.cpp:32
subroutine h3d_quad_vector(elbuf_tab, quad_vector, ifunc, iparg, geo, ixq, ixc, ixtg, pm, el2fa, nbf, iadp, nbf_l, ehour, anim, nbpart, iadg, ipm, igeo, thke, err_thk_sh4, err_thk_sh3, invert, x, v, w, nv46, nercvois, nesdvois, lercvois, lesdvois, stack, id_elem, info1, info2, is_written_quad, ipartq, iparttg, layer_input, ipt_input, ply_input, gauss_input, iuvar_input, h3d_part, keyword, bufmat, multi_fvm, ir_input, is_input, it_input)
subroutine h3d_write_vectors(iok_part, is_written, vector, nel, offset, nft, value, is_written_vector)
subroutine area(d1, x, x2, y, y2, eint, stif0)
type(alefvm_param_), target alefvm_param
Definition alefvm_mod.F:121
subroutine initbuf(iparg, ng, mtn, llt, nft, iad, ity, npt, jale, ismstr, jeul, jtur, jthe, jlag, jmult, jhbe, jivf, mid, jpor, jcvt, jclose, jpla, irep, iint, igtyp, israt, isrot, icsen, isorth, isorthg, ifailure, jsms)
Definition initbuf.F:261
integer, parameter ncharline100
subroutine qrota_vect(x, ixq, kcvt, vect, gama, nel)
Definition qrota_vect.F:29
subroutine resol(timers, element, nodes, coupling, af, iaf, iskwn, neth, ipart, nom_opt, kxx, ixx, ixtg, ixs, ixq, ixt, ixp, ixr, ifill, mat_elem, ims, npc, ibcl, ibfv, idum, las, laccelm, nnlink, lnlink, iparg, dd_iad, igrv, iexlnk, kinet, ipari, nprw, iconx, npby, lpby, lrivet, nstrf, ljoint, nodpor, monvol, ilink, llink, linale, neflsw, nnflsw, icut, cluster, itask, inoise, thke, damp, pm, skews, geo, eani, bufmat, bufgeo, bufsf, w, veul, fill, dfill, alph, wb, dsave, asave, msnf, tf, forc, vel, fsav, fzero, xlas, accelm, agrv, fr_wave, failwave, parts0, elbuf, rwbuf, sensors, rwsav, rby, rivet, secbuf, volmon, lambda, wa, fv, partsav, uwa, val2, phi, segvar, r, crflsw, flsw, fani, xcut, anin, tani, secfcum, bufnois, idata, rdata, iframe, kxsp, ixsp, nod2sp, ispsym, ispcond, xframe, spbuf, xspsym, vspsym, pv, fsavd, ibvel, lbvel, wasph, w16, isphio, lprtsph, lonfsph, vsphio, fbvel, lagbuf, ibcslag, iactiv, dampr, gjbufi, gjbufr, rbmpc, ibmpc, sphveln, nbrcvois, nbsdvois, lnrcvois, lnsdvois, nercvois, nesdvois, lercvois, lesdvois, npsegcom, lsegcom, nporgeo, ixtg1, npbyl, lpbyl, rbyl, igeo, ipm, madprt, madsh4, madsh3, madsol, madnod, madfail, iad_rby, fr_rby, fr_wall, iad_rby2, fr_rby2, iad_i2m, fr_i2m, addcni2, procni2, iadi2, fr_mv, iadmv2, fr_ll, fr_rl, iadcj, fr_cj, fr_sec, iad_sec, iad_cut, fr_cut, rg_cut, newfront, fr_mad, fxbipm, fxbrpm, fxbnod, fxbmod, fxbglm, fxbcpm, fxbcps, fxblm, fxbfls, fxbdls, fxbdep, fxbvit, fxbacc, fxbelm, fxbsig, fxbgrvi, fxbgrvr, eigipm, eigibuf, eigrpm, lnodpor, fr_i18, graphe, iflow, rflow, lgrav, dd_r2r, fasolfr, fr_lagf, llagf, lprw, icontact, rcontact, sh4tree, sh3tree, ipadmesh, padmesh, msc, mstg, inc, intg, ptg, iskwp, nskwp, isensp, nsensp, iaccp, naccp, ipart_state, acontact, pcontact, factiv, sh4trim, sh3trim, mscnd, incnd, ibfflux, fbfflux, rbym, irbym, lnrbym, icodrbym, ibcv, fconv, ibftemp, fbftemp, iad_rbym, fr_rbym, weight_rm, ms_ply, zi_ply, inod_pxfem, iel_pxfem, iadc_pxfem, adsky_pxfem, icode_ply, icodt_ply, iskew_ply, admsms, madclnod, nom_sect, mcpc, mcptg, dmelc, dmeltg, mssa, dmels, mstr, dmeltr, msp, dmelp, msrt, dmelrt, ibcr, fradia, res_sms, table, irbe2, lrbe2, iad_rbe2, fr_rbe2, phie, msf, procne_pxfem, iadsdp_pxfem, iadrcp_pxfem, icfield, lcfield, cfield, msz2, diag_sms, iloadp, lloadp, loadp, inod_crk, iel_crk, iadc_crk, adsky_crk, cne_crk, procne_crk, iadsdp_crk, iadrcp_crk, ibufssg_io, ibc_ply, dmint2, ibordnode, elbuf_tab, por, nodedge, iad_edge, fr_edge, fr_nbedge, crknodiad, lgauge, gauge, igaup, ngaup, nodlevxf, dd_r2r_elem, nodglobxfe, sph2sol, sol2sph, irst, dmsph, wagap, xfem_tab, elcutc, nodenr, kxfenod2elc, enrtag, rthbu f, kxig3d, ixig3d, knot, wige, wsmcomp, stack, cputime_mp_glob, cputime_mp, tab_ump, poin_ump, sol2sph_typ, irunn_bis, addcsrect, iad_frnor, fr_nor, procnor, iad_fredg, fr_edg, drape_sh4n, drape_sh3n, tab_mat, nativ0_sms, multi_fvm, segquadfr, ms_2d, h3d_data, subsets, igrnod, igrbric, igrquad, igrsh4n, igrsh3n, igrtruss, igrbeam, igrspring, igrpart, igrsurf, forneqs, nloc_dmg, iskwp_l, knotlocpc, knotlocel, pinch_data, tag_skins6, ale_connectivity, xcell, xface, ne_nercvois, ne_nesdvois, ne_lercvois, ne_lesdvois, ibcscyc, lbcscyc, t_monvol, id_global_vois, face_vois, dynain_data, fcont_max, ebcs_tab, diffusion, kloadpinter, loadpinter, dgaploadint, drapeg, user_windows, output, interfaces, dt, loads, python, dpl0cld, vel0cld, ndamp_vrel, id_damp_vrel, fr_damp_vrel, ndamp_vrel_rbyg, names_and_titles, unitab, liflow, lrflow, glob_therm, pblast, rbe3)
Definition resol.F:633
subroutine initbuf(iparg, ng, mtn, llt, nft, iad, ity, npt, jale, ismstr, jeul, jtur, jthe, jlag, jmult, jhbe, jivf, jpor, jcvt, jclose, jpla, irep, iint, igtyp, israt, isrot, icsen, isorth, isorthg, ifailure)
Definition initbuf.F:38