OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
eng_callback_c.c
Go to the documentation of this file.
1//Copyright> OpenRadioss
2//Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3//Copyright>
4//Copyright> This program is free software: you can redistribute it and/or modify
5//Copyright> it under the terms of the GNU Affero General Public License as published by
6//Copyright> the Free Software Foundation, either version 3 of the License, or
7//Copyright> (at your option) any later version.
8//Copyright>
9//Copyright> This program is distributed in the hope that it will be useful,
10//Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11//Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12//Copyright> GNU Affero General Public License for more details.
13//Copyright>
14//Copyright> You should have received a copy of the GNU Affero General Public License
15//Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16//Copyright>
17//Copyright>
18//Copyright> Commercial Alternative: Altair Radioss Software
19//Copyright>
20//Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21//Copyright> software under a commercial license. Contact Altair to discuss further if the
22//Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23#include <stdio.h>
24#include <string.h>
25#include <stdlib.h>
26#include <my_real_c.inc>
27
28#define _FCALL
29
30
31int *sav_buf[1000];
32
33/* Set in other routines */
34void ARRET(int * n);
35void arret_(int * n);
36void arret_c(int n) ;
37void VINTER2DP (double *tf,int *jad,int *jpos,int *jlen,int *llt, double *xx,double *dydx, double *yy);
38void vinter2dp_(double *tf,int *jad,int *jpos,int *jlen,int *llt, double *xx,double *dydx, double *yy);
39void VINTER2 (my_real_c *tf,int *jad,int *jpos,int *jlen,int *llt, my_real_c *xx,my_real_c *dydx, my_real_c *yy);
40void vinter2_ (my_real_c *tf,int *jad,int *jpos,int *jlen,int *llt, my_real_c *xx,my_real_c *dydx, my_real_c *yy);
41/*
42 ---------------------------------------------------------------------
43*/
44
45void sav_buf_point_(int *buf, int *i)
46{
47 if(*i<0||*i>=1000){
48 fprintf(stderr,"ERROR in SAV_BUF: table overflow\n");
49 arret_c(2);
50 }
51 sav_buf[*i] = buf;
52}
53
54
55void _FCALL SAV_BUF_POINT(int *buf,int *i)
56{sav_buf_point_(buf,i);}
57
58void sav_buf_point(int *buf,int *i)
59{sav_buf_point_(buf,i);}
60
61
62void sav_buf_point__(int *buf,int *i)
63{sav_buf_point_(buf,i);}
64
65
66void get_buf_point_(int *loca,int *ish,int *i)
67{*ish = (sav_buf[*i] - loca);}
68
69void _FCALL GET_BUF_POINT(int *loca,int *ish,int *i)
70{*ish = (sav_buf[*i] - loca);}
71
72void get_buf_point(int *loca,int *ish,int *i)
73{*ish = (sav_buf[*i] - loca);}
74
75
76void get_buf_point__(int *loca,int *ish,int *i)
77{*ish = (sav_buf[*i] - loca);}
78
79
80void get_var_user_f_ (int *buf,int *decalage,double * resultat)
81{
82 double *res;
83 res= ((double*) (sav_buf[*buf]) )+ (*decalage -1);
84 *resultat = *res;
85}
86
87
88void get_var_user_f(int *buf,int *decalage,double *resultat)
89{get_var_user_f_(buf,decalage,resultat);}
90
91
92void _FCALL GET_VAR_USER_F(int *buf,int *decalage,double *resultat)
93{get_var_user_f_(buf,decalage,resultat);}
94
95
96void get_var_user_f__(int *buf,int *decalage,double *resultat)
97{get_var_user_f_(buf,decalage,resultat);}
98
99
100void get_var_user_f_sp_ (int *buf,int *decalage,float *resultat)
101{
102 float *res;
103 res= ((float*) (sav_buf[*buf]) )+ (*decalage -1);
104 *resultat = *res;
105}
106
107
108void get_var_user_f_sp(int *buf,int *decalage,float *resultat)
109{get_var_user_f_sp_(buf,decalage,resultat);}
110
111
112void _FCALL GET_VAR_USER_F_SP(int *buf,int *decalage,float *resultat)
113{get_var_user_f_sp_(buf,decalage,resultat);}
114
115
116void get_var_user_f_sp__(int *buf,int *decalage,float *resultat)
117{get_var_user_f_sp_(buf,decalage,resultat);}
118
119
120void set_var_user_f_ (int *buf,int *decalage,double *variable)
121{
122 double *res;
123 res= ((double*)(sav_buf[*buf])) +(*decalage -1);
124 *res = *variable;
125}
126
127void set_var_user_f(int *buf,int *decalage,double *variable)
128{set_var_user_f_(buf,decalage,variable);}
129
130void _FCALL SET_VAR_USER_F(int *buf,int *decalage,double *variable)
131{set_var_user_f_(buf,decalage,variable);}
132
133
134void set_var_user_f__(int *buf,int *decalage,double *variable)
135{set_var_user_f_(buf,decalage,variable);}
136
137
138void set_var_user_f_sp_ (int *buf,int *decalage,float *variable)
139{
140 float *res;
141 res= ((float*) (sav_buf[*buf]))+ (*decalage -1);
142 *res = *variable;
143}
144
145void set_var_user_f_sp(int *buf,int *decalage,float *variable)
146{set_var_user_f_sp_(buf,decalage,variable);}
147
148void _FCALL SET_VAR_USER_F_SP(int *buf,int *decalage,float *variable)
149{set_var_user_f_sp_(buf,decalage,variable);}
150
151
152void set_var_user_f_sp__(int *buf,int *decalage,float *variable)
153{set_var_user_f_sp_(buf,decalage,variable);}
154
155
156void get_var_user_i_(int *buf,int *decalage,int *resultat)
157{
158 int *res;
159 res= (int*) (sav_buf[*buf]+ (*decalage) -1);
160 *resultat = *res;
161}
162
163void get_var_user_i(int *buf,int *decalage,int *resultat)
164{get_var_user_i_(buf,decalage,resultat);}
165
166void _FCALL GET_VAR_USER_I(int *buf,int *decalage,int *resultat)
167{get_var_user_i_(buf,decalage,resultat);}
168
169void get_var_user_i__(int *buf,int *decalage,int *resultat)
170{get_var_user_i_(buf,decalage,resultat);}
171
172
173void set_var_user_i_(int *buf,int *decalage,int *variable)
174{
175 int *res;
176 res= (int*) (sav_buf[*buf]+ (*decalage) -1);
177 *res = *variable;
178}
179
180
181void set_var_user_i(int *buf,int *decalage,int *variable)
182{set_var_user_i_(buf,decalage,variable);}
183
184
185void _FCALL SET_VAR_USER_I(int *buf,int *decalage,int *variable)
186{set_var_user_i_(buf,decalage,variable);}
187
188
189void set_var_user_i__(int *buf,int *decalage,int *variable)
190{set_var_user_i_(buf,decalage,variable);}
191
192
193void get_array_user_f_(int *buf,int *decalage,double *array,int *array_lenght)
194{
195 int i;
196 double *ar;
197 ar = ((double *) (sav_buf[*buf]))+ (*decalage) -1;
198 for (i=0;i<(*array_lenght);i++)
199 { *(array+i)= *(ar+i); }
200}
201
202
203void get_array_user_f(int *buf,int *decalage,double *array,int *array_lenght)
204{get_array_user_f_(buf,decalage,array,array_lenght);}
205
206
207void _FCALL GET_ARRAY_USER_F(int *buf,int *decalage,double *array,int *array_lenght)
208{get_array_user_f_(buf,decalage,array,array_lenght);}
209
210
211void get_array_user_f__(int *buf,int *decalage,double *array,int *array_lenght)
212{get_array_user_f_(buf,decalage,array,array_lenght);}
213
214
215void set_array_user_f_(int *buf,int *decalage,double *array,int *array_lenght)
216{
217 int i;
218 double *ar;
219 ar = ((double *) (sav_buf[*buf]))+ (*decalage) -1;
220 for (i=0;i<(*array_lenght);i++)
221 { *(ar+1) = *(array+i);}
222}
223
224
225void set_array_user_f(int *buf,int *decalage,double *array,int *array_lenght)
226{set_array_user_f_(buf,decalage,array,array_lenght);}
227
228
229void _FCALL SET_ARRAY_USER_F(int *buf,int *decalage,double *array,int *array_lenght)
230{set_array_user_f_(buf,decalage,array,array_lenght);}
231
232
233void set_array_user_f__(int *buf,int *decalage,double *array,int *array_lenght)
234{set_array_user_f_(buf,decalage,array,array_lenght);}
235
236
237void get_array_user_f_sp_(int *buf,int *decalage,float *array,int *array_lenght)
238{
239 int i;
240 float *ar;
241 ar = ((float *) (sav_buf[*buf]))+ (*decalage) -1;
242 for (i=0;i<(*array_lenght);i++)
243 { *(array+i)= *(ar+i); }
244}
245
246
247void get_array_user_f_sp(int *buf,int *decalage,float *array,int *array_lenght)
248{get_array_user_f_sp_(buf,decalage,array,array_lenght);}
249
250
251void _FCALL GET_ARRAY_USER_F_SP(int *buf,int *decalage,float *array,int *array_lenght)
252{get_array_user_f_sp_(buf,decalage,array,array_lenght);}
253
254
255void get_array_user_f_sp__(int *buf,int *decalage,float *array,int *array_lenght)
256{get_array_user_f_sp_(buf,decalage,array,array_lenght);}
257
258
259void set_array_user_f_sp_(int *buf,int *decalage,float *array,int *array_lenght)
260{
261 int i;
262 float *ar;
263 ar = ((float *) (sav_buf[*buf]))+ (*decalage) -1;
264 for (i=0;i<(*array_lenght);i++)
265 { *(ar+i) = *(array+i);}
266}
267
268
269void set_array_user_f_sp(int *buf,int *decalage,float *array,int *array_lenght)
270{set_array_user_f_sp_(buf,decalage,array,array_lenght);}
271
272
273void _FCALL SET_ARRAY_USER_F_SP(int *buf,int *decalage,float *array,int *array_lenght)
274{set_array_user_f_sp_(buf,decalage,array,array_lenght);}
275
276
277void set_array_user_f_sp__(int *buf,int *decalage,float *array,int *array_lenght)
278{set_array_user_f_sp_(buf,decalage,array,array_lenght);}
279
280
281void get_array_user_i_(int *buf,int *decalage,int *array,int *array_lenght)
282{
283 int i;
284 int *ar;
285 ar = ((int *) (sav_buf[*buf]))+ (*decalage) -1;
286 for (i=0;i<(*array_lenght);i++)
287 { *(array+i)= *(ar+i); }
288}
289
290
291void get_array_user_i(int *buf,int *decalage,int *array,int *array_lenght)
292{get_array_user_i_(buf,decalage,array,array_lenght);}
293
294
295void _FCALL GET_ARRAY_USER_I(int *buf,int *decalage,int *array,int *array_lenght)
296{get_array_user_i_(buf,decalage,array,array_lenght);}
297
298
299void get_array_user_i__(int *buf,int *decalage,int *array,int *array_lenght)
300{get_array_user_i_(buf,decalage,array,array_lenght);}
301
302
303
304void set_array_user_i_(int *buf,int *decalage,int *array,int *array_lenght)
305{
306 int i;
307 int *ar;
308 ar = ((int *) (sav_buf[*buf]))+ (*decalage) -1;
309 for (i=0;i<(*array_lenght);i++)
310 { *(ar+i) = *(array+i); }
311}
312
313
314void set_array_user_i(int *buf,int *decalage,int *array,int *array_lenght)
315{set_array_user_i_(buf,decalage,array,array_lenght);}
316
317
318void _FCALL SET_ARRAY_USER_I(int *buf,int *decalage,int *array,int *array_lenght)
319{set_array_user_i_(buf,decalage,array,array_lenght);}
320
321
322void set_array_user_i__(int *buf,int *decalage,int *array,int *array_lenght)
323{set_array_user_i_(buf,decalage,array,array_lenght);}
324
325
326void get_user_pointer_(int *buf,int *decalage,int **ptr)
327{
328 *ptr = sav_buf[*buf]+ (*decalage)-1;
329}
330
331
332void get_user_pointer(int *buf,int *decalage,int **ptr)
333{get_user_pointer_(buf,decalage,ptr);}
334
335
336void _FCALL GET_USER_POINTER(int *buf,int *decalage,int **ptr)
337{get_user_pointer_(buf,decalage,ptr);}
338
339
340void get_user_pointer__(int *buf,int *decalage,int **ptr)
341{get_user_pointer_(buf,decalage,ptr);}
342
343
344
345void u_vinter2_(int *jad,int *jpos,int *jlen,int *llt,my_real_c *xx, my_real_c *dydx, my_real_c *yy)
346{
347 my_real_c *tf;
348 tf = (my_real_c *)sav_buf[6];
349
350// Calling a Fortran Routine
351#ifdef _WIN64
352 VINTER2(tf,jad,jpos,jlen,llt,xx,dydx,yy);
353#else
354 vinter2_(tf,jad,jpos,jlen,llt,xx,dydx,yy);
355#endif
356}
357
358void u_vinter2(int *jad,int *jpos,int *jlen,int *llt,my_real_c *xx,my_real_c *dydx,my_real_c *yy)
359{u_vinter2_(jad,jpos,jlen,llt,xx,dydx,yy);}
360
361
362void _FCALL U_VINTER2(int *jad,int *jpos,int *jlen,int *llt,my_real_c *xx,my_real_c *dydx,my_real_c *yy)
363{u_vinter2_(jad,jpos,jlen,llt,xx,dydx,yy);}
364
365
366void u_vinter2__(int *jad,int *jpos,int *jlen,int *llt,my_real_c *xx,my_real_c *dydx,my_real_c *yy)
367{u_vinter2_(jad,jpos,jlen,llt,xx,dydx,yy);}
368
369
370void u_vinter2dp_(int *jad,int *jpos,int *jlen,int *llt,double *xx,double *dydx,double *yy)
371{
372 double *tf;
373 tf= (double*)sav_buf[6];
374
375/*Appel a une routine Fortran */
376#ifdef _WIN64
377 VINTER2DP(tf,jad,jpos,jlen,llt,xx,dydx,yy);
378#else
379 vinter2dp_(tf,jad,jpos,jlen,llt,xx,dydx,yy);
380#endif
381}
382
383void u_vinter2dp(int *jad,int *jpos,int *jlen,int *llt,double *xx,double *dydx,double *yy)
384{u_vinter2dp_(jad,jpos,jlen,llt,xx,dydx,yy);}
385
386
387void _FCALL U_VINTER2DP(int *jad,int *jpos,int *jlen,int *llt,double *xx,double *dydx,double *yy)
388{u_vinter2dp_(jad,jpos,jlen,llt,xx,dydx,yy);}
389
390
391void u_vinter2dp__(int *jad,int *jpos,int *jlen,int *llt,double *xx,double *dydx,double *yy)
392{u_vinter2dp_(jad,jpos,jlen,llt,xx,dydx,yy);}
393
394
395void get_var_user_vfunc_(int *buf,int *llt,int *ifunc,int *jpos,int *jad,int *jlen)
396{
397 int i,fin;
398 int *ar;
399 fin = *llt;
400 ar = (int *) sav_buf[*buf];
401
402 for(i=0;i<fin;i++)
403 {
404 jad[i] = 0.5* ar[ifunc[i]-1 ] +1 ;
405 jlen[i] = 0.5* ar[ifunc[i]] - jad[i] - jpos[i] ;
406 }
407}
408
409
410void _FCALL GET_VAR_USER_VFUNC(int *buf,int *llt,int *ifunc,int *jpos,int *jad,int *jlen)
411{ get_var_user_vfunc_(buf,llt,ifunc,jpos,jad,jlen);}
412
413
414void get_var_user_vfunc__(int *buf,int *llt,int *ifunc,int *jpos,int *jad,int *jlen)
415{ get_var_user_vfunc_(buf,llt,ifunc,jpos,jad,jlen);}
416
417
418void get_var_user_vfunc(int *buf,int *llt,int *ifunc,int *jpos,int *jad,int *jlen)
419{ get_var_user_vfunc_(buf,llt,ifunc,jpos,jad,jlen); }
420
421
422
int * sav_buf[1000]
Definition callback_c.c:32
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 u_vinter2(int *jad, int *jpos, int *jlen, int *llt, my_real_c *xx, my_real_c *dydx, my_real_c *yy)
void set_array_user_f_(int *buf, int *decalage, double *array, int *array_lenght)
void _FCALL U_VINTER2DP(int *jad, int *jpos, int *jlen, int *llt, double *xx, double *dydx, double *yy)
void sav_buf_point(int *buf, int *i)
void _FCALL GET_VAR_USER_I(int *buf, int *decalage, int *resultat)
void _FCALL U_VINTER2(int *jad, int *jpos, int *jlen, int *llt, my_real_c *xx, my_real_c *dydx, my_real_c *yy)
void _FCALL GET_ARRAY_USER_I(int *buf, int *decalage, int *array, int *array_lenght)
void _FCALL GET_VAR_USER_VFUNC(int *buf, int *llt, int *ifunc, int *jpos, int *jad, int *jlen)
void VINTER2(my_real_c *tf, int *jad, int *jpos, int *jlen, int *llt, my_real_c *xx, my_real_c *dydx, my_real_c *yy)
void set_array_user_f_sp(int *buf, int *decalage, float *array, int *array_lenght)
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 vinter2_(my_real_c *tf, int *jad, int *jpos, int *jlen, int *llt, my_real_c *xx, my_real_c *dydx, my_real_c *yy)
void set_array_user_i(int *buf, int *decalage, int *array, int *array_lenght)
void set_var_user_i(int *buf, int *decalage, int *variable)
void get_array_user_i_(int *buf, int *decalage, int *array, int *array_lenght)
void set_var_user_f(int *buf, int *decalage, double *variable)
void _FCALL SET_VAR_USER_F(int *buf, int *decalage, double *variable)
void arret_c(int n)
void _FCALL SET_ARRAY_USER_F_SP(int *buf, int *decalage, float *array, int *array_lenght)
void _FCALL SET_VAR_USER_I(int *buf, int *decalage, int *variable)
void get_user_pointer__(int *buf, int *decalage, int **ptr)
void vinter2dp_(double *tf, int *jad, int *jpos, int *jlen, int *llt, double *xx, double *dydx, double *yy)
void get_var_user_f(int *buf, int *decalage, double *resultat)
void set_var_user_i__(int *buf, int *decalage, int *variable)
void get_var_user_f__(int *buf, int *decalage, double *resultat)
void set_var_user_f_(int *buf, int *decalage, double *variable)
void get_array_user_i(int *buf, int *decalage, int *array, int *array_lenght)
void set_var_user_f__(int *buf, int *decalage, double *variable)
void sav_buf_point_(int *buf, int *i)
void get_buf_point__(int *loca, int *ish, int *i)
void get_array_user_f__(int *buf, int *decalage, double *array, int *array_lenght)
void _FCALL SET_VAR_USER_F_SP(int *buf, int *decalage, float *variable)
void u_vinter2dp(int *jad, int *jpos, int *jlen, int *llt, double *xx, double *dydx, double *yy)
void u_vinter2dp_(int *jad, int *jpos, int *jlen, int *llt, double *xx, double *dydx, double *yy)
void get_array_user_f_sp_(int *buf, int *decalage, float *array, int *array_lenght)
void get_var_user_vfunc_(int *buf, int *llt, int *ifunc, int *jpos, int *jad, int *jlen)
void _FCALL SAV_BUF_POINT(int *buf, int *i)
void set_var_user_f_sp_(int *buf, int *decalage, float *variable)
void get_array_user_f(int *buf, int *decalage, double *array, int *array_lenght)
void set_array_user_f__(int *buf, int *decalage, double *array, int *array_lenght)
void sav_buf_point__(int *buf, int *i)
void get_buf_point(int *loca, int *ish, int *i)
void set_array_user_i__(int *buf, int *decalage, int *array, int *array_lenght)
void get_var_user_i__(int *buf, int *decalage, int *resultat)
void _FCALL SET_ARRAY_USER_F(int *buf, int *decalage, double *array, int *array_lenght)
void set_array_user_f(int *buf, int *decalage, double *array, int *array_lenght)
void _FCALL GET_USER_POINTER(int *buf, int *decalage, int **ptr)
void _FCALL GET_BUF_POINT(int *loca, int *ish, int *i)
void _FCALL GET_ARRAY_USER_F_SP(int *buf, int *decalage, float *array, int *array_lenght)
void VINTER2DP(double *tf, int *jad, int *jpos, int *jlen, int *llt, double *xx, double *dydx, double *yy)
void get_var_user_f_sp_(int *buf, int *decalage, float *resultat)
void set_var_user_i_(int *buf, int *decalage, int *variable)
void get_array_user_f_(int *buf, int *decalage, double *array, int *array_lenght)
void get_array_user_f_sp(int *buf, int *decalage, float *array, int *array_lenght)
void get_var_user_f_(int *buf, int *decalage, double *resultat)
void ARRET(int *n)
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_vfunc__(int *buf, int *llt, int *ifunc, int *jpos, int *jad, int *jlen)
void arret_(int *n)
void get_var_user_i(int *buf, int *decalage, int *resultat)
void get_array_user_i__(int *buf, int *decalage, int *array, int *array_lenght)
void get_var_user_f_sp(int *buf, int *decalage, float *resultat)
void get_user_pointer(int *buf, int *decalage, int **ptr)
void set_array_user_f_sp_(int *buf, int *decalage, float *array, int *array_lenght)
void set_var_user_f_sp__(int *buf, int *decalage, float *variable)
void get_buf_point_(int *loca, int *ish, int *i)
void _FCALL GET_ARRAY_USER_F(int *buf, int *decalage, double *array, int *array_lenght)
void set_array_user_f_sp__(int *buf, int *decalage, float *array, int *array_lenght)
void _FCALL SET_ARRAY_USER_I(int *buf, int *decalage, int *array, int *array_lenght)
void _FCALL GET_VAR_USER_F(int *buf, int *decalage, double *resultat)
void get_user_pointer_(int *buf, int *decalage, int **ptr)
void _FCALL GET_VAR_USER_F_SP(int *buf, int *decalage, float *resultat)
void get_array_user_f_sp__(int *buf, int *decalage, float *array, int *array_lenght)
void set_array_user_i_(int *buf, int *decalage, int *array, int *array_lenght)
void get_var_user_f_sp__(int *buf, int *decalage, float *resultat)
void set_var_user_f_sp(int *buf, int *decalage, float *variable)
#define _FCALL
n