Driving force as vector instead of function

This commit is contained in:
2022-05-26 15:16:44 -04:00
parent d4254c6b8e
commit aa66aadb74
5 changed files with 76 additions and 53 deletions

View File

@@ -32,6 +32,8 @@ int read_args(int argc, const char* argv[], char** params, unsigned int* driving
int read_params(char* param_str, nstrophy_parameters* parameters);
int set_parameter(char* lhs, char* rhs, nstrophy_parameters* parameters, bool* setN1, bool* setN2);
// set driving force
_Complex double* set_driving(unsigned int driving, nstrophy_parameters parameters);
// set initial condition
_Complex double* set_init(unsigned int init, nstrophy_parameters parameters);
@@ -53,11 +55,11 @@ int main (
){
char* param_str=NULL;
nstrophy_parameters parameters;
_Complex double (*g)(int,int);
int ret;
unsigned int driving,command,init;
unsigned int nthreads=1;
_Complex double* u0;
_Complex double *g;
command=0;
driving=0;
@@ -76,19 +78,7 @@ int main (
}
// set driving force
switch(driving){
case DRIVING_ZERO:
g=g_zero;
break;
case DRIVING_TEST:
g=g_test;
break;
default:
g=g_zero;
break;
}
g=set_driving(driving, parameters);
// set initial condition
u0=set_init(init, parameters);
@@ -110,6 +100,7 @@ int main (
print_usage();
}
free(g);
free(u0);
return(0);
@@ -441,6 +432,28 @@ int set_parameter(
return(0);
}
// set driving force
_Complex double* set_driving(
unsigned int driving,
nstrophy_parameters parameters
){
_Complex double* g=calloc(sizeof(_Complex double),(2*parameters.K1+1)*(2*parameters.K2+1));
switch(driving){
case DRIVING_ZERO:
g_zero(g, parameters.K1, parameters.K2);
break;
case DRIVING_TEST:
g_test(g, parameters.K1, parameters.K2);
break;
default:
g_test(g, parameters.K1, parameters.K2);
break;
}
return g;
}
// set initial condition
_Complex double* set_init(
unsigned int init,