From 45c3c197a41e181df3a34676bc842893615986fe Mon Sep 17 00:00:00 2001
From: Elias Pipping <elias.pipping@fu-berlin.de>
Date: Tue, 28 Feb 2012 07:58:45 +0100
Subject: [PATCH] Write matrix octave-ready to file `data'

---
 src/one-body-sample.cc  | 9 +++++++++
 src/plot_displacement.m | 4 ++++
 src/plot_neumann.m      | 4 ++++
 src/plot_state.m        | 4 ++++
 4 files changed, 21 insertions(+)
 create mode 100644 src/plot_displacement.m
 create mode 100644 src/plot_neumann.m
 create mode 100644 src/plot_state.m

diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc
index 2115b297..1807b07f 100644
--- a/src/one-body-sample.cc
+++ b/src/one-body-sample.cc
@@ -365,8 +365,12 @@ int main(int argc, char *argv[]) {
     multigridStep.ignoreNodes_ = &ignoreNodes;
     // }}}
 
+    std::fstream octave_writer("data", std::fstream::out);
     timer.reset();
     auto const timesteps = parset.get<size_t>("timesteps");
+    octave_writer << "# name: A" << std::endl << "# type: matrix" << std::endl
+                  << "# rows: " << timesteps << std::endl << "# columns: 3"
+                  << std::endl;
     double const h = 1.0 / timesteps;
     for (size_t run = 1; run <= timesteps; ++run) {
       if (parset.get<bool>("printProgress")) {
@@ -468,6 +472,10 @@ int main(int argc, char *argv[]) {
                                       "%|40t|u[%03d] = %+3e");
         std::cout << boost::format(formatter) % run % (*s4_new)[i] % run % u4[i]
                   << std::endl;
+        octave_writer << (*s4_new)[i] << " " << u4[i][0] * 1e6 << " "
+                      << ((h * run <= 0.5) ? sin(h * run * 2 * M_PI) * 1
+                                           : (h * run - 0.5) * 2 * 1)
+                      << std::endl;
         break;
       }
 
@@ -552,6 +560,7 @@ int main(int argc, char *argv[]) {
       std::cout << "sup |u1 - u4| = " << diff4.infinity_norm() << ", "
                 << "|u1 - u4| = " << diff4.two_norm() << std::endl;
     }
+    octave_writer.close();
 
     if (parset.get<bool>("printFrictionalBoundary")) {
       // Print displacement on frictional boundary
diff --git a/src/plot_displacement.m b/src/plot_displacement.m
new file mode 100644
index 00000000..63132b01
--- /dev/null
+++ b/src/plot_displacement.m
@@ -0,0 +1,4 @@
+close all;
+
+plot(1:length(A),A(:,2));
+axis tight;
diff --git a/src/plot_neumann.m b/src/plot_neumann.m
new file mode 100644
index 00000000..8fd9e217
--- /dev/null
+++ b/src/plot_neumann.m
@@ -0,0 +1,4 @@
+close all;
+
+plot(1:length(A),A(:,3));
+axis tight;
diff --git a/src/plot_state.m b/src/plot_state.m
new file mode 100644
index 00000000..0172ebc7
--- /dev/null
+++ b/src/plot_state.m
@@ -0,0 +1,4 @@
+close all;
+
+plot(1:length(A),A(:,1));
+axis tight;
-- 
GitLab