OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
i9grd3.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!|| i9grd3 ../engine/source/interfaces/int09/i9grd3.F
25!||--- called by ------------------------------------------------------
26!|| i9wal3 ../engine/source/interfaces/int09/i9wal3.F
27!||--- calls -----------------------------------------------------
28!|| initbuf ../engine/share/resol/initbuf.F
29!||--- uses -----------------------------------------------------
30!|| elbufdef_mod ../common_source/modules/mat_elem/elbufdef_mod.F90
31!|| element_mod ../common_source/modules/elements/element_mod.F90
32!|| initbuf_mod ../engine/share/resol/initbuf.F
33!||====================================================================
34 SUBROUTINE i9grd3(IERR ,AREA ,TSTIF ,T ,VOL ,
35 2 II ,X ,IXS ,IX ,
36 3 IPARG ,PM ,ELBUF_TAB,IGROU ,IELN )
37C-----------------------------------------------
38C M o d u l e s
39C-----------------------------------------------
40 USE initbuf_mod
41 USE elbufdef_mod
42 use element_mod , only : nixs
43C-----------------------------------------------
44C I m p l i c i t T y p e s
45C-----------------------------------------------
46#include "implicit_f.inc"
47C-----------------------------------------------
48C C o m m o n B l o c k s
49C-----------------------------------------------
50#include "com01_c.inc"
51#include "com04_c.inc"
52#include "param_c.inc"
53C-----------------------------------------------
54C D u m m y A r g u m e n t s
55C-----------------------------------------------
56 INTEGER II, IGROU, IELN , IERR, IX(4), IXS(NIXS),IPARG(NPARG,NGROUP)
57 my_real
58 . area, tstif, t, vol, x(3,numnod), pm(npropm,nummat)
59 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP) :: ELBUF_TAB
60C-----------------------------------------------
61C L o c a l V a r i a b l e s
62C-----------------------------------------------
63 INTEGER I, N1, N2, N3, N4, NG,MAT
64 my_real
65 . x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4,
66 . nx, ny, nz, dx, dy, dz, norm, dist, cond
67 INTEGER :: LLT ,NFT ,MTN ,IAD ,ITY ,NPT ,JALE ,ISMSTR ,JEUL ,JTUR ,JTHE ,JLAG ,JMULT ,JHBE
68 INTEGER :: JIVF, NVAUX, JPOR, JCVT, JCLOSE, JPLASOL, IREP, IINT, IGTYP
69 INTEGER :: ISORTH, ISORTHG, ISRAT, ISROT, ICSEN, IFAILURE, JSMS
70
71C-----------------------------------------------
72 ierr = 0
73C---------------------------------
74C search for the element in the buffer
75C---------------------------------
76 DO 200 ng=ii/nvsiz+1,ngroup
77 CALL initbuf(iparg ,ng ,
78 2 mtn ,llt ,nft ,iad ,ity ,
79 3 npt ,jale ,ismstr ,jeul ,jtur ,
80 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
81 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
82 6 irep ,iint ,igtyp ,israt ,isrot ,
83 7 icsen ,isorth ,isorthg ,ifailure,jsms )
84 IF(ity/=1) GO TO 200
85 IF(ii>nft+llt) GO TO 200
86 IF(iparg(8,ng)==1.OR.jthe/=1)THEN
87 ierr = 1
88 RETURN
89 ENDIF
90 i = ii - nft
91 GOTO 250
92 200 CONTINUE
93 ierr = 1
94 RETURN
95 250 CONTINUE
96
97 igrou = ng
98 ieln = i
99 vol = elbuf_tab(ng)%GBUF%VOL(i)
100C----------------------
101C CONDUCTION
102C----------------------
103 n1=ix(1)
104 n2=ix(2)
105 n3=ix(3)
106 n4=ix(4)
107C
108 x1=x(1,n1)
109 y1=x(2,n1)
110 z1=x(3,n1)
111C
112 x2=x(1,n2)
113 y2=x(2,n2)
114 z2=x(3,n2)
115C
116 x3=x(1,n3)
117 y3=x(2,n3)
118 z3=x(3,n3)
119C
120 x4=x(1,n4)
121 y4=x(2,n4)
122 z4=x(3,n4)
123C------------------------------------------
124C calculation of the vector surface (*2.)
125C------------------------------------------
126 nx=(y1-y3)*(z2-z4) - (z1-z3)*(y2-y4)
127 ny=(z1-z3)*(x2-x4) - (x1-x3)*(z2-z4)
128 nz=(x1-x3)*(y2-y4) - (y1-y3)*(x2-x4)
129 norm = sqrt(nx**2 + ny**2 + nz**2)
130C--------+---------+---------+---------+---------+---------+---------+--
131C calculation of the distance between center and surface (*8.)
132C-------------------------------------------------------------
133 dx = two*(x1 + x2 + x3 + x4)
134 . -x(1,ixs(2))-x(1,ixs(3))
135 . -x(1,ixs(4))-x(1,ixs(5))
136 . -x(1,ixs(6))-x(1,ixs(7))
137 . -x(1,ixs(8))-x(1,ixs(9))
138C
139 dy = two*(y1 + y2 + y3 + y4)
140 . -x(2,ixs(2))-x(2,ixs(3))
141 . -x(2,ixs(4))-x(2,ixs(5))
142 . -x(2,ixs(6))-x(2,ixs(7))
143 . -x(2,ixs(8))-x(2,ixs(9))
144C
145 dz = two*(z1 + z2 + z3 + z4)
146 . -x(3,ixs(2))-x(3,ixs(3))
147 . -x(3,ixs(4))-x(3,ixs(5))
148 . -x(3,ixs(6))-x(3,ixs(7))
149 . -x(3,ixs(8))-x(3,ixs(9))
150C
151C---------------------------------
152C CALCULATION DISTANCE ET 1/4 SURFACE(SURFFACE NODALE))
153C---------------------------------
154 dist = one_over_8*(dx*nx+dy*ny+dz*nz) / max(em15,norm)
155 area = one_over_8*norm
156C---------------------------------
157C calculation of the conductivity
158C---------------------------------
159 t = elbuf_tab(ng)%GBUF%TEMP(i)
160 mat =ixs(1)
161 IF(t<=pm(80,mat))THEN
162 cond=pm(75,mat)+pm(76,mat)*t
163 ELSE
164 cond=pm(77,mat)+pm(78,mat)*t
165 ENDIF
166 tstif = dist / cond
167C
168C
169 RETURN
170 END
norm(diag(diag(diag(inv(mat))) -id.SOL), 2) % destroy mumps instance id.JOB
subroutine area(d1, x, x2, y, y2, eint, stif0)
subroutine i9grd3(ierr, area, tstif, t, vol, ii, x, ixs, ix, iparg, pm, elbuf_tab, igrou, ieln)
Definition i9grd3.F:37
#define max(a, b)
Definition macros.h:21
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