From b1bbcb7a7b61ca45b589d04b735defd584d39549 Mon Sep 17 00:00:00 2001 From: Oliver Sander <sander@igpm.rwth-aachen.de> Date: Tue, 14 Aug 2007 13:47:32 +0000 Subject: [PATCH] read Dirichlet data from parameter file [[Imported from SVN: r1509]] --- rod3d.cc | 39 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/rod3d.cc b/rod3d.cc index bf1f9424..9b3681db 100644 --- a/rod3d.cc +++ b/rod3d.cc @@ -45,13 +45,14 @@ int main (int argc, char *argv[]) try // read solver settings const int numLevels = parameterSet.get("numLevels", int(1)); + const double tolerance = parameterSet.get("tolerance", double(0)); const int maxTrustRegionSteps = parameterSet.get("maxNewtonSteps", int(0)); const int multigridIterations = parameterSet.get("numIt", int(0)); const int nu1 = parameterSet.get("nu1", int(0)); const int nu2 = parameterSet.get("nu2", int(0)); const int mu = parameterSet.get("mu", int(0)); const int baseIterations = parameterSet.get("baseIt", int(0)); - const double mgTolerance = parameterSet.get("tolerance", double(0)); + const double mgTolerance = parameterSet.get("mgTolerance", double(0)); const double baseTolerance = parameterSet.get("baseTolerance", double(0)); const double initialTrustRegionRadius = parameterSet.get("initialTrustRegionRadius", double(1)); const int numRodBaseElements = parameterSet.get("numRodBaseElements", int(0)); @@ -72,28 +73,28 @@ int main (int argc, char *argv[]) try // ////////////////////////// // Initial solution // ////////////////////////// - FieldVector<double,3> zAxis(0); - zAxis[2] = 1; for (int i=0; i<x.size(); i++) { - x[i].r[0] = 0; // x - x[i].r[1] = 0; // y - x[i].r[2] = double(i)/(x.size()-1); // z - //x[i].r[2] = i+5; + x[i].r[0] = 0; + x[i].r[1] = 0; + x[i].r[2] = double(i)/(x.size()-1); x[i].q = Quaternion<double>::identity(); - //x[i].q = Quaternion<double>(zAxis, M_PI/2 * double(i)/(x.size()-1)); } + // ///////////////////////////////////////// + // Read Dirichlet values + // ///////////////////////////////////////// + x.back().r[0] = parameterSet.get("dirichletValueX", double(0)); + x.back().r[1] = parameterSet.get("dirichletValueY", double(0)); + x.back().r[2] = parameterSet.get("dirichletValueZ", double(0)); -#if 1 - FieldVector<double,3> xAxis(0); - xAxis[0] = 1; - x[1].r[2] = 0.25; - x.back().r[2] = 0.5; - x[0].q = Quaternion<double>(xAxis, -M_PI/2); - x.back().q = Quaternion<double>(xAxis, M_PI/2); - -#endif + FieldVector<double,3> axis; + axis[0] = parameterSet.get("dirichletAxisX", double(0)); + axis[1] = parameterSet.get("dirichletAxisY", double(0)); + axis[2] = parameterSet.get("dirichletAxisZ", double(0)); + double angle = parameterSet.get("dirichletAngle", double(0)); + + x.back().q = Quaternion<double>(axis, M_PI*angle/180); std::cout << "Left boundary orientation:" << std::endl; std::cout << "director 0: " << x[0].q.director(0) << std::endl; @@ -104,9 +105,6 @@ int main (int argc, char *argv[]) try std::cout << "director 0: " << x[x.size()-1].q.director(0) << std::endl; std::cout << "director 1: " << x[x.size()-1].q.director(1) << std::endl; std::cout << "director 2: " << x[x.size()-1].q.director(2) << std::endl; -// exit(0); - - //x[0].r[2] = -1; dirichletNodes.resize(numLevels); for (int i=0; i<numLevels; i++) { @@ -130,6 +128,7 @@ int main (int argc, char *argv[]) try rodSolver.setup(grid, &rodAssembler, x, + tolerance, maxTrustRegionSteps, initialTrustRegionRadius, multigridIterations, -- GitLab