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