OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
ufunc.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!|| ufunc_dum ../engine/source/user_interface/ufunc.F
25!||--- called by ------------------------------------------------------
26!|| radioss2 ../engine/source/engine/radioss2.F
27!||====================================================================
28 SUBROUTINE ufunc_dum(IERR)
29C---------+---------+---+---+--------------------------------------------
30#include "implicit_f.inc"
31 INTEGER IERR
32 ierr=0
33 END
34!||====================================================================
35!|| get_u_func_n ../engine/source/user_interface/ufunc.F
36!||--- calls -----------------------------------------------------
37!|| get_var_user_i ../engine/source/user_interface/eng_callback_c.c
38!||====================================================================
39 INTEGER FUNCTION get_u_func_n(IFUNC)
40C-----------------------------------------------
41C I m p l i c i t T y p e s
42C-----------------------------------------------
43#include "implicit_f.inc"
44 INTEGER ifunc,npfi,npfip
45 CALL get_var_user_i(5,ifunc,npfi)
46 CALL get_var_user_i(5,ifunc+1,npfip)
47 get_u_func_n=(npfip-npfi)/2
48 RETURN
49 END
50!||====================================================================
51!|| get_u_func_x ../engine/source/user_interface/ufunc.F
52!||--- calls -----------------------------------------------------
53!|| ancmsg ../engine/source/output/message/message.F
54!|| arret ../engine/source/system/arret.F
55!|| get_u_numfun ../engine/source/user_interface/ufunc.F
56!|| get_var_user_f ../engine/source/user_interface/eng_callback_c.c
57!|| get_var_user_f_sp ../engine/source/user_interface/eng_callback_c.c
58!|| get_var_user_i ../engine/source/user_interface/eng_callback_c.c
59!||--- uses -----------------------------------------------------
60!|| message_mod ../engine/share/message_module/message_mod.f
61!||====================================================================
62 my_real FUNCTION get_u_func_x(IFUNC,N)
63C-----------------------------------------------
64C M o d u l e s
65C-----------------------------------------------
66 USE message_mod
67C-----------------------------------------------
68C I m p l i c i t T y p e s
69C-----------------------------------------------
70#include "implicit_f.inc"
71#include "scr05_c.inc"
72#include "comlock.inc"
73 INTEGER ifunc,i,npfi,NPFIP,n,nmax
75 . xx
76 INTEGER get_u_numfun
77 EXTERNAL get_u_numfun
78 CALL get_var_user_i(5,ifunc,npfi)
79 CALL get_var_user_i(5,ifunc+1,npfip)
80 nmax=(npfip-npfi)/2
81 i=npfi+(n-1)*2
82 IF (n>nmax.OR.n<=0) THEN
83 CALL ancmsg(msgid=178,anmode=aninfo,
84 . i1=n,i2=get_u_numfun(ifunc),i3=nmax)
85 CALL arret(2)
86 END IF
87 IF (iresp==1) THEN
88 CALL get_var_user_f_sp(6,i,xx)
89 ELSE
90 CALL get_var_user_f(6,i,xx)
91 ENDIF
92 get_u_func_x=xx
93 RETURN
94 END
95!||====================================================================
96!|| get_u_func_y ../engine/source/user_interface/ufunc.F
97!||--- calls -----------------------------------------------------
98!|| ancmsg ../engine/source/output/message/message.F
99!|| arret ../engine/source/system/arret.F
100!|| get_u_numfun ../engine/source/user_interface/ufunc.F
101!|| get_var_user_f ../engine/source/user_interface/eng_callback_c.c
102!|| get_var_user_f_sp ../engine/source/user_interface/eng_callback_c.c
103!|| get_var_user_i ../engine/source/user_interface/eng_callback_c.c
104!||--- uses -----------------------------------------------------
105!|| message_mod ../engine/share/message_module/message_mod.F
106!||====================================================================
107 my_real FUNCTION get_u_func_y(IFUNC,N)
108C-----------------------------------------------
109C M o d u l e s
110C-----------------------------------------------
111 USE message_mod
112C-----------------------------------------------
113C I m p l i c i t T y p e s
114C-----------------------------------------------
115#include "implicit_f.inc"
116#include "scr05_c.inc"
117#include "comlock.inc"
118 INTEGER ifunc,i,npfi,npfip,n,nmax
119 my_real
120 . yy
121 INTEGER get_u_numfun
122 EXTERNAL get_u_numfun
123 CALL get_var_user_i(5,ifunc,npfi)
124 CALL get_var_user_i(5,ifunc+1,npfip)
125 nmax=(npfip-npfi)/2
126 i=npfi+(n-1)*2
127 IF (n>nmax.OR.n<=0) THEN
128 CALL ancmsg(msgid=178,anmode=aninfo,
129 . i1=n,i2=get_u_numfun(ifunc),i3=nmax)
130 CALL arret(2)
131 END IF
132 IF (iresp==1) THEN
133 CALL get_var_user_f_sp(6,i+1,yy)
134 ELSE
135 CALL get_var_user_f(6,i+1,yy)
136 ENDIF
137 get_u_func_y=yy
138 RETURN
139 END
140!||====================================================================
141!|| get_u_func ../engine/source/user_interface/ufunc.F
142!||--- called by ------------------------------------------------------
143!|| airbagb ../engine/source/airbag/airbag2.F
144!|| airbagb1 ../engine/source/airbag/airbagb1.F
145!|| damping51 ../engine/source/assembly/damping.F
146!|| damping_funct_ini ../engine/source/assembly/damping_funct_ini.F90
147!|| damping_vref_compute_dampa ../engine/source/assembly/damping_vref_compute_dampa.F90
148!|| damping_vref_rby ../engine/source/assembly/damping_vref_rby.F90
149!|| fv_up_switch ../engine/source/airbag/fv_up_switch.F
150!|| fvbag1 ../engine/source/airbag/fvbag1.F
151!|| fvvent0 ../engine/source/airbag/fvvent0.F
152!|| material_flow ../engine/source/tools/seatbelts/material_flow.F
153!|| porfor4 ../engine/source/airbag/porfor4.F
154!|| porform4 ../engine/source/airbag/porfor4.F
155!|| ruser32 ../engine/source/elements/spring/ruser32.F
156!|| ruser33 ../engine/source/elements/joint/ruser33.F
157!|| ruser35 ../engine/source/elements/spring/ruser35.F
158!|| ruser36 ../engine/source/elements/spring/ruser36.F
159!|| ruser44 ../engine/source/elements/spring/ruser44.F
160!|| ruser46 ../engine/source/elements/spring/ruser46.F
161!|| stdpl ../engine/source/elements/joint/ruser33.F
162!|| volpvgb ../engine/source/airbag/volpvg.F
163!|| xddl33 ../engine/source/elements/joint/ruser33.F
164!|| xddl33i ../engine/source/elements/joint/ruser33.F
165!|| xforc28 ../engine/source/elements/xelem/xforc28.F
166!|| xforc29 ../engine/source/elements/xelem/xforc29.F
167!|| xforc30 ../engine/source/elements/xelem/xforc30.F
168!|| xforc31 ../engine/source/elements/xelem/xforc31.F
169!||--- calls -----------------------------------------------------
170!|| get_var_user_f ../engine/source/user_interface/eng_callback_c.c
171!|| get_var_user_f_sp ../engine/source/user_interface/eng_callback_c.c
172!|| get_var_user_i ../engine/source/user_interface/eng_callback_c.c
173!||====================================================================
174 my_real FUNCTION get_u_func(IFUNC,XX,DERI)
175C-----------------------------------------------
176C I m p l i c i t T y p e s
177C-----------------------------------------------
178#include "implicit_f.inc"
179#include "scr05_c.inc"
180 INTEGER ifunc,i,npfi,npfip
181 my_real deri,xx,dx1,dx2,tfi,tfi1,tfi2,tfip,val
182C-----------------------------------------------
183 get_u_func = zero
184 CALL get_var_user_i(5,ifunc,npfi)
185 CALL get_var_user_i(5,ifunc+1,npfip)
186 IF (iresp==1) THEN
187 CALL get_var_user_f_sp(6,npfi,val)
188 ELSE
189 CALL get_var_user_f(6,npfi,val)
190 ENDIF
191 dx2=val-xx
192C
193 DO 100 i=npfi+2,npfip-2,2
194 IF (iresp==1) THEN
195 CALL get_var_user_f_sp(6,i,tfi)
196 CALL get_var_user_f_sp(6,i+1,tfip)
197 CALL get_var_user_f_sp(6,i-1,tfi1)
198 CALL get_var_user_f_sp(6,i-2,tfi2)
199 ELSE
200 CALL get_var_user_f(6,i,tfi)
201 CALL get_var_user_f(6,i+1,tfip)
202 CALL get_var_user_f(6,i-1,tfi1)
203 CALL get_var_user_f(6,i-2,tfi2)
204 ENDIF
205 dx1 = -dx2
206 dx2 = tfi - xx
207 IF(dx2>=zero.OR.i==npfip-2)THEN
208 deri = (tfip - tfi1) / (tfi - tfi2)
209 IF(dx1<=dx2)THEN
210 get_u_func = tfi1 + dx1 * deri
211 ELSE
212 get_u_func = tfip - dx2 * deri
213 ENDIF
214 RETURN
215 ENDIF
216 100 CONTINUE
217C
218 RETURN
219 END
220!||====================================================================
221!|| get_v_func ../engine/source/user_interface/ufunc.F
222!||--- called by ------------------------------------------------------
223!|| ruser44 ../engine/source/elements/spring/ruser44.F
224!||--- calls -----------------------------------------------------
225!|| get_var_user_vfunc ../engine/source/user_interface/eng_callback_c.c
226!|| u_vinter2 ../engine/source/user_interface/eng_callback_c.c
227!|| u_vinter2dp ../engine/source/user_interface/eng_callback_c.c
228!||====================================================================
229 SUBROUTINE get_v_func(IFUNC,LLT,XX,DYDX,YY,JPOS)
230C-----------------------------------------------
231C I m p l i c i t T y p e s
232C-----------------------------------------------
233#include "implicit_f.inc"
234C-----------------------------------------------
235C G l o b a l P a r a m e t e r s
236C-----------------------------------------------
237#include "mvsiz_p.inc"
238#include "scr05_c.inc"
239C
240 INTEGER IFUNC(*),JPOS(*),LLT,JAD(MVSIZ),JLEN(MVSIZ)
241 my_real dydx(*),xx(*),yy(*)
242
243 CALL get_var_user_vfunc(5,llt,ifunc,jpos,jad,jlen)
244 IF (iresp==1) THEN
245 CALL u_vinter2dp(jad ,jpos ,jlen ,llt,xx ,dydx,yy )
246 ELSE
247 CALL u_vinter2(jad ,jpos ,jlen ,llt,xx ,dydx,yy )
248 ENDIF
249C
250 RETURN
251 END
252!||====================================================================
253!|| get_u_numfun ../engine/source/user_interface/ufunc.F
254!||--- called by ------------------------------------------------------
255!|| get_u_func_x ../engine/source/user_interface/ufunc.F
256!|| get_u_func_y ../engine/source/user_interface/ufunc.F
257!||--- calls -----------------------------------------------------
258!|| get_var_user_i ../engine/source/user_interface/eng_callback_c.c
259!||====================================================================
260 INTEGER FUNCTION get_u_numfun(IDFUN)
261#include "implicit_f.inc"
262#include "com04_c.inc"
263 INTEGER idfun
264 INTEGER j,id
265C=======================================================================
266 get_u_numfun = 0
267 IF(idfun<=0)THEN
268 RETURN
269 ENDIF
270C---
271 DO j=1,nfunct
272 CALL get_var_user_i(5,nfunct+1+j,id)
273 IF(idfun==id)THEN
274 get_u_numfun = j
275 RETURN
276 ENDIF
277 ENDDO
278C---
279 RETURN
280 END
281!||====================================================================
282!|| get_u_fid ../engine/source/user_interface/ufunc.F
283!||--- calls -----------------------------------------------------
284!|| get_var_user_i ../engine/source/user_interface/eng_callback_c.c
285!||====================================================================
286 INTEGER FUNCTION get_u_fid(IFUN)
287#include "implicit_f.inc"
288#include "com04_c.inc"
289 INTEGER ifun,depla
290C=======================================================================
291 get_u_fid = 0
292 IF(ifun<=0)THEN
293 RETURN
294 ENDIF
295 depla = nfunct+1+ifun
297C---
298 RETURN
299 END
300!||====================================================================
301!|| get_u_func_inv ../engine/source/user_interface/ufunc.F
302!||--- calls -----------------------------------------------------
303!|| get_var_user_f ../engine/source/user_interface/eng_callback_c.c
304!|| get_var_user_f_sp ../engine/source/user_interface/eng_callback_c.c
305!|| get_var_user_i ../engine/source/user_interface/eng_callback_c.c
306!||====================================================================
307 my_real FUNCTION get_u_func_inv(IFUNC,YY)
308C-----------------------------------------------
309C I m p l i c i t T y p e s
310C-----------------------------------------------
311#include "implicit_f.inc"
312#include "scr05_c.inc"
313C
314 INTEGER ifunc,i,npfi,npfip
315 my_real yy,deri,dy1,dy2,tfi,tfi1,tfi2,tfip,val
316C-----------------------------------------------
317 get_u_func_inv = zero
318 CALL get_var_user_i(5,ifunc,npfi)
319 CALL get_var_user_i(5,ifunc+1,npfip)
320 IF (iresp==1) THEN
321 CALL get_var_user_f_sp(6,npfi+1,val)
322 ELSE
323 CALL get_var_user_f(6,npfi+1,val)
324 ENDIF
325C
326 dy2=val-yy
327C
328 DO 100 i=npfi+2,npfip-2,2
329 IF (iresp==1) THEN
330 CALL get_var_user_f_sp(6,i,tfi)
331 CALL get_var_user_f_sp(6,i+1,tfip)
332 CALL get_var_user_f_sp(6,i-1,tfi1)
333 CALL get_var_user_f_sp(6,i-2,tfi2)
334 ELSE
335 CALL get_var_user_f(6,i,tfi)
336 CALL get_var_user_f(6,i+1,tfip)
337 CALL get_var_user_f(6,i-1,tfi1)
338 CALL get_var_user_f(6,i-2,tfi2)
339 ENDIF
340 dy1 = -dy2
341 dy2 = tfip - yy
342 IF(dy2>=zero.OR.i==npfip-2)THEN
343 IF (tfip-tfi1 == zero) THEN
344 deri = zero
345 ELSE
346 deri = (tfi - tfi2) / (tfip-tfi1)
347 ENDIF
348 IF(dy1<=dy2)THEN
349 get_u_func_inv = tfi2 + dy1 * deri
350 ELSE
351 get_u_func_inv = tfi - dy2 * deri
352 ENDIF
353 RETURN
354 ENDIF
355C
356 100 CONTINUE
357C
358 RETURN
359 END
#define my_real
Definition cppsort.cpp:32
subroutine depla(v, d, x, vr, dr, xdp, ddp, numnod)
Definition depla.F:29
void get_var_user_vfunc(int *buf, int *llt, int *ifunc, int *jpos, int *jad, int *jlen)
void u_vinter2(int *jad, int *jpos, int *jlen, int *llt, my_real_c *xx, my_real_c *dydx, my_real_c *yy)
void get_var_user_f(int *buf, int *decalage, double *resultat)
void u_vinter2dp(int *jad, int *jpos, int *jlen, int *llt, double *xx, double *dydx, double *yy)
void get_var_user_i(int *buf, int *decalage, int *resultat)
void get_var_user_f_sp(int *buf, int *decalage, float *resultat)
initmumps id
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
integer function get_u_func_n(ifunc)
Definition ufunc.F:40
subroutine get_v_func(ifunc, llt, xx, dydx, yy, jpos)
Definition ufunc.F:230
integer function get_u_numfun(idfun)
Definition ufunc.F:261
subroutine ufunc_dum(ierr)
Definition ufunc.F:29
integer function get_u_fid(ifun)
Definition ufunc.F:287