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 <[email protected]> wrote: > Thanks a lot. Very helpful. > > On Fri, Apr 21, 2023 at 10:57 AM Matthew Knepley <[email protected]> > wrote: > >> On Fri, Apr 21, 2023 at 10:36 AM neil liu <[email protected]> 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 <[email protected]> >>> wrote: >>> >>>> On Fri, Apr 21, 2023 at 10:02 AM neil liu <[email protected]> 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/> >> >
