Running average
This commit is contained in:
26
src/main.c
26
src/main.c
@@ -25,6 +25,7 @@ typedef struct nstrophy_parameters {
|
||||
double delta;
|
||||
double L;
|
||||
unsigned int print_freq;
|
||||
unsigned int avg_window;
|
||||
int seed;
|
||||
unsigned int starting_time;
|
||||
} nstrophy_parameters;
|
||||
@@ -37,7 +38,7 @@ int print_params(nstrophy_parameters parameters, unsigned int driving, unsigned
|
||||
// read command line arguments
|
||||
int read_args(int argc, const char* argv[], char** params, unsigned int* driving_force, unsigned int* command, unsigned int* init, unsigned int* nthreads, char** savefile_str, char** initfile_str);
|
||||
int read_params(char* param_str, nstrophy_parameters* parameters);
|
||||
int set_parameter(char* lhs, char* rhs, nstrophy_parameters* parameters, bool* setN1, bool* setN2);
|
||||
int set_parameter(char* lhs, char* rhs, nstrophy_parameters* parameters, bool* setN1, bool* setN2, bool* setavg_window);
|
||||
|
||||
// set driving force
|
||||
_Complex double* set_driving(unsigned int driving, nstrophy_parameters parameters);
|
||||
@@ -125,7 +126,7 @@ int main (
|
||||
uk(parameters.K1, parameters.K2, parameters.N1, parameters.N2, parameters.nsteps, parameters.nu, parameters.delta, parameters.L, u0, g, parameters.irreversible, parameters.print_freq, parameters.starting_time, nthreads, savefile);
|
||||
}
|
||||
else if(command==COMMAND_EEA){
|
||||
eea(parameters.K1, parameters.K2, parameters.N1, parameters.N2, parameters.nsteps, parameters.nu, parameters.delta, parameters.L, u0, g, parameters.irreversible, parameters.print_freq, parameters.starting_time, nthreads, savefile);
|
||||
eea(parameters.K1, parameters.K2, parameters.N1, parameters.N2, parameters.nsteps, parameters.nu, parameters.delta, parameters.L, u0, g, parameters.irreversible, parameters.print_freq, parameters.avg_window, parameters.starting_time, nthreads, savefile);
|
||||
}
|
||||
else if(command==COMMAND_QUIET){
|
||||
quiet(parameters.K1, parameters.K2, parameters.N1, parameters.N2, parameters.nsteps, parameters.nu, parameters.delta, parameters.L, u0, g, parameters.irreversible, nthreads, savefile);
|
||||
@@ -343,6 +344,8 @@ int read_params(
|
||||
// whether N was set explicitly
|
||||
bool setN1=false;
|
||||
bool setN2=false;
|
||||
// whether avg_window was set explicitly
|
||||
bool setavg_window=false;
|
||||
// whether lhs (false is rhs)
|
||||
bool lhs=true;
|
||||
|
||||
@@ -380,7 +383,7 @@ int read_params(
|
||||
break;
|
||||
case ';':
|
||||
//set parameter
|
||||
ret=set_parameter(buffer_lhs, buffer_rhs, parameters, &setN1, &setN2);
|
||||
ret=set_parameter(buffer_lhs, buffer_rhs, parameters, &setN1, &setN2, &setavg_window);
|
||||
if(ret<0){
|
||||
return ret;
|
||||
}
|
||||
@@ -407,7 +410,7 @@ int read_params(
|
||||
|
||||
// set last param
|
||||
if (*param_str!='\0'){
|
||||
ret=set_parameter(buffer_lhs, buffer_rhs, parameters, &setN1, &setN2);
|
||||
ret=set_parameter(buffer_lhs, buffer_rhs, parameters, &setN1, &setN2, &setavg_window);
|
||||
if(ret<0){
|
||||
return ret;
|
||||
}
|
||||
@@ -425,6 +428,10 @@ int read_params(
|
||||
if (!setN2){
|
||||
parameters->N2=smallest_pow2(3*(parameters->K2));
|
||||
}
|
||||
// if avg_window is not set explicitly, set it to print_freq
|
||||
if (!setavg_window){
|
||||
parameters->avg_window=parameters->print_freq;
|
||||
}
|
||||
|
||||
return(0);
|
||||
}
|
||||
@@ -436,7 +443,8 @@ int set_parameter(
|
||||
char* rhs,
|
||||
nstrophy_parameters* parameters,
|
||||
bool* setN1,
|
||||
bool* setN2
|
||||
bool* setN2,
|
||||
bool* setavg_window
|
||||
){
|
||||
int ret;
|
||||
|
||||
@@ -542,6 +550,14 @@ int set_parameter(
|
||||
return(-1);
|
||||
}
|
||||
}
|
||||
else if (strcmp(lhs,"avg_window")==0){
|
||||
ret=sscanf(rhs,"%u",&(parameters->avg_window));
|
||||
if(ret!=1){
|
||||
fprintf(stderr, "error: parameter 'avg_window' should be an integer\n got '%s'\n",rhs);
|
||||
return(-1);
|
||||
}
|
||||
*setavg_window=true;
|
||||
}
|
||||
else if (strcmp(lhs,"random_seed")==0){
|
||||
ret=sscanf(rhs,"%d",&(parameters->seed));
|
||||
if(ret!=1){
|
||||
|
||||
Reference in New Issue
Block a user