cuiksimplify.c
Go to the documentation of this file.
1 
2 #include "cuiksystem.h"
3 #include "parameters.h"
4 
5 #include "defines.h"
6 #include "error.h"
7 #include "filename.h"
8 
9 #include <string.h>
10 #include <stdlib.h>
11 #include <time.h>
12 #include <unistd.h>
13 
14 
72 int main(int argc, char **arg)
73 {
74  TCuikSystem cuiksystem; /* The set of equations */
75  Tparameters parameters; /* Parameters used in the Cuik process */
76 
77  Tfilename fcuik;
78  Tfilename fcuiksimp;
79  Tfilename fparam;
80 
81  FILE *fs;
82 
83  if (argc>1)
84  {
85 
86  /*Init parameters*/
87  CreateFileName(NULL,arg[1],NULL,PARAM_EXT,&fparam);
88  #if (_DEBUG>0)
89  printf("Reading parameter file : %s\n",GetFileFullName(&fparam));
90  #endif
91  InitParametersFromFile(GetFileFullName(&fparam),&parameters);
92 
93  /*keep equations in the original form*/
94  ChangeParameter(CT_DUMMIFY,0,&parameters);
95 
96  /*Read the problem from file*/
97  CreateFileName(NULL,arg[1],NULL,CUIK_EXT,&fcuik);
98  #if (_DEBUG>0)
99  printf("Reading cuik file : %s\n",GetFileFullName(&fcuik));
100  #endif
101  InitCuikSystemFromFile(&parameters,GetFileFullName(&fcuik),&cuiksystem);
102 
103  /*Save the simplified system (with a header with the human readable
104  simplification)*/
105  CreateFileName(NULL,arg[1],"_simp",CUIK_EXT,&fcuiksimp);
106  fs=fopen(GetFileFullName(&fcuiksimp),"w");
107  if (!fs)
108  Error("Could not open the output file for the simplified cuiksystem.");
109  #if (_DEBUG>0)
110  printf("Generating simplified cuik file : %s\n",GetFileFullName(&fcuiksimp));
111  #endif
112  PrintCuikSystemWithSimplification(&parameters,fs,&cuiksystem);
113  fclose(fs);
114 
115  /* link the parameters */
116  LinkFileNameWithExtension(arg[1],PARAM_EXT ,&fcuiksimp);
117 
118  /*Remove the allocated objects*/
119  DeleteParameters(&parameters);
120  DeleteCuikSystem(&cuiksystem);
121 
122  DeleteFileName(&fparam);
123  DeleteFileName(&fcuik);
124  DeleteFileName(&fcuiksimp);
125 
126  }
127  else
128  {
129  fprintf(stderr," Wrong number of parameters.\n");
130  fprintf(stderr," Use:\n");
131  fprintf(stderr," cuiksimplify <problem filename>.cuik \n");
132  fprintf(stderr," where <problem filename> contains the kinematic equations\n");
133  fprintf(stderr," (the '.cuik' extension is not required)\n");
134  }
135  return(EXIT_SUCCESS);
136 }
137 
void PrintCuikSystemWithSimplification(Tparameters *p, FILE *f, TCuikSystem *cs)
Prints the simplified cuiksystem.
Definition: cuiksystem.c:5384
Data structure to hold the information about the name of a file.
Definition: filename.h:271
void DeleteCuikSystem(TCuikSystem *cs)
Destructor.
Definition: cuiksystem.c:5450
Definition of the Tfilename type and the associated functions.
void Error(const char *s)
General error function.
Definition: error.c:80
#define PARAM_EXT
File extension for parameter files.
Definition: filename.h:132
#define CUIK_EXT
File extension for equation files.
Definition: filename.h:71
Error and warning functions.
void DeleteFileName(Tfilename *fn)
Destructor.
Definition: filename.c:205
void LinkFileNameWithExtension(char *fn1, char *ext, Tfilename *fn2)
Creates a link to a given filename.
Definition: filename.c:177
Definitions of constants and macros used in several parts of the cuik library.
void InitCuikSystemFromFile(Tparameters *p, char *filename, TCuikSystem *cs)
Constructor from a file.
A table of parameters.
Definition of the TCuikSystem type and the associated functions.
void CreateFileName(char *path, char *name, char *suffix, char *ext, Tfilename *fn)
Constructor.
Definition: filename.c:22
void InitParametersFromFile(char *file, Tparameters *p)
Constructor from a file.
Definition: parameters.c:51
char * GetFileFullName(Tfilename *fn)
Gets the file full name (paht+name+extension).
Definition: filename.c:151
#define CT_DUMMIFY
Dummification level.
Definition: parameters.h:339
A cuiksystem, i.e., a set of variables and equations defining a position analysis problem...
Definition: cuiksystem.h:181
void DeleteParameters(Tparameters *p)
Destructor.
Definition: parameters.c:294
int main(int argc, char **arg)
Main body of the cuiksimplify application.
Definition: cuiksimplify.c:72
Definition of the Tparameters type and the associated functions.
void ChangeParameter(unsigned int n, double v, Tparameters *p)
Sets the value for a particular parameter.
Definition: parameters.c:164