OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
dyn_userlib.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 "hardware.inc"
24#include <stdio.h>
25#include <string.h>
26#include <stdlib.h>
27#include <math.h>
28#include <fcntl.h>
29
30#if CPP_mach != CPP_macosx64
31#include <malloc.h>
32#endif
33
34
35#if CPP_mach == CPP_w95 || CPP_mach == CPP_win64_spmd || CPP_mach == CPP_p4win64_spmd || CPP_mach == CPP_wnt || CPP_mach == CPP_wmr || CPP_mach == CPP_p4win64 || CPP_mach == CPP_p4win32
36#include <windows.h>
37#include <process.h>
38#include <io.h>
39#include <sys\types.h>
40#include <sys/stat.h>
41#define _FCALL
42#elif 1
43#include <sys/resource.h>
44#include <sys/types.h>
45#include <time.h>
46#include <sys/stat.h>
47#include <unistd.h>
48#include <dlfcn.h>
49#define _FCALL
50#endif
51
52#ifdef MYREAL4
53#define my_real float
54#endif
55
56#ifdef MYREAL8
57#define my_real double
58#endif
59
60
62
63void (*st_lecg) (int * igtyp,char * rootn,int* rootlen, int * nuvar,my_real * pargeo);
64void (*st_lecguser) (int * igtyp,char * rootn,int* rootlen, int * nuvar,my_real * pargeo);
65void (*st_lecm) (int* ilaw ,char * rootn, int* rootlen,my_real* uparam ,int* maxuparam ,int* nuparam,int* nuvar,int* ifunc ,int* maxfunc ,int* mfunc ,my_real* parmat,int* unitab);
66void (*st_lecr) (int* irupt ,char * rootn, int* rootlen,my_real* uparam ,int* maxuparam ,int* nuparam,int* nuvar,int* ifunc ,int* maxfunc ,int* mfunc ,int* id);
67void (*st_lecm99) (int * ilaw,char * rootn,int* rootlen, int * iuser_law,my_real * uparam , int * maxuparam, int * nuparam,int * nuvar, int * ifunc,int * maxfunc,int * nfunc, my_real * parmat);
68void (*st_lecsen) (int * typ,char * rootn,int* rootlen);
69void (*st_riniuser) (int *igtyp,char * rootn,int* rootlen,int* nel,int* iprop,int * ix,my_real *xl,my_real *mass,my_real *xiner,my_real *stifn,my_real *stifr,my_real *vism ,my_real *visr,my_real *uvar,int *nuvar);
70void (*st_userwis) (char * rootn,int* rootlen,int*numnod,int * itab,my_real *x ,my_real *v,my_real *vr,my_real *mass,my_real *iner,int *nuvar ,int *nuvari ,my_real *uvar ,int *iuvar );
71void (*st_userwis_ini) (char * rootn,int* rootlen,int*iuparam,int*numnod,int * itab,my_real *x ,my_real *v,my_real *vr,my_real *mass,my_real *iner,int *nuvar ,int *nuvari ,my_real *uvar ,int *iuvar );
72void (*st_siniusr) (int *ITYP,char *ROOTN,int *ROOTLEN,
73 int *NEL ,int *NUVAR ,int *IPROP ,int *IMAT ,int *SOLID_ID,my_real *TIME ,my_real * TIMESTEP,
74 my_real *EINT ,my_real *VOL ,my_real *UVAR ,my_real *FR_WAVE,my_real *OFF ,my_real *RHO ,my_real *SIG ,
75 my_real *XX1 ,my_real *XX2 ,my_real *XX3 ,my_real *XX4 ,my_real *XX5 ,my_real *XX6 ,my_real *XX7 ,my_real *XX8 ,
76 my_real *YY1 ,my_real *YY2 ,my_real *YY3 ,my_real *YY4 ,my_real *YY5 ,my_real *YY6 ,my_real *YY7 ,my_real *YY8 ,
77 my_real *ZZ1 ,my_real *ZZ2 ,my_real *ZZ3 ,my_real *ZZ4 ,my_real *ZZ5 ,my_real *ZZ6 ,my_real *ZZ7 ,my_real *ZZ8 ,
78 my_real *UX1 ,my_real *UX2 ,my_real *UX3 ,my_real *UX4 ,my_real *UX5 ,my_real *UX6 ,my_real *UX7 ,my_real *UX8 ,
79 my_real *UY1 ,my_real *UY2 ,my_real *UY3 ,my_real *UY4 ,my_real *UY5 ,my_real *UY6 ,my_real *UY7 ,my_real *UY8 ,
80 my_real *UZ1 ,my_real *UZ2 ,my_real *UZ3 ,my_real *UZ4 ,my_real *UZ5 ,my_real *UZ6 ,my_real *UZ7 ,my_real *UZ8 ,
81 my_real *VX1 ,my_real *VX2 ,my_real *VX3 ,my_real *VX4 ,my_real *VX5 ,my_real *VX6 ,my_real *VX7 ,my_real *VVX8 ,
82 my_real *VY1 ,my_real *VY2 ,my_real *VY3 ,my_real *VY4 ,my_real *VY5 ,my_real *VY6 ,my_real *VY7 ,my_real *VVY8 ,
83 my_real *VZ1 ,my_real *VZ2 ,my_real *VZ3 ,my_real *VZ4 ,my_real *VZ5 ,my_real *VZ6 ,my_real *VZ7 ,my_real *VVZ8 ,
84 my_real *VRX1 ,my_real *VRX2 ,my_real *VRX3 ,my_real *VRX4 ,my_real *VRX5 ,my_real *VRX6 ,my_real *VRX7 ,my_real *VVRX8 ,
85 my_real *VRY1 ,my_real *VRY2 ,my_real *VRY3 ,my_real *VRY4 ,my_real *VRY5 ,my_real *VRY6 ,my_real *VRY7 ,my_real *VVRY8 ,
86 my_real *VRZ1 ,my_real *VRZ2 ,my_real *VRZ3 ,my_real *VRZ4 ,my_real *VRZ5 ,my_real *VRZ6 ,my_real *VRZ7 ,my_real *VVRZ8 ,
87 my_real *FX1 ,my_real *FX2 ,my_real *FX3 ,my_real *FX4 ,my_real *FX5 ,my_real *FX6 ,my_real *FX7 ,my_real *VFX8 ,
88 my_real *FY1 ,my_real *FY2 ,my_real *FY3 ,my_real *FY4 ,my_real *FY5 ,my_real *FY6 ,my_real *FY7 ,my_real *VFY8 ,
89 my_real *FZ1 ,my_real *FZ2 ,my_real *FZ3 ,my_real *FZ4 ,my_real *FZ5 ,my_real *FZ6 ,my_real *FZ7 ,my_real *VFZ8 ,
90 my_real *MX1 ,my_real *MX2 ,my_real *MX3 ,my_real *MX4 ,my_real *MX5 ,my_real *MX6 ,my_real *MX7 ,my_real *VMX8 ,
91 my_real *MY1 ,my_real *MY2 ,my_real *MY3 ,my_real *MY4 ,my_real *MY5 ,my_real *MY6 ,my_real *MY7 ,my_real *MY8 ,
92 my_real *MZ1 ,my_real *MZ2 ,my_real *MZ3 ,my_real *MZ4 ,my_real *MZ5 ,my_real *MZ6 ,my_real *MZ7 ,my_real *MZ8 ,
93 my_real *STIFM ,my_real *STIFR ,my_real *VISCM ,my_real *VISCR );
94
95void (*st_get_userbuf_variable)(int * id, char * title);
96
97void (*userlib_id)(int * info);
98
100 int i;
101 st_lecg = NULL;
102 st_lecguser = NULL;
103 st_lecm = NULL;
104 st_lecm99 = NULL;
105 st_lecsen = NULL;
106 st_riniuser = NULL;
107 st_userwis = NULL;
108 st_userwis_ini = NULL;
109
110 userlibhandle = NULL;
111 userlib_id = NULL;
112}
113#if CPP_mach == CPP_w95 || CPP_mach == CPP_win64_spmd || CPP_mach == CPP_p4win64_spmd || CPP_mach == CPP_wnt || CPP_mach == CPP_wmr || CPP_mach == CPP_p4win64 || CPP_mach == CPP_p4win32
114void init_callback(void ** callback_array);
115void dll_init_callback();
116
118void (*set_library_callback) (void * callback_array[200]);
119void _FCALL DYN_USERLIB_INIT (char * libname, int *size, int * userlib_avail, int * userlib_ver ,int* iresp,int * userlib_altname){
120
121 char* libn,current_dir;
122 int i;
123 char rname[256];
124 char dllpath[10240],dllname[15000];
125 int result,dllpath_size;
126 int err;
127 int has_path;
128 err=0;
129 *userlib_avail=0;
131
132 if(*userlib_altname==0){
133 if(*iresp==1){
134 libname[*size ]='w';
135 libname[*size+1 ]='i';
136 libname[*size+2 ]='n';
137 libname[*size+3 ]='6';
138 libname[*size+4 ]='4';
139 libname[*size+5 ]='_';
140 libname[*size+6 ]='s';
141 libname[*size+7 ]='p';
142 libname[*size+8 ]='.';
143 libname[*size+9 ]='d';
144 libname[*size+10]='l';
145 libname[*size+11]='l';
146 *size = *size + 12;
147 }else{
148 libname[*size ]='w';
149 libname[*size+1]='i';
150 libname[*size+2]='n';
151 libname[*size+3]='6';
152 libname[*size+4]='4';
153 libname[*size+5]='.';
154 libname[*size+6]='d';
155 libname[*size+7]='l';
156 libname[*size+8]='l';
157 *size = *size + 9;
158 }
159 }
160 libn = (char * )malloc(sizeof(char)* *size+1);
161 for (i=0;i<*size;i++)libn[i]=libname[i];
162 libn[*size]='\0';
163
164/* it is possible to set a path when using alternate library names*/
165 has_path=0;
166 for (i=0;i<*size;i++){
167 if (libn[i]==47 || libn[i]==92)has_path=1;
168 }
169
170 userlibhandler=NULL;
171 if (has_path==1){
172 userlibhandler = LoadLibrary(TEXT(libn));
173 }else{
174
175 /* first trial find Environment variable RAD_USERLIB_LIBPATH */
176 dllpath_size=GetEnvironmentVariable("RAD_USERLIB_LIBPATH",dllpath,10240);
177 if (dllpath_size > 0){
178 strcpy_s(dllname,15000,dllpath);
179 strcat_s(dllname,15000,"\\");
180 strcat_s(dllname,15000,libn);
181 userlibhandler = LoadLibrary(TEXT(dllname));
182 }
183
184 if (!userlibhandler){
185 /* second trial find Environment variable in local directory */
186 dllpath_size=GetCurrentDirectory(10240,dllpath);
187 strcpy_s(dllname,15000,dllpath);
188 strcat_s(dllname,15000,"\\");
189 strcat_s(dllname,15000,libn);
190 userlibhandler = LoadLibrary(TEXT(dllname));
191 }
192
193 if (!userlibhandler){
194 /* third trial find Environment variable in %PATH% */
195 dllpath_size=GetEnvironmentVariable("PATH",dllpath,10240);
196 SetDllDirectory(dllpath);
197 userlibhandler = LoadLibrary(TEXT(libn));
198 }
199
200 }
201 if (userlibhandler){
202
203/* Routine ST_LECG */
204 sprintf(rname,"ST_LECG");
205 st_lecg=(void*)GetProcAddress(userlibhandler,rname);
206 if (!st_lecg) err=err+1;
207
208/* Routine ST_LECGUSER */
209 sprintf(rname,"ST_LECGUSER");
210 st_lecguser=(void*)GetProcAddress(userlibhandler,rname);
211 if (!st_lecguser) err=err+1;
212
213/* Routine ST_LECM */
214 sprintf(rname,"ST_LECM");
215 st_lecm=(void*)GetProcAddress(userlibhandler,rname);
216 if (!st_lecm) err=err+1;
217
218/* Routine ST_LECR */
219 sprintf(rname,"ST_LECR");
220 st_lecr=(void*)GetProcAddress(userlibhandler,rname);
221 if (!st_lecr) err=err+1;
222
223/* Routine ST_LECM99 */
224 sprintf(rname,"ST_LECM99");
225 st_lecm99=(void*)GetProcAddress(userlibhandler,rname);
226 if (!st_lecm99) err=err+1;
227
228/* Routine ST_LECSEN */
229 sprintf(rname,"ST_LECSEN");
230 st_lecsen=(void*)GetProcAddress(userlibhandler,rname);
231 if (!st_lecsen) err=err+1;
232
233/* Routine ST_RINIUSER */
234 sprintf(rname,"ST_RINIUSER");
235 st_riniuser=(void*)GetProcAddress(userlibhandler,rname);
236 if (!st_riniuser) err=err+1;
237
238/* Routine ST_SINIUSR */
239 sprintf(rname,"ST_SINIUSR");
240 st_siniusr=(void*)GetProcAddress(userlibhandler,rname);
241 if (!st_siniusr) err=err+1;
242
243/* Routine ST_USERWIS */
244 sprintf(rname,"ST_USERWIS");
245 st_userwis=(void*)GetProcAddress(userlibhandler,rname);
246 if (!st_userwis) err=err+1;
247
248/* Routine ST_USERWIS_INI */
249 sprintf(rname,"ST_USERWIS_INI");
250 st_userwis_ini=(void*)GetProcAddress(userlibhandler,rname);
251 if (!st_userwis_ini) err=err+1;
252
253/* Routine ST_GET_USERBUF_VARIABLE */
254 sprintf(rname,"ST_GET_USERBUF_VAR");
255 st_get_userbuf_variable=(void*)GetProcAddress(userlibhandler,rname);
256 if (!st_get_userbuf_variable) err=err+1;
257
258/* System - Library ID Version */
259 sprintf(rname,"userlib_id");
260 userlib_id=(void*)GetProcAddress(userlibhandler,rname);
261 if(userlib_id) {
262 userlib_id(userlib_ver);
263 }else{
264 err = err+1;
265 }
266
267/* System - Windows Callback Routine */
268 sprintf(rname,"set_callback");
269 set_library_callback=(void*)GetProcAddress(userlibhandler,rname);
272 }else{
273 err = err+1;
274 }
275 if (err==0){ *userlib_avail = 1;}
276 else{
277 /* printf("ko : %i \n",err); */
278 }
279
280 }else{
281 /* printf("load unsuccessful\n"); */
282 }
283}
284
285
287 void * callback_array[200];
288 init_callback(callback_array);
289 fflush(stdout);
290 set_library_callback(callback_array);
291}
292
293#elif 1
294
295#if CPP_mach==CPP_macosx64
296
297void dyn_userlib_init_(char * libname, int *size, int * userlib_avail, int * userlib_ver ,int* iresp,int * userlib_altname){
298 char* libn;
299 int i;
300 char rname[256];
301 int err;
302 err=0;
303 *userlib_avail=0;
304 *userlib_ver=0;
305}
306
307#elif 1
308void dyn_userlib_init_(char * libname, int *size, int * userlib_avail, int * userlib_ver ,int* iresp,int * userlib_altname){
309 char* libn;
310 int i,has_path,sz;
311 char rname[256],load_libname[15000];
312 char libname_c[256];
313 char * rad_userlib_libpath;
314 int err;
315 err=0;
316 *userlib_avail=0;
317 *userlib_ver=0;
318
320
321 if(*userlib_altname==0){
322
323#ifdef __aarch64__
324 if(*iresp==1){
325 strcpy(libname_c,"linuxa64_sp.so");
326 }else{
327 strcpy(libname_c,"linuxa64.so");
328 }
329 sz=strlen(libname_c);
330 for (i=0;i<sz;i++) { libname[*size + i ] = libname_c[i]; }
331 *size = *size + sz;
332
333 }
334#else
335 if(*iresp==1){
336 libname[*size ]='l';
337 libname[*size+1 ]='i';
338 libname[*size+2 ]='n';
339 libname[*size+3 ]='u';
340 libname[*size+4 ]='x';
341 libname[*size+5 ]='6';
342 libname[*size+6 ]='4';
343 libname[*size+7 ]='_';
344 libname[*size+8 ]='s';
345 libname[*size+9 ]='p';
346 libname[*size+10]='.';
347 libname[*size+11]='s';
348 libname[*size+12]='o';
349 *size = *size + 13;
350 }else{
351 libname[*size ]='l';
352 libname[*size+1]='i';
353 libname[*size+2]='n';
354 libname[*size+3]='u';
355 libname[*size+4]='x';
356 libname[*size+5]='6';
357 libname[*size+6]='4';
358 libname[*size+7]='.';
359 libname[*size+8]='s';
360 libname[*size+9]='o';
361 *size = *size + 10;
362 }
363 }
364#endif
365
366 libn = (char * )malloc(sizeof(char)* *size+1);
367 for (i=0;i<*size;i++)libn[i]=libname[i];
368 libn[*size]='\0';
369
370/* it is possible to set a path when using alternate library names*/
371 has_path=0;
372 for (i=0;i<*size;i++){
373 if (libn[i]==47 || libn[i]==92)has_path=1;
374 }
375
376 userlibhandle = NULL;
377 if (has_path==1){
378#ifdef SANITIZE
379 userlibhandle = dlopen(libn,RTLD_LAZY|RTLD_GLOBAL);
380#else
381 userlibhandle = dlopen(libn,RTLD_LAZY|RTLD_GLOBAL|RTLD_DEEPBIND);
382#endif
383 }else{
384
385 /* first trial find Environment variable RAD_USERLIB_LIBPATH */
386 rad_userlib_libpath=getenv("RAD_USERLIB_LIBPATH");
387 if (rad_userlib_libpath){
388 strcpy(load_libname,rad_userlib_libpath);
389 strcat(load_libname,"/");
390 strcat(load_libname,libn);
391#ifdef SANITIZE
392 userlibhandle = dlopen(load_libname,RTLD_LAZY|RTLD_GLOBAL);
393#else
394 userlibhandle = dlopen(load_libname,RTLD_LAZY|RTLD_GLOBAL|RTLD_DEEPBIND);
395#endif
396 }
397
398 if(userlibhandle==NULL){
399 /* second trial search lib in Current Working directory */
400 getcwd(load_libname,15000);
401 strcat(load_libname,"/");
402 strcat(load_libname,libn);
403#ifdef SANITIZE
404 userlibhandle = dlopen(load_libname,RTLD_LAZY|RTLD_GLOBAL);
405#else
406 userlibhandle = dlopen(load_libname,RTLD_LAZY|RTLD_GLOBAL|RTLD_DEEPBIND);
407#endif
408 }
409
410 if(userlibhandle==NULL){
411 /* Third Trial : Default - LD_LRARY_PATH */
412#ifdef SANITIZE
413 userlibhandle = dlopen(libn,RTLD_LAZY|RTLD_GLOBAL);
414#else
415 userlibhandle = dlopen(libn,RTLD_LAZY|RTLD_GLOBAL|RTLD_DEEPBIND);
416#endif
417
418
419 }
420
421 }
422
423 if (userlibhandle) {
424
425/* Routine ST_LECG */
426 sprintf(rname,"st_lecg_");
427 st_lecg=dlsym(userlibhandle,rname);
428 if (!st_lecg) err=err+1;
429
430/* Routine ST_LECGUSER */
431 sprintf(rname,"st_lecguser_");
432 st_lecguser=dlsym(userlibhandle,rname);
433 if (!st_lecguser) err=err+1;
434
435/* Routine ST_LECM */
436 sprintf(rname,"st_lecm_");
437 st_lecm=dlsym(userlibhandle,rname);
438 if (!st_lecm) err=err+1;
439
440/* Routine ST_LECR */
441 sprintf(rname,"st_lecr_");
442 st_lecr=dlsym(userlibhandle,rname);
443 if (!st_lecr) err=err+1;
444
445/* Routine ST_LECM99 */
446 sprintf(rname,"st_lecm99_");
447 st_lecm99=dlsym(userlibhandle,rname);
448 if (!st_lecm99) err=err+1;
449
450/* Routine ST_LECSEN */
451 sprintf(rname,"st_lecsen_");
452 st_lecsen=dlsym(userlibhandle,rname);
453 if (!st_lecsen) err=err+1;
454
455/* Routine ST_RINIUSER */
456 sprintf(rname,"st_riniuser_");
457 st_riniuser=dlsym(userlibhandle,rname);
458 if (!st_riniuser) err=err+1;
459
460/* Routine ST_SINIUSR */
461 sprintf(rname,"st_siniusr_");
462 st_siniusr=dlsym(userlibhandle,rname);
463 if (!st_siniusr) err=err+1;
464
465/* Routine ST_USERWIS */
466 sprintf(rname,"st_userwis_");
467 st_userwis=dlsym(userlibhandle,rname);
468 if (!st_userwis) err=err+1;
469
470/* Routine ST_USERWIS_INI */
471 sprintf(rname,"st_userwis_ini_");
472 st_userwis_ini=dlsym(userlibhandle,rname);
473 if (!st_userwis_ini) err=err+1;
474
475
476/* System - Library ID Version */
477 sprintf(rname,"userlib_id");
478 userlib_id=dlsym(userlibhandle,rname);
479 if(userlib_id) {
480 userlib_id(userlib_ver);
481 }else{
482 err = err+1;
483 }
484
485 if (err==0){ *userlib_avail = 1;}
486
487 }else{
488 *userlib_avail = 0;
489/* fputs (dlerror(), stderr);*/
490/* printf("\n");*/
491 }
492
493}
494#endif
495
496#endif
497
498/* --------------------------------- */
499/* User properties lecg 29-30-31 */
500/* --------------------------------- */
501
502/* WINDOWS */
503void _FCALL ST_USERLIB_LECG(int * igtyp,char * rootn,int* rootlen, int * nuvar,my_real * pargeo)
504{
505 if (st_lecg) {
506 (*st_lecg)(igtyp,rootn,rootlen,nuvar,pargeo);
507 }
508}
509
510
511/* LINUX */
512void st_userlib_lecg_(int * igtyp,char * rootn,int* rootlen, int * nuvar,my_real * pargeo)
513{
514 if (st_lecg) {
515 (*st_lecg)(igtyp,rootn,rootlen,nuvar,pargeo);
516 }
517}
518
519/* ------------------------------------- */
520/* User properties lecguser 29-30-31 */
521/* ------------------------------------- */
522
523/* WINDOWS */
524void _FCALL ST_USERLIB_LECGUSER(int * igtyp,char * rootn,int* rootlen, int * nuvar,my_real * pargeo)
525{
526 if (st_lecguser) {
527 (*st_lecguser)(igtyp,rootn,rootlen,nuvar,pargeo);
528 }
529}
530
531
532/* LINUX */
533void st_userlib_lecguser_(int * igtyp,char * rootn,int* rootlen, int * nuvar,my_real * pargeo)
534{
535 if (st_lecguser) {
536 (*st_lecguser)(igtyp,rootn,rootlen,nuvar,pargeo);
537 }
538}
539
540
541/* --------------------------------- */
542/* User Material Laws 29-30-31 */
543/* --------------------------------- */
544
545/* WINDOWS */
546void _FCALL ST_USERLIB_USERMAT(int *MATNUM, char* ROOTN, int *ROOTLEN,my_real *UPARAM, int *MAXUPARAM, int *NUPARAM, int *NUVAR, int *IFUNC, int *MAXFUNC, int *MFUNC, my_real *PARMAT,int *UNITAB)
547{
548 if (st_lecm) {
549 (*st_lecm)(MATNUM, ROOTN, ROOTLEN,UPARAM, MAXUPARAM, NUPARAM, NUVAR, IFUNC, MAXFUNC, MFUNC, PARMAT,UNITAB);
550 }
551}
552
553
554/* LINUX */
555void st_userlib_usermat_(int *MATNUM,char *ROOTN, int *ROOTLEN,my_real *UPARAM,int * MAXUPARAM, int *NUPARAM, int *NUVAR, int *IFUNC,int * MAXFUNC,int * MFUNC, my_real *PARMAT,int *UNITAB)
556{
557 if (st_lecm) {
558 (*st_lecm)(MATNUM, ROOTN, ROOTLEN,UPARAM, MAXUPARAM, NUPARAM, NUVAR, IFUNC, MAXFUNC, MFUNC, PARMAT,UNITAB);
559 }
560}
561
562/* --------------------------- */
563/* Extended User Material Laws */
564/* --------------------------- */
565
566/* WINDOWS */
567void _FCALL ST_USERLIB_LECM99(int * ilaw,char * rootn,int* rootlen, int * iuser_law,my_real * uparam , int * maxuparam, int * nuparam,int * nuvar, int * ifunc,int * maxfunc,int * nfunc, my_real * parmat)
568{
569 if (st_lecm99){
570 (*st_lecm99)(ilaw,rootn,rootlen,iuser_law,uparam,maxuparam,nuparam,nuvar,ifunc,maxfunc,nfunc,parmat);
571 }
572}
573
574/* LINUX */
575void st_userlib_lecm99_(int * ilaw,char * rootn,int* rootlen, int * iuser_law,my_real * uparam , int * maxuparam, int * nuparam,int * nuvar, int * ifunc,int * maxfunc,int * nfunc, my_real * parmat)
576{
577 if (st_lecm99){
578 (*st_lecm99)(ilaw,rootn,rootlen,iuser_law,uparam,maxuparam,nuparam,nuvar,ifunc,maxfunc,nfunc,parmat);
579 }
580}
581
582/* ------------------ */
583/* User Rupture */
584/* ------------------ */
585
586/* WINDOWS */
587void _FCALL ST_USERLIB_LECR(int *RUPTID,char *ROOTN, int *ROOTLEN,my_real *UPARAM, int *MAXUPARAM, int *NUPARAM, int *NUVAR, int *IFUNC, int *MAXFUNC, int *MFUNC, int *ID)
588{
589 if (st_lecr) {
590 (*st_lecr)(RUPTID, ROOTN, ROOTLEN,UPARAM, MAXUPARAM, NUPARAM, NUVAR, IFUNC, MAXFUNC, MFUNC, ID);
591 }
592}
593
594/* LINUX */
595void st_userlib_lecr_(int *RUPTID,char *ROOTN, int *ROOTLEN,my_real *UPARAM, int *MAXUPARAM, int *NUPARAM, int *NUVAR, int *IFUNC, int *MAXFUNC, int *MFUNC, int *ID)
596{
597 if (st_lecr) {
598 (*st_lecr)(RUPTID, ROOTN, ROOTLEN,UPARAM, MAXUPARAM, NUPARAM, NUVAR, IFUNC, MAXFUNC, MFUNC, ID);
599 }
600}
601
602
603/* ------------ */
604/* User Sensors */
605/* ------------ */
606
607/* WINDOWS */
608void _FCALL ST_USERLIB_LECSEN(int * typ,char * rootn,int* rootlen)
609{
610 if (st_lecsen){
611 (*st_lecsen)(typ,rootn,rootlen);
612 }
613}
614
615/* LINUX */
616void st_userlib_lecsen_(int * typ,char * rootn,int* rootlen)
617{
618 if (st_lecsen){
619 (*st_lecsen)(typ,rootn,rootlen);
620 }
621}
622
623
624/* ------------ */
625/* User Springs */
626/* ------------ */
627/* WINDOWS */
628void _FCALL ST_USERLIB_RINIUSER(int *igtyp,char * rootn,int* rootlen,int* nel,int* iprop,
629 int * ix,my_real *xl,my_real *mass,my_real *xiner,my_real *stifn,
630 my_real *stifr,my_real *vism ,my_real *visr,my_real *uvar,int *nuvar)
631{
632 if (st_riniuser){
633 (*st_riniuser)(igtyp,rootn,rootlen,nel,iprop,
634 ix,xl,mass,xiner,stifn,
635 stifr,vism ,visr,uvar,nuvar );
636 }
637}
638
639/* LINUX */
640void st_userlib_riniuser_(int *igtyp,char * rootn,int* rootlen,int* nel,int* iprop,
641 int * ix,my_real *xl,my_real *mass,my_real *xiner,my_real *stifn,
642 my_real *stifr,my_real *vism ,my_real *visr,my_real *uvar,int *nuvar)
643{
644 if (st_riniuser){
645 (*st_riniuser)(igtyp,rootn,rootlen,nel,iprop,
646 ix,xl,mass,xiner,stifn,
647 stifr,vism ,visr,uvar,nuvar );
648 }
649}
650
651/* ------------ */
652/* User Solids */
653/* ------------ */
654/* WINDOWS */
655void _FCALL ST_USERLIB_SINIUSR(int *ITYP,char *ROOTN,int *ROOTLEN,
656 int *NEL ,int *NUVAR ,int *IPROP ,int *IMAT ,int *SOLID_ID,my_real *TIME ,my_real * TIMESTEP,
657 my_real *EINT ,my_real *VOL ,my_real *UVAR ,my_real *FR_WAVE,my_real *OFF ,my_real *RHO ,my_real *SIG ,
658 my_real *XX1 ,my_real *XX2 ,my_real *XX3 ,my_real *XX4 ,my_real *XX5 ,my_real *XX6 ,my_real *XX7 ,my_real *XX8 ,
659 my_real *YY1 ,my_real *YY2 ,my_real *YY3 ,my_real *YY4 ,my_real *YY5 ,my_real *YY6 ,my_real *YY7 ,my_real *YY8 ,
660 my_real *ZZ1 ,my_real *ZZ2 ,my_real *ZZ3 ,my_real *ZZ4 ,my_real *ZZ5 ,my_real *ZZ6 ,my_real *ZZ7 ,my_real *ZZ8 ,
661 my_real *UX1 ,my_real *UX2 ,my_real *UX3 ,my_real *UX4 ,my_real *UX5 ,my_real *UX6 ,my_real *UX7 ,my_real *UX8 ,
662 my_real *UY1 ,my_real *UY2 ,my_real *UY3 ,my_real *UY4 ,my_real *UY5 ,my_real *UY6 ,my_real *UY7 ,my_real *UY8 ,
663 my_real *UZ1 ,my_real *UZ2 ,my_real *UZ3 ,my_real *UZ4 ,my_real *UZ5 ,my_real *UZ6 ,my_real *UZ7 ,my_real *UZ8 ,
664 my_real *VX1 ,my_real *VX2 ,my_real *VX3 ,my_real *VX4 ,my_real *VX5 ,my_real *VX6 ,my_real *VX7 ,my_real *VVX8 ,
665 my_real *VY1 ,my_real *VY2 ,my_real *VY3 ,my_real *VY4 ,my_real *VY5 ,my_real *VY6 ,my_real *VY7 ,my_real *VVY8 ,
666 my_real *VZ1 ,my_real *VZ2 ,my_real *VZ3 ,my_real *VZ4 ,my_real *VZ5 ,my_real *VZ6 ,my_real *VZ7 ,my_real *VVZ8 ,
667 my_real *VRX1 ,my_real *VRX2 ,my_real *VRX3 ,my_real *VRX4 ,my_real *VRX5 ,my_real *VRX6 ,my_real *VRX7 ,my_real *VVRX8 ,
668 my_real *VRY1 ,my_real *VRY2 ,my_real *VRY3 ,my_real *VRY4 ,my_real *VRY5 ,my_real *VRY6 ,my_real *VRY7 ,my_real *VVRY8 ,
669 my_real *VRZ1 ,my_real *VRZ2 ,my_real *VRZ3 ,my_real *VRZ4 ,my_real *VRZ5 ,my_real *VRZ6 ,my_real *VRZ7 ,my_real *VVRZ8 ,
670 my_real *FX1 ,my_real *FX2 ,my_real *FX3 ,my_real *FX4 ,my_real *FX5 ,my_real *FX6 ,my_real *FX7 ,my_real *VFX8 ,
671 my_real *FY1 ,my_real *FY2 ,my_real *FY3 ,my_real *FY4 ,my_real *FY5 ,my_real *FY6 ,my_real *FY7 ,my_real *VFY8 ,
672 my_real *FZ1 ,my_real *FZ2 ,my_real *FZ3 ,my_real *FZ4 ,my_real *FZ5 ,my_real *FZ6 ,my_real *FZ7 ,my_real *VFZ8 ,
673 my_real *MX1 ,my_real *MX2 ,my_real *MX3 ,my_real *MX4 ,my_real *MX5 ,my_real *MX6 ,my_real *MX7 ,my_real *VMX8 ,
674 my_real *MY1 ,my_real *MY2 ,my_real *MY3 ,my_real *MY4 ,my_real *MY5 ,my_real *MY6 ,my_real *MY7 ,my_real *MY8 ,
675 my_real *MZ1 ,my_real *MZ2 ,my_real *MZ3 ,my_real *MZ4 ,my_real *MZ5 ,my_real *MZ6 ,my_real *MZ7 ,my_real *MZ8 ,
676 my_real *STIFM ,my_real *STIFR ,my_real *VISCM ,my_real *VISCR )
677{
678 if (st_siniusr){
679 (*st_siniusr)( ITYP,ROOTN,ROOTLEN,
680 NEL ,NUVAR ,IPROP ,IMAT ,SOLID_ID,TIME ,TIMESTEP,
681 EINT ,VOL ,UVAR ,FR_WAVE,OFF ,RHO ,SIG ,
682 XX1 ,XX2 ,XX3 ,XX4 ,XX5 ,XX6 ,XX7 ,XX8 ,
683 YY1 ,YY2 ,YY3 ,YY4 ,YY5 ,YY6 ,YY7 ,YY8 ,
684 ZZ1 ,ZZ2 ,ZZ3 ,ZZ4 ,ZZ5 ,ZZ6 ,ZZ7 ,ZZ8 ,
685 UX1 ,UX2 ,UX3 ,UX4 ,UX5 ,UX6 ,UX7 ,UX8 ,
686 UY1 ,UY2 ,UY3 ,UY4 ,UY5 ,UY6 ,UY7 ,UY8 ,
687 UZ1 ,UZ2 ,UZ3 ,UZ4 ,UZ5 ,UZ6 ,UZ7 ,UZ8 ,
688 VX1 ,VX2 ,VX3 ,VX4 ,VX5 ,VX6 ,VX7 ,VVX8 ,
689 VY1 ,VY2 ,VY3 ,VY4 ,VY5 ,VY6 ,VY7 ,VVY8 ,
690 VZ1 ,VZ2 ,VZ3 ,VZ4 ,VZ5 ,VZ6 ,VZ7 ,VVZ8 ,
691 VRX1 ,VRX2 ,VRX3 ,VRX4 ,VRX5 ,VRX6 ,VRX7 ,VVRX8 ,
692 VRY1 ,VRY2 ,VRY3 ,VRY4 ,VRY5 ,VRY6 ,VRY7 ,VVRY8 ,
693 VRZ1 ,VRZ2 ,VRZ3 ,VRZ4 ,VRZ5 ,VRZ6 ,VRZ7 ,VVRZ8 ,
694 FX1 ,FX2 ,FX3 ,FX4 ,FX5 ,FX6 ,FX7 ,VFX8 ,
695 FY1 ,FY2 ,FY3 ,FY4 ,FY5 ,FY6 ,FY7 ,VFY8 ,
696 FZ1 ,FZ2 ,FZ3 ,FZ4 ,FZ5 ,FZ6 ,FZ7 ,VFZ8 ,
697 MX1 ,MX2 ,MX3 ,MX4 ,MX5 ,MX6 ,MX7 ,VMX8 ,
698 MY1 ,MY2 ,MY3 ,MY4 ,MY5 ,MY6 ,MY7 ,MY8 ,
699 MZ1 ,MZ2 ,MZ3 ,MZ4 ,MZ5 ,MZ6 ,MZ7 ,MZ8 ,
700 STIFM ,STIFR ,VISCM ,VISCR);
701 }
702}
703
704/* LINUX */
705void st_userlib_siniusr_(int *ITYP,char *ROOTN,int *ROOTLEN,
706 int *NEL ,int *NUVAR ,int *IPROP ,int *IMAT ,int *SOLID_ID,my_real *TIME ,my_real * TIMESTEP,
707 my_real *EINT ,my_real *VOL ,my_real *UVAR ,my_real *FR_WAVE,my_real *OFF ,my_real *RHO ,my_real *SIG ,
708 my_real *XX1 ,my_real *XX2 ,my_real *XX3 ,my_real *XX4 ,my_real *XX5 ,my_real *XX6 ,my_real *XX7 ,my_real *XX8 ,
709 my_real *YY1 ,my_real *YY2 ,my_real *YY3 ,my_real *YY4 ,my_real *YY5 ,my_real *YY6 ,my_real *YY7 ,my_real *YY8 ,
710 my_real *ZZ1 ,my_real *ZZ2 ,my_real *ZZ3 ,my_real *ZZ4 ,my_real *ZZ5 ,my_real *ZZ6 ,my_real *ZZ7 ,my_real *ZZ8 ,
711 my_real *UX1 ,my_real *UX2 ,my_real *UX3 ,my_real *UX4 ,my_real *UX5 ,my_real *UX6 ,my_real *UX7 ,my_real *UX8 ,
712 my_real *UY1 ,my_real *UY2 ,my_real *UY3 ,my_real *UY4 ,my_real *UY5 ,my_real *UY6 ,my_real *UY7 ,my_real *UY8 ,
713 my_real *UZ1 ,my_real *UZ2 ,my_real *UZ3 ,my_real *UZ4 ,my_real *UZ5 ,my_real *UZ6 ,my_real *UZ7 ,my_real *UZ8 ,
714 my_real *VX1 ,my_real *VX2 ,my_real *VX3 ,my_real *VX4 ,my_real *VX5 ,my_real *VX6 ,my_real *VX7 ,my_real *VVX8 ,
715 my_real *VY1 ,my_real *VY2 ,my_real *VY3 ,my_real *VY4 ,my_real *VY5 ,my_real *VY6 ,my_real *VY7 ,my_real *VVY8 ,
716 my_real *VZ1 ,my_real *VZ2 ,my_real *VZ3 ,my_real *VZ4 ,my_real *VZ5 ,my_real *VZ6 ,my_real *VZ7 ,my_real *VVZ8 ,
717 my_real *VRX1 ,my_real *VRX2 ,my_real *VRX3 ,my_real *VRX4 ,my_real *VRX5 ,my_real *VRX6 ,my_real *VRX7 ,my_real *VVRX8 ,
718 my_real *VRY1 ,my_real *VRY2 ,my_real *VRY3 ,my_real *VRY4 ,my_real *VRY5 ,my_real *VRY6 ,my_real *VRY7 ,my_real *VVRY8 ,
719 my_real *VRZ1 ,my_real *VRZ2 ,my_real *VRZ3 ,my_real *VRZ4 ,my_real *VRZ5 ,my_real *VRZ6 ,my_real *VRZ7 ,my_real *VVRZ8 ,
720 my_real *FX1 ,my_real *FX2 ,my_real *FX3 ,my_real *FX4 ,my_real *FX5 ,my_real *FX6 ,my_real *FX7 ,my_real *VFX8 ,
721 my_real *FY1 ,my_real *FY2 ,my_real *FY3 ,my_real *FY4 ,my_real *FY5 ,my_real *FY6 ,my_real *FY7 ,my_real *VFY8 ,
722 my_real *FZ1 ,my_real *FZ2 ,my_real *FZ3 ,my_real *FZ4 ,my_real *FZ5 ,my_real *FZ6 ,my_real *FZ7 ,my_real *VFZ8 ,
723 my_real *MX1 ,my_real *MX2 ,my_real *MX3 ,my_real *MX4 ,my_real *MX5 ,my_real *MX6 ,my_real *MX7 ,my_real *VMX8 ,
724 my_real *MY1 ,my_real *MY2 ,my_real *MY3 ,my_real *MY4 ,my_real *MY5 ,my_real *MY6 ,my_real *MY7 ,my_real *MY8 ,
725 my_real *MZ1 ,my_real *MZ2 ,my_real *MZ3 ,my_real *MZ4 ,my_real *MZ5 ,my_real *MZ6 ,my_real *MZ7 ,my_real *MZ8 ,
726 my_real *STIFM ,my_real *STIFR ,my_real *VISCM ,my_real *VISCR )
727{
728 if (st_siniusr){
729 (*st_siniusr)( ITYP,ROOTN,ROOTLEN,
730 NEL ,NUVAR ,IPROP ,IMAT ,SOLID_ID,TIME ,TIMESTEP,
731 EINT ,VOL ,UVAR ,FR_WAVE,OFF ,RHO ,SIG ,
732 XX1 ,XX2 ,XX3 ,XX4 ,XX5 ,XX6 ,XX7 ,XX8 ,
733 YY1 ,YY2 ,YY3 ,YY4 ,YY5 ,YY6 ,YY7 ,YY8 ,
734 ZZ1 ,ZZ2 ,ZZ3 ,ZZ4 ,ZZ5 ,ZZ6 ,ZZ7 ,ZZ8 ,
735 UX1 ,UX2 ,UX3 ,UX4 ,UX5 ,UX6 ,UX7 ,UX8 ,
736 UY1 ,UY2 ,UY3 ,UY4 ,UY5 ,UY6 ,UY7 ,UY8 ,
737 UZ1 ,UZ2 ,UZ3 ,UZ4 ,UZ5 ,UZ6 ,UZ7 ,UZ8 ,
738 VX1 ,VX2 ,VX3 ,VX4 ,VX5 ,VX6 ,VX7 ,VVX8 ,
739 VY1 ,VY2 ,VY3 ,VY4 ,VY5 ,VY6 ,VY7 ,VVY8 ,
740 VZ1 ,VZ2 ,VZ3 ,VZ4 ,VZ5 ,VZ6 ,VZ7 ,VVZ8 ,
741 VRX1 ,VRX2 ,VRX3 ,VRX4 ,VRX5 ,VRX6 ,VRX7 ,VVRX8 ,
742 VRY1 ,VRY2 ,VRY3 ,VRY4 ,VRY5 ,VRY6 ,VRY7 ,VVRY8 ,
743 VRZ1 ,VRZ2 ,VRZ3 ,VRZ4 ,VRZ5 ,VRZ6 ,VRZ7 ,VVRZ8 ,
744 FX1 ,FX2 ,FX3 ,FX4 ,FX5 ,FX6 ,FX7 ,VFX8 ,
745 FY1 ,FY2 ,FY3 ,FY4 ,FY5 ,FY6 ,FY7 ,VFY8 ,
746 FZ1 ,FZ2 ,FZ3 ,FZ4 ,FZ5 ,FZ6 ,FZ7 ,VFZ8 ,
747 MX1 ,MX2 ,MX3 ,MX4 ,MX5 ,MX6 ,MX7 ,VMX8 ,
748 MY1 ,MY2 ,MY3 ,MY4 ,MY5 ,MY6 ,MY7 ,MY8 ,
749 MZ1 ,MZ2 ,MZ3 ,MZ4 ,MZ5 ,MZ6 ,MZ7 ,MZ8 ,
750 STIFM ,STIFR ,VISCM ,VISCR);
751 }
752}
753
754/* -----------*/
755/* UserWindow */
756/* ---------- */
757/* WINDOWS */
758void _FCALL ST_USERLIB_USERWIS(char * rootn,int* rootlen,int*numnod,int * itab,my_real *x ,my_real *v,
759 my_real *vr,my_real *mass,my_real *iner,int *nuvar ,int *nuvari ,
760 my_real *uvar ,int *iuvar)
761{
762 if (st_userwis){
763 (*st_userwis)(rootn,rootlen,numnod,itab, x ,v,
764 vr,mass,iner,nuvar ,nuvari ,
765 uvar ,iuvar);
766 }
767}
768/* LINUX */
769void st_userlib_userwis_(char * rootn,int* rootlen,int*numnod,int * itab,my_real *x ,my_real *v,
770 my_real *vr,my_real *mass,my_real *iner,int *nuvar ,int *nuvari ,
771 my_real *uvar ,int *iuvar)
772{
773 if (st_userwis){
774 (*st_userwis)(rootn,rootlen,numnod,itab, x ,v,
775 vr,mass,iner,nuvar ,nuvari ,
776 uvar ,iuvar);
777 }
778}
779
780/* --------------- */
781/* UserWindow init */
782/* --------------- */
783/* WINDOWS */
784void _FCALL ST_USERLIB_USERWIS_INI(char * rootn,int* rootlen,int *iuparam,int*numnod,int * itab,my_real *x ,my_real *v,
785 my_real *vr,my_real *mass,my_real *iner,int *nuvar ,int *nuvari ,
786 my_real *uvar ,int *iuvar)
787{
788 if (st_userwis_ini){
789 (*st_userwis_ini)(rootn,rootlen,iuparam,numnod,itab, x ,v,
790 vr,mass,iner,nuvar ,nuvari ,
791 uvar ,iuvar);
792 }
793}
794/* LINUX */
795void st_userlib_userwis_ini_(char * rootn,int* rootlen,int * iuparam,int*numnod,int * itab,my_real *x ,my_real *v,
796 my_real *vr,my_real *mass,my_real *iner,int *nuvar ,int *nuvari ,
797 my_real *uvar ,int *iuvar){
798 if (st_userwis_ini){
799 (*st_userwis_ini)(rootn,rootlen,iuparam,numnod,itab, x ,v,
800 vr,mass,iner,nuvar ,nuvari ,
801 uvar ,iuvar);
802 }
803}
804
805/* ----------------------------- */
806/* Starter User Module info seek */
807/* ----------------------------- */
808/* WINDOWS */
809void _FCALL ST_GET_USERBUF_VAR(int * id, char * title)
810{
812 (*st_get_userbuf_variable)(id,title);
813 }
814}
815/* LINUX */
816void st_get_userbuf_var_(int * id, char * title)
817{
819 (*st_get_userbuf_variable)(id,title);
820 }
821}
822
823
824
825
826void delete_user_file_(char * filnam,int * len)
827{
828 int i;
829 char * filn;
830 filn = (char*)malloc(sizeof(char)* 1+ *len);
831 for (i=0;i< *len ; i++){
832 filn[i]=filnam[i];
833 }
834 filn[*len]='\0';
835
836 remove(filn);
837 free(filn);
838}
839
840void _FCALL DELETE_USER_FILE(char * filnam,int * len)
841{
842 int i;
843 char * filn;
844 filn = (char*)malloc(sizeof(char)* 1+ *len);
845 for (i=0;i< *len ; i++){
846 filn[i]=filnam[i];
847 }
848 filn[*len]='\0';
849
850 remove(filn);
851 free(filn);
852}
#define my_real
Definition cppsort.cpp:32
char load_libname[20000]
Definition h3d_dl.c:66
#define _FCALL
initmumps id
#define ROOTLEN
Definition rad2rad_c.c:92
void st_userlib_usermat_(int *MATNUM, char *ROOTN, int *ROOTLEN, my_real *UPARAM, int *MAXUPARAM, int *NUPARAM, int *NUVAR, int *IFUNC, int *MAXFUNC, int *MFUNC, my_real *PARMAT, int *UNITAB)
void st_array_init_()
Definition dyn_userlib.c:99
void init_callback(void **callback_array)
HINSTANCE userlibhandler
void(* st_lecm)(int *ilaw, char *rootn, int *rootlen, my_real *uparam, int *maxuparam, int *nuparam, int *nuvar, int *ifunc, int *maxfunc, int *mfunc, my_real *parmat, int *unitab)
Definition dyn_userlib.c:65
void st_userlib_lecguser_(int *igtyp, char *rootn, int *rootlen, int *nuvar, my_real *pargeo)
void _FCALL ST_USERLIB_SINIUSR(int *ITYP, char *ROOTN, int *ROOTLEN, int *NEL, int *NUVAR, int *IPROP, int *IMAT, int *SOLID_ID, my_real *TIME, my_real *TIMESTEP, my_real *EINT, my_real *VOL, my_real *UVAR, my_real *FR_WAVE, my_real *OFF, my_real *RHO, my_real *SIG, my_real *XX1, my_real *XX2, my_real *XX3, my_real *XX4, my_real *XX5, my_real *XX6, my_real *XX7, my_real *XX8, my_real *YY1, my_real *YY2, my_real *YY3, my_real *YY4, my_real *YY5, my_real *YY6, my_real *YY7, my_real *YY8, my_real *ZZ1, my_real *ZZ2, my_real *ZZ3, my_real *ZZ4, my_real *ZZ5, my_real *ZZ6, my_real *ZZ7, my_real *ZZ8, my_real *UX1, my_real *UX2, my_real *UX3, my_real *UX4, my_real *UX5, my_real *UX6, my_real *UX7, my_real *UX8, my_real *UY1, my_real *UY2, my_real *UY3, my_real *UY4, my_real *UY5, my_real *UY6, my_real *UY7, my_real *UY8, my_real *UZ1, my_real *UZ2, my_real *UZ3, my_real *UZ4, my_real *UZ5, my_real *UZ6, my_real *UZ7, my_real *UZ8, my_real *VX1, my_real *VX2, my_real *VX3, my_real *VX4, my_real *VX5, my_real *VX6, my_real *VX7, my_real *VVX8, my_real *VY1, my_real *VY2, my_real *VY3, my_real *VY4, my_real *VY5, my_real *VY6, my_real *VY7, my_real *VVY8, my_real *VZ1, my_real *VZ2, my_real *VZ3, my_real *VZ4, my_real *VZ5, my_real *VZ6, my_real *VZ7, my_real *VVZ8, my_real *VRX1, my_real *VRX2, my_real *VRX3, my_real *VRX4, my_real *VRX5, my_real *VRX6, my_real *VRX7, my_real *VVRX8, my_real *VRY1, my_real *VRY2, my_real *VRY3, my_real *VRY4, my_real *VRY5, my_real *VRY6, my_real *VRY7, my_real *VVRY8, my_real *VRZ1, my_real *VRZ2, my_real *VRZ3, my_real *VRZ4, my_real *VRZ5, my_real *VRZ6, my_real *VRZ7, my_real *VVRZ8, my_real *FX1, my_real *FX2, my_real *FX3, my_real *FX4, my_real *FX5, my_real *FX6, my_real *FX7, my_real *VFX8, my_real *FY1, my_real *FY2, my_real *FY3, my_real *FY4, my_real *FY5, my_real *FY6, my_real *FY7, my_real *VFY8, my_real *FZ1, my_real *FZ2, my_real *FZ3, my_real *FZ4, my_real *FZ5, my_real *FZ6, my_real *FZ7, my_real *VFZ8, my_real *MX1, my_real *MX2, my_real *MX3, my_real *MX4, my_real *MX5, my_real *MX6, my_real *MX7, my_real *VMX8, my_real *MY1, my_real *MY2, my_real *MY3, my_real *MY4, my_real *MY5, my_real *MY6, my_real *MY7, my_real *MY8, my_real *MZ1, my_real *MZ2, my_real *MZ3, my_real *MZ4, my_real *MZ5, my_real *MZ6, my_real *MZ7, my_real *MZ8, my_real *STIFM, my_real *STIFR, my_real *VISCM, my_real *VISCR)
void(* userlib_id)(int *info)
Definition dyn_userlib.c:97
void st_userlib_userwis_(char *rootn, int *rootlen, int *numnod, int *itab, my_real *x, my_real *v, my_real *vr, my_real *mass, my_real *iner, int *nuvar, int *nuvari, my_real *uvar, int *iuvar)
void st_userlib_lecg_(int *igtyp, char *rootn, int *rootlen, int *nuvar, my_real *pargeo)
void _FCALL ST_USERLIB_LECR(int *RUPTID, char *ROOTN, int *ROOTLEN, my_real *UPARAM, int *MAXUPARAM, int *NUPARAM, int *NUVAR, int *IFUNC, int *MAXFUNC, int *MFUNC, int *ID)
void _FCALL ST_USERLIB_LECGUSER(int *igtyp, char *rootn, int *rootlen, int *nuvar, my_real *pargeo)
void(* st_lecg)(int *igtyp, char *rootn, int *rootlen, int *nuvar, my_real *pargeo)
Definition dyn_userlib.c:63
void _FCALL ST_USERLIB_LECSEN(int *typ, char *rootn, int *rootlen)
void _FCALL ST_USERLIB_USERMAT(int *MATNUM, char *ROOTN, int *ROOTLEN, my_real *UPARAM, int *MAXUPARAM, int *NUPARAM, int *NUVAR, int *IFUNC, int *MAXFUNC, int *MFUNC, my_real *PARMAT, int *UNITAB)
void(* st_riniuser)(int *igtyp, char *rootn, int *rootlen, int *nel, int *iprop, int *ix, my_real *xl, my_real *mass, my_real *xiner, my_real *stifn, my_real *stifr, my_real *vism, my_real *visr, my_real *uvar, int *nuvar)
Definition dyn_userlib.c:69
void _FCALL ST_USERLIB_LECM99(int *ilaw, char *rootn, int *rootlen, int *iuser_law, my_real *uparam, int *maxuparam, int *nuparam, int *nuvar, int *ifunc, int *maxfunc, int *nfunc, my_real *parmat)
void st_get_userbuf_var_(int *id, char *title)
void _FCALL ST_USERLIB_USERWIS(char *rootn, int *rootlen, int *numnod, int *itab, my_real *x, my_real *v, my_real *vr, my_real *mass, my_real *iner, int *nuvar, int *nuvari, my_real *uvar, int *iuvar)
void st_userlib_lecr_(int *RUPTID, char *ROOTN, int *ROOTLEN, my_real *UPARAM, int *MAXUPARAM, int *NUPARAM, int *NUVAR, int *IFUNC, int *MAXFUNC, int *MFUNC, int *ID)
void delete_user_file_(char *filnam, int *len)
void dll_init_callback()
void _FCALL ST_USERLIB_USERWIS_INI(char *rootn, int *rootlen, int *iuparam, int *numnod, int *itab, my_real *x, my_real *v, my_real *vr, my_real *mass, my_real *iner, int *nuvar, int *nuvari, my_real *uvar, int *iuvar)
void(* set_library_callback)(void *callback_array[200])
void _FCALL ST_GET_USERBUF_VAR(int *id, char *title)
void(* st_lecm99)(int *ilaw, char *rootn, int *rootlen, int *iuser_law, my_real *uparam, int *maxuparam, int *nuparam, int *nuvar, int *ifunc, int *maxfunc, int *nfunc, my_real *parmat)
Definition dyn_userlib.c:67
void(* st_userwis)(char *rootn, int *rootlen, int *numnod, int *itab, my_real *x, my_real *v, my_real *vr, my_real *mass, my_real *iner, int *nuvar, int *nuvari, my_real *uvar, int *iuvar)
Definition dyn_userlib.c:70
void _FCALL DYN_USERLIB_INIT(char *libname, int *size, int *userlib_avail, int *userlib_ver, int *iresp, int *userlib_altname)
void(* st_get_userbuf_variable)(int *id, char *title)
Definition dyn_userlib.c:95
void st_userlib_riniuser_(int *igtyp, char *rootn, int *rootlen, int *nel, int *iprop, int *ix, my_real *xl, my_real *mass, my_real *xiner, my_real *stifn, my_real *stifr, my_real *vism, my_real *visr, my_real *uvar, int *nuvar)
void st_userlib_userwis_ini_(char *rootn, int *rootlen, int *iuparam, int *numnod, int *itab, my_real *x, my_real *v, my_real *vr, my_real *mass, my_real *iner, int *nuvar, int *nuvari, my_real *uvar, int *iuvar)
void st_userlib_lecm99_(int *ilaw, char *rootn, int *rootlen, int *iuser_law, my_real *uparam, int *maxuparam, int *nuparam, int *nuvar, int *ifunc, int *maxfunc, int *nfunc, my_real *parmat)
void(* st_siniusr)(int *ITYP, char *ROOTN, int *ROOTLEN, int *NEL, int *NUVAR, int *IPROP, int *IMAT, int *SOLID_ID, my_real *TIME, my_real *TIMESTEP, my_real *EINT, my_real *VOL, my_real *UVAR, my_real *FR_WAVE, my_real *OFF, my_real *RHO, my_real *SIG, my_real *XX1, my_real *XX2, my_real *XX3, my_real *XX4, my_real *XX5, my_real *XX6, my_real *XX7, my_real *XX8, my_real *YY1, my_real *YY2, my_real *YY3, my_real *YY4, my_real *YY5, my_real *YY6, my_real *YY7, my_real *YY8, my_real *ZZ1, my_real *ZZ2, my_real *ZZ3, my_real *ZZ4, my_real *ZZ5, my_real *ZZ6, my_real *ZZ7, my_real *ZZ8, my_real *UX1, my_real *UX2, my_real *UX3, my_real *UX4, my_real *UX5, my_real *UX6, my_real *UX7, my_real *UX8, my_real *UY1, my_real *UY2, my_real *UY3, my_real *UY4, my_real *UY5, my_real *UY6, my_real *UY7, my_real *UY8, my_real *UZ1, my_real *UZ2, my_real *UZ3, my_real *UZ4, my_real *UZ5, my_real *UZ6, my_real *UZ7, my_real *UZ8, my_real *VX1, my_real *VX2, my_real *VX3, my_real *VX4, my_real *VX5, my_real *VX6, my_real *VX7, my_real *VVX8, my_real *VY1, my_real *VY2, my_real *VY3, my_real *VY4, my_real *VY5, my_real *VY6, my_real *VY7, my_real *VVY8, my_real *VZ1, my_real *VZ2, my_real *VZ3, my_real *VZ4, my_real *VZ5, my_real *VZ6, my_real *VZ7, my_real *VVZ8, my_real *VRX1, my_real *VRX2, my_real *VRX3, my_real *VRX4, my_real *VRX5, my_real *VRX6, my_real *VRX7, my_real *VVRX8, my_real *VRY1, my_real *VRY2, my_real *VRY3, my_real *VRY4, my_real *VRY5, my_real *VRY6, my_real *VRY7, my_real *VVRY8, my_real *VRZ1, my_real *VRZ2, my_real *VRZ3, my_real *VRZ4, my_real *VRZ5, my_real *VRZ6, my_real *VRZ7, my_real *VVRZ8, my_real *FX1, my_real *FX2, my_real *FX3, my_real *FX4, my_real *FX5, my_real *FX6, my_real *FX7, my_real *VFX8, my_real *FY1, my_real *FY2, my_real *FY3, my_real *FY4, my_real *FY5, my_real *FY6, my_real *FY7, my_real *VFY8, my_real *FZ1, my_real *FZ2, my_real *FZ3, my_real *FZ4, my_real *FZ5, my_real *FZ6, my_real *FZ7, my_real *VFZ8, my_real *MX1, my_real *MX2, my_real *MX3, my_real *MX4, my_real *MX5, my_real *MX6, my_real *MX7, my_real *VMX8, my_real *MY1, my_real *MY2, my_real *MY3, my_real *MY4, my_real *MY5, my_real *MY6, my_real *MY7, my_real *MY8, my_real *MZ1, my_real *MZ2, my_real *MZ3, my_real *MZ4, my_real *MZ5, my_real *MZ6, my_real *MZ7, my_real *MZ8, my_real *STIFM, my_real *STIFR, my_real *VISCM, my_real *VISCR)
Definition dyn_userlib.c:72
void(* st_lecguser)(int *igtyp, char *rootn, int *rootlen, int *nuvar, my_real *pargeo)
Definition dyn_userlib.c:64
void(* st_lecr)(int *irupt, char *rootn, int *rootlen, my_real *uparam, int *maxuparam, int *nuparam, int *nuvar, int *ifunc, int *maxfunc, int *mfunc, int *id)
Definition dyn_userlib.c:66
void _FCALL DELETE_USER_FILE(char *filnam, int *len)
void(* st_lecsen)(int *typ, char *rootn, int *rootlen)
Definition dyn_userlib.c:68
void st_userlib_siniusr_(int *ITYP, char *ROOTN, int *ROOTLEN, int *NEL, int *NUVAR, int *IPROP, int *IMAT, int *SOLID_ID, my_real *TIME, my_real *TIMESTEP, my_real *EINT, my_real *VOL, my_real *UVAR, my_real *FR_WAVE, my_real *OFF, my_real *RHO, my_real *SIG, my_real *XX1, my_real *XX2, my_real *XX3, my_real *XX4, my_real *XX5, my_real *XX6, my_real *XX7, my_real *XX8, my_real *YY1, my_real *YY2, my_real *YY3, my_real *YY4, my_real *YY5, my_real *YY6, my_real *YY7, my_real *YY8, my_real *ZZ1, my_real *ZZ2, my_real *ZZ3, my_real *ZZ4, my_real *ZZ5, my_real *ZZ6, my_real *ZZ7, my_real *ZZ8, my_real *UX1, my_real *UX2, my_real *UX3, my_real *UX4, my_real *UX5, my_real *UX6, my_real *UX7, my_real *UX8, my_real *UY1, my_real *UY2, my_real *UY3, my_real *UY4, my_real *UY5, my_real *UY6, my_real *UY7, my_real *UY8, my_real *UZ1, my_real *UZ2, my_real *UZ3, my_real *UZ4, my_real *UZ5, my_real *UZ6, my_real *UZ7, my_real *UZ8, my_real *VX1, my_real *VX2, my_real *VX3, my_real *VX4, my_real *VX5, my_real *VX6, my_real *VX7, my_real *VVX8, my_real *VY1, my_real *VY2, my_real *VY3, my_real *VY4, my_real *VY5, my_real *VY6, my_real *VY7, my_real *VVY8, my_real *VZ1, my_real *VZ2, my_real *VZ3, my_real *VZ4, my_real *VZ5, my_real *VZ6, my_real *VZ7, my_real *VVZ8, my_real *VRX1, my_real *VRX2, my_real *VRX3, my_real *VRX4, my_real *VRX5, my_real *VRX6, my_real *VRX7, my_real *VVRX8, my_real *VRY1, my_real *VRY2, my_real *VRY3, my_real *VRY4, my_real *VRY5, my_real *VRY6, my_real *VRY7, my_real *VVRY8, my_real *VRZ1, my_real *VRZ2, my_real *VRZ3, my_real *VRZ4, my_real *VRZ5, my_real *VRZ6, my_real *VRZ7, my_real *VVRZ8, my_real *FX1, my_real *FX2, my_real *FX3, my_real *FX4, my_real *FX5, my_real *FX6, my_real *FX7, my_real *VFX8, my_real *FY1, my_real *FY2, my_real *FY3, my_real *FY4, my_real *FY5, my_real *FY6, my_real *FY7, my_real *VFY8, my_real *FZ1, my_real *FZ2, my_real *FZ3, my_real *FZ4, my_real *FZ5, my_real *FZ6, my_real *FZ7, my_real *VFZ8, my_real *MX1, my_real *MX2, my_real *MX3, my_real *MX4, my_real *MX5, my_real *MX6, my_real *MX7, my_real *VMX8, my_real *MY1, my_real *MY2, my_real *MY3, my_real *MY4, my_real *MY5, my_real *MY6, my_real *MY7, my_real *MY8, my_real *MZ1, my_real *MZ2, my_real *MZ3, my_real *MZ4, my_real *MZ5, my_real *MZ6, my_real *MZ7, my_real *MZ8, my_real *STIFM, my_real *STIFR, my_real *VISCM, my_real *VISCR)
void _FCALL ST_USERLIB_RINIUSER(int *igtyp, char *rootn, int *rootlen, int *nel, int *iprop, int *ix, my_real *xl, my_real *mass, my_real *xiner, my_real *stifn, my_real *stifr, my_real *vism, my_real *visr, my_real *uvar, int *nuvar)
void * userlibhandle
Definition dyn_userlib.c:61
void st_userlib_lecsen_(int *typ, char *rootn, int *rootlen)
void _FCALL ST_USERLIB_LECG(int *igtyp, char *rootn, int *rootlen, int *nuvar, my_real *pargeo)
void(* st_userwis_ini)(char *rootn, int *rootlen, int *iuparam, int *numnod, int *itab, my_real *x, my_real *v, my_real *vr, my_real *mass, my_real *iner, int *nuvar, int *nuvari, my_real *uvar, int *iuvar)
Definition dyn_userlib.c:71