Mercurial > fem-fenics-eugenio
changeset 242:958a0e0e8102
interpolate.cc: catch exception if interpolation fails
author | Eugenio Gianniti <eugenio.gianniti@mail.polimi.it> |
---|---|
date | Wed, 25 Jun 2014 22:32:38 +0200 |
parents | 0f14cdbcaed3 |
children | e51dba005f87 |
files | src/interpolate.cc |
diffstat | 1 files changed, 45 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/src/interpolate.cc Wed Jun 25 20:36:04 2014 +0200 +++ b/src/interpolate.cc Wed Jun 25 22:32:38 2014 +0200 @@ -18,6 +18,7 @@ #include "coefficient.h" #include "function.h" #include "functionspace.h" +#include <stdexcept> DEFUN_DLD (interpolate, args, nargout, "-*- texinfo -*-\n\ @deftypefn {Function File} @var{interp} = \ @@ -86,10 +87,17 @@ if (! error_state) { - output->interpolate (u0.get_fun ()); - if (name.empty ()) - name = u0.get_str (); - retval = new function (name, output); + try { output->interpolate (u0.get_fun ()); } + catch (std::runtime_error &) + { + error ("unable to interpolate on this function space"); + } + if (! error_state) + { + if (name.empty ()) + name = u0.get_str (); + retval = new function (name, output); + } } } else if (args(0+offset).type_id () == @@ -100,10 +108,17 @@ if (! error_state) { - output->interpolate (* u0.get_expr ()); - if (name.empty ()) - name = u0.get_str (); - retval = new function (name, output); + try { output->interpolate (* u0.get_expr ()); } + catch (std::runtime_error &) + { + error ("unable to interpolate on this function space"); + } + if (! error_state) + { + if (name.empty ()) + name = u0.get_str (); + retval = new function (name, output); + } } } else @@ -127,10 +142,17 @@ if (! error_state) { - output->interpolate (u1.get_fun ()); - if (name.empty ()) - name = u1.get_str (); - retval = new function (name, output); + try { output->interpolate (u1.get_fun ()); } + catch (std::runtime_error &) + { + error ("unable to interpolate on this function space"); + } + if (! error_state) + { + if (name.empty ()) + name = u1.get_str (); + retval = new function (name, output); + } } } else if (args(0+offset).type_id () == @@ -141,10 +163,17 @@ if (! error_state) { - output->interpolate (* u1.get_expr ()); - if (name.empty ()) - name = u1.get_str (); - retval = new function (name, output); + try { output->interpolate (* u1.get_expr ()); } + catch (std::runtime_error &) + { + error ("unable to interpolate on this function space"); + } + if (! error_state) + { + if (name.empty ()) + name = u1.get_str (); + retval = new function (name, output); + } } } else