parameters.c
Go to the documentation of this file.00001 #include "parameters.h"
00002
00003 #include "error.h"
00004 #include "filename.h"
00005 #include "boolean.h"
00006 #include "defines.h"
00007
00008 #include <stdlib.h>
00009
00031 boolean ReadParameters(char *file,Tparameters *p);
00032
00033
00034
00035
00036 void InitParameters(Tparameters *p)
00037 {
00038 unsigned int i;
00039
00040 for(i=0;i<NPARAMETERS;i++)
00041 {
00042 (*p)[i].name=NULL;
00043 (*p)[i].value=0.0;
00044 }
00045 }
00046
00047
00048
00049
00050 void InitParametersFromFile(char *file,Tparameters *p)
00051 {
00052 Tfilename dp;
00053
00054 InitParameters(p);
00055
00056
00057
00058 CreateFileName(_CUIK_SUITE_MAIN_DIR,DEFAULT_PARAMS,NULL,PARAM_EXT,&dp);
00059 ReadParameters(GetFileFullName(&dp),p);
00060 DeleteFileName(&dp);
00061
00062
00063
00064 if (!ReadParameters(file,p))
00065 {
00066 char ErrorText[500];
00067
00068 sprintf(ErrorText,"File %s does not exists",file);
00069 Error(ErrorText);
00070 }
00071 }
00072
00073
00074
00075
00076 double GetParameter(unsigned int n,Tparameters *p)
00077 {
00078 if (n<NPARAMETERS)
00079 {
00080 if ((*p)[n].name==NULL)
00081 Error("Undefined parameter");
00082 else
00083 return((*p)[n].value);
00084 }
00085 else
00086 Error("Number of parameter out of range");
00087 return(0.0);
00088 }
00089
00090
00091
00092
00093 void SetParameter(unsigned int n,char *name,double v,Tparameters *p)
00094 {
00095 if (n<NPARAMETERS)
00096 {
00097 if ((*p)[n].name!=NULL)
00098 ChangeParameter(n,v,p);
00099 else
00100 {
00101 (*p)[n].name=name;
00102 (*p)[n].value=v;
00103 }
00104 }
00105 else
00106 Error("Number of parameter out of range");
00107 }
00108
00109
00110
00111
00112 void ChangeParameter(unsigned int n,double v,Tparameters *p)
00113 {
00114 if (n<NPARAMETERS)
00115 {
00116 if ((*p)[n].name==NULL)
00117 {
00118
00119 NEW((*p)[n].name,10,char);
00120 sprintf((*p)[n].name,"p%u",n);
00121 }
00122
00123 (*p)[n].value=v;
00124 }
00125 else
00126 Error("Number of parameter out of range");
00127 }
00128
00129
00130
00131
00132
00133 void PrintParameters(FILE *f,Tparameters *p)
00134 {
00135 unsigned int i;
00136
00137 fprintf(f,"%%COMPILATION FLAGS:\n");
00138 fprintf(f,"%% SIMPLEX ENGINE: %s\n",(_SIMPLEX_ENGINE==_GLPK?"glpk":(_SIMPLEX_ENGINE==_CLP?"clp":"lp_solve")));
00139 fprintf(f,"%% MPI: %u\n",_USE_MPI);
00140 fprintf(f,"%% DEBUG: %u\n",_DEBUG);
00141 fprintf(f,"%% PROFILE: %u\n",_PROFILE);
00142 fprintf(f,"%%==========================================================================\n");
00143 fprintf(f,"%%PARAMETERS:\n");
00144 for(i=0;i<NPARAMETERS;i++)
00145 {
00146 if ((*p)[i].name!=NULL)
00147 fprintf(f," %s= %g\n",(*p)[i].name,(*p)[i].value);
00148
00149 }
00150 }
00151
00152 void DeleteParameters(Tparameters *p)
00153 {
00154 }