OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
cortdir3.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!|| cortdir3 ../engine/source/elements/shell/coque/cortdir3.F
25!||--- called by ------------------------------------------------------
26!|| c3coork3 ../engine/source/elements/sh3n/coque3n/c3coork3.F
27!|| cbacoor ../engine/source/elements/shell/coqueba/cbacoor.F
28!|| cbacoork ../engine/source/elements/shell/coqueba/cbacoork.f
29!|| cdk6coor3 ../engine/source/elements/sh3n/coquedk6/cdk6coor3.F
30!|| cdkcoor3 ../engine/source/elements/sh3n/coquedk/cdkcoor3.F
31!|| cevec3 ../engine/source/elements/shell/coque/cevec3.F
32!|| cnvec3 ../engine/source/elements/shell/coque/cnvec3.F
33!|| czcoork3 ../engine/source/elements/shell/coquez/czcoork3.f
34!|| czcorc1 ../engine/source/elements/shell/coquez/czcorc.f
35!|| dynain_c_strsg ../engine/source/output/dynain/dynain_c_strsg.f
36!|| get_q4lsys ../engine/source/output/sta/sta_c_get_q4lsys.F
37!|| get_t3lsys ../engine/source/output/sta/sta_c_get_t3lsys.F
38!||--- uses -----------------------------------------------------
39!|| elbufdef_mod ../common_source/modules/mat_elem/elbufdef_mod.F90
40!||====================================================================
41 SUBROUTINE cortdir3(ELBUF_STR,DIR_A ,DIR_B ,JFT ,JLT ,
42 . NLAY ,IREP ,RX ,RY ,RZ ,
43 . SX ,SY ,SZ ,E1X ,E1Y ,
44 . E1Z ,E2X ,E2Y ,E2Z ,NEL )
45C-----------------------------------------------
46C M o d u l e s
47C-----------------------------------------------
48 USE elbufdef_mod
49C-----------------------------------------------
50C I m p l i c i t T y p e s
51C-----------------------------------------------
52#include "implicit_f.inc"
53C-----------------------------------------------
54C G l o b a l P a r a m e t e r s
55C-----------------------------------------------
56C C o m m o n B l o c k s
57C-----------------------------------------------
58C D u m m y A r g u m e n t s
59C-----------------------------------------------
60 INTEGER JFT,JLT,NLAY,IREP,NEL,IDRAPE,IT
61C REAL
62 my_real
63 . rx(*),ry(*),rz(*),sx(*),sy(*),sz(*),
64 . dir_a(*),dir_b(*),e1x(*),e1y(*),e1z(*),e2x(*),e2y(*),e2z(*)
65cc . DIR_A(*),DIR_B(*),E1X(*),E1Y(*),E1Z(*),E2X(*),E2Y(*),E2Z(*)
66 TYPE (ELBUF_STRUCT_), TARGET :: ELBUF_STR
67C-----------------------------------------------
68C L o c a l V a r i a b l e s
69C-----------------------------------------------
70 INTEGER I,J,N,ILAW,NPTT,IAD
71C REAL
72 my_real
73 . v1,v2,v3,vr,vs,aa,bb,suma
74 my_real,
75 . DIMENSION(:) , POINTER :: dir1, dir2
76 TYPE(l_bufel_dir_) ,POINTER :: LBUF_DIR
77C=======================================================================
78 idrape = elbuf_str%IDRAPE
79 IF(idrape == 0) THEN
80 IF (irep == 1) THEN
81 DO n=1,nlay
82 dir1 => elbuf_str%BUFLY(n)%DIRA
83 j = (n-1)*nel*2
84! or J = 2*(N-1)
85 DO i=jft,jlt
86 aa = dir1(i)
87 bb = dir1(i + nel)
88 v1 = aa*rx(i) + bb*sx(i)
89 v2 = aa*ry(i) + bb*sy(i)
90 v3 = aa*rz(i) + bb*sz(i)
91 vr = v1*e1x(i)+ v2*e1y(i) + v3*e1z(i)
92 vs = v1*e2x(i)+ v2*e2y(i) + v3*e2z(i)
93 suma=sqrt(vr*vr + vs*vs)
94 dir_a(j+i) = vr/suma
95 dir_a(j+i+nel) = vs/suma
96! or DIR_A(I,J+1) = VR/SUMA
97! DIR_A(I,J+2) = VS/SUMA
98 ENDDO
99 ENDDO
100 ELSEIF (irep == 2) THEN
101 DO n=1,nlay
102 dir1 => elbuf_str%BUFLY(n)%DIRA
103 dir2 => elbuf_str%BUFLY(n)%DIRB
104 j = (n-1)*nel*2
105! or J = 2*(N-1)
106 DO i=jft,jlt
107C--- Axe I
108 aa = dir1(i)
109 bb = dir1(i + nel)
110 v1 = aa*rx(i) + bb*sx(i)
111 v2 = aa*ry(i) + bb*sy(i)
112 v3 = aa*rz(i) + bb*sz(i)
113 vr = v1*e1x(i)+ v2*e1y(i) + v3*e1z(i)
114 vs = v1*e2x(i)+ v2*e2y(i) + v3*e2z(i)
115 suma = max( sqrt(vr*vr + vs*vs), em20)
116 dir_a(j+i) = vr/suma
117 dir_a(j+i+nel) = vs/suma
118! or DIR_A(I,J+1) = VR/SUMA
119! dir_a(i,j+2) = vs/suma
120C--- Axe II
121 aa = dir2(i)
122 bb = dir2(i + nel)
123 v1 = aa*rx(i) + bb*sx(i)
124 v2 = aa*ry(i) + bb*sy(i)
125 v3 = aa*rz(i) + bb*sz(i)
126 vr = v1*e1x(i)+ v2*e1y(i) + v3*e1z(i)
127 vs = v1*e2x(i)+ v2*e2y(i) + v3*e2z(i)
128 suma = max( sqrt(vr*vr + vs*vs), em20)
129 dir_b(j+i) = vr/suma
130 dir_b(j+i+nel) = vs/suma
131! or DIR_B(I,J+1) = VR/SUMA
132! DIR_B(I,J+2) = VS/SUMA
133 ENDDO
134 ENDDO
135 ELSEIF (irep == 3) THEN
136C mixing law58 with other user laws with IREP = 0 within PID51
137 DO n=1,nlay
138 ilaw = elbuf_str%BUFLY(n)%ILAW
139 IF (ilaw == 58) THEN
140 dir1 => elbuf_str%BUFLY(n)%DIRA
141 dir2 => elbuf_str%BUFLY(n)%DIRB
142 j = (n-1)*nel*2
143! or J = 2*(N-1)
144 DO i=jft,jlt
145C--- Axe I
146 aa = dir1(i)
147 bb = dir1(i + nel)
148 v1 = aa*rx(i) + bb*sx(i)
149 v2 = aa*ry(i) + bb*sy(i)
150 v3 = aa*rz(i) + bb*sz(i)
151 vr = v1*e1x(i)+ v2*e1y(i) + v3*e1z(i)
152 vs = v1*e2x(i)+ v2*e2y(i) + v3*e2z(i)
153 suma = max( sqrt(vr*vr + vs*vs), em20)
154 dir_a(j+i) = vr/suma
155 dir_a(j+i+nel) = vs/suma
156! or DIR_A(I,J+1) = VR/SUMA
157! DIR_A(I,J+2) = VS/SUMA
158C--- Axe II
159 aa = dir2(i)
160 bb = dir2(i + nel)
161 v1 = aa*rx(i) + bb*sx(i)
162 v2 = aa*ry(i) + bb*sy(i)
163 v3 = aa*rz(i) + bb*sz(i)
164 vr = v1*e1x(i)+ v2*e1y(i) + v3*e1z(i)
165 vs = v1*e2x(i)+ v2*e2y(i) + v3*e2z(i)
166 suma = max( sqrt(vr*vr + vs*vs), em20)
167 dir_b(j+i) = vr/suma
168 dir_b(j+i+nel) = vs/suma
169! or DIR_B(I,J+1) = VR/SUMA
170! DIR_B(I,J+2) = VS/SUMA
171 ENDDO
172 ELSE ! IREP = 0 within PID51
173 dir1 => elbuf_str%BUFLY(n)%DIRA
174! J = 2*(N-1)
175 j = (n-1)*nel*2
176 DO i=jft,jlt
177 dir_a(j+i) = dir1(i)
178 dir_a(j+i+nel) = dir1(i+nel)
179! or DIR_A(I,J+1) = VR/SUMA
180! DIR_A(I,J+2) = VS/SUMA
181 ENDDO
182 ENDIF
183 ENDDO
184 ELSEIF (irep == 4) THEN
185C mixing law58 with other user laws with IREP = 1 within PID51
186 DO n=1,nlay
187 ilaw = elbuf_str%BUFLY(n)%ILAW
188 IF (ilaw == 58) THEN
189 dir1 => elbuf_str%BUFLY(n)%DIRA
190 dir2 => elbuf_str%BUFLY(n)%DIRB
191 j = (n-1)*nel*2
192! or J = 2*(N-1)
193 DO i=jft,jlt
194C--- Axe I
195 aa = dir1(i)
196 bb = dir1(i + nel)
197 v1 = aa*rx(i) + bb*sx(i)
198 v2 = aa*ry(i) + bb*sy(i)
199 v3 = aa*rz(i) + bb*sz(i)
200 vr = v1*e1x(i)+ v2*e1y(i) + v3*e1z(i)
201 vs = v1*e2x(i)+ v2*e2y(i) + v3*e2z(i)
202 suma = max( sqrt(vr*vr + vs*vs), em20)
203 dir_a(j+i) = vr/suma
204 dir_a(j+i+nel) = vs/suma
205! or DIR_A(I,J+1) = VR/SUMA
206! DIR_A(I,J+2) = VS/SUMA
207C--- Axe II
208 aa = dir2(i)
209 bb = dir2(i + nel)
210 v1 = aa*rx(i) + bb*sx(i)
211 v2 = aa*ry(i) + bb*sy(i)
212 v3 = aa*rz(i) + bb*sz(i)
213 vr = v1*e1x(i)+ v2*e1y(i) + v3*e1z(i)
214 vs = v1*e2x(i)+ v2*e2y(i) + v3*e2z(i)
215 suma = max( sqrt(vr*vr + vs*vs), em20)
216 dir_b(j+i) = vr/suma
217 dir_b(j+i+nel) = vs/suma
218! or DIR_B(I,J+1) = VR/SUMA
219! DIR_B(I,J+2) = VS/SUMA
220 ENDDO
221 ELSE ! IREP = 1 within PID51
222 dir1 => elbuf_str%BUFLY(n)%DIRA
223 j = (n-1)*nel*2
224! or J = 2*(N-1)
225 DO i=jft,jlt
226 aa = dir1(i)
227 bb = dir1(i + nel)
228 v1 = aa*rx(i) + bb*sx(i)
229 v2 = aa*ry(i) + bb*sy(i)
230 v3 = aa*rz(i) + bb*sz(i)
231 vr = v1*e1x(i)+ v2*e1y(i) + v3*e1z(i)
232 vs = v1*e2x(i)+ v2*e2y(i) + v3*e2z(i)
233 suma=sqrt(vr*vr + vs*vs)
234 dir_a(j+i) = vr/suma
235 dir_a(j+i+nel) = vs/suma
236! or DIR_A(I,J+1) = VR/SUMA
237! DIR_A(I,J+2) = VS/SUMA
238 ENDDO
239 ENDIF
240 ENDDO
241 ENDIF
242 ELSE ! idrape
243 IF (irep == 1) THEN
244 iad = 0
245 DO n=1,nlay
246 nptt = elbuf_str%BUFLY(n)%NPTT
247 DO it = 1,nptt
248 lbuf_dir => elbuf_str%BUFLY(n)%LBUF_DIR(it)
249 dir1 => lbuf_dir%DIRA
250 j = iad + (it-1)*nel*2
251! or J = 2*(N-1)
252 DO i=jft,jlt
253 aa = dir1(i)
254 bb = dir1(i + nel)
255 v1 = aa*rx(i) + bb*sx(i)
256 v2 = aa*ry(i) + bb*sy(i)
257 v3 = aa*rz(i) + bb*sz(i)
258 vr = v1*e1x(i)+ v2*e1y(i) + v3*e1z(i)
259 vs = v1*e2x(i)+ v2*e2y(i) + v3*e2z(i)
260 suma=sqrt(vr*vr + vs*vs)
261 dir_a(j+i) = vr/suma
262 dir_a(j+i+nel) = vs/suma
263! or DIR_A(I,J+1) = VR/SUMA
264! DIR_A(I,J+2) = VS/SUMA
265 ENDDO
266 ENDDO ! NPTT
267 iad = iad + nptt*nel*2
268 ENDDO ! NLAY
269 ELSEIF (irep == 2) THEN
270 iad = 0
271 DO n=1,nlay
272 nptt = elbuf_str%BUFLY(n)%NPTT
273 DO it = 1,nptt
274 lbuf_dir => elbuf_str%BUFLY(n)%LBUF_DIR(it)
275 dir1 => lbuf_dir%DIRA
276 dir2 => lbuf_dir%DIRB
277 j = iad + (it-1)*nel*2
278! or J = 2*(N-1)
279 DO i=jft,jlt
280C--- Axe I
281 aa = dir1(i)
282 bb = dir1(i + nel)
283 v1 = aa*rx(i) + bb*sx(i)
284 v2 = aa*ry(i) + bb*sy(i)
285 v3 = aa*rz(i) + bb*sz(i)
286 vr = v1*e1x(i)+ v2*e1y(i) + v3*e1z(i)
287 vs = v1*e2x(i)+ v2*e2y(i) + v3*e2z(i)
288 suma = max( sqrt(vr*vr + vs*vs), em20)
289 dir_a(j+i) = vr/suma
290 dir_a(j+i+nel) = vs/suma
291! or DIR_A(I,J+1) = VR/SUMA
292! DIR_A(I,J+2) = VS/SUMA
293C--- Axe II
294 aa = dir2(i)
295 bb = dir2(i + nel)
296 v1 = aa*rx(i) + bb*sx(i)
297 v2 = aa*ry(i) + bb*sy(i)
298 v3 = aa*rz(i) + bb*sz(i)
299 vr = v1*e1x(i)+ v2*e1y(i) + v3*e1z(i)
300 vs = v1*e2x(i)+ v2*e2y(i) + v3*e2z(i)
301 suma = max( sqrt(vr*vr + vs*vs), em20)
302 dir_b(j+i) = vr/suma
303 dir_b(j+i+nel) = vs/suma
304! or DIR_B(I,J+1) = VR/SUMA
305! DIR_B(I,J+2) = VS/SUMA
306 ENDDO
307 ENDDO ! NPTT
308 iad = iad + nptt*nel*2
309 ENDDO ! NLAY
310 ELSEIF (irep == 3) THEN
311C mixing law58 with other user laws with IREP = 0 within PID51
312 iad = 0
313 DO n=1,nlay
314 ilaw = elbuf_str%BUFLY(n)%ILAW
315 IF (ilaw == 58) THEN
316 nptt = elbuf_str%BUFLY(n)%NPTT
317 DO it = 1,nptt
318 lbuf_dir => elbuf_str%BUFLY(n)%LBUF_DIR(it)
319 dir1 => lbuf_dir%DIRA
320 dir2 => lbuf_dir%DIRB
321 j = iad + (it-1)*nel*2
322! or J = 2*(N-1)
323 DO i=jft,jlt
324C--- Axe I
325 aa = dir1(i)
326 bb = dir1(i + nel)
327 v1 = aa*rx(i) + bb*sx(i)
328 v2 = aa*ry(i) + bb*sy(i)
329 v3 = aa*rz(i) + bb*sz(i)
330 vr = v1*e1x(i)+ v2*e1y(i) + v3*e1z(i)
331 vs = v1*e2x(i)+ v2*e2y(i) + v3*e2z(i)
332 suma = max( sqrt(vr*vr + vs*vs), em20)
333 dir_a(j+i) = vr/suma
334 dir_a(j+i+nel) = vs/suma
335! or DIR_A(I,J+1) = VR/SUMA
336! DIR_A(I,J+2) = VS/SUMA
337C--- Axe II
338 aa = dir2(i)
339 bb = dir2(i + nel)
340 v1 = aa*rx(i) + bb*sx(i)
341 v2 = aa*ry(i) + bb*sy(i)
342 v3 = aa*rz(i) + bb*sz(i)
343 vr = v1*e1x(i)+ v2*e1y(i) + v3*e1z(i)
344 vs = v1*e2x(i)+ v2*e2y(i) + v3*e2z(i)
345 suma = max( sqrt(vr*vr + vs*vs), em20)
346 dir_b(j+i) = vr/suma
347 dir_b(j+i+nel) = vs/suma
348! or DIR_B(I,J+1) = VR/SUMA
349! DIR_B(I,J+2) = VS/SUMA
350 ENDDO
351 ENDDO ! NPTT
352 iad = iad + nptt*2*nel
353 ELSE ! IREP = 0 within PID51
354 nptt = elbuf_str%BUFLY(n)%NPTT
355 DO it = 1,nptt
356 lbuf_dir => elbuf_str%BUFLY(n)%LBUF_DIR(it)
357 dir1 => lbuf_dir%DIRA
358! J = 2*(N-1)
359 j = iad + (it-1)*nel*2
360 DO i=jft,jlt
361 dir_a(j+i) = dir1(i)
362 dir_a(j+i+nel) = dir1(i+nel)
363! or DIR_A(I,J+1) = VR/SUMA
364! DIR_A(I,J+2) = VS/SUMA
365 ENDDO
366 ENDDO ! NPTT
367 iad = iad + 2*nel*nptt
368 ENDIF
369 ENDDO ! NALY
370 ELSEIF (irep == 4) THEN
371C mixing law58 with other user laws with IREP = 1 within PID51
372 iad = 0
373 DO n=1,nlay
374 ilaw = elbuf_str%BUFLY(n)%ILAW
375 IF (ilaw == 58) THEN
376 nptt = elbuf_str%BUFLY(n)%NPTT
377 DO it = 1,nptt
378 lbuf_dir => elbuf_str%BUFLY(n)%LBUF_DIR(it)
379 dir1 => lbuf_dir%DIRA
380 dir2 => lbuf_dir%DIRB
381 j = iad + (it - 1)*nel*2
382! or J = 2*(N-1)
383 DO i=jft,jlt
384C--- Axe I
385 aa = dir1(i)
386 bb = dir1(i + nel)
387 v1 = aa*rx(i) + bb*sx(i)
388 v2 = aa*ry(i) + bb*sy(i)
389 v3 = aa*rz(i) + bb*sz(i)
390 vr = v1*e1x(i)+ v2*e1y(i) + v3*e1z(i)
391 vs = v1*e2x(i)+ v2*e2y(i) + v3*e2z(i)
392 suma = max( sqrt(vr*vr + vs*vs), em20)
393 dir_a(j+i) = vr/suma
394 dir_a(j+i+nel) = vs/suma
395! or DIR_A(I,J+1) = VR/SUMA
396! DIR_A(I,J+2) = VS/SUMA
397C--- Axe II
398 aa = dir2(i)
399 bb = dir2(i + nel)
400 v1 = aa*rx(i) + bb*sx(i)
401 v2 = aa*ry(i) + bb*sy(i)
402 v3 = aa*rz(i) + bb*sz(i)
403 vr = v1*e1x(i)+ v2*e1y(i) + v3*e1z(i)
404 vs = v1*e2x(i)+ v2*e2y(i) + v3*e2z(i)
405 suma = max( sqrt(vr*vr + vs*vs), em20)
406 dir_b(j+i) = vr/suma
407 dir_b(j+i+nel) = vs/suma
408! or dir_b(i,j+1) = vr/suma
409! DIR_B(I,J+2) = VS/SUMA
410 ENDDO
411 ENDDO ! NPTT
412 iad = iad + nptt*2*nel
413 ELSE ! IREP = 1 within PID51
414 nptt = elbuf_str%BUFLY(n)%NPTT
415 DO it = 1,nptt
416 lbuf_dir => elbuf_str%BUFLY(n)%LBUF_DIR(it)
417 dir1 => lbuf_dir%DIRA
418 j = iad + (it-1)*nel*2
419! or J = 2*(N-1)
420 DO i=jft,jlt
421 aa = dir1(i)
422 bb = dir1(i + nel)
423 v1 = aa*rx(i) + bb*sx(i)
424 v2 = aa*ry(i) + bb*sy(i)
425 v3 = aa*rz(i) + bb*sz(i)
426 vr = v1*e1x(i)+ v2*e1y(i) + v3*e1z(i)
427 vs = v1*e2x(i)+ v2*e2y(i) + v3*e2z(i)
428 suma=sqrt(vr*vr + vs*vs)
429 dir_a(j+i) = vr/suma
430 dir_a(j+i+nel) = vs/suma
431! or DIR_A(I,J+1) = VR/SUMA
432! DIR_A(I,J+2) = VS/SUMA
433 ENDDO
434 ENDDO ! NPTT
435 iad = iad + 2*nptt*nel
436 ENDIF
437 ENDDO ! NLAY
438 ENDIF
439
440
441 ENDIF ! IDRAPE
442C----------------------------
443 RETURN
444 END
subroutine cbacoork(jft, jlt, x, ixc, pm, offg, geo, area, vcore, jac, hx, hy, vqn, vqg, vq, vjfi, vnrm, vastn, nplat, iplat, x13_t, x24_t, y13_t, y24_t, elbuf_str, nlay, smstr, irep, npt, ismstr, dir_a, dir_b, pid, mat, ngl, off, isrot, nel)
Definition cbacoork.F:41
subroutine cortdir3(elbuf_str, dir_a, dir_b, jft, jlt, nlay, irep, rx, ry, rz, sx, sy, sz, e1x, e1y, e1z, e2x, e2y, e2z, nel)
Definition cortdir3.F:45
subroutine czcoork3(jft, jlt, x, ixc, pm, offg, area, area_i, vqn, vq, x13, x24, y13, y24, mx13, mx23, mx34, my13, my23, my34, z1, geo, elbuf_str, smstr, nlay, irep, npt, ismstr, dir_a, dir_b, pid, mat, ngl, nplat, iplat, corelv, off, thk, nel)
Definition czcoork3.F:43
subroutine czcorc1(numnod, numelc, elbuf_str, jft, jlt, x, v, vr, ixc, pm, plat, area, area_i, v13, v24, vhi, rlxyz, vqn, vq, ll, l13, l24, x13, x24, y13, y24, mx13, mx23, mx34, my13, my23, my34, z1, corel, di, db, smstr, irep, npt, nlay, ismstr, dir_a, dir_b, offg, rlxyzv, corelv, facn, py1, px2, py2, r11, r12, r13, r21, r22, r23, r31, r32, r33, rlz, idril, ixfem, vx1, vx2, vx3, vx4, vy1, vy2, vy3, vy4, vz1, vz2, vz3, vz4, vrx1, vrx2, vrx3, vrx4, vry1, vry2, vry3, vry4, vrz1, vrz2, vrz3, vrz4, x1g, x2g, x3g, x4g, y1g, y2g, y3g, y4g, z1g, z2g, z3g, z4g, thk, diz, ux1, ux2, ux3, ux4, uy1, uy2, uy3, uy4, xl2, xl3, xl4, yl2, yl3, yl4, vl1, vl2, vl3, vl4, nel, z2)
Definition czcorc.F:62
subroutine dynain_c_strsg(elbuf_tab, iparg, igeo, ixc, ixtg, wa, wap0, ipartc, iparttg, dynain_data, dynain_indxc, dynain_indxtg, sizp0, geo, stack, drape_sh4n, drape_sh3n, x, thke, drapeg, nummat, mat_param)
#define max(a, b)
Definition macros.h:21