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[]) ¶llelellipt, 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) ¶llelheat, 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