tAdd option to change fluid-pressure pulse waveform shape - cngf-pf - continuum… | |
git clone git://src.adamsgaard.dk/cngf-pf | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit f2663e1123ac994ca9f60a747addf5559786f887 | |
parent 5419eee7ed46ffaae98e60ea4391d713d1731668 | |
Author: Anders Damsgaard <[email protected]> | |
Date: Tue, 17 Sep 2019 10:28:51 +0200 | |
Add option to change fluid-pressure pulse waveform shape | |
Diffstat: | |
M fluid.c | 35 ++++++++++++++++++++++++-----… | |
M main.c | 8 +++++++- | |
M parameter_defaults.h | 1 + | |
M simulation.h | 1 + | |
4 files changed, 36 insertions(+), 9 deletions(-) | |
--- | |
diff --git a/fluid.c b/fluid.c | |
t@@ -60,10 +60,10 @@ sine_wave(const double time, | |
} | |
static double | |
-pulse(const double time, | |
- const double peak_amplitude, | |
- const double frequency, | |
- const double peak_time) | |
+triangular_pulse(const double time, | |
+ const double peak_amplitude, | |
+ const double frequency, | |
+ const double peak_time) | |
{ | |
if (peak_time - 1.0/(2.0*frequency) < time && time <= peak_time) | |
return peak_amplitude*2.0*frequency*(time - peak_time) + peak_… | |
t@@ -73,6 +73,19 @@ pulse(const double time, | |
return 0.0; | |
} | |
+static double | |
+square_pulse(const double time, | |
+ const double peak_amplitude, | |
+ const double frequency, | |
+ const double peak_time) | |
+{ | |
+ if (peak_time - 1.0/(2.0*frequency) < time && | |
+ time < peak_time + 1.0/(2.0*frequency)) | |
+ return peak_amplitude; | |
+ else | |
+ return 0.0; | |
+} | |
+ | |
static void | |
set_fluid_bcs(struct simulation* sim, const double p_f_top) | |
{ | |
t@@ -186,10 +199,16 @@ darcy_solver_1d(struct simulation* sim, | |
sim->p_f_mod_freq, | |
sim->p_f_mod_phase); | |
else | |
- p_f_top = sim->p_f_top + pulse(sim->t, | |
- sim->p_f_mod_ampl, | |
- sim->p_f_mod_freq, | |
- sim->p_f_mod_pulse_time); | |
+ if (sim->p_f_mod_pulse_shape == 1) | |
+ p_f_top = sim->p_f_top + square_pulse(sim->t, | |
+ sim->p_f_mod_amp… | |
+ sim->p_f_mod_fre… | |
+ sim->p_f_mod_pul… | |
+ else | |
+ p_f_top = sim->p_f_top + triangular_pulse(sim->t, | |
+ sim->p_f_mod… | |
+ sim->p_f_mod… | |
+ sim->p_f_mod… | |
/* set fluid BCs (1 of 2) */ | |
set_fluid_bcs(sim, p_f_top); | |
diff --git a/main.c b/main.c | |
t@@ -68,6 +68,8 @@ usage(void) | |
" -H, --fluid-pressure-phase VAL fluid pressure at +z edge [P… | |
" -u, --fluid-pressure-pulse-time VAL fluid pressure pulse pea… | |
" (default %g)\n" | |
+ " -S, --fluid-pressure-pulse-shape VAL\n" | |
+ " 0: triangular (default), 1: … | |
" -t, --time VAL simulation start time [s] (d… | |
" -T, --time-end VAL simulation end time [s] (def… | |
" -I, --file-interval VAL interval between output file… | |
t@@ -143,7 +145,7 @@ main(int argc, char* argv[]) | |
norm = 0; | |
- optstring = "hvNn:G:P:m:s:l:V:A:b:f:C:Fp:d:r:o:L:c:i:R:k:O:a:q:H:T:t:T… | |
+ optstring = "hvNn:G:P:m:s:l:V:A:b:f:C:Fp:d:r:o:L:c:i:R:k:O:a:q:H:T:S:t… | |
const struct option longopts[] = { | |
{"help", no_argument, NULL, 'h'}, | |
{"version", no_argument, NULL, 'v'}, | |
t@@ -174,6 +176,7 @@ main(int argc, char* argv[]) | |
{"fluid-pressure-freq", required_argument, NULL, 'q'}, | |
{"fluid-pressure-phase", required_argument, NULL, 'H'}, | |
{"fluid-pressure-pulse-time", required_argument, NULL, 'u'}, | |
+ {"fluid-pressure-pulse-shape",required_argument, NULL, 'S'}, | |
{"time", required_argument, NULL, 't'}, | |
{"time-end", required_argument, NULL, 'T'}, | |
{"file-interval", required_argument, NULL, 'I'}, | |
t@@ -279,6 +282,9 @@ main(int argc, char* argv[]) | |
case 'u': | |
sim.p_f_mod_pulse_time = atof(optarg); | |
break; | |
+ case 'S': | |
+ sim.p_f_mod_pulse_shape = atoi(optarg); | |
+ break; | |
case 't': | |
sim.t = atof(optarg); | |
break; | |
diff --git a/parameter_defaults.h b/parameter_defaults.h | |
t@@ -106,6 +106,7 @@ struct simulation init_sim(void) | |
sim.p_f_mod_freq = 1.0; | |
sim.p_f_mod_phase = 0.0; | |
sim.p_f_mod_pulse_time = NAN; | |
+ sim.p_f_mod_pulse_shape = 0; | |
return sim; | |
} | |
diff --git a/simulation.h b/simulation.h | |
t@@ -85,6 +85,7 @@ struct simulation { | |
double p_f_mod_freq; /* frequency of fluid pressure variations [s^-1]… | |
double p_f_mod_phase; /* phase of fluid pressure variations [s^-1] */ | |
double p_f_mod_pulse_time; /* single pressure pulse at this time [s] */ | |
+ int p_f_mod_pulse_shape; /* waveform for fluid-pressure pulse */ | |
double beta_f; /* adiabatic fluid compressibility [Pa^-1] */ | |
double mu_f; /* fluid dynamic viscosity [Pa*s] */ | |
double rho_f; /* fluid density [kg/m^3] */ |