OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
xanim28.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!|| xanim28 ../engine/source/elements/xelem/xanim28.F
25!||--- called by ------------------------------------------------------
26!|| animx ../engine/source/output/anim/generate/animx.F
27!||--- calls -----------------------------------------------------
28!|| ancmsg ../engine/source/output/message/message.F
29!|| arret ../engine/source/system/arret.F
30!|| get_u_mid ../engine/source/user_interface/upidmid.F
31!|| get_u_mnu ../engine/source/user_interface/upidmid.F
32!|| get_u_pid ../engine/source/user_interface/upidmid.F
33!|| get_u_pnu ../engine/source/user_interface/upidmid.F
34!||--- uses -----------------------------------------------------
35!|| message_mod ../engine/share/message_module/message_mod.F
36!||====================================================================
37 SUBROUTINE xanim28(NX ,UIX ,UID ,XEL ,
38 2 IOUT ,IPROP ,IMAT ,
39 3 OFF ,MASSELE ,EINTELE ,
40 4 NEDGE ,NFACET ,NSOLID ,
41 5 IXEDGE ,IXFACET ,IXSOLID ,
42 6 XMASSED ,XMASSFA ,XMASSSO ,
43 7 XFUNCED ,XFUNCFA ,XFUNCSO ,
44 8 NUVAR ,UVAR ,NUVARN ,UVARN )
45C-------------------------------------------------------------------------
46C This subroutine returns edges, facets and solids to be written into
47C ANIMATION FILES (for multi-purpose elements using property TYPE28==NSTRAND).
48C-------------------------------------------------------------------------
49C----------+---------+---+---+--------------------------------------------
50C VAR | SIZE |TYP| RW| DEFINITION
51C----------+---------+---+---+--------------------------------------------
52C NX | 1 | I | R | NUMBER OF NODES (CONSTANT IN THE GROUP)
53C----------+---------+---+---+--------------------------------------------
54C UID | 1 | I | R | ELEMENT USER IDENTIFIER
55C UIX | NX | I | R | ELEMENT CONNECTIVITY
56C | IX(J) (1<=J<=NX) : NODE J USER ID
57C----------+---------+---+---+--------------------------------------------
58C XEL | 3*NX | F | R | NODES COORDINATES
59C----------+---------+---+---+--------------------------------------------
60C IOUT | 1 | I | R | OUTPUT FILE UNIT (L00 file)
61C IPROP | 1 | I | R | PROPERTY NUMBER
62C IMAT | 1 | I | R | MATERIAL NUMBER
63C----------+---------+---+---+--------------------------------------------
64C OFF | 1 | F | R | ELEMENT STATE (ON=1./OFF=0.)
65C MASSELE | 1 | F | R | ELEMENT (INITIAL) MASS
66C EINTELE | 1 | F | R | ELEMENT INTERNAL ENERGY
67C----------+---------+---+---+--------------------------------------------
68C NUVAR | 1 | I | R | NUMBER OF USER ELEMENT VARIABLES
69C UVAR |NUVAR | F |R/W| USER ELEMENT VARIABLES
70C | (FIX SIZE ZONE)
71C NUVARN | 1 | I | R | NUMBER OF USER ELEMENT VARIABLES PER NODE
72C UVARN |NUVARN*NX| F |R/W| USER ELEMENT VARIABLES PER NODE
73C | (NX DEPENDENT SIZE ZONE)
74C----------+---------+---+---+--------------------------------------------
75C-------------------------------------------------------------------------
76C FUNCTION
77C-------------------------------------------------------------------------
78C INTEGER II = GET_U_PNU(I,IP,KK)
79C IPROPI = GET_U_PNU(I,IP,KFUNC)
80C IMATI = GET_U_PNU(I,IP,KMAT)
81C I : VARIABLE INDEX(1 for first variable,...)
82C IP : PROPERTY NUMBER
83C KK : PARAMETER KFUNC,KMAT,KPROP
84C THIS FUNCTION RETURN THE USER STORED MATERIAL(IF KK=KMAT)
85C OR PROPERTY(IF KK=KPROP) NUMBER.
86C SEE LECG28 FOR CORRESPONDING ID STORAGE.
87C-------------------------------------------------------------------------
88C INTEGER IFUNCI = GET_U_MNU(I,IM,KFUNC)
89C I : VARIABLE INDEX(1 for first function)
90C IM : MATERIAL NUMBER
91C KFUNC : ONLY FUNCTION ARE YET AVAILABLE.
92C THIS FUNCTION RETURN THE USER STORED FUNCTION NUMBER(function
93C referred by users materials).
94C SEE LECM28 FOR CORRESPONDING ID STORAGE.
95C-------------------------------------------------------------------------
96C my_real PARAMI = GET_U_GEO(I,IP)
97C I : PARAMETER INDEX(1 for first parameter,...)
98C IP : PROPERTY NUMBER
99C THIS FUNCTION RETURN THE USER GEOMETRY PARAMETERS
100C NOTE: IF(IP==IPROP) UPARAG(I) == GET_U_GEO(I,IPROP)
101C-------------------------------------------------------------------------
102C my_real PARAMI = GET_U_MAT(I,IM)
103C I : PARAMETER INDEX(1 for first parameter,...)
104C IM : MATERIAL NUMBER
105C THIS FUNCTION RETURN THE USER MATERIAL PARAMETERS
106C NOTE: GET_U_MAT(0,IMAT) RETURN THE DENSITY
107C-------------------------------------------------------------------------
108C INTEGER PID = GET_U_PID(IP)
109C IP : PROPERTY NUMBER
110C THIS FUNCTION RETURN THE USER PROPERTY ID CORRESPONDING TO
111C USER PROPERTY NUMBER IP.
112C-------------------------------------------------------------------------
113C INTEGER MID = GET_U_MID(IM)
114C IM : MATERIAL NUMBER
115C THIS FUNCTION RETURN THE USER MATERIAL ID CORRESPONDING TO
116C USER MATERIAL NUMBER IM.
117C-------------------------------------------------------------------------
118C-----------------------------------------------
119C M o d u l e s
120C-----------------------------------------------
121 USE message_mod
122C-----------------------------------------------
123C I m p l i c i t T y p e s
124C-----------------------------------------------
125#include "implicit_f.inc"
126C----------------------------------------------------------
127C D u m m y A r g u m e n t s a n d F u n c t i o n
128C----------------------------------------------------------
129 INTEGER IOUT,NUVAR,NUVARN,IPROP,IMAT,
130 . NX ,UIX(NX) ,UID,
131 . NEDGE, NFACET, NSOLID,
132 . IXEDGE(2,*), IXFACET(4,*), IXSOLID(8,*),
133 . GET_U_PNU,GET_U_PID,GET_U_MID,GET_U_MNU,
134 . KMAT,KPROP
135 my_real
136 . xel(3,nx) , off, massele, eintele,
137 . xmassed(*), xmassfa(*), xmassso(*),
138 . xfunced(10,*), xfuncfa(10,*), xfuncso(10,*),
139 . uvar(nuvar),uvarn(nuvarn*nx),
140 . get_u_mat, get_u_geo
141 EXTERNAL get_u_mnu,get_u_pnu,get_u_mid,get_u_pid,
142 . get_u_mat,get_u_geo
143 parameter(kmat=31)
144 parameter(kprop=33)
145C=======================================================================
146C
147C EXAMPLE : NSTRAND.
148C
149C=======================================================================
150C-----------------------------------------------
151C L o c a l V a r i a b l e s
152C-----------------------------------------------
153 INTEGER NB1, NB2, NB3, MB1, MB2, MB3, MB4, MB5,
154 . K
155C-----------------------------------------------
156C initial total length UVAR(NB1:NB1)
157 NB1=1
158C previous elongation UVAR(NB2:NB2)
159 nb2=nb1+1
160C previous force UVAR(NB3:NB3)
161 nb3=nb2+1
162C initial nodes masses UVARN(MB1:MB1+NX-1)
163 mb1=1
164C forces into strands UVARN(MB2:MB2+NX-1)
165C using UVARN(MB2:MB2+NX-2) only.
166 mb2=mb1+nx
167C strands initial length UVARN(MB3:MB3+NX-1)
168C using UVARN(MB3:MB3+NX-2) only.
169 mb3=mb2+nx
170C strands elongations UVARN(MB4:MB4+NX-1)
171C using UVARN(MB4:MB4+NX-2) only.
172 mb4=mb3+nx
173C strands internal energy UVARN(MB5:MB5+NX-1)
174C using UVARN(MB5:MB5+NX-2) only.
175 mb5=mb4+nx
176C-----------------------------------------------
177 nedge =nx-1
178 DO k=1,nx-1
179 ixedge(1,k)=k
180 ixedge(2,k)=k+1
181 ENDDO
182 nfacet=0
183 nsolid=0
184C-----
185 DO k=1,nx-1
186 xmassed(k) =uvarn(mb1+k-1)
187 xfunced(1,k) =uvarn(mb5+k-1)/max(em30,xmassed(k))
188 ENDDO
189C-----
190 RETURN
191C-----
192 999 CONTINUE
193 CALL ancmsg(msgid=141,anmode=aninfo)
194 CALL arret(2)
195 END
#define max(a, b)
Definition macros.h:21
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
Definition message.F:889
subroutine arret(nn)
Definition arret.F:87
subroutine xanim28(nx, uix, uid, xel, iout, iprop, imat, off, massele, eintele, nedge, nfacet, nsolid, ixedge, ixfacet, ixsolid, xmassed, xmassfa, xmassso, xfunced, xfuncfa, xfuncso, nuvar, uvar, nuvarn, uvarn)
Definition xanim28.F:45