Ian Jauslin
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Jauslin <ian@jauslin.org>2022-05-26 15:16:44 -0400
committerIan Jauslin <ian@jauslin.org>2022-05-26 15:16:44 -0400
commitaa66aadb7451fe3f82f4c05e2fe860084e1e644f (patch)
tree1763e00e1294407661ba1b8e9f58b9043666b304 /src/main.c
parentd4254c6b8e6d4a94a5448e771d8a0620f266cf05 (diff)
Driving force as vector instead of function
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c41
1 files changed, 27 insertions, 14 deletions
diff --git a/src/main.c b/src/main.c
index 27ed314..f074720 100644
--- a/src/main.c
+++ b/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,