44#include <sys/resource.h>
56#include "h3dpublic_defs.h"
57#include "h3dpublic_export.h"
61#include "h3d_values.h"
69void c_h3d_create_rbodies_(
int *ITAB,
int *NUMNOD,
int *NPBY,
int *NNPBY,
int *LPBY,
int *NRBODY,
int *COMPID_RBODIES)
79 char RBODYPOOL[] =
"Rbody";
83 char RIGIDPOOL[] =
"Rigid";
87 unsigned int elem_count = 1;
92 if(*COMPID_RBODIES != 0 && *NRBODY != 0)
95 H3D_ELEM_CONFIG_RIGIDLINK, *COMPID_RBODIES,
97 for(i=0;i<*NRBODY;i++)
99 elem_id = NPBY[*NNPBY * i + 5];
100 nsn = NPBY[*NNPBY * i + 1];
103 conn =(
unsigned int *)malloc(nsn*
sizeof(
unsigned int));
104 coef =(
double *)malloc(nsn*
sizeof(
double));
105 for(
int n=0;
n < nsn ;
n++){coef[
n] = 0.0;}
107 dof =(
int *)malloc(nsn*
sizeof(
int));
111 conn[j] = ITAB[LPBY[NPBY[*NNPBY * i + 10] + j ] - 1 ];
115 RigidElem = NPBY[*NNPBY * i + 5] ;
117 unsigned int conn1[1];
118 double coef1[1] = {1.0};
120 conn1[0] = ITAB[NPBY[*NNPBY * i]-1];
137 for(i=0;i<*NRBODY;i++)
139 elem_id = NPBY[*NNPBY * i + 5];
140 nsn = NPBY[*NNPBY * i + 1];
143 conn =(
unsigned int *)malloc(nsn*
sizeof(
unsigned int));
144 coef =(
double *)malloc(nsn*
sizeof(
double));
145 for(
int n=0;
n < nsn ;
n++){coef[
n] = 0.0;}
147 dof =(
int *)malloc(nsn*
sizeof(
int));
151 conn[j] = ITAB[LPBY[NPBY[*NNPBY * i + 10] + j ] - 1 ];
155 RigidElem = NPBY[*NNPBY * i + 5] ;
157 unsigned int conn1[1];
158 double coef1[1] = {1.0};
160 conn1[0] = ITAB[NPBY[*NNPBY * i]-1];
164 H3D_ELEM_CONFIG_RIGIDLINK, RigidElem,
194void c_h3d_create_rbodies (
int *ITAB,
int *NUMNOD,
int *NPBY,
int *NNPBY,
int *LPBY,
int *NRBODY,
int *COMPID_RBODIES)
201void c_h3d_create_rbodies_impi_(
int *ITAB,
int *NRBYKIN,
int *MASTERND,
int *ID_RBY,
int *PTRPO,
int *PTRPOO,
int *PORBY,
int *NSPMD,
int *COMPID_RBODIES)
204 int * PTRPO_TMP =
new int [*NSPMD + 1];
211 int i,j,
n,p,nsn,nsn_loc,ptr;
214 char RBODYPOOL[] =
"Rbody";
218 char RIGIDPOOL[] =
"Rigid";
225 unsigned int elem_count = 1;
227 for(i=0;i<*NSPMD + 1;i++)
229 PTRPO_TMP[i] = PTRPO[i];
232 if(*COMPID_RBODIES != 0 && *NRBYKIN != 0)
235 H3D_ELEM_CONFIG_RIGIDLINK, *COMPID_RBODIES,
237 for(i=0;i<*NRBYKIN;i++)
240 RigidElem = MASTERND[i] + 1 ;
243 for(p=0;p<*NSPMD;p++)
246 if(ptr < PTRPOO[p+1])
248 if(PORBY[ptr-1] == i+1)
250 nsn = nsn + PORBY[ptr];
252 PTRPO_TMP[p]=PTRPO_TMP[p] + nsn + 2;
257 conn =(
unsigned int *)malloc(nsn*
sizeof(
unsigned int));
258 coef =(
double *)malloc(nsn*
sizeof(
double));
259 dof =(
int *)malloc(nsn*
sizeof(
int));
261 for(
n=0;
n < nsn ;
n++){coef[
n] = 0.0; dof[
n]=0; conn[
n]=0;}
262 unsigned int conn1[1];
264 double coef1[1] = {1.0};
267 conn1[0] = RigidElem;
270 for(p=0;p<*NSPMD;p++)
273 if(ptr < PTRPOO[p+1])
275 if(PORBY[ptr - 1] == i+1)
277 nsn_loc = PORBY[ptr];
279 for(
n=0;
n<nsn_loc;
n++)
281 conn[j] = PORBY[ptr+
n-1] + 1;
285 PTRPO[p]=PTRPO[p] + nsn + 2;
306 for(i=0;i<*NRBYKIN;i++)
309 RigidElem = MASTERND[i] + 1 ;
312 for(p=0;p<*NSPMD;p++)
315 if(ptr < PTRPOO[p+1])
317 if(PORBY[ptr-1] == i+1)
319 nsn = nsn + PORBY[ptr];
321 PTRPO_TMP[p]=PTRPO_TMP[p] + nsn + 2;
328 conn =(
unsigned int *)malloc(nsn*
sizeof(
unsigned int));
329 coef =(
double *)malloc(nsn*
sizeof(
double));
330 dof =(
int *)malloc(nsn*
sizeof(
int));
332 for(
n=0;
n < nsn ;
n++){coef[
n] = 0.0; dof[
n]=0; conn[
n]=0;}
333 unsigned int conn1[1];
335 double coef1[1] = {1.0};
338 conn1[0] = RigidElem;
341 for(p=0;p<*NSPMD;p++)
344 if(ptr < PTRPOO[p+1])
346 if(PORBY[ptr - 1] == i+1)
348 nsn_loc = PORBY[ptr];
350 for(
n=0;
n<nsn_loc;
n++)
352 conn[j] = PORBY[ptr+
n-1] + 1;
356 PTRPO[p]=PTRPO[p] + nsn + 2;
365 H3D_ELEM_CONFIG_RIGIDLINK, elem_id,
392void c_h3d_create_rbodies_impi__ (
int *ITAB ,
int *NRBYKIN,
int *MASTERND,
int *ID_RBY,
int *PTRPO,
int *PTRPOO,
int *PORBY,
int *NSPMD,
int *COMPID_RBODIES)
395void c_h3d_create_rbodies_impi (
int *ITAB,
int *NRBYKIN,
int *MASTERND,
int *ID_RBY,
int *PTRPO,
int *PTRPOO,
int *PORBY,
int *NSPMD,
int *COMPID_RBODIES)
void _FCALL C_H3D_CREATE_RBODIES_IMPI(int *ITAB, int *NRBYKIN, int *MASTERND, int *ID_RBY, int *PTRPO, int *PTRPOO, int *PORBY, int *NSPMD, int *COMPID_RBODIES)
void _FCALL C_H3D_CREATE_RBODIES(int *ITAB, int *NUMNOD, int *NPBY, int *NNPBY, int *LPBY, int *NRBODY, int *COMPID_RBODIES)
void c_h3d_create_rbodies__(int *ITAB, int *NUMNOD, int *NPBY, int *NNPBY, int *LPBY, int *NRBODY, int *COMPID_RBODIES)
void c_h3d_create_rbodies_impi(int *ITAB, int *NRBYKIN, int *MASTERND, int *ID_RBY, int *PTRPO, int *PTRPOO, int *PORBY, int *NSPMD, int *COMPID_RBODIES)
void c_h3d_create_rbodies(int *ITAB, int *NUMNOD, int *NPBY, int *NNPBY, int *LPBY, int *NRBODY, int *COMPID_RBODIES)
void c_h3d_create_rbodies_(int *ITAB, int *NUMNOD, int *NPBY, int *NNPBY, int *LPBY, int *NRBODY, int *COMPID_RBODIES)
void c_h3d_create_rbodies_impi_(int *ITAB, int *NRBYKIN, int *MASTERND, int *ID_RBY, int *PTRPO, int *PTRPOO, int *PORBY, int *NSPMD, int *COMPID_RBODIES)
void c_h3d_create_rbodies_impi__(int *ITAB, int *NRBYKIN, int *MASTERND, int *ID_RBY, int *PTRPO, int *PTRPOO, int *PORBY, int *NSPMD, int *COMPID_RBODIES)
bool Hyper3DElement2Write(H3DFileInfo *h3d_file, H3D_ID id, unsigned int *inode, int *idof, double *icoeff, unsigned int num_inodes, unsigned int *dnode, int *ddof, double *dcoeff, unsigned int num_dnodes)
bool Hyper3DAddString(H3DFileInfo *h3d_file, const char *const string, H3D_ID *const str_id)
bool Hyper3DExportClearError(H3DFileInfo *h3d_file)
bool Hyper3DElement2End(H3DFileInfo *h3d_file)
bool Hyper3DElement2Begin(H3DFileInfo *h3d_file, unsigned int count, H3D_ID poolname_id, H3D_ElementConfig config, H3D_ID parent_id, H3D_ID parent_poolname_id, H3D_ID node_poolname_id)