int main(void) { char filename[51] = "./data/LMGC_GlobalFrictionContactProblem00046.hdf5"; printf("Test on %s\n", filename); SolverOptions * options = (SolverOptions *)malloc(sizeof(SolverOptions)); gfc3d_setDefaultSolverOptions(options, SICONOS_GLOBAL_FRICTION_3D_NSN_AC); int k, info = -1 ; GlobalFrictionContactProblem* problem = globalFrictionContact_fclib_read(filename); globalFrictionContact_display(problem); FILE * foutput = fopen("checkinput.dat", "w"); info = globalFrictionContact_printInFile(problem, foutput); NumericsOptions global_options; setDefaultNumericsOptions(&global_options); global_options.verboseMode = 1; // turn verbose mode to off by default int NC = problem->numberOfContacts; int dim = problem->dimension; int n = problem->M->size1; double *reaction = (double*)calloc(dim * NC, sizeof(double)); double *velocity = (double*)calloc(dim * NC, sizeof(double)); double *globalvelocity = (double*)calloc(n, sizeof(double)); if (dim == 2) { info = 1; } else if (dim == 3) { info = gfc3d_driver(problem, reaction , velocity, globalvelocity, options, &global_options); } printf("\n"); for (k = 0 ; k < dim * NC; k++) { printf("Velocity[%i] = %12.8e \t \t Reaction[%i] = %12.8e\n", k, velocity[k], k , reaction[k]); } for (k = 0 ; k < n; k++) { printf("GlocalVelocity[%i] = %12.8e\n", k, globalvelocity[k]); } printf("\n"); if (!info) { printf("test succeeded\n"); } else { printf("test unsuccessful\n"); } free(reaction); free(velocity); free(globalvelocity); fclose(foutput); freeGlobalFrictionContactProblem(problem); deleteSolverOptions(options); free(options); printf("End of test on %s\n", filename); return info; }
int globalFrictionContact_test_function(FILE * f, SolverOptions * options) { int k, info = -1 ; GlobalFrictionContactProblem* problem = (GlobalFrictionContactProblem *)malloc(sizeof(GlobalFrictionContactProblem)); info = globalFrictionContact_newFromFile(problem, f); globalFrictionContact_display(problem); FILE * foutput = fopen("checkinput.dat", "w"); info = globalFrictionContact_printInFile(problem, foutput); NumericsOptions global_options; setDefaultNumericsOptions(&global_options); global_options.verboseMode = 1; // turn verbose mode to off by default int NC = problem->numberOfContacts; int dim = problem->dimension; int n = problem->M->size1; double *reaction = (double*)malloc(dim * NC * sizeof(double)); double *velocity = (double*)malloc(dim * NC * sizeof(double)); double *globalvelocity = (double*)malloc(n * sizeof(double)); for (k = 0 ; k < dim * NC; k++) { velocity[k] = 0.0; reaction[k] = 0.0; } for (k = 0 ; k < n; k++) { globalvelocity[k] = 0.0; } if (dim == 2) { info = 1; } else if (dim == 3) { info = globalFrictionContact3D_driver(problem, reaction , velocity, globalvelocity, options, &global_options); } printf("\n"); for (k = 0 ; k < dim * NC; k++) { printf("Velocity[%i] = %12.8e \t \t Reaction[%i] = %12.8e\n", k, velocity[k], k , reaction[k]); } for (k = 0 ; k < n; k++) { printf("GlocalVelocity[%i] = %12.8e\n", k, globalvelocity[k]); } printf("\n"); if (!info) { printf("test succeeded\n"); } else { printf("test unsuccessful\n"); } free(reaction); free(velocity); free(globalvelocity); fclose(foutput); freeGlobalFrictionContactProblem(problem); return info; }
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; }