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

Reply via email to