From 59100a471f90b46023741c16fffb69f72e6b8edd Mon Sep 17 00:00:00 2001 From: Ian Jauslin Date: Wed, 12 Apr 2023 14:37:02 -0400 Subject: Running average --- src/main.c | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) (limited to 'src/main.c') diff --git a/src/main.c b/src/main.c index 9962c77..cbae30e 100644 --- a/src/main.c +++ b/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){ -- cgit v1.2.3-54-g00ecf