changeset 49:a4ef215d1eed

Check if size of input parameters agree
author gedeone-octave <marco.vassallo@outlook.com>
date Mon, 22 Jul 2013 15:32:27 +0200
parents c73bca616ca7
children fcfecdd3a9b5
files src/fem_func.cc
diffstat 1 files changed, 18 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/src/fem_func.cc	Mon Jul 22 15:13:30 2013 +0200
+++ b/src/fem_func.cc	Mon Jul 22 15:32:27 2013 +0200
@@ -40,21 +40,26 @@
             {
               const boost::shared_ptr<const dolfin::FunctionSpace> & V = fspo.get_pfsp ();
 
-              dolfin::Vector du(myu.length ());
-              for (std::size_t i = 0; i < myu.length (); ++i)
-                du.setitem (i, myu(i));
-
-              boost::shared_ptr<dolfin::Vector> uu (new dolfin::Vector(du));
-              boost::shared_ptr <const dolfin::Function> u (new dolfin::Function(V, uu));
+              if (V->dim () != myu.length ())
+                error ("The size of the functional space and of the vector must agree");
+              else
+                {
+                  dolfin::Vector du(myu.length ());
+                  for (std::size_t i = 0; i < myu.length (); ++i)
+                    du.setitem (i, myu(i));
 
-              if (! function_type_loaded)
-                {
-                  function::register_type ();
-                  function_type_loaded = true;
-                  mlock ();
-                }
+                  boost::shared_ptr<dolfin::Vector> uu (new dolfin::Vector(du));
+                  boost::shared_ptr <const dolfin::Function> u (new dolfin::Function(V, uu));
 
-              retval = new function (u);
+                  if (! function_type_loaded)
+                    {
+                      function::register_type ();
+                      function_type_loaded = true;
+                      mlock ();
+                    }
+
+                  retval = new function (u);
+               }
             }
         }
     }