# [aspect-devel] VectorTools::integrate_difference fails to return an error that decreases under grid refinement

Ying He yinghe at math.ucdavis.edu
Wed Oct 26 12:43:01 PDT 2016

```On 2016-10-26 12:00, aspect-devel-request at geodynamics.org wrote:

>
> The usual situation where this happens is if the implementation of the
> "exact
> solution" is wrong, i.e., you want to compute
>    || u_h - u ||
>    || u_h - v ||
> with some v that has nothing to do with u and consequently the norm
> does not
> converge to zero.
>
> I don't quite understand where in your code you set the exact solution.
> But
> that's where I would check -- maybe you have a sign error, of a missing
> factor.
>
> Best
>   W.
>
> --
> ------------------------------------------------------------------------
> Wolfgang Bangerth          email:
> bangerth at colostate.edu
>                             www:
> http://www.math.colostate.edu/~bangerth/

Hi Wolfgang,

I tried Gerry's code yesterday by setting the exact solution = 0, and
found the infty norm of |u_h|_infty turned out to be very small in the
order of 10^-8. But Gerry's exact solution is supposed to in the range
[-1,1]. So I just realized that perhaps there was a scaling issue due to
the parameter set use year instead of second = true.

I didn't go through all the logic of the unit/ unit transfer of the
code, but based on the results, I am guessing in the core computation,
always use SI unit like second, meter, but for the input/output, one
needs to do the unit scaling to/from years to seconds or second to year.
Is that correct?

If that's the case, then Gerry's input for velocity boundary condition
actually is 1 meter/year = 1 meter/3.154e+7 seconds approximately equals
to 10^-8 m/s. However, they set up the exact solution in material model
by using unit m/s which are not in the same order of magnitude ... so
the error never converges.

Therefore the right way I guess should be either giving the right
boundary condition using unit meter/year in the prm file, or just
setting the parameter "set use year instead of second = false"

Does all the above make sense?

--
Best,
Ying He

```