From 5a1830a307ea57dda9d1e67f02e03155db2783fe Mon Sep 17 00:00:00 2001 From: Elias Pipping <elias.pipping@fu-berlin.de> Date: Tue, 15 May 2012 16:09:48 +0200 Subject: [PATCH] Velocity stepping tests --- src/one-body-sample.cc | 27 +++++++++++++++++++++++++++ src/one-body-sample.parset | 2 ++ 2 files changed, 29 insertions(+) diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc index a73b13c7..45574e24 100644 --- a/src/one-body-sample.cc +++ b/src/one-body-sample.cc @@ -323,6 +323,33 @@ int main(int argc, char *argv[]) { << std::endl; } + // Comparison with the analytic solution of a velocity stepping test + // with the Ruina state evolution law. + // Jumps at 120 and 360 timesteps; v1 = .6 * v2; + if (parset.get<bool>("printVelocitySteppingComparison")) { + double const v = u4_diff[first_frictional_node].two_norm() / h / L; + + if (run >= 120) { + double const euler = (*s4_new)[first_frictional_node]; + double direct; + if (run < 360) { + double const v2 = v; + double const v1 = 0.6 * v2; + direct = std::log( + 1.0 / v2 * + std::pow((v2 / v1), std::exp(-v2 * (run - 120) * h))); + } else { + double const v1 = v; + double const v2 = v1 / 0.6; + direct = std::log( + 1.0 / v1 * + std::pow((v1 / v2), std::exp(-v1 * (run - 360) * h))); + } + std::cout << "[" << run << "]: " << euler << " " << direct << " " + << (euler - direct) / direct << std::endl; + } + } + // Record the coefficient of friction at a fixed node if (parset.get<bool>("printCoefficient")) { double const V = u4_diff[first_frictional_node].two_norm(); diff --git a/src/one-body-sample.parset b/src/one-body-sample.parset index 62fb09c4..58fa7b79 100644 --- a/src/one-body-sample.parset +++ b/src/one-body-sample.parset @@ -9,6 +9,8 @@ printProgress = true writeEvolution = false writeVTK = false +printVelocitySteppingComparison = false + [grid] refinements = 4 -- GitLab