From 72455cbb65d43203b6515ed3dcc629c663fa88e4 Mon Sep 17 00:00:00 2001 From: Ian Jauslin Date: Mon, 14 Apr 2025 18:25:59 -0400 Subject: [PATCH] Print components of u --- README.md | 6 ++++-- src/navier-stokes.c | 12 ++++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 353db37..4241f68 100644 --- a/README.md +++ b/README.md @@ -40,12 +40,14 @@ The available commands are * `enstrophy`: to compute the enstrophy and various other observables. This command prints ``` - step_index time average(alpha) average(energy) average(enstrophy) alpha energy enstrophy + step_index time average(alpha) average(energy) average(enstrophy) alpha energy enstrophy Re(u(1,1)) Re(u(1,2)) ``` where the averages are running averages over `print_freq`. In addition, if the algorithm has an adaptive step, an extra column is printed with `delta`. In addition, if alpha has a negative value (even in between `print_freq` - intervals), a line is printed with the information. + intervals), a line is printed with the information. The two components (1,1) + and (1,2) of u are included to more easily identify periodic trajectories, or + the presence of multiple attractors. * `lyapunov`: to compute the Lyapunov exponents. This command prints ``` diff --git a/src/navier-stokes.c b/src/navier-stokes.c index e2f784b..38c9938 100644 --- a/src/navier-stokes.c +++ b/src/navier-stokes.c @@ -244,10 +244,18 @@ int enstrophy( // print to stderr so user can follow along if(algorithm>ALGORITHM_ADAPTIVE_THRESHOLD){ fprintf(stderr,"% .8e % .8e % .8e % .8e % .8e % .8e % .8e % .8e\n",time, avg_a, avg_energy, avg_enstrophy, alpha, energy, enstrophy, step); - printf("% .15e % .15e % .15e % .15e % .15e % .15e % .15e % .15e\n",time, avg_a, avg_energy, avg_enstrophy, alpha, energy, enstrophy, step); + if(K1>=1 && K2>=2){ + printf("% .15e % .15e % .15e % .15e % .15e % .15e % .15e % .15e % .15e % .15e\n",time, avg_a, avg_energy, avg_enstrophy, alpha, energy, enstrophy, step, __real__ u[klookup_sym(1,1,K2)], __real__ u[klookup_sym(1,2,K2)]); + }else{ + printf("% .15e % .15e % .15e % .15e % .15e % .15e % .15e % .15e\n",time, avg_a, avg_energy, avg_enstrophy, alpha, energy, enstrophy, step); + } } else { fprintf(stderr,"% .8e % .8e % .8e % .8e % .8e % .8e % .8e\n",time, avg_a, avg_energy, avg_enstrophy, alpha, energy, enstrophy); - printf("% .15e % .15e % .15e % .15e % .15e % .15e % .15e\n",time, avg_a, avg_energy, avg_enstrophy, alpha, energy, enstrophy); + if(K1>=1 && K2>=2){ + printf("% .15e % .15e % .15e % .15e % .15e % .15e % .15e % .15e % .15e\n",time, avg_a, avg_energy, avg_enstrophy, alpha, energy, enstrophy, __real__ u[klookup_sym(1,1,K2)], __real__ u[klookup_sym(1,2,K2)]); + }else{ + printf("% .15e % .15e % .15e % .15e % .15e % .15e % .15e\n",time, avg_a, avg_energy, avg_enstrophy, alpha, energy, enstrophy); + } } // reset averages