OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
dmasanic.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!|| dmasanic ../starter/source/output/anim/dmasanic.F
25!||--- called by ------------------------------------------------------
26!|| genani1 ../starter/source/output/anim/genani1.F
27!||--- uses -----------------------------------------------------
28!||====================================================================
29 SUBROUTINE dmasanic(ELBUF_TAB,X ,D ,GEO ,IPARG,
30 . IXQ ,IXC ,IXTG ,MAS ,PM ,
31 . EL2FA,NBF)
32C-----------------------------------------------
33C M o d u l e s
34C-----------------------------------------------
35 USE elbufdef_mod
36 use element_mod , only : nixq,nixc,nixtg
37C-----------------------------------------------
38C I m p l i c i t T y p e s
39C-----------------------------------------------
40#include "implicit_f.inc"
41C-----------------------------------------------
42C C o m m o n B l o c k s
43C-----------------------------------------------
44#include "com01_c.inc"
45#include "com04_c.inc"
46#include "param_c.inc"
47C-----------------------------------------------
48C D u m m y A r g u m e n t s
49C-----------------------------------------------
50C REAL
51 my_real
52 . mas(*) ,pm(npropm,*),geo(npropg,*),x(3,*),
53 . d(3,*)
54 INTEGER IPARG(NPARG,*),IXC(NIXC,*),IXTG(NIXTG,*),
55 . IXQ(NIXQ,*),EL2FA(*),NBF
56 TYPE (ELBUF_STRUCT_), TARGET, DIMENSION(NGROUP) :: ELBUF_TAB
57C-----------------------------------------------
58C L o c a l V a r i a b l e s
59C-----------------------------------------------
60C REAL
61 my_real
62 . off,a0,thk0,rho0,xx1,xx2,xx3,yy1,yy2,yy3,zz1,zz2,zz3,VALUE
63 INTEGER I, NG, NEL, NFT, ITY, LFT, IALEL,MT,LLT,
64 . N,N1,N2,N3,N4,NN1,NN2,NN3,NN4,NN5,NN6,NN7,NN8,NN9,
65 . nft_fa,n_fa
66 TYPE(g_bufel_) ,POINTER :: GBUF
67C---+----1----+----2----+----3----+----4----+----5----+----6----+----7--
68 nn1 = 1
69 nn2 = 1
70 nn3 = 1
71 nn4 = nn3 + numelq
72 nn5 = nn4 + numelc
73 nn6 = nn5 + numeltg
74 nn7 = nn6
75 nn8 = nn7
76 nn9 = nn8
77C-----------------------------------------------
78 DO 490 ng=1,ngroup
79 gbuf => elbuf_tab(ng)%GBUF
80 nel =iparg(2,ng)
81 ity =iparg(5,ng)
82 nft =iparg(3,ng)
83 lft=1
84 llt=nel
85 nft_fa = nft
86C-----------------------------------------------
87C QUAD
88C-----------------------------------------------
89 IF(ity==2)THEN
90 ialel=(iparg(7,ng)+iparg(11,ng))
91C
92 DO i=lft,llt
93 n = i + nft
94 n_fa = i + nft_fa
95 IF(ialel==0)THEN
96 mt=ixq(1,n)
97 VALUE = pm(89,mt)* gbuf%VOL(i)
98 ELSE
99 off = min(gbuf%OFF(i),one)
100 VALUE= gbuf%RHO(i)*gbuf%VOL(i)*off
101 ENDIF
102 mas(el2fa(nn3+n_fa)) = VALUE
103 ENDDO
104C-----------------------------------------------
105C COQUES 4 N
106C-----------------------------------------------
107 ELSEIF(ity==3)THEN
108C
109 DO i=lft,llt
110 n = i + nft
111 n_fa = i + nft_fa
112 rho0 = pm(1,ixc(1,n))
113 thk0 = geo(1,ixc(6,n))
114 n1 = ixc(2,n)
115 n2 = ixc(3,n)
116 n3 = ixc(4,n)
117 n4 = ixc(5,n)
118 xx1 = x(1,n3)-d(1,n3)-x(1,n1)+d(1,n1)
119 yy1 = x(2,n3)-d(2,n3)-x(2,n1)+d(2,n1)
120 zz1 = x(3,n3)-d(3,n3)-x(3,n1)+d(3,n1)
121 xx2 = x(1,n4)-d(1,n4)-x(1,n2)+d(1,n2)
122 yy2 = x(2,n4)-d(2,n4)-x(2,n2)+d(2,n2)
123 zz2 = x(3,n4)-d(3,n4)-x(3,n2)+d(3,n2)
124 xx3 = yy1*zz2 - zz1*yy2
125 yy3 = zz1*xx2 - xx1*zz2
126 zz3 = xx1*yy2 - yy1*xx2
127 a0 = half*sqrt(xx3*xx3 + yy3*yy3 + zz3*zz3)
128 mas(el2fa(nn4+n_fa)) = rho0*thk0*a0
129 ENDDO
130C-----------------------------------------------
131C COQUES 3 N
132C-----------------------------------------------
133 ELSEIF(ity==7)THEN
134C
135 DO i=lft,llt
136 n = i + nft
137 n_fa = i + nft_fa
138 rho0 = pm(1,ixtg(1,n))
139 thk0 = geo(1,ixtg(5,n))
140 n1 = ixtg(2,n)
141 n2 = ixtg(3,n)
142 n3 = ixtg(4,n)
143 xx1 = x(1,n2)-d(1,n2)-x(1,n1)+d(1,n1)
144 yy1 = x(2,n2)-d(2,n2)-x(2,n1)+d(2,n1)
145 zz1 = x(3,n2)-d(3,n2)-x(3,n1)+d(3,n1)
146 xx2 = x(1,n3)-d(1,n3)-x(1,n1)+d(1,n1)
147 yy2 = x(2,n3)-d(2,n3)-x(2,n1)+d(2,n1)
148 zz2 = x(3,n3)-d(3,n3)-x(3,n1)+d(3,n1)
149 xx3 = yy1*zz2 - zz1*yy2
150 yy3 = zz1*xx2 - xx1*zz2
151 zz3 = xx1*yy2 - yy1*xx2
152 a0 = half*sqrt(xx3*xx3 + yy3*yy3 + zz3*zz3)
153 mas(el2fa(nn5+n_fa)) = rho0*thk0*a0
154 ENDDO
155C
156 ELSE
157 ENDIF
158C-----------------------------------------------
159 490 CONTINUE
160C-----------------------------------------------
161C
162 RETURN
163 END
#define my_real
Definition cppsort.cpp:32
#define min(a, b)
Definition macros.h:20
subroutine dmasanic(elbuf_tab, x, d, geo, iparg, ixq, ixc, ixtg, mas, pm, el2fa, nbf)
Definition dmasanic.F:32