Ian Jauslin
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIan Jauslin <ian.jauslin@rutgers.edu>2023-04-25 16:38:25 -0400
committerIan Jauslin <ian.jauslin@rutgers.edu>2023-04-25 16:58:45 -0400
commit519bb7272661ae4fb81a9c4851133cd8e7da1805 (patch)
tree36ad3355e180efc4f4c2a1daa49362b15982957c /src
parentb35be9ea88dd3d28710f213afb3f63b7748ce5a6 (diff)
running average in statistics file
Diffstat (limited to 'src')
-rw-r--r--src/navier-stokes.c25
-rw-r--r--src/statistics.c28
-rw-r--r--src/statistics.h9
3 files changed, 42 insertions, 20 deletions
diff --git a/src/navier-stokes.c b/src/navier-stokes.c
index a344ae4..153631b 100644
--- a/src/navier-stokes.c
+++ b/src/navier-stokes.c
@@ -1,5 +1,6 @@
-#include "navier-stokes.h"
#include "io.h"
+#include "navier-stokes.h"
+#include "statistics.h"
#include <math.h>
#include <stdlib.h>
#include <string.h>
@@ -131,26 +132,10 @@ int eea(
energy=compute_energy(u, K1, K2);
alpha=compute_alpha(u, K1, K2, g, L);
enstrophy=compute_enstrophy(u, K1, K2, L);
-
- // running average
- // reset averages
- if(t % print_freq == 1){
- avg_e=0;
- avg_a=0;
- avg_en=0;
- }
- // compute average
- // different computationin first box if starting_time is not a multiple of print_freq
- if(t < starting_time + first_box){
- avg_e+=energy/first_box;
- avg_a+=alpha/first_box;
- avg_en+=enstrophy/first_box;
- } else {
- avg_e+=energy/print_freq;
- avg_a+=alpha/print_freq;
- avg_en+=enstrophy/print_freq;
- }
+ avg_e=average_step(energy, avg_e, t, starting_time, print_freq, first_box);
+ avg_a=average_step(alpha, avg_a, t, starting_time, print_freq, first_box);
+ avg_en=average_step(enstrophy, avg_en, t, starting_time, print_freq, first_box);
if(t>starting_time && t%print_freq==0){
fprintf(stderr,"%lu % .8e % .8e % .8e % .8e % .8e % .8e % .8e\n",t,t*delta, avg_a, avg_e, avg_en, alpha, energy, enstrophy);
diff --git a/src/statistics.c b/src/statistics.c
new file mode 100644
index 0000000..a35d1e2
--- /dev/null
+++ b/src/statistics.c
@@ -0,0 +1,28 @@
+#include "statistics.h"
+
+// run this at each step to compute the running average
+double average_step(
+ // the value at the step
+ double val,
+ // the average computed so far
+ double avg,
+ uint64_t t,
+ uint64_t starting_time,
+ uint64_t print_freq,
+ uint64_t first_box
+){
+
+ // running average
+ // reset averages
+ if(t % print_freq == 1){
+ return(0);
+ }
+
+ // compute average
+ // different computationin first box if starting_time is not a multiple of print_freq
+ if(t < starting_time + first_box){
+ return(avg+val/first_box);
+ } else {
+ return(avg+val/print_freq);
+ }
+}
diff --git a/src/statistics.h b/src/statistics.h
new file mode 100644
index 0000000..cc344d1
--- /dev/null
+++ b/src/statistics.h
@@ -0,0 +1,9 @@
+#ifndef STATISTICS_H
+#define STATISTICS_H
+
+#include <stdint.h>
+
+// run this at each step to compute the running average
+double average_step( double val, double avg, uint64_t t, uint64_t starting_time, uint64_t print_freq, uint64_t first_box);
+
+#endif