Driving force as vector instead of function
This commit is contained in:
41
src/main.c
41
src/main.c
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user