From: Wolfgang Bangerth Date: Sat, 9 May 2015 03:44:57 +0000 (-0500) Subject: Expand on certain FIXMEs. X-Git-Tag: v8.3.0-rc1~184^2~1 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fad3dc81ac0f7e5d8e13368f8eb4e9039a85c3ca;p=dealii.git Expand on certain FIXMEs. --- diff --git a/source/numerics/data_out_dof_data.cc b/source/numerics/data_out_dof_data.cc index dfdb6cf8cf..bb5bb5c8c9 100644 --- a/source/numerics/data_out_dof_data.cc +++ b/source/numerics/data_out_dof_data.cc @@ -1,6 +1,6 @@ // --------------------------------------------------------------------- // -// Copyright (C) 1999 - 2014 by the deal.II authors +// Copyright (C) 1999 - 2015 by the deal.II authors // // This file is part of the deal.II library. // @@ -545,11 +545,21 @@ namespace internal get_function_values (const FEValuesBase &fe_patch_values, std::vector > &patch_values_system) const { - //FIXME + // FIXME: FEValuesBase gives us data in types that match that of + // the solution vector. but this function needs to pass it back + // up as 'double' vectors. this requires the use of a temporary + // variable here + // + // the correct thing would be to also use the correct data type + // upstream somewhere, but this is complicated because we hide + // the actual data type from upstream. rather, we should at + // least make sure we can deal with complex numbers std::vector > tmp(patch_values_system.size()); for (unsigned int i = 0; i < patch_values_system.size(); i++) tmp[i].reinit(patch_values_system[i]); + fe_patch_values.get_function_values (*vector, tmp); + for (unsigned int i = 0; i < patch_values_system.size(); i++) patch_values_system[i] = tmp[i]; } @@ -562,9 +572,19 @@ namespace internal get_function_values (const FEValuesBase &fe_patch_values, std::vector &patch_values) const { - //FIXME + // FIXME: FEValuesBase gives us data in types that match that of + // the solution vector. but this function needs to pass it back + // up as 'double' vectors. this requires the use of a temporary + // variable here + // + // the correct thing would be to also use the correct data type + // upstream somewhere, but this is complicated because we hide + // the actual data type from upstream. rather, we should at + // least make sure we can deal with complex numbers std::vector tmp (patch_values.size()); + fe_patch_values.get_function_values (*vector, tmp); + for (unsigned int i = 0; i < tmp.size(); i++) patch_values[i] = tmp[i]; } @@ -577,11 +597,21 @@ namespace internal get_function_gradients (const FEValuesBase &fe_patch_values, std::vector > > &patch_gradients_system) const { - //FIXME + // FIXME: FEValuesBase gives us data in types that match that of + // the solution vector. but this function needs to pass it back + // up as 'double' vectors. this requires the use of a temporary + // variable here + // + // the correct thing would be to also use the correct data type + // upstream somewhere, but this is complicated because we hide + // the actual data type from upstream. rather, we should at + // least make sure we can deal with complex numbers std::vector > > tmp(patch_gradients_system.size()); for (unsigned int i = 0; i < tmp.size(); i++) tmp[i].resize(patch_gradients_system.size()); + fe_patch_values.get_function_gradients (*vector, tmp); + for (unsigned int i = 0; i < tmp.size(); i++) for (unsigned int j = 0; j < tmp[i].size(); j++) patch_gradients_system[i][j] = tmp[i][j]; @@ -595,10 +625,20 @@ namespace internal get_function_gradients (const FEValuesBase &fe_patch_values, std::vector > &patch_gradients) const { - //FIXME + // FIXME: FEValuesBase gives us data in types that match that of + // the solution vector. but this function needs to pass it back + // up as 'double' vectors. this requires the use of a temporary + // variable here + // + // the correct thing would be to also use the correct data type + // upstream somewhere, but this is complicated because we hide + // the actual data type from upstream. rather, we should at + // least make sure we can deal with complex numbers std::vector > tmp; tmp.resize(patch_gradients.size()); + fe_patch_values.get_function_gradients (*vector, tmp); + for (unsigned int i = 0; i < tmp.size(); i++) patch_gradients[i] = tmp[i]; } @@ -611,11 +651,21 @@ namespace internal get_function_hessians (const FEValuesBase &fe_patch_values, std::vector > > &patch_hessians_system) const { - // FIXME + // FIXME: FEValuesBase gives us data in types that match that of + // the solution vector. but this function needs to pass it back + // up as 'double' vectors. this requires the use of a temporary + // variable here + // + // the correct thing would be to also use the correct data type + // upstream somewhere, but this is complicated because we hide + // the actual data type from upstream. rather, we should at + // least make sure we can deal with complex numbers std::vector > > tmp(patch_hessians_system.size()); for (unsigned int i = 0; i < tmp.size(); i++) tmp[i].resize(patch_hessians_system[i].size()); + fe_patch_values.get_function_hessians (*vector, tmp); + for (unsigned int i = 0; i < tmp.size(); i++) for (unsigned int j = 0; j < tmp[i].size(); j++) patch_hessians_system[i][j] = tmp[i][j]; @@ -629,9 +679,19 @@ namespace internal get_function_hessians (const FEValuesBase &fe_patch_values, std::vector > &patch_hessians) const { - // FIXME + // FIXME: FEValuesBase gives us data in types that match that of + // the solution vector. but this function needs to pass it back + // up as 'double' vectors. this requires the use of a temporary + // variable here + // + // the correct thing would be to also use the correct data type + // upstream somewhere, but this is complicated because we hide + // the actual data type from upstream. rather, we should at + // least make sure we can deal with complex numbers std::vector > tmp(patch_hessians.size()); + fe_patch_values.get_function_hessians (*vector, tmp); + for (unsigned int i = 0; i < tmp.size(); i++) patch_hessians[i] = tmp[i]; }