[petsc-users] Fwd: Inquiry about the dual space (PetscFECreateTabulation_Basic)

neil liu liufield at gmail.com
Mon Apr 24 15:00:37 CDT 2023


I try to find the source code, that transforms the scalar basis <1 x y> to
 a  vectors basis

  / 1 \  / 0 \ / x \ / 0 \ / y \ / 0 \
  \ 0 /  \ 1 / \ 0 / \ x / \ 0 / \ y /

It seems it is processed by line 856
https://gitlab.com/petsc/petsc/-/blob/main/include/petsc/private/petscimpl.h

Could you please direct me to the exact location where the source code has
been defined to do the transformation?




On Fri, Apr 21, 2023 at 12:37 PM neil liu <liufield at gmail.com> wrote:

> Thanks a lot. Very helpful.
>
> On Fri, Apr 21, 2023 at 10:57 AM Matthew Knepley <knepley at gmail.com>
> wrote:
>
>> On Fri, Apr 21, 2023 at 10:36 AM neil liu <liufield at gmail.com> wrote:
>>
>>> When you say "For multicomponent spaces, we currently do not represent
>>> it as a tensor product over the scalar space, so we see 6 basis vectors."
>>> Here, muticomponent = two dimensional ?
>>>
>>
>> If you have a vector in a two-dimensional space, it has 2 components,
>> like our coordinate vector.
>>
>>
>>> I am a little confused about the dimensions of the basis functions here.
>>> From
>>> https://petsc.org/release//src/dm/dt/fe/impls/basic/febasic.c.html#PETSCFEBASIC
>>>
>>> 144:     /* B[npoints, nodes, Nc] = tmpB[npoints, prime, Nc] * invV[prime, nodes] */
>>>
>>> How do you define tmpB here (npoints =3, prime =6, Nc =2)? I can get tmpB from
>>>
>>> PetscSpaceEvaluate_Polynomial, where, tmpB (1x9) is (the prime polynomial is defined by 1 x y))
>>>
>>> [ 1 -0.6667 -0.6667 1 -0.6667 0.3333 1 0.3333 -0.6666]. How do you transform from this 1x9 to 3x6x2 there.
>>>
>>>
>> npoints is the number of quadrature points at which to evaluate
>>
>> nodes (pdim) is the number of functions in the space
>>
>> Nc is the number of components for each function.
>>
>> So a P1 basis for vectors looks like
>>
>>   / 1 \  / 0 \ / x \ / 0 \ / y \ / 0 \
>>   \ 0 /  \ 1 / \ 0 / \ x / \ 0 / \ y /
>>
>> six vectors with 2 components each.
>>
>>   Thanks,
>>
>>       Matt
>>
>>> Thanks,
>>>
>>> Xiaodong
>>>
>>>
>>>
>>>
>>>
>>>
>>> On Fri, Apr 21, 2023 at 10:05 AM Matthew Knepley <knepley at gmail.com>
>>> wrote:
>>>
>>>> On Fri, Apr 21, 2023 at 10:02 AM neil liu <liufield at gmail.com> wrote:
>>>>
>>>>> Hello, Petsc group,
>>>>>
>>>>> I am learning the FE structure in Petsc by running case
>>>>> https://petsc.org/main/src/snes/tutorials/ex12.c.html with -run_type
>>>>> test -bc_type dirichlet -dm_plex_interpolate 0 -petscspace_degree 1
>>>>> -show_initial -dm_plex_print_fem 1
>>>>>
>>>>
>>>> -dm_plex_print_fem 5 will print much more
>>>>
>>>>
>>>>> When I check the subroutine PetscFECreateTabulation_Basic, I can not
>>>>> understand some parameters there.
>>>>>
>>>>> For the following lines in the file (
>>>>> https://petsc.org/release//src/dm/dt/fe/impls/basic/febasic.c.html#PETSCFEBASIC
>>>>> )
>>>>>
>>>>> 135:   PetscCall <https://petsc.org/release//manualpages/Sys/PetscCall/>(PetscDualSpaceGetDimension <https://petsc.org/release//manualpages/DUALSPACE/PetscDualSpaceGetDimension/>(fem->dualSpace, &pdim));136:   PetscCall <https://petsc.org/release//manualpages/Sys/PetscCall/>(PetscFEGetNumComponents <https://petsc.org/release//manualpages/FE/PetscFEGetNumComponents/>(fem, &Nc));
>>>>>
>>>>> Here, Nc = 2, pdim =6. I am running a scalar case with degree of 1,
>>>>>
>>>>> I expect Nc = 1 and pdim =3. Could you please explain this? In addition,
>>>>>
>>>>> Sure. I am guessing that you are looking at the tabulation for the
>>>> coordinate space. Here you are in 2 dimensions, so the
>>>> coordinate space has Nc = 2. For multicomponent spaces, we currently do
>>>> not represent it as a tensor product over the
>>>> scalar space, so we see 6 basis vectors.
>>>>
>>>>   Thanks,
>>>>
>>>>      Matt
>>>>
>>>>> Thanks,
>>>>>
>>>>> Xiaodong
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>> --
>>>> What most experimenters take for granted before they begin their
>>>> experiments is infinitely more interesting than any results to which their
>>>> experiments lead.
>>>> -- Norbert Wiener
>>>>
>>>> https://www.cse.buffalo.edu/~knepley/
>>>> <http://www.cse.buffalo.edu/~knepley/>
>>>>
>>>
>>
>> --
>> What most experimenters take for granted before they begin their
>> experiments is infinitely more interesting than any results to which their
>> experiments lead.
>> -- Norbert Wiener
>>
>> https://www.cse.buffalo.edu/~knepley/
>> <http://www.cse.buffalo.edu/~knepley/>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20230424/d0b500aa/attachment.html>


More information about the petsc-users mailing list