From 867014dd59c93339720962516549ef2910899279 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Wed, 4 Feb 2015 11:14:29 +0100 Subject: [PATCH] patched fe_field_funciton.templates.h --- .../numerics/fe_field_function.templates.h | 31 +++++++++++++------ 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/include/deal.II/numerics/fe_field_function.templates.h b/include/deal.II/numerics/fe_field_function.templates.h index 00d26cb42a..6b85b89271 100644 --- a/include/deal.II/numerics/fe_field_function.templates.h +++ b/include/deal.II/numerics/fe_field_function.templates.h @@ -87,7 +87,8 @@ namespace Functions FEValues fe_v(mapping, cell->get_fe(), quad, update_values); fe_v.reinit(cell); - std::vector< Vector > vvalues (1, values); + std::vector< Vector > vvalues (1); + vvalues[0].reinit(values.size()); fe_v.get_function_values(data_vector, vvalues); values = vvalues[0]; } @@ -138,10 +139,13 @@ namespace Functions FEValues fe_v(mapping, cell->get_fe(), quad, update_gradients); fe_v.reinit(cell); - std::vector< std::vector > > vgrads - (1, std::vector >(n_components) ); + std::vector< std::vector > > vgrads + (1, std::vector >(n_components) ); fe_v.get_function_gradients(data_vector, vgrads); - gradients = vgrads[0]; + const unsigned int s = vgrads[0].size(); + gradients.resize(s); + for (unsigned int i = 0; i < s; i++) + gradients[i] = vgrads[0][i]; } @@ -191,7 +195,8 @@ namespace Functions FEValues fe_v(mapping, cell->get_fe(), quad, update_hessians); fe_v.reinit(cell); - std::vector< Vector > vvalues (1, values); + std::vector< Vector > vvalues (1); + vvalues[0].reinit(values.size()); fe_v.get_function_laplacians(data_vector, vvalues); values = vvalues[0]; } @@ -246,7 +251,7 @@ namespace Functions { fe_v.reinit(cells[i], i, 0); const unsigned int nq = qpoints[i].size(); - std::vector< Vector > vvalues (nq, Vector(n_components)); + std::vector< Vector > vvalues (nq, Vector(n_components)); fe_v.get_present_fe_values ().get_function_values(data_vector, vvalues); for (unsigned int q=0; q > > - vgrads (nq, std::vector >(n_components)); + std::vector< std::vector > > + vgrads (nq, std::vector >(n_components)); fe_v.get_present_fe_values ().get_function_gradients(data_vector, vgrads); for (unsigned int q=0; q > &viq = values[maps[i][q]]; + const unsigned int s = vgrads[q].size(); + viq.resize(s); + for (unsigned int l=0;l > vvalues (nq, Vector(n_components)); + std::vector< Vector > vvalues (nq, Vector(n_components)); fe_v.get_present_fe_values ().get_function_laplacians(data_vector, vvalues); for (unsigned int q=0; q