OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
rini44.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!|| rini44 ../starter/source/elements/spring/rini44.F
25!||--- called by ------------------------------------------------------
26!|| rinit3 ../starter/source/elements/spring/rinit3.F
27!||--- calls -----------------------------------------------------
28!|| get_u_geo ../starter/source/user_interface/uaccess.F
29!|| get_u_mat ../starter/source/user_interface/uaccess.F
30!|| get_u_mid ../starter/source/user_interface/uaccess.F
31!|| get_u_mnu ../starter/source/user_interface/uaccess.F
32!|| get_u_pid ../starter/source/user_interface/uaccess.F
33!|| get_u_pnu ../starter/source/user_interface/uaccess.F
34!||====================================================================
35 SUBROUTINE rini44(NEL ,IOUT ,IPROP ,
36 3 IX ,XL ,MASS ,XINER ,STIFM ,
37 4 STIFR ,VISCM ,VISCR ,UVAR ,NUVAR )
38C-------------------------------------------------------------------------
39C This subroutine initialize springs using user properties.
40C----------+---------+---+---+--------------------------------------------
41C VAR | SIZE |TYP| RW| DEFINITION
42C----------+---------+---+---+--------------------------------------------
43C IOUT | 1 | I | R | OUTPUT FILE UNIT (L00 file)
44C IPROP | 1 | I | R | PROPERTY NUMBER
45C----------+---------+---+---+--------------------------------------------
46C IX | 3*NEL | I | R | SPRING CONNECTIVITY
47C | IX(1,I) NODE 1 ID
48C | IX(2,I) NODE 2 ID
49C | IX(3,I) OPTIONAL NODE 3 ID
50C | IX(4,I) SPRING ID
51C XL | NEL | F | R | ELEMENT LENGTH
52C----------+---------+---+---+--------------------------------------------
53C MASS | NEL | F | W | ELEMENT MASS
54C XINER | NEL | F | W | ELEMENT INERTIA (SPHERICAL)
55C STIFM | NEL | F | W | ELEMENT STIFNESS (TIME STEP)
56C STIFR | NEL | F | W | ELEMENT ROTATION STIFNESS (TIME STEP)
57C VISCM | NEL | F | W | ELEMENT VISCOSITY (TIME STEP)
58C VISCR | NEL | F | W | ELEMENT ROTATION VISCOSITY (TIME STEP)
59C----------+---------+---+---+--------------------------------------------
60C UVAR |NUVAR*NEL| F | W | USER ELEMENT VARIABLES
61C NUVAR | 1 | I | R | NUMBER OF USER ELEMENT VARIABLES
62C-------------------------------------------------------------------------
63C FUNCTION
64C-------------------------------------------------------------------------
65C INTEGER II = GET_U_PNU(I,IP,KK)
66C IFUNCI = GET_U_PNU(I,IP,KFUNC)
67C IPROPI = GET_U_PNU(I,IP,KPROP)
68C IMATI = GET_U_PNU(I,IP,KMAT)
69C I : VARIABLE INDEX(1 for first variable,...)
70C IP : PROPERTY NUMBER
71C KK : PARAMETER KFUNC,KMAT,KPROP
72C THIS FUNCTION RETURN THE USER STORED FUNCTION(IF KK=KFUNC),
73C MATERIAL(IF KK=KMAT) OR PROPERTY(IF KK=KPROP) NUMBERS.
74C SEE LECG29 FOR CORRESPONDING ID STORAGE.
75C-------------------------------------------------------------------------
76C INTEGER IFUNCI = GET_U_MNU(I,IM,KFUNC)
77C I : VARIABLE INDEX(1 for first function)
78C IM : MATERIAL NUMBER
79C KFUNC : ONLY FUNCTION ARE YET AVAILABLE.
80C THIS FUNCTION RETURN THE USER STORED FUNCTION NUMBERS(function
81C referred by users materials).
82C SEE LECM29 FOR CORRESPONDING ID STORAGE.
83C-------------------------------------------------------------------------
84C my_real PARAMI = GET_U_GEO(I,IP)
85C I : PARAMETER INDEX(1 for first parameter,...)
86C IP : PROPERTY NUMBER
87C THIS FUNCTION RETURN THE USER GEOMETRY PARAMETERS
88C-------------------------------------------------------------------------
89C my_real PARAMI = GET_U_MAT(I,IM)
90C I : PARAMETER INDEX(1 for first parameter,...)
91C IM : MATERIAL NUMBER
92C THIS FUNCTION RETURN THE USER MATERIAL PARAMETERS
93C NOTE: GET_U_MAT(0,IMAT) RETURN THE DENSITY
94C-------------------------------------------------------------------------
95C INTEGER MID = GET_U_PID(IP)
96C IP : PROPERTY NUMBER
97C THIS FUNCTION RETURN THE USER PROPERTY ID CORRESPONDING TO
98C USER PROPERTY NUMBER IP.
99C-------------------------------------------------------------------------
100C INTEGER PID = GET_U_MID(IM)
101C IM : MATERIAL NUMBER
102C THIS FUNCTION RETURN THE USER MATERIAL ID CORRESPONDING TO
103C USER MATERIAL NUMBER IM.
104C-------------------------------------------------------------------------
105C-----------------------------------------------
106C I m p l i c i t T y p e s
107C-----------------------------------------------
108#include "implicit_f.inc"
109C----------------------------------------------------------
110C 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
111C----------------------------------------------------------
112 INTEGER IOUT,NUVAR,NEL,IPROP,
113 . IX(4,NEL) ,
115 . kfunc,kmat,kprop
116 my_real
117 . xl(nel) ,mass(nel) ,xiner(nel) ,stifm(nel) ,
118 . stifr(nel),viscm(nel) ,viscr(nel),uvar(nuvar,*),
119 . get_u_mat,get_u_geo
120 EXTERNAL get_u_pnu,get_u_mnu,get_u_mat,get_u_geo,get_u_pid,
121 . get_u_mid
122 parameter(kfunc=29)
123 parameter(kmat=31)
124 parameter(kprop=47)
125C-----------------------------------------------
126C L o c a l V a r i a b l e s
127C-----------------------------------------------
128 my_real
129 . amas,iner,k11,k44,k55,k66,k5b,k6c,
130 . xlimg,xlim,xxlim,yy1lim,yy2lim,zz1lim,zz2lim,
131 . ncf,idamping
132 INTEGER I
133C=======================================================================
134 amas = get_u_geo(8,iprop)
135 iner = get_u_geo(9,iprop)
136 k11 = get_u_geo(10,iprop)
137 k44 = get_u_geo(11,iprop)
138 k55 = get_u_geo(12,iprop)
139 k66 = get_u_geo(13,iprop)
140 k5b = get_u_geo(14,iprop)
141 k6c = get_u_geo(15,iprop)
142! strain rate filtering number of cycles:
143 ncf = get_u_geo(35,iprop)
144! flag for damping activation
145 idamping = get_u_geo(36,iprop)
146C--------------------------------------
147C ELEMENT CHECK
148C--------------------------------------
149 DO i=1,nel
150 IF (xl(i) == zero)THEN
151 WRITE(iout,*)' **ERROR ZERO LENGTH SPRING :'
152 ENDIF
153 ENDDO
154C--------------------------------------
155C ELEMENT INITIALIZATION
156C--------------------------------------
157 DO i=1,nel
158 mass(i) = amas * xl(i)
159 xiner(i) = iner * xl(i)
160C EPS
161 uvar(1,i) = zero
162 uvar(2,i) = zero
163 uvar(3,i) = zero
164 uvar(4,i) = zero
165 uvar(5,i) = zero
166 uvar(6,i) = zero
167C JPOS
168 uvar(7,i) = zero
169 uvar(8,i) = zero
170 uvar(9,i) = zero
171 uvar(10,i) = zero
172 uvar(11,i) = zero
173 uvar(12,i) = zero
174 uvar(13,i) = zero
175 uvar(14,i) = zero
176 uvar(15,i) = zero
177 uvar(16,i) = zero
178 uvar(17,i) = zero
179 uvar(18,i) = zero
180C K
181 uvar(19,i) = k11 / xl(i)
182 uvar(20,i) = k44 / xl(i)
183 uvar(21,i) = k55 / xl(i) / xl(i) / xl(i)
184 uvar(22,i) = k66 / xl(i) / xl(i) / xl(i)
185 uvar(23,i) = k5b / xl(i) / xl(i) / xl(i)
186 uvar(24,i) = k6c / xl(i) / xl(i) / xl(i)
187C FOR NODAL AND ELEMENT TIME STEP COMPUTATION
188 uvar(25,i) = max(uvar(19,i),
189 . uvar(21,i)+abs(uvar(23,i)),
190 . uvar(22,i)+abs(uvar(24,i)))
191 uvar(26,i) = max(uvar(20,i),k55 / xl(i),k66 / xl(i))
192 stifm(i) = uvar(25,i)
193 stifr(i) = uvar(26,i)
194 viscm(i) = zero
195 viscr(i) = zero
196 uvar(27,i) = mass(i)
197 uvar(28,i) = xiner(i)
198 uvar(30,i) = one/xl(i)
199!
200! add damping (linear + function):
201!
202 IF (idamping > zero) THEN
203 uvar(31,i) = zero
204 uvar(32,i) = zero
205 uvar(33,i) = zero
206 uvar(34,i) = zero
207 uvar(35,i) = zero
208 uvar(36,i) = zero
209 ENDIF ! IF (IDAMPING > ZERO)
210! + strain rate filtering
211 IF (ncf > zero) THEN
212 uvar(37,i) = zero
213 uvar(38,i) = zero
214 uvar(39,i) = zero
215 uvar(40,i) = zero
216 uvar(41,i) = zero
217 uvar(42,i) = zero
218 ENDIF ! IF (NCF > ZERO)
219 ENDDO
220C-----------
221 RETURN
222 END
#define my_real
Definition cppsort.cpp:32
#define max(a, b)
Definition macros.h:21
subroutine rini44(nel, iout, iprop, ix, xl, mass, xiner, stifm, stifr, viscm, viscr, uvar, nuvar)
Definition rini44.F:38
integer function get_u_pid(ip)
Definition uaccess.F:626
integer function get_u_pnu(ivar, ip, k)
Definition uaccess.F:482
integer function get_u_mid(im)
Definition uaccess.F:668
integer function get_u_mnu(ivar, im, k)
Definition uaccess.F:565