From 79e618c7609c8cf6c69a850bd06e272a4a32ce64 Mon Sep 17 00:00:00 2001
From: Thomas Witkowski <thomas.witkowski@gmx.de>
Date: Mon, 22 Mar 2010 16:08:36 +0000
Subject: [PATCH] Moved all boundary condition definitions after operator
 definitions, as it should be done.

---
 demo/src/ball.cc           |  6 +++---
 demo/src/bunny.cc          |  3 ---
 demo/src/couple.cc         | 12 ++++++------
 demo/src/ellipt.cc         |  8 ++++----
 demo/src/heat.cc           | 16 ++++++++--------
 demo/src/neumann.cc        |  8 ++++----
 demo/src/parallelellipt.cc |  6 +++---
 demo/src/parallelheat.cc   | 24 +++++++++---------------
 demo/src/periodic.cc       | 12 ++++++------
 demo/src/vecellipt.cc      |  7 +++----
 demo/src/vecheat.cc        | 16 ++++++++--------
 11 files changed, 54 insertions(+), 64 deletions(-)

diff --git a/demo/src/ball.cc b/demo/src/ball.cc
index fc024502..516337f9 100644
--- a/demo/src/ball.cc
+++ b/demo/src/ball.cc
@@ -69,9 +69,6 @@ int main(int argc, char* argv[])
 					       &ball,
 					       adaptInfo);
   
-  // ===== add boundary conditions =====
-  ball.addDirichletBC(1, new G);
-
   // ===== create matrix operator =====
   Operator matrixOperator(Operator::MATRIX_OPERATOR, ball.getFESpace());
   matrixOperator.addSecondOrderTerm(new Laplace_SOT);
@@ -83,6 +80,9 @@ int main(int argc, char* argv[])
   rhsOperator.addZeroOrderTerm(new CoordsAtQP_ZOT(new F(degree)));
   ball.addVectorOperator(&rhsOperator);
 
+  // ===== add boundary conditions =====
+  ball.addDirichletBC(1, new G);
+
   // ===== start adaption loop =====
   adapt->adapt();
 
diff --git a/demo/src/bunny.cc b/demo/src/bunny.cc
index f52ea411..50733f35 100644
--- a/demo/src/bunny.cc
+++ b/demo/src/bunny.cc
@@ -66,9 +66,6 @@ int main(int argc, char* argv[])
 					       &bunny,
 					       adaptInfo);
   
-  // ===== add boundary conditions =====
-  //bunny.addDirichletBC(1111, new G);
-
   // ===== create matrix operator =====
   Operator matrixOperator(Operator::MATRIX_OPERATOR,
 			  bunny.getFESpace());
diff --git a/demo/src/couple.cc b/demo/src/couple.cc
index 68be9f3c..f1af8da1 100644
--- a/demo/src/couple.cc
+++ b/demo/src/couple.cc
@@ -141,12 +141,6 @@ int main(int argc, char* argv[])
 		      &problem1,
 		      adoptFlag);
 
-  // ===== add boundary conditions for problem1 =====
-  problem1.addDirichletBC(1, new G);
-
-  // ===== add boundary conditions for problem1 =====
-  //problem2.addDirichletBC(1, new G);
-
   // ===== create operators for problem1 =====
   Operator matrixOperator1(Operator::MATRIX_OPERATOR, problem1.getFESpace());
   matrixOperator1.addSecondOrderTerm(new Laplace_SOT);
@@ -167,6 +161,12 @@ int main(int argc, char* argv[])
 						new Identity(degree)));
   problem2.addVectorOperator(&rhsOperator2);
 
+  // ===== add boundary conditions for problem1 =====
+  problem1.addDirichletBC(1, new G);
+
+  // ===== add boundary conditions for problem1 =====
+  //problem2.addDirichletBC(1, new G);
+
   // ===== create adaptation loop and iteration interface =====
   AdaptInfo *adaptInfo = new AdaptInfo("couple->adapt", 1);
   MyCoupledIteration coupledIteration(&problem1, &problem2);
diff --git a/demo/src/ellipt.cc b/demo/src/ellipt.cc
index 1ba61c89..1eaf426c 100644
--- a/demo/src/ellipt.cc
+++ b/demo/src/ellipt.cc
@@ -65,10 +65,6 @@ int main(int argc, char* argv[])
   AdaptStationary adapt("ellipt->adapt", ellipt, adaptInfo);
 
   
-  // ===== add boundary conditions =====
-  ellipt.addDirichletBC(1, new G);
-
-
   // ===== create matrix operator =====
   Operator matrixOperator(Operator::MATRIX_OPERATOR, ellipt.getFESpace());
   matrixOperator.addSecondOrderTerm(new Laplace_SOT);
@@ -82,6 +78,10 @@ int main(int argc, char* argv[])
   ellipt.addVectorOperator(rhsOperator);
 
 
+  // ===== add boundary conditions =====
+  ellipt.addDirichletBC(1, new G);
+
+
   // ===== start adaption loop =====
   adapt.adapt();
 
diff --git a/demo/src/heat.cc b/demo/src/heat.cc
index 595f0c09..bb414fee 100644
--- a/demo/src/heat.cc
+++ b/demo/src/heat.cc
@@ -193,14 +193,6 @@ int main(int argc, char** argv)
 				adaptInfoInitial);
 
 
-  // ===== create boundary functions =====
-  G *boundaryFct = new G;
-  boundaryFct->setTimePtr(heat.getBoundaryTimePtr());
-  heat.setExactSolution(boundaryFct);
-
-  heatSpace.addDirichletBC(DIRICHLET, boundaryFct);
-
-
   // ===== create rhs functions =====
   int degree = heatSpace.getFESpace()->getBasisFcts()->getDegree();
   F *rhsFct = new F(degree);
@@ -235,6 +227,14 @@ int main(int argc, char** argv)
   heatSpace.addVectorOperator(F);
 
 
+  // ===== create boundary functions =====
+  G *boundaryFct = new G;
+  boundaryFct->setTimePtr(heat.getBoundaryTimePtr());
+  heat.setExactSolution(boundaryFct);
+
+  heatSpace.addDirichletBC(DIRICHLET, boundaryFct);
+
+
   // ===== start adaption loop =====
   int errorCode = adaptInstat.adapt();
 
diff --git a/demo/src/neumann.cc b/demo/src/neumann.cc
index 8de2f500..cd825be1 100644
--- a/demo/src/neumann.cc
+++ b/demo/src/neumann.cc
@@ -62,10 +62,6 @@ int main(int argc, char* argv[])
 					       &neumann,
 					       adaptInfo);
   
-  // ===== add boundary conditions =====
-  neumann.addNeumannBC(1, new N);
-  neumann.addDirichletBC(2, new G);
-
   // ===== create matrix operator =====
   Operator matrixOperator(Operator::MATRIX_OPERATOR, neumann.getFESpace());
   matrixOperator.addSecondOrderTerm(new Laplace_SOT);
@@ -77,6 +73,10 @@ int main(int argc, char* argv[])
   rhsOperator.addZeroOrderTerm(new CoordsAtQP_ZOT(new F(degree)));
   neumann.addVectorOperator(&rhsOperator);
 
+  // ===== add boundary conditions =====
+  neumann.addNeumannBC(1, new N);
+  neumann.addDirichletBC(2, new G);
+
   // ===== start adaption loop =====
   adapt->adapt();
 
diff --git a/demo/src/parallelellipt.cc b/demo/src/parallelellipt.cc
index bbe369e4..fe061099 100644
--- a/demo/src/parallelellipt.cc
+++ b/demo/src/parallelellipt.cc
@@ -71,9 +71,6 @@ int main(int argc, char* argv[])
 					       &parallelellipt,
 					       adaptInfo);
   
-  // ===== add boundary conditions =====
-  ellipt.addDirichletBC(1, new G);
-
   // ===== create matrix operator =====
   Operator matrixOperator(Operator::MATRIX_OPERATOR, ellipt.getFESpace());
   matrixOperator.addSecondOrderTerm(new Laplace_SOT);
@@ -85,6 +82,9 @@ int main(int argc, char* argv[])
   rhsOperator.addZeroOrderTerm(new CoordsAtQP_ZOT(new F(degree)));
   ellipt.addVectorOperator(&rhsOperator);
 
+  // ===== add boundary conditions =====
+  ellipt.addDirichletBC(1, new G);
+
   parallelellipt.initParallelization(adaptInfo);
   adapt->adapt();
   parallelellipt.exitParallelization(adaptInfo);
diff --git a/demo/src/parallelheat.cc b/demo/src/parallelheat.cc
index 868337f6..6c774dce 100644
--- a/demo/src/parallelheat.cc
+++ b/demo/src/parallelheat.cc
@@ -174,13 +174,6 @@ int main(int argc, char** argv)
 			  &parallelheat,
 			  adaptInfoInitial);
 
-  // ===== create boundary functions =====
-  G *boundaryFct = new G;
-  boundaryFct->setTimePtr(heat->getTimePtr());
-  heat->setBoundaryFct(boundaryFct);
-
-  heatSpace->addDirichletBC(DIRICHLET, boundaryFct);
-
   // ===== create rhs functions =====
   int degree = heatSpace->getFESpace()->getBasisFcts()->getDegree();
   F *rhsFct = new F(degree);
@@ -221,20 +214,21 @@ int main(int argc, char** argv)
 
   heatSpace->addVectorOperator(F);
 
-//   // ===== start adaption loop =====
-//   if(MPI::COMM_WORLD.Get_rank() == 0) {
-//     bool wait=true; 
-//     while(wait) {}
-//   }
+  // ===== create boundary functions =====
+  G *boundaryFct = new G;
+  boundaryFct->setTimePtr(heat->getTimePtr());
+  heat->setBoundaryFct(boundaryFct);
+
+  heatSpace->addDirichletBC(DIRICHLET, boundaryFct);
 
+
+
+//   // ===== start adaption loop =====
   parallelheat.initParallelization(adaptInfo);
 
   adaptInstat->adapt();
 
   parallelheat.exitParallelization(adaptInfo);
 
-//   if(MPI::COMM_WORLD.Get_rank() == 0)
-//     heatSpace->writeFiles(adaptInfo, true);
-
   MPI::Finalize();
 }
diff --git a/demo/src/periodic.cc b/demo/src/periodic.cc
index 99a1f164..628a4568 100644
--- a/demo/src/periodic.cc
+++ b/demo/src/periodic.cc
@@ -52,12 +52,6 @@ int main(int argc, char* argv[])
 					       &periodic,
 					       adaptInfo);
   
-  // ===== add boundary conditions =====
-  periodic.addDirichletBC(1, new G);
-
-  // ===== add periodic conditions =====
-  periodic.addPeriodicBC(-1);
-
   // ===== create matrix operator =====
   Operator matrixOperator(Operator::MATRIX_OPERATOR, periodic.getFESpace());
   matrixOperator.addSecondOrderTerm(new Laplace_SOT);
@@ -69,6 +63,12 @@ int main(int argc, char* argv[])
   rhsOperator.addZeroOrderTerm(new CoordsAtQP_ZOT(new F(degree)));
   periodic.addVectorOperator(&rhsOperator);
 
+  // ===== add boundary conditions =====
+  periodic.addDirichletBC(1, new G);
+
+  // ===== add periodic conditions =====
+  periodic.addPeriodicBC(-1);
+
   // ===== start adaption loop =====
   adapt->adapt();
 
diff --git a/demo/src/vecellipt.cc b/demo/src/vecellipt.cc
index 8b2e5e2d..36c2f3fe 100644
--- a/demo/src/vecellipt.cc
+++ b/demo/src/vecellipt.cc
@@ -63,10 +63,6 @@ int main(int argc, char* argv[])
   AdaptStationary adapt("vecellipt->adapt", vecellipt, adaptInfo);
 
   
-  // ===== add boundary conditions =====
-  vecellipt.addDirichletBC(1, 0, 0, new G);
-
-
   // ===== create matrix operators =====
   Operator matrixOperator00(Operator::MATRIX_OPERATOR, 
 			    vecellipt.getFESpace(0), vecellipt.getFESpace(0));
@@ -90,6 +86,9 @@ int main(int argc, char* argv[])
   rhsOperator0.addZeroOrderTerm(new CoordsAtQP_ZOT(new F(degree)));
   vecellipt.addVectorOperator(rhsOperator0, 0);
 
+  // ===== add boundary conditions =====
+  vecellipt.addDirichletBC(1, 0, 0, new G);
+
 
   // ===== start adaption loop =====
   adapt.adapt();
diff --git a/demo/src/vecheat.cc b/demo/src/vecheat.cc
index b19d2a05..a2dfddaa 100644
--- a/demo/src/vecheat.cc
+++ b/demo/src/vecheat.cc
@@ -248,14 +248,6 @@ int main(int argc, char** argv)
     *(adaptInfo.getTimestepPtr()) *= fac * pow(2.0, -nRefine);
   
 
-  // ===== create boundary functions =====
-  G *boundaryFct = new G;
-  boundaryFct->setTimePtr(vecheat.getBoundaryTimePtr());
-  vecheat.setBoundaryFct(boundaryFct);
-
-  vecheatSpace.addDirichletBC(DIRICHLET, 0, 0, boundaryFct);
-  vecheatSpace.addDirichletBC(DIRICHLET, 1, 1, boundaryFct);
-
   // ===== create rhs functions =====
   F *rhsFct0 = new F(vecheatSpace.getFESpace(0)->getBasisFcts()->getDegree());
   rhsFct0->setTimePtr(vecheat.getRHSTimePtr());
@@ -315,6 +307,14 @@ int main(int argc, char** argv)
   F1.addZeroOrderTerm(new CoordsAtQP_ZOT(rhsFct1));
   vecheatSpace.addVectorOperator(F1, 1);
 
+  // ===== create boundary functions =====
+  G *boundaryFct = new G;
+  boundaryFct->setTimePtr(vecheat.getBoundaryTimePtr());
+  vecheat.setBoundaryFct(boundaryFct);
+
+  vecheatSpace.addDirichletBC(DIRICHLET, 0, 0, boundaryFct);
+  vecheatSpace.addDirichletBC(DIRICHLET, 1, 1, boundaryFct);
+
   // ===== start adaption loop =====
   int errorCode = adaptInstat.adapt();
 
-- 
GitLab