Select norm in parameter
This commit is contained in:
43
src/main.c
43
src/main.c
@@ -48,6 +48,7 @@ typedef struct nstrophy_parameters {
|
||||
double adaptive_tolerance;
|
||||
double adaptive_factor;
|
||||
double max_delta;
|
||||
unsigned int adaptive_norm;
|
||||
double print_freq;
|
||||
int seed;
|
||||
double starting_time;
|
||||
@@ -171,16 +172,16 @@ int main (
|
||||
|
||||
// run command
|
||||
if (command==COMMAND_UK){
|
||||
uk(parameters.K1, parameters.K2, parameters.N1, parameters.N2, parameters.final_time, parameters.nu, parameters.delta, parameters.L, parameters.adaptive_tolerance, parameters.adaptive_factor, parameters.max_delta, u0, g, parameters.irreversible, parameters.algorithm, parameters.print_freq, parameters.starting_time, nthreads, savefile);
|
||||
uk(parameters.K1, parameters.K2, parameters.N1, parameters.N2, parameters.final_time, parameters.nu, parameters.delta, parameters.L, parameters.adaptive_tolerance, parameters.adaptive_factor, parameters.max_delta, parameters.adaptive_norm, u0, g, parameters.irreversible, parameters.algorithm, parameters.print_freq, parameters.starting_time, nthreads, savefile);
|
||||
}
|
||||
else if(command==COMMAND_ENSTROPHY){
|
||||
// register signal handler to handle aborts
|
||||
signal(SIGINT, sig_handler);
|
||||
signal(SIGTERM, sig_handler);
|
||||
enstrophy(parameters.K1, parameters.K2, parameters.N1, parameters.N2, parameters.final_time, parameters.nu, parameters.delta, parameters.L, parameters.adaptive_tolerance, parameters.adaptive_factor, parameters.max_delta, u0, g, parameters.irreversible, parameters.algorithm, parameters.print_freq, parameters.starting_time, nthreads, savefile, (char*)argv[0], param_str, savefile_str);
|
||||
enstrophy(parameters.K1, parameters.K2, parameters.N1, parameters.N2, parameters.final_time, parameters.nu, parameters.delta, parameters.L, parameters.adaptive_tolerance, parameters.adaptive_factor, parameters.max_delta, parameters.adaptive_norm, u0, g, parameters.irreversible, parameters.algorithm, parameters.print_freq, parameters.starting_time, nthreads, savefile, (char*)argv[0], param_str, savefile_str);
|
||||
}
|
||||
else if(command==COMMAND_QUIET){
|
||||
quiet(parameters.K1, parameters.K2, parameters.N1, parameters.N2, parameters.final_time, parameters.nu, parameters.delta, parameters.L, parameters.adaptive_tolerance, parameters.adaptive_factor, parameters.max_delta, parameters.starting_time, u0, g, parameters.irreversible, parameters.algorithm, nthreads, savefile);
|
||||
quiet(parameters.K1, parameters.K2, parameters.N1, parameters.N2, parameters.final_time, parameters.nu, parameters.delta, parameters.L, parameters.adaptive_tolerance, parameters.adaptive_factor, parameters.max_delta, parameters.adaptive_norm, parameters.starting_time, u0, g, parameters.irreversible, parameters.algorithm, nthreads, savefile);
|
||||
}
|
||||
else if(command==0){
|
||||
fprintf(stderr, "error: no command specified\n");
|
||||
@@ -278,6 +279,23 @@ int print_params(
|
||||
break;
|
||||
}
|
||||
|
||||
if(parameters.algorithm>ALGORITHM_ADAPTIVE_THRESHOLD){
|
||||
switch(parameters.adaptive_norm){
|
||||
case NORM_L1:
|
||||
fprintf(file,", norm=L1");
|
||||
break;
|
||||
case NORM_k3:
|
||||
fprintf(file,", norm=k3");
|
||||
break;
|
||||
case NORM_k32:
|
||||
fprintf(file,", norm=k32");
|
||||
break;
|
||||
case NORM_ENSTROPHY:
|
||||
fprintf(file,", norm=enstrophy");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
fprintf(file,"\n");
|
||||
|
||||
return 0;
|
||||
@@ -399,6 +417,7 @@ int read_params(
|
||||
parameters->adaptive_tolerance=1e-11;
|
||||
parameters->adaptive_factor=0.9;
|
||||
parameters->max_delta=1e-2;
|
||||
parameters->adaptive_norm=NORM_L1;
|
||||
parameters->final_time=100000;
|
||||
parameters->print_freq=1;
|
||||
parameters->starting_time=0;
|
||||
@@ -606,6 +625,24 @@ int set_parameter(
|
||||
return(-1);
|
||||
}
|
||||
}
|
||||
else if (strcmp(lhs,"adaptive_norm")==0){
|
||||
if (strcmp(rhs,"L1")==0){
|
||||
parameters->adaptive_norm=NORM_L1;
|
||||
}
|
||||
else if (strcmp(rhs,"k3")==0){
|
||||
parameters->adaptive_norm=NORM_k3;
|
||||
}
|
||||
else if (strcmp(rhs,"k32")==0){
|
||||
parameters->adaptive_norm=NORM_k32;
|
||||
}
|
||||
else if (strcmp(rhs,"enstrophy")==0){
|
||||
parameters->adaptive_norm=NORM_ENSTROPHY;
|
||||
}
|
||||
else{
|
||||
fprintf(stderr, "error: unrecognized adaptive_norm '%s'\n",rhs);
|
||||
return(-1);
|
||||
}
|
||||
}
|
||||
else if (strcmp(lhs,"print_freq")==0){
|
||||
ret=sscanf(rhs,"%lf",&(parameters->print_freq));
|
||||
if(ret!=1){
|
||||
|
||||
Reference in New Issue
Block a user