int globalFrictionContact_fclib_write( GlobalFrictionContactProblem* problem, char * title, char * description, char * mathInfo, const char *path) { int rinfo = 0; /* globalFrictionContact_display(problem); */ /* FILE * file = fopen("toto.dat", "w"); */ /* globalFrictionContact_printInFile(problem, file); */ DEBUG_PRINT("construcion of fclib_problem\n"); struct fclib_global *fclib_problem; fclib_problem = malloc(sizeof(struct fclib_global)); fclib_problem->info = malloc(sizeof(struct fclib_info)) ; fclib_problem->info->title = title; fclib_problem->info->description = description; fclib_problem->info->math_info = mathInfo; fclib_problem->spacedim = problem->dimension; fclib_problem->mu = problem->mu; fclib_problem->w = problem->b; fclib_problem->f = problem->q; /* only sparse storage */ assert(problem->M->matrix2); assert(problem->H->matrix2); /* only coordinates (triplet) */ if (problem->M->matrix2->triplet) { fclib_problem->M = malloc(sizeof(struct fclib_matrix)); fclib_problem->M->n = (int) problem->M->matrix2->triplet->n; fclib_problem->M->m = (int) problem->M->matrix2->triplet->m; fclib_problem->M->nzmax= (int) problem->M->matrix2->triplet->nzmax; fclib_problem->M->p= (int*) malloc(sizeof(int)*(problem->M->matrix2->triplet->nzmax)); csi_to_int(problem->M->matrix2->triplet->p, fclib_problem->M->p, (unsigned) problem->M->matrix2->triplet->nzmax); fclib_problem->M->i= (int*) malloc(sizeof(int)*(problem->M->matrix2->triplet->nzmax)); csi_to_int(problem->M->matrix2->triplet->i, fclib_problem->M->i, (unsigned) problem->M->matrix2->triplet->nzmax); fclib_problem->M->x= problem->M->matrix2->triplet->x; fclib_problem->M->nz= (int) problem->M->matrix2->triplet->nz; fclib_problem->M->info=NULL; } else { fprintf(stderr, "globalFrictionContact_fclib_write only implemented for triplet storage.\n"); exit(EXIT_FAILURE); ; } if (problem->H->matrix2->triplet) { fclib_problem->H = malloc(sizeof(struct fclib_matrix)); fclib_problem->H->n = (int) problem->H->matrix2->triplet->n; fclib_problem->H->m = (int) problem->H->matrix2->triplet->m; fclib_problem->H->nzmax= (int) problem->H->matrix2->triplet->nzmax; fclib_problem->H->p= (int*) malloc(sizeof(int)*problem->H->matrix2->triplet->nzmax); csi_to_int(problem->H->matrix2->triplet->p, fclib_problem->H->p, (unsigned) problem->H->matrix2->triplet->nzmax); fclib_problem->H->i= (int*) malloc(sizeof(int)*problem->H->matrix2->triplet->nzmax); csi_to_int(problem->H->matrix2->triplet->i, fclib_problem->H->i, (unsigned) problem->H->matrix2->triplet->nzmax); fclib_problem->H->x= problem->H->matrix2->triplet->x; fclib_problem->H->nz= (int) problem->H->matrix2->triplet->nz; fclib_problem->H->info=NULL; } else { fprintf(stderr, "globalFrictionContact_fclib_write only implemented for triplet storage.\n"); exit(EXIT_FAILURE); ; } fclib_problem->G = NULL; fclib_problem->b = NULL; DEBUG_PRINT("write in fclib of fclib_problem\n"); rinfo = fclib_write_global(fclib_problem, path); DEBUG_PRINT("end of write in fclib of fclib_problem\n"); free(fclib_problem->M->p); free(fclib_problem->M->i); free(fclib_problem->H->p); free(fclib_problem->H->i); free(fclib_problem->H); free(fclib_problem->M); free(fclib_problem->info); free(fclib_problem); return rinfo; }
int globalFrictionContact_fclib_write( GlobalFrictionContactProblem* problem, char * title, char * description, char * mathInfo, const char *path) { int rinfo = 0; globalFrictionContact_display(problem); FILE * file = fopen("toto.dat", "w"); globalFrictionContact_printInFile(problem, file); DEBUG_PRINT("construcion of fclib_problem\n"); struct fclib_global *fclib_problem; fclib_problem = malloc(sizeof(struct fclib_global)); fclib_problem->info = malloc(sizeof(struct fclib_info)) ; fclib_problem->info->title = title; fclib_problem->info->description = description; fclib_problem->info->math_info = mathInfo; fclib_problem->spacedim = problem->dimension; fclib_problem->mu = problem->mu; fclib_problem->w = problem->b; fclib_problem->f = problem->q; /* only coordinates */ assert(problem->M->matrix2); assert(problem->H->matrix2); fclib_problem->M = malloc(sizeof(struct fclib_matrix)); fclib_problem->M->n = problem->M->matrix2->triplet->n; fclib_problem->M->m = problem->M->matrix2->triplet->m; fclib_problem->M->nzmax= problem->M->matrix2->triplet->nzmax; fclib_problem->M->p= problem->M->matrix2->triplet->p; fclib_problem->M->i= problem->M->matrix2->triplet->i; fclib_problem->M->x= problem->M->matrix2->triplet->x; fclib_problem->M->nz= problem->M->matrix2->triplet->nz; fclib_problem->M->info=NULL; fclib_problem->H = malloc(sizeof(struct fclib_matrix)); fclib_problem->H->n = problem->H->matrix2->triplet->n; fclib_problem->H->m = problem->H->matrix2->triplet->m; fclib_problem->H->nzmax= problem->H->matrix2->triplet->nzmax; fclib_problem->H->p= problem->H->matrix2->triplet->p; fclib_problem->H->i= problem->H->matrix2->triplet->i; fclib_problem->H->x= problem->H->matrix2->triplet->x; fclib_problem->H->nz= problem->H->matrix2->triplet->nz; fclib_problem->H->info=NULL; fclib_problem->G = NULL; fclib_problem->b = NULL; DEBUG_PRINT("write in fclib of fclib_problem\n"); rinfo = fclib_write_global(fclib_problem, path); DEBUG_PRINT("end of write in fclib of fclib_problem\n"); /* free(fclib_problem->H); */ /* free(fclib_problem->M); */ /* free(fclib_problem->info); */ /* free(fclib_problem); */ return rinfo; }