OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
dyn_userlib_callback.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#ifdef MYREAL4
36#define my_real float
37#endif
38
39#ifdef MYREAL8
40#define my_real double
41#endif
42
43
44#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
45#include <windows.h>
46#include <process.h>
47#include <io.h>
48#include <sys\types.h>
49#include <sys/stat.h>
50#define _FCALL
51#elif 1
52#include <sys/resource.h>
53#include <sys/types.h>
54#include <time.h>
55#include <sys/stat.h>
56#include <unistd.h>
57#define _FCALL
58#endif
59
60#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
61void init_callback(void ** callback_array);
62
63extern int GET_U_NUMTABLE(int * tid);
64extern void GET_U_TABLE(int * itable,my_real *XX, my_real *YY);
65extern void GET_U_VTABLE(int * itable, int * nel0, int * ipos,my_real *XX, my_real*YY, my_real *DYDX1);
66extern void SET_U_SHLPLAS(int *USRNEL,my_real *SIGY,my_real *ETSE);
67extern void SET_U_SOLPLAS(int *USRNEL, my_real*SIGY, my_real*PLA);
68extern int GET_U_NUMSENS (int * idsens) ;
69extern int GET_U_SENS_ID (int * idsens);
70extern int SET_U_SENS_VALUE(int *nsens, int * ivar, my_real * var );
71extern int GET_U_SENS_VALUE(int *nsens, int * ivar, my_real * var ) ;
72extern int SET_U_SENS_MAXVALUE(int *nsens, int * ivar, my_real * var );
73extern int GET_U_SENS_FPAR(int *nsens, int * ivar, my_real * var ) ;
74extern int GET_U_SENS_IPAR(int *nsens, int * ivar, my_real * var );
75extern int SET_U_SENS_ACTI(int *nsens);
76extern int GET_U_SENS_ACTI(int *nsens) ;
77extern my_real GET_U_SENS(int *usens);
78extern my_real GET_U_SENS_DELAY(int *usens) ;
79extern my_real GET_U_MAT(int *ivar, int * im) ;
80extern my_real GET_U_GEO(int *ivar, int * ip) ;
81extern int GET_U_PNU(int *ivar, int * ip,int * k);
82extern int GET_U_MNU(int *ivar, int * ip,int * k);
83extern int GET_U_PID(int * ip) ;
84extern int GET_U_MID(int * im);
85extern int GET_U_M(int * mid) ;
86extern int GET_U_P(int * pid) ;
87extern int GET_U_PROC() ;
88extern int GET_U_TASK() ;
89extern int GET_U_FUNC_N(int * ifunc) ;
90extern my_real GET_U_FUNC_X(int * ifunc,int *n) ;
91extern my_real GET_U_FUNC_Y(int * ifunc,int *n) ;
92extern my_real GET_U_FUNC(int * ifunc,my_real *XX,my_real * DERI) ;
93extern void GET_V_FUNC(int * ifunc,int * llt,my_real * xx, my_real * dydx,int * jpos) ;
94extern int GET_U_NUMFUN(int * idfun) ;
95extern int GET_U_FID(int * ifun) ;
96extern int GET_U_CYCLE() ;
98extern my_real GET_U_ACCEL(int * nacc, my_real * ax, my_real * ay, my_real * az);
99extern int GET_U_NUMACC(int * idacc) ;
100extern int GET_U_NUMNOD(int * iu) ;
101extern int GET_U_NOD_X(int * nod, my_real * x, my_real * y, my_real * z) ;
102extern int GET_U_NOD_D(int * nod, my_real * dx, my_real * dy, my_real * dz);
103extern int GET_U_NOD_V(int * nod, my_real * vx, my_real * vy, my_real * vz) ;
104extern int GET_U_NOD_A(int * nod, my_real * ax, my_real * ay, my_real * az) ;
105extern int GET_U_SKEW(int * idskw, int * n1,int* n2, int* n3, my_real * vect) ;
106extern my_real GET_U_UVAR(int * iel, int * ilayer,int* ivar, int* nuvar);
107extern void SET_SPRING_ELNUM(int * jft, int * jlt,int* ixr) ;
108extern int GET_SPRING_ELNUM(int * iel) ;
109extern int SET_U_GEO(int *ivar,my_real *a);
110extern int SET_U_PNU(int *ivar, int * ip,int * k);
111extern int RESET_U_GEO(int *ivar, int * ip,my_real * a);
112extern my_real GET_U_FUNC_DERI(int * ifunc);
113extern int SET_U_SENS_IPAR(int *ivar, int * var);
114extern int SET_U_SENS_FPAR(int * ivar,my_real * var);
115extern double FINTER (int *ifunc , double * XX, int* NPF, double *TF,double *DERI);
116extern void WRITE_IOUT(char* line,int* len);
117extern void ARRET(int *mode);
118extern int SET_U_SENS_DEACTI(int *nsens);
119extern void GET_TABLE_VALUE(int * itable,my_real *XX, int* xxdim, my_real *YY);
120extern void GET_VTABLE_VALUE(int *ITABLE,int * NEL0,int *IPOS,my_real *XX,int *XXDIM,my_real *YY,my_real *DYDX1) ;
121extern void MAT_SOLID_GET_NOD_X(my_real * USER_X);
122extern void MAT_SOLID_GET_NOD_V(my_real * USER_V);
123extern void USERWINDOW_GET_A(double * A_BUF);
124extern void USERWINDOW_GET_AR(double * AR_BUF);
125extern void GET_TABLE_VALUE_DYDX(int *ITABLE, double *XX, double *XXDIM, double *YY, double *DXDY);
126extern void GET_USER_WINDOW_NODES(int *INTERNAL_ID,int *USER_ID);
127
128void init_callback(void ** callback_array){
129
130/* initialize all pointers in an Array */
131 callback_array[ 0]= FINTER;
132 callback_array[ 1]= GET_U_NUMTABLE;
133 callback_array[ 2]= GET_U_TABLE;
134 callback_array[ 3]= GET_U_VTABLE;
135 callback_array[ 4]= SET_U_SHLPLAS;
136 callback_array[ 5]= SET_U_SOLPLAS;
137 callback_array[ 8]= GET_U_NUMSENS;
138 callback_array[ 9]= GET_U_SENS_ID;
139 callback_array[10]= SET_U_SENS_VALUE;
140 callback_array[11]= GET_U_SENS_VALUE;
141 callback_array[12]= SET_U_SENS_MAXVALUE;
142 callback_array[13]= GET_U_SENS_FPAR;
143 callback_array[14]= GET_U_SENS_IPAR;
144 callback_array[15]= SET_U_SENS_ACTI;
145 callback_array[16]= GET_U_SENS_ACTI;
146 callback_array[17]= GET_U_SENS;
147 callback_array[18]= GET_U_SENS_DELAY;
148 callback_array[19]= GET_U_MAT;
149 callback_array[20]= GET_U_GEO;
150 callback_array[21]= GET_U_PNU;
151 callback_array[22]= GET_U_MNU;
152 callback_array[23]= GET_U_PID;
153 callback_array[24]= GET_U_MID;
154 callback_array[25]= GET_U_M;
155 callback_array[26]= GET_U_P;
156 callback_array[27]= GET_U_PROC;
157 callback_array[28]= GET_U_TASK;
158 callback_array[29]= GET_U_FUNC_N;
159 callback_array[30]= GET_U_FUNC_X;
160 callback_array[31]= GET_U_FUNC_Y;
161 callback_array[32]= GET_U_FUNC;
162 callback_array[33]= GET_V_FUNC ;
163 callback_array[34]= GET_U_NUMFUN;
164 callback_array[35]= GET_U_FID;
165 callback_array[36]= GET_U_CYCLE;
166 callback_array[37]= GET_U_TIME;
167 callback_array[38]= GET_U_ACCEL;
168 callback_array[39]= GET_U_NUMACC;
169 callback_array[40]= GET_U_NUMNOD;
170 callback_array[41]= GET_U_NOD_X;
171 callback_array[42]= GET_U_NOD_D;
172 callback_array[43]= GET_U_NOD_V ;
173 callback_array[44]= GET_U_NOD_A ;
174 callback_array[45]= GET_U_SKEW;
175 callback_array[46]= GET_U_UVAR;
176 callback_array[47]= SET_SPRING_ELNUM;
177 callback_array[48]= GET_SPRING_ELNUM ;
178/* callback_array[49]= SET_U_GEO; STARTER ROUTINE*/
179/* callback_array[50]= SET_U_PNU; STARTER ROUTINE*/
180/* callback_array[51]= RESET_U_GEO; STARTER ROUTINE*/
181/* callback_array[52]= GET_U_FUNC_DERI; STARTER ROUTINE*/
182/* callback_array[53]= SET_U_SENS_IPAR; STARTER ROUTINE*/
183/* callback_array[54]= SET_U_SENS_FPAR; STARTER ROUTINE*/
184 callback_array[55]= WRITE_IOUT;
185/*callback_array[56]= SET_DD_MAT_WEIGHT; */
186/*callback_array[57]=UELT_SPMD_ADDITIONZL_NODE*/
187 callback_array[58] = ARRET;
188 callback_array[59] = SET_U_SENS_DEACTI;
189 callback_array[60] = GET_TABLE_VALUE;
190 callback_array[61] = GET_VTABLE_VALUE;
191 callback_array[62] = MAT_SOLID_GET_NOD_X;
192 callback_array[63] = MAT_SOLID_GET_NOD_V;
193 callback_array[64] = USERWINDOW_GET_A;
194 callback_array[65] = USERWINDOW_GET_AR;
195// callback_array[66] = RAD_UMAT_INPUT_OPEN; STARTER ROUTINE
196// callback_array[67] = RAD_UMAT_INPUT_READ; STARTER ROUTINE
197// callback_array[68] = RAD_UMAT_INPUT_REWIND; STARTER ROUTINE
198// callback_array[69] = RAD_UMAT_CLOSE_INPUT; STARTER ROUTINE
199 callback_array[71] = GET_TABLE_VALUE_DYDX;
200// callback_array[72] = SET_USER_WINDOW_NODES; STARTER ROUTINE
201 callback_array[73] = GET_USER_WINDOW_NODES;
202}
203#elif 1
204void init_callback(){
205 return ;
206}
207
208#endif
#define my_real
Definition cppsort.cpp:32
return
Definition dmumps.m:15
my_real GET_U_SENS(int *usens)
int SET_U_SENS_ACTI(int *nsens)
int GET_U_NUMSENS(int *idsens)
int GET_U_SENS_VALUE(int *nsens, int *ivar, my_real *var)
void init_callback(void **callback_array)
int GET_U_MNU(int *ivar, int *ip, int *k)
void SET_U_SOLPLAS(int *USRNEL, my_real *SIGY, my_real *PLA)
int GET_U_SENS_ID(int *idsens)
void GET_VTABLE_VALUE(int *ITABLE, int *NEL0, int *IPOS, my_real *XX, int *XXDIM, my_real *YY, my_real *DYDX1)
int GET_U_SENS_IPAR(int *nsens, int *ivar, my_real *var)
int SET_U_GEO(int *ivar, my_real *a)
void SET_U_SHLPLAS(int *USRNEL, my_real *SIGY, my_real *ETSE)
void GET_TABLE_VALUE_DYDX(int *ITABLE, double *XX, double *XXDIM, double *YY, double *DXDY)
int SET_U_SENS_MAXVALUE(int *nsens, int *ivar, my_real *var)
my_real GET_U_FUNC_X(int *ifunc, int *n)
my_real GET_U_ACCEL(int *nacc, my_real *ax, my_real *ay, my_real *az)
int GET_U_NOD_D(int *nod, my_real *dx, my_real *dy, my_real *dz)
int GET_SPRING_ELNUM(int *iel)
int SET_U_PNU(int *ivar, int *ip, int *k)
void GET_V_FUNC(int *ifunc, int *llt, my_real *xx, my_real *dydx, int *jpos)
int GET_U_PID(int *ip)
int GET_U_PROC()
void ARRET(int *mode)
int GET_U_M(int *mid)
my_real GET_U_SENS_DELAY(int *usens)
my_real GET_U_MAT(int *ivar, int *im)
void GET_U_VTABLE(int *itable, int *nel0, int *ipos, my_real *XX, my_real *YY, my_real *DYDX1)
int GET_U_SKEW(int *idskw, int *n1, int *n2, int *n3, my_real *vect)
int RESET_U_GEO(int *ivar, int *ip, my_real *a)
int GET_U_FID(int *ifun)
my_real GET_U_UVAR(int *iel, int *ilayer, int *ivar, int *nuvar)
int GET_U_FUNC_N(int *ifunc)
void USERWINDOW_GET_A(double *A_BUF)
int SET_U_SENS_VALUE(int *nsens, int *ivar, my_real *var)
void MAT_SOLID_GET_NOD_V(my_real *USER_V)
my_real GET_U_FUNC_Y(int *ifunc, int *n)
int GET_U_MID(int *im)
void SET_SPRING_ELNUM(int *jft, int *jlt, int *ixr)
int GET_U_SENS_FPAR(int *nsens, int *ivar, my_real *var)
void GET_TABLE_VALUE(int *itable, my_real *XX, int *xxdim, my_real *YY)
int GET_U_NUMFUN(int *idfun)
int GET_U_CYCLE()
int SET_U_SENS_DEACTI(int *nsens)
void WRITE_IOUT(char *line, int *len)
void USERWINDOW_GET_AR(double *AR_BUF)
my_real GET_U_FUNC_DERI(int *ifunc)
int GET_U_NUMACC(int *idacc)
int GET_U_NOD_A(int *nod, my_real *ax, my_real *ay, my_real *az)
my_real GET_U_FUNC(int *ifunc, my_real *XX, my_real *DERI)
void GET_USER_WINDOW_NODES(int *INTERNAL_ID, int *USER_ID)
void MAT_SOLID_GET_NOD_X(my_real *USER_X)
my_real GET_U_TIME()
int GET_U_PNU(int *ivar, int *ip, int *k)
int SET_U_SENS_IPAR(int *ivar, int *var)
int GET_U_NUMTABLE(int *tid)
int GET_U_NUMNOD(int *iu)
double FINTER(int *ifunc, double *XX, int *NPF, double *TF, double *DERI)
int GET_U_TASK()
int SET_U_SENS_FPAR(int *ivar, my_real *var)
my_real GET_U_GEO(int *ivar, int *ip)
void GET_U_TABLE(int *itable, my_real *XX, my_real *YY)
int GET_U_NOD_X(int *nod, my_real *x, my_real *y, my_real *z)
int GET_U_SENS_ACTI(int *nsens)
int GET_U_P(int *pid)
int GET_U_NOD_V(int *nod, my_real *vx, my_real *vy, my_real *vz)
n
my_real GET_U_SENS(int *usens)
int SET_U_SENS_ACTI(int *nsens)
int GET_U_NUMSENS(int *idsens)
int GET_U_SENS_VALUE(int *nsens, int *ivar, my_real *var)
int GET_U_MNU(int *ivar, int *ip, int *k)
void SET_U_SOLPLAS(int *USRNEL, my_real *SIGY, my_real *PLA)
int GET_U_SENS_ID(int *idsens)
int GET_U_SENS_IPAR(int *nsens, int *ivar, my_real *var)
void SET_U_SHLPLAS(int *USRNEL, my_real *SIGY, my_real *ETSE)
int SET_U_SENS_MAXVALUE(int *nsens, int *ivar, my_real *var)
my_real GET_U_FUNC_X(int *ifunc, int *n)
my_real GET_U_ACCEL(int *nacc, my_real *ax, my_real *ay, my_real *az)
int GET_U_NOD_D(int *nod, my_real *dx, my_real *dy, my_real *dz)
int GET_SPRING_ELNUM(int *iel)
void GET_V_FUNC(int *ifunc, int *llt, my_real *xx, my_real *dydx, int *jpos)
int GET_U_PID(int *ip)
int GET_U_PROC()
int GET_U_M(int *mid)
my_real GET_U_SENS_DELAY(int *usens)
my_real GET_U_MAT(int *ivar, int *im)
void GET_U_VTABLE(int *itable, int *nel0, int *ipos, my_real *XX, my_real *YY, my_real *DYDX1)
int GET_U_SKEW(int *idskw, int *n1, int *n2, int *n3, my_real *vect)
int GET_U_FID(int *ifun)
my_real GET_U_UVAR(int *iel, int *ilayer, int *ivar, int *nuvar)
int GET_U_FUNC_N(int *ifunc)
int SET_U_SENS_VALUE(int *nsens, int *ivar, my_real *var)
my_real GET_U_FUNC_Y(int *ifunc, int *n)
int GET_U_MID(int *im)
void SET_SPRING_ELNUM(int *jft, int *jlt, int *ixr)
int GET_U_SENS_FPAR(int *nsens, int *ivar, my_real *var)
int GET_U_NUMFUN(int *idfun)
int GET_U_CYCLE()
void WRITE_IOUT(char *line, int *len)
int GET_U_NUMACC(int *idacc)
int GET_U_NOD_A(int *nod, my_real *ax, my_real *ay, my_real *az)
my_real GET_U_FUNC(int *ifunc, my_real *XX, my_real *DERI)
my_real GET_U_TIME()
int GET_U_PNU(int *ivar, int *ip, int *k)
int GET_U_NUMTABLE(int *tid)
int GET_U_NUMNOD(int *iu)
double FINTER(int *ifunc, double *XX, int *NPF, double *TF, double *DERI)
int GET_U_TASK()
my_real GET_U_GEO(int *ivar, int *ip)
void GET_U_TABLE(int *itable, my_real *XX, my_real *YY)
int GET_U_NOD_X(int *nod, my_real *x, my_real *y, my_real *z)
int GET_U_SENS_ACTI(int *nsens)
int GET_U_P(int *pid)
int GET_U_NOD_V(int *nod, my_real *vx, my_real *vy, my_real *vz)
void ARRET(int *n)