Hi Jean-Paul, Thank you a lot! Your idea was fully correct.
The Code to compute the H1-Norm is now (it seems to work). *********** const ComponentSelectFunction<dim> displacement_mask(make_pair(0,3), 3); Vector<double> cellwise_errors(grid.tria.n_active_cells()); VectorTools::integrate_difference( dof, u, *sol, cellwise_errors, QGauss<3>(3), VectorTools::H1_norm, &displacement_mask); const double H1_error = cellwise_errors.l2_norm(); *********** Regards Uwe. On Mon, 2011-09-26 at 11:17 +0200, Jean-Paul Pelteret wrote: > Hi Uwe, > > > I'm not familiar with the CompnentSelectFunction class, but I'm going > to hazard a guess at what the problem might be - with dim=3 (as it > appears that you have), the first parameter is likely to be out of the > range of the valid components that can be selected. I think the first > parameter set when the class is initialised needs to be 0,1 or 2. > > > Regards, > Jean-Paul > > On 26 September 2011 09:05, Uwe Köcher <[email protected]> > wrote: > > Hi, > > I have a big problem to compute the H1 norm of my Problem. > (The L2-Norm > is working well). > > The error is: > *** glibc detected *** ./lib/convergence-3d: double free or > corruption > (out): 0x0000000001ca59d0 *** > ======= Backtrace: ========= > /lib64/libc.so.6[0x3b39c7703a] > > ./lib/convergence-3d(_ZN9__gnu_cxx13new_allocatorIN6dealii6VectorIdEEE10deallocateEPS3_m+0x20)[0x45d3d2] > > ./lib/convergence-3d(_ZNSt12_Vector_baseIN6dealii6VectorIdEESaIS2_EE13_M_deallocateEPS2_m+0x32)[0x45cc38] > > ./lib/convergence-3d(_ZNSt12_Vector_baseIN6dealii6VectorIdEESaIS2_EED2Ev > +0x56)[0x45b946] > ./lib/convergence-3d(_ZNSt6vectorIN6dealii6VectorIdEESaIS2_EED2Ev > +0x42)[0x459b6c] > > /usr/local/deal.II/7.0.0/lib/libdeal_II.g.so.7.0.0(+0x210e2d0)[0x7f25bd9782d0] > > /usr/local/deal.II/7.0.0/lib/libdeal_II.g.so.7.0.0(_ZN6dealii11VectorTools20integrate_differenceILi3ENS_6VectorIdEES3_Li3EEEvRKNS_10DoFHandlerIXT_EXT2_EEERKT0_RKNS_8FunctionIXT2_EEERT1_RKNS_10QuadratureIXT_EEERKNS0_8NormTypeEPSD_d+0xa8)[0x7f25bda4c402] > > ./lib/convergence-3d(_ZN32TimeProblem_LinearSystem_NewmarkILi3EE5solveEdd+0x8b8)[0x44f9de] > ./lib/convergence-3d(main+0x3da)[0x4478a6] > /lib64/libc.so.6(__libc_start_main+0xed)[0x3b39c2139d] > ./lib/convergence-3d[0x443bb9] > > When I'm doing this: > # const ComponentSelectFunction<dim> displacement_mask(3,3); > # Vector<double> cellwise_errors(grid.tria.n_active_cells()); > # VectorTools::integrate_difference( > # dof, u, *sol, cellwise_errors, QGauss<3>(3), > VectorTools::H1_seminorm, &displacement_mask); > > I think the main information of the error output might be: > > "/usr/local/deal.II/7.0.0/lib/libdeal_II.g.so.7.0.0(_ZN6dealii11VectorTools20integrate_differenceILi3ENS_6VectorIdEES3_Li3EEEvRKNS_10DoFHandlerIXT_EXT2_EEERKT0_RKNS_8FunctionIXT2_EEERT1_RKNS_10QuadratureIXT_EEERKNS0_8NormTypeEPSD_d+0xa8)[0x7f25bda4c402]" > but I don't find a problem in the implementation of > integrate_difference. > > > My gradient function (it seems to work) is: > (to the Problem u : R^3 x [0,T] -> R^3, H1-norm at time = T) > void SolutionConvergence_u::vector_gradient(const Point<3> &x, > std::vector<Tensor<1,3> > &gradients) const { > [...] > > gradients[0].clear(); > gradients[1].clear(); > gradients[2].clear(); > > gradients[0][0] = t2pic1s2s3; > gradients[0][1] = t2pic1s2s3; > gradients[0][2] = t2pic1s2s3; > > gradients[1][0] = t2pis1c2s3; > gradients[1][1] = t2pis1c2s3; > gradients[1][2] = t2pis1c2s3; > > gradients[2][0] = t2pis1s2c3; > gradients[2][1] = t2pis1s2c3; > gradients[2][2] = t2pis1s2c3; > > #ifdef DBG_OUTPUT > cout << "Gradients = " << gradients[0][0] << " " << > gradients[0][1] << " " << gradients[0][2] << endl; > cout << "Gradients = " << gradients[1][0] << " " << > gradients[1][1] << " " << gradients[1][2] << endl; > cout << "Gradients = " << gradients[2][0] << " " << > gradients[2][1] << " " << gradients[2][2] << endl << > endl; > //getchar(); > #endif > } > > > Can anybody help me, what I'm doing wrong, or is there a error > within > the library? > > Best Regards > UK. > > -- > Dipl.-Ing. Uwe Köcher > > Helmut Schmidt Universität > > Fakultät für Maschinenbau, > Professur für Numerische Verfahren in den Rechnergestützten > Ingenieurwissenschaften. > > Holstenhofweg 85 > 22043 Hamburg > > > > _______________________________________________ > dealii mailing list > http://poisson.dealii.org/mailman/listinfo/dealii > -- Dipl.-Ing. Uwe Köcher Hamburg, Helmut Schmidt University University of the German Federal Armed Forces Email: [email protected] Web: http://www.hsu-hh.de/mb-mathe _______________________________________________ dealii mailing list http://poisson.dealii.org/mailman/listinfo/dealii
