Dear all,

I want to compute the L2-norm for a large number of scalar 
history-variables. The solution vectors for all of them are stored in the 
following container: 
"std::vector<Vector<double>>(num_of_history_variables)".
So far I called integrate_difference " num_of_history_variables" times, 
which is quite time consuming. Thus, I´d like to compute the L2-norm by 
myself to get a second time measurement and may save in the first call some 
time reducing information which integrate_differnce doesn´t provide for 
subsequent calls.

In order to do so, I compared for a arbitrary history variable the vector 
of cell errors, calculated from integrate_differnce, with those cell errors 
of my own implementation. Unfortunately I don´t come up with the same cell 
error(s). 

In the following is a snippet of my code, some remarks for a better 
understanding: 
(I access my history variables via a CellDataStorage object. The Variable 
"comp_0" is the value at the QP of my current mesh, the variable 
"comp_0_ref" is the corresponding value of the reference solution on the 
same QP).
------------------------------------------------------------------------------------------------
Functions::FEFieldFunction<dim> fe_field(dof_handler_scalar_ar, 
reference_solution_n[0]);

cell=dof_handler_scalar.begin_active();
for(; cell!=endc; cell++)
{
fe_values.reinit(cell);

std::vector<std::shared_ptr<PointHistory<dim>>> lqph =          
quadrature_point_history.get_data(cell);

double error_cell=0;
        
     for(unsigned int q=0; q<qf_cell.size(); q++)
     {
     const double JxW = fe_values.JxW(q);

     Vector<double> projection_variables = 
lqph[q]->create_vector_for_projection();
     double comp_0 = projection_variables(0);

     error_cell += ((comp_0 - comp_0_ref)*(comp_0 - comp_0_ref)*JxW);
     }
std::cout<<"Local cell error: "<<std::sqrt(error_cell)<<" , ";
}
------------------------------------------------------------------------------------------

I had a look in the implementation of the integrate_difference function 
with case == L2 as well.
However I could not identify any differences to my own implementation.

My question is if there is a mistake in my code snippet, i.e in the way how 
I calculate the integrals for the cell errors? 
On each cell, I basically multiply the squared abs-value of the difference 
with the JxW-Value, sum those values up and finally take the square root.

Thanks in advance for helping!

Best
Simon

-- 
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see 
https://groups.google.com/d/forum/dealii?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/dealii/8223cc52-415b-4b5b-9a06-c016570515dbn%40googlegroups.com.

Reply via email to