On Fri, Aug 25, 2017 at 8:08 PM, Mike Marchywka <marchy...@hotmail.com>
wrote:

> >Any hint on how to easily reproduce the shape function calculations by
> hand (that is, manually producing the dphi_face values)?
> Very carefully :) I ended up writing some polynomial classes and doing the
> integrals and derivatives for QUAD4 that way. With my
> rational number class it was easy to get exact results and make generated
> code for the simple things like Laplacian of rectangle.
>
That seems a good idea. I am using TRI6.
The results I am getting are so off the expected that I won't matter
getting approximations for now as reference.
This is the reason why I think I got a conceptual issue. It is really far
from target.


> I guess you could probably do the same with MatLab or Mathematica or maybe
> R.  I saw the point by point quadrature
> thing in the examples but AFAICT in many cases you can do it exactly and
> just skip a lot of that. The Laplacian
> is just an integral of a second derivative which would be zero for linear
> shape functions except for integration by
> parts which then gives you an easily computable integral. I'm using all
> analytical integrals now- just putting numbers
> into the system matrix and rhs with QUAD4 elements- but have a possible
> model problem that probably needs point by point  integration :)
>
> But do the derivatives look right? The normals? The solution? Does it work
> without AMR ? p? h? etc...
>
The normals look right. I have simplified the mesh to have right angles and
thus simple normals (1,0,0) or (-1,0,0) etc.
I am not using AMR at all. Mesh is dynamically generated with a couple of
parameters (maximum triangle size and internal angles, for example).


> What does work, if anything?
>
Everything works in a wrong way. :-)

Look this example:

+++ Triangle coordinates (each dof)
[0]    (x,y,z)=(      10,        5,        0)
[1]    (x,y,z)=(      10,       10,        0)
[2]    (x,y,z)=( 6.73058,  6.91831,        0)
[3]    (x,y,z)=(      10,      7.5,        0)
[4]    (x,y,z)=( 8.36529,  8.45915,        0)
[5]    (x,y,z)=( 8.36529,  5.95915,        0)

See the highlighted system solutions for dof[1] and dof[2].
It shows a delta of 0.1206E7 in (dx=10-6.73=3.27).
Something like grad_x=0.0369E7.
I dont get why the shape function and the summation sort of kills this
gradient...
Still struggling here...

+++ intermediate calculations
     qface_point = (x,y,z)=(      10,      7.5,        0)
        == i=0 ===
        dof_indices[0]: 12
        dphi_face[0][0]: (x,y,z)=(0.188516,     -0.2,       -0)
        _sys_solution[0->12]: 3e+07
        _sys_solution[0->12] * dphi_face[0]: (x,y,z)=(5.65548e+06,
-6e+06,       -0)
        == i=1 ===
        dof_indices[1]: 13
        dphi_face[1][0]: (x,y,z)=(0.117348,      0.2,        0)
        _sys_solution[1->13]: 3e+07
/// DOF[1] => 3E7 @ (10,5) /// <===
        _sys_solution[1->13] * dphi_face[1]: (x,y,z)=(3.52045e+06,
6e+06,        0)
        == i=2 ===
        dof_indices[2]: 14
        dphi_face[2][0]: (x,y,z)=(0.305864,       -0,       -0)
        _sys_solution[2->14]: 3.12065e+07
/// DOF[2] => 3.12E7 @ (6.73,  6.91) /// <===
        _sys_solution[2->14] * dphi_face[2]: (x,y,z)=(9.54495e+06,
-0,       -0)
        == i=3 ===
        dof_indices[3]: 15
        dphi_face[3][0]: (x,y,z)=(0.611729,        0,        0)
        _sys_solution[3->15]: 3e+07
        _sys_solution[3->15] * dphi_face[3]: (x,y,z)=(1.83519e+07,
0,        0)
        == i=4 ===
        dof_indices[4]: 16
        dphi_face[4][0]: (x,y,z)=(-0.611729,        0,        0)
        _sys_solution[4->16]: 3.02508e+07
        _sys_solution[4->16] * dphi_face[4]: (x,y,z)=(-1.85053e+07,
0,        0)
        == i=5 ===
        dof_indices[5]: 17
        dphi_face[5][0]: (x,y,z)=(-0.611729,        0,        0)
        _sys_solution[5->17]: 3.03524e+07
        _sys_solution[5->17] * dphi_face[5]: (x,y,z)=(-1.85674e+07,
0,        0)
        =======
   JxW_face[0]: 5
   grad_at_qn=        (x,y,z)=(-6.29947e-06, -7.7514e-06,        0)
   normals[0]= (x,y,z)=(       1,        0,       -0)
   apply_normal=      -3.14973e-05



>
>
> ________________________________________
> From: Renato Poli <rebp...@gmail.com>
> Sent: Friday, August 25, 2017 6:12 PM
> To: Mike Marchywka
> Cc: John Peterson; libmesh-users
> Subject: Re: [Libmesh-users] Trouble with boundary integration
>
> Hi Mike,
>
> Thanks for the reply.
> Any hint on how to easily reproduce the shape function calculations by
> hand (that is, manually producing the dphi_face values)?
>
> On Fri, Aug 25, 2017 at 6:17 PM, Mike Marchywka <marchy...@hotmail.com
> <mailto:marchy...@hotmail.com>> wrote:
> I've been trying to learn this myself and encounter a variety of issues
> like this. If you have
> an exact solution, why not just print all the pieces- values and normals
> etc-  and see how they differ
> point by point instead of
> trying to do an inverse problem of guessing what is wrong with an integral
> ?
>
> Well - that is what I am trying to do.
> I isolated a single element and, as the problem is symmetrical, it should
> produce a non-zero result.
> There is not a lot of freedom in the calculation.
> It should be a simple multiplication of a bunch of numbers...
>
> Varying the mesh size seems to be useful sometimes.  How do the element
> sizes
> compare to the radius of curvature ? Can you test the code on a simpler
> geometry such
> as between two planes?
>
> Agreed. I spent two days on that, varying all sort of stuff.
> I tried from very small elements, to huge ones.
> I think my problem might be related to the order of the shape function or
> the gauss quadrature.
> Really not sure.
> Any hint on how to easily reproduce the shape function calculations by
> hand (that is, manually producing the dphi_face values)?
>
> AFAICT in the general
> case doing integrals of normal components over surfaces is not always easy
> with p and h refinements etc. Although maybe someone can clarify a bit.
>
> I am using CGAL to generate and refine the mesh. It is quite flexible.
> I am really considering that I have a conceptual issue.
> It seems there is something really close to me that is fooling me ...
>
> I will keep trying.
>
> Please let me know if anyone has any suggestion ...
>
> Thanks,
> Renato
>
>
> Thanks.
>
> ________________________________________
> From: Renato Poli <rebp...@gmail.com<mailto:rebp...@gmail.com>>
> Sent: Friday, August 25, 2017 3:02 PM
> To: John Peterson
> Cc: libmesh-users
> Subject: Re: [Libmesh-users] Trouble with boundary integration
>
> Hi John,
>
> I am still struggling and running out of ideas here.
> I wrote down some debugging - perhaps you can find something weird.
> The calculations seem correct, at least to what I could understand so far.
>
> But things are zero'ing out.
>
> If, in the mesh creation, I declare the variable as "FIRST" order, things
> do not zero out.
> The integration of the gradient only zeros out if I use:
>         sys.add_variable("u", SECOND);
>
> For face integration, I am using first order gauss quadrature:
>         QGauss qface(dim-1, FIRST);
>
> Any hint? Any debugging suggestion?
>
> Rgds,
> Renato
>
> # Debug[1]: Elem: 4
> # Debug[1]:     (x,y,z)=(       5,       10,        0)
> # Debug[1]:     (x,y,z)=(       0,       10,        0)
> # Debug[1]:     (x,y,z)=( 3.08169,  6.73058,        0)
> # Debug[1]:     (x,y,z)=(     2.5,       10,        0)
> # Debug[1]:     (x,y,z)=( 1.54085,  8.36529,        0)
> # Debug[1]:     (x,y,z)=( 4.04085,  8.36529,        0)
> # Debug[1]: num_dofs=6
> # Debug[1]:     Side: 0
> # Debug[1]:     Boundary: 1
> # Debug[1]:          qface_point = (x,y,z)=(     2.5,       10,        0)
> # Debug[1]:             == i=0 ===
> # Debug[1]:             dof_indices[0]: 23
> # Debug[1]:             dphi_face[0][0]: (x,y,z)=(     0.2, 0.188516,
> -0)
> # Debug[1]:             _sys_solution[0->23]: 3e+07
> # Debug[1]:             _sys_solution[0->23] * dphi_face[0]: (x,y,z)=(
> 6e+06, 5.65548e+06,       -0)
> # Debug[1]:             == i=1 ===
> # Debug[1]:             dof_indices[1]: 24
> # Debug[1]:             dphi_face[1][0]: (x,y,z)=(    -0.2,
> 0.117348,        0)
> # Debug[1]:             _sys_solution[1->24]: 3e+07
> # Debug[1]:             _sys_solution[1->24] * dphi_face[1]: (x,y,z)=(
> -6e+06, 3.52045e+06,        0)
> # Debug[1]:             == i=2 ===
> # Debug[1]:             dof_indices[2]: 25
> # Debug[1]:             dphi_face[2][0]: (x,y,z)=(       0, 0.305864,
> -0)
> # Debug[1]:             _sys_solution[2->25]: 3.12065e+07
> # Debug[1]:             _sys_solution[2->25] * dphi_face[2]:
> (x,y,z)=(       0, 9.54495e+06,       -0)
> # Debug[1]:             == i=3 ===
> # Debug[1]:             dof_indices[3]: 26
> # Debug[1]:             dphi_face[3][0]: (x,y,z)=(      -0,
> 0.611729,        0)
> # Debug[1]:             _sys_solution[3->26]: 3e+07
> # Debug[1]:             _sys_solution[3->26] * dphi_face[3]: (x,y,z)=(
> -0, 1.83519e+07,        0)
> # Debug[1]:             == i=4 ===
> # Debug[1]:             dof_indices[4]: 27
> # Debug[1]:             dphi_face[4][0]: (x,y,z)=(       0,
> -0.611729,        0)
> # Debug[1]:             _sys_solution[4->27]: 3.02508e+07
> # Debug[1]:             _sys_solution[4->27] * dphi_face[4]:
> (x,y,z)=(       0, -1.85053e+07,        0)
> # Debug[1]:             == i=5 ===
> # Debug[1]:             dof_indices[5]: 28
> # Debug[1]:             dphi_face[5][0]: (x,y,z)=(       0,
> -0.611729,        0)
> # Debug[1]:             _sys_solution[5->28]: 3.03524e+07
> # Debug[1]:             _sys_solution[5->28] * dphi_face[5]:
> (x,y,z)=(       0, -1.85674e+07,        0)
> # Debug[1]:             =======
> # Debug[1]:        JxW_face[0]: 5
> # Debug[1]:        grad_at_qn=        (x,y,z)=(8.95187e-06,
> -6.02752e-06,        0)
> # Debug[1]:        normals[0]= (x,y,z)=(       0,        1,       -0)
> # Debug[1]:        JxW_face[0] * grad_at_qn * normals[0] =
> -3.01376e-05
>
>
> On Fri, Aug 25, 2017 at 2:25 PM, Renato Poli <rebp...@gmail.com<mailto:
> rebp...@gmail.com>> wrote:
>
> > Hi John,
> >
> > _sys_solution is the system->solution vector.
> >
> > It is fed by:
> >         _system.solution->localize_to_one( _sys_solution );
> >
> >
> > On Fri, Aug 25, 2017 at 1:48 PM, John Peterson <jwpeter...@gmail.com
> <mailto:jwpeter...@gmail.com>>
> > wrote:
> >
> >>
> >>
> >> On Fri, Aug 25, 2017 at 10:34 AM, Renato Poli <rebp...@gmail.com
> <mailto:rebp...@gmail.com>> wrote:
> >>
> >>> Hi,
> >>>
> >>> I need some help here ...
> >>>
> >>> I am having trouble to understand what is going on with a boundary
> >>> integral.
> >>> I have solved a Poisson problem for pressure in a 2D mesh, as a model
> >>> for a
> >>> incompressible water flow in porous media.
> >>> The mesh (Tri6 elements) has a near-circular polygon in the middle
> >>> representing an injection well.
> >>>
> >>> RHS of the equations are zero except in boundaries dofs. Dirichlet
> >>> boundary
> >>> conditions are imposed using a penalty both on the well and on the
> >>> external
> >>> boundaries to represent fixed pressure. (the solution looks ok - seems
> to
> >>> work)
> >>>
> >>> To validate the solution, I am trying to estimate the water flow both
> in
> >>> the well and in the external boundaries (they must be identical and
> match
> >>> the analytical solution). I therefore calculate the normal pressure
> >>> gradient and integrate in the whole boundary path.
> >>>
> >>> When I use first order variable, the results are "almost correct". But
> >>> when
> >>> I use second order , it is absolutely off.
> >>>
> >>> I am using the code below to do the integration. I tried many
> >>> alternatives,
> >>> no success.
> >>>
> >>> Any idea of what I am doing wrong?
> >>>
> >>
> >> The code seems OK to me, although you should not need to call
> >> fe_face->reinit() inside the loop over boundary ids.
> >>
> >> What is _sys_solution?
> >>
> >> --
> >> John
> >>
> >
> >
> ------------------------------------------------------------
> ------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> Libmesh-users mailing list
> Libmesh-users@lists.sourceforge.net<mailto:Libmesh
> -us...@lists.sourceforge.net>
> https://lists.sourceforge.net/lists/listinfo/libmesh-users
>
>
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Libmesh-users mailing list
Libmesh-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libmesh-users

Reply via email to