From 05a013e06aea61df429f4df95ba4c3bb92e3a46a Mon Sep 17 00:00:00 2001 From: Oliver Sander <sander@igpm.rwth-aachen.de> Date: Tue, 24 Mar 2015 05:29:08 +0000 Subject: [PATCH] Minor cleanup [[Imported from SVN: r10113]] --- src/finite-strain-elasticity.cc | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/src/finite-strain-elasticity.cc b/src/finite-strain-elasticity.cc index c87b7c53..6ef8eac9 100644 --- a/src/finite-strain-elasticity.cc +++ b/src/finite-strain-elasticity.cc @@ -193,11 +193,7 @@ int main (int argc, char *argv[]) try lambda = std::string("lambda x: (") + parameterSet.get<std::string>("initialDeformation") + std::string(")"); PythonFunction<FieldVector<double,dim>, FieldVector<double,3> > pythonInitialDeformation(Python::evaluate(lambda)); - std::vector<FieldVector<double,3> > v; - Functions::interpolate(feBasis, v, pythonInitialDeformation); - - for (size_t i=0; i<x.size(); i++) - x[i] = v[i]; + Functions::interpolate(feBasis, x, pythonInitialDeformation); //////////////////////////////////////////////////////// // Main homotopy loop @@ -206,7 +202,7 @@ int main (int argc, char *argv[]) try // Output initial iterate (of homotopy loop) VTKWriter<GridType::LeafGridView> vtkWriter(grid->leafGridView()); BlockVector<FieldVector<double,3> > displacement(x.size()); - for (auto it = grid->leafGridView().template begin<dim>(); it != grid->leafGridView().template end<dim>(); ++it) + for (auto it = grid->leafGridView().begin<dim>(); it != grid->leafGridView().end<dim>(); ++it) { size_t idx = grid->leafGridView().indexSet().index(*it); displacement[idx] = x[idx] - it->geometry().corner(0); @@ -279,8 +275,10 @@ int main (int argc, char *argv[]) try // Set Dirichlet values //////////////////////////////////////////////////////// + // The python class that implements the Dirichlet values Python::Reference dirichletValuesClass = Python::import(parameterSet.get<std::string>("problem") + "-dirichlet-values"); + // The member method 'DirichletValues' of that class Python::Callable C = dirichletValuesClass.get("DirichletValues"); // Call a constructor. @@ -289,12 +287,7 @@ int main (int argc, char *argv[]) try // Extract object member functions as Dune functions PythonFunction<FieldVector<double,dim>, FieldVector<double,3> > dirichletValues(dirichletValuesPythonObject.get("dirichletValues")); - std::vector<FieldVector<double,3> > ddV; - Functions::interpolate(feBasis, ddV, dirichletValues, dirichletDofs); - - for (size_t j=0; j<x.size(); j++) - if (dirichletNodes[j][0]) - x[j] = ddV[j]; + Functions::interpolate(feBasis, x, dirichletValues, dirichletDofs); // ///////////////////////////////////////////////////// // Solve! @@ -308,7 +301,7 @@ int main (int argc, char *argv[]) try // Output result of each homotopy step VTKWriter<GridType::LeafGridView> vtkWriter(grid->leafGridView()); BlockVector<FieldVector<double,3> > displacement(x.size()); - for (auto it = grid->leafGridView().template begin<dim>(); it != grid->leafGridView().template end<dim>(); ++it) + for (auto it = grid->leafGridView().begin<dim>(); it != grid->leafGridView().end<dim>(); ++it) { size_t idx = grid->leafGridView().indexSet().index(*it); displacement[idx] = x[idx] - it->geometry().corner(0); -- GitLab