Dear Najwa,

how many components do the `ExactSolution2<dim>` function has?

The error complains about `exact_solution.n_components, n_components` not being 
equal, in particular it tells you that `ExactSolution2<dim>` only has one 
component. 

If you built the ExactSolution class yourself, make sure at construction time 
you tell Function<dim> to allocate two components:

ExactSolution2<dim>::ExactSolution2<dim>( … ) 
   : Functions::Function<dim>(2)
        
Best,
Luca.


> On 20 Jul 2023, at 12:15, Najwa Alshehri <[email protected]> wrote:
> 
> Hello again,
> 
> I have a follow-up question. Does this ComponentSelectFunction work also with 
> vectors that are not written as blocked vectors? I have applied it before 
> when I was dealing with blocked vectors and it worked perfectly. 
> 
> So, I did this, 
> const ComponentSelectFunction<dim> primal_mask(0,2);
> Later,
> VectorTools::integrate_difference(omega2_dh,
> u_omega2,
> ExactSolution2<dim>(),
> cellwise_errors2,
> quadrature,
> VectorTools::L2_norm
> ,&primal_mask);
> const double u2_l2_error =
> VectorTools::compute_global_error(triangulation_omega2,
> cellwise_errors2,
> VectorTools::L2_norm);
> 
> And I got the following error!!
> An error occurred in line <455> of file 
> <../include/deal.II/numerics/vector_tools_integrate_difference.templates.h> 
> in function
>     void dealii::VectorTools::internal::do_integrate_difference(const 
> dealii::hp::MappingCollection<dim, spacedim>&, const dealii::DoFHandler<dim, 
> spacedim>&, const InVector&, const dealii::Function<spacedim, typename 
> InVector::value_type>&, OutVector&, const dealii::hp::QCollection<dim>&, 
> const dealii::VectorTools::NormType&, const dealii::Function<spacedim>*, 
> double) [with int dim = 2; int spacedim = 2; InVector = 
> dealii::Vector<double>; OutVector = dealii::Vector<double>; typename 
> InVector::value_type = double]
> The violated condition was: 
>     
> ::dealii::deal_II_exceptions::internals::compare_for_equality(exact_solution.n_components,
>  n_components)
> Additional information: 
>     Dimension 1 not equal to 2.
> 
>  Obviously, we have dimensionality mismatching between u_omega2 and the exact 
> solution. which means that the mask is not really picking up the first 
> component of the solution u_omega2.  Do you have any suggestions to fix this 
> issue?
> 
> Appreciate your help,
> Najwa
> On Thursday, July 20, 2023 at 11:48:04 AM UTC+3 Najwa Alshehri wrote:
> Thank you Daniel for the clear quick answer. I will follow it.
> 
> Best,
> Najwa
> 
> On Wednesday, July 19, 2023 at 5:16:14 PM UTC+3 [email protected] wrote:
> Najwa,
> 
> The documentation of 
> VectorTools::integrate_difference(https://www.dealii.org/current/doxygen/deal.II/namespaceVectorTools.html#a676190d2c897ac5da68a9c460fa95832)
>  says
> 
> 
> The additional argument weight allows to evaluate weighted norms. The weight 
> function may be scalar, establishing a spatially variable weight in the 
> domain for all components equally. This may be used, for instance, to only 
> integrate over parts of the domain. The weight function may also be 
> vector-valued, with as many components as the finite element: Then, different 
> components get different weights. A typical application is when the error 
> with respect to only one or a subset of the solution variables is to be 
> computed, in which case the other components would have weight values equal 
> to zero. The ComponentSelectFunction class is particularly useful for this 
> purpose as it provides such a "mask" weight. The weight function is expected 
> to be positive, but negative values are not filtered. The default value of 
> this function, a null pointer, is interpreted as "no weighting function", 
> i.e., weight=1 in the whole domain for all vector components uniformly.
> 
> Best,
> Daniel
> 
> On Wed, Jul 19, 2023 at 8:01 AM Najwa Alshehri <[email protected]> wrote:
> Dear group members,
> 
> I have one question, 
> 
> I am trying to calculate the L2 norm of the error of a solution. In 
> particular, I have a vector of the solution u_omega and a FeSystem with two 
> fes.
> I am interested in computing the L2 norm of the error related to the first fe 
> using integrate_difference  function. (Note here u_omega is not a blocked 
> vector, however, it has two solutions stacked together in one vector). Can I 
> extract the solution of the first part from u_omega?
> 
> 
> Thank you in advance for your help.
> Best,
> Najwa
> 
> -- 
> 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/9741338e-2a31-418b-815d-277a5d7cb573n%40googlegroups.com.
> 
> -- 
> 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/c2544a5b-16b0-4d3d-8ccc-22e77ccf3038n%40googlegroups.com.

-- 
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/215F418B-6ED1-4364-972B-0051BABCD9D6%40gmail.com.

Reply via email to