From 4c957737b115c74adaf09fece28b356cbbca4d76 Mon Sep 17 00:00:00 2001
From: Oliver Sander <sander@igpm.rwth-aachen.de>
Date: Mon, 31 Jan 2011 12:53:18 +0000
Subject: [PATCH] for testing: support having a Dirichlet boundary on either
 side of the rod

[[Imported from SVN: r6907]]
---
 dirneucoupling.cc | 39 ++++++++++++++++++++++++++++++---------
 1 file changed, 30 insertions(+), 9 deletions(-)

diff --git a/dirneucoupling.cc b/dirneucoupling.cc
index 8ce54bd6..e9cde995 100644
--- a/dirneucoupling.cc
+++ b/dirneucoupling.cc
@@ -157,19 +157,40 @@ int main (int argc, char *argv[]) try
     // /////////////////////////////////////////
     //   Read Dirichlet values
     // /////////////////////////////////////////
-    rodX.back().r = parameterSet.get("dirichletValue", rodRestEndPoint[1]);
+    rodFactory.create(complex.rods_["rod"].dirichletValues_,
+                      RigidBodyMotion<3>(FieldVector<double,3>(0), Rotation<3,double>::identity()));
+    BitSetVector<1> rodDNodes(complex.rods_["rod"].dirichletValues_.size(), false);
+
+    if (parameterSet.hasKey("dirichletValue0")){
+        
+        rodX[0].r = parameterSet.get("dirichletValue0", rodRestEndPoint[0]);
 
-    FieldVector<double,3> axis = parameterSet.get("dirichletAxis", FieldVector<double,3>(0));
-    double angle = parameterSet.get("dirichletAngle", double(0));
+        FieldVector<double,3> axis = parameterSet.get("dirichletAxis0", FieldVector<double,3>(0));
+        double angle = parameterSet.get("dirichletAngle0", double(0));
 
-    rodX.back().q = Rotation<3,double>(axis, M_PI*angle/180);
+        rodX[0].q = Rotation<3,double>(axis, M_PI*angle/180);
     
-    rodFactory.create(complex.rods_["rod"].dirichletValues_,
-                      RigidBodyMotion<3>(FieldVector<double,3>(0), Rotation<3,double>::identity()));
-    complex.rods_["rod"].dirichletValues_.back() = RigidBodyMotion<3>(parameterSet.get("dirichletValue", rodRestEndPoint[1]),
+        complex.rods_["rod"].dirichletValues_[0] = RigidBodyMotion<3>(parameterSet.get("dirichletValue0", rodRestEndPoint[0]),
                                                                    Rotation<3,double>(axis, M_PI*angle/180));
-    BitSetVector<1> rodDNodes(complex.rods_["rod"].dirichletValues_.size(), false);
-    rodDNodes.back() = true;
+        rodDNodes[0] = true;
+        
+    }
+
+    if (parameterSet.hasKey("dirichletValue1")) {
+        
+        rodX.back().r = parameterSet.get("dirichletValue1", rodRestEndPoint[1]);
+
+        FieldVector<double,3> axis = parameterSet.get("dirichletAxis1", FieldVector<double,3>(0));
+        double angle = parameterSet.get("dirichletAngle1", double(0));
+
+        rodX.back().q = Rotation<3,double>(axis, M_PI*angle/180);
+    
+        complex.rods_["rod"].dirichletValues_.back() = RigidBodyMotion<3>(parameterSet.get("dirichletValue1", rodRestEndPoint[1]),
+                                                                   Rotation<3,double>(axis, M_PI*angle/180));
+        rodDNodes.back() = true;
+
+    } 
+
     complex.rods_["rod"].dirichletBoundary_.setup(*complex.rods_["rod"].grid_,rodDNodes);
 
     // Backup initial rod iterate for later reference
-- 
GitLab