[petsc-users] Is the results of `DMAdaptLabel` as expected in `src/dm/impls/plex/tests/ex20.c`

Matthew Knepley knepley at gmail.com
Tue Oct 4 11:33:40 CDT 2022


On Tue, Oct 4, 2022 at 3:19 PM Zongze Yang <yangzongze at gmail.com> wrote:

> Hi everyone,
>
> I am learning how to use the `DMAdaptLabel` for `DMPlex`, and found the
> example `src/dm/impls/plex/tests/ex20.c` which label one cell to refine.
>
> 1. This example is just a uniform refinement when using the following
> command. (see attached pdfs for the results).
> ```
> [real-int32-gcc] z2yang at ws5:~/opt/firedrake/real-int32-gcc/petsc/src/dm/impls/plex/tests$
> ./ex20 -dm_plex_box_faces 3,3 -dm_coord_space 0 -pre_adapt_dm_view
> ascii::ascii_info -post_adapt_dm_view draw:tikz:figure2.tex
> ```
>  Is this expected for this example?
>

Hi Zongze,

Yes, I agree this is not easy to see. If you give -dm_plex_transform_view,
you can see the kind of transform being used

knepley/pylith $:/PETSc3/petsc/petsc-pylith$ PETSC_ARCH=arch-pylith-opt
make -j8 -f ./gmakefile test search="dm_impls_plex_tests-ex20_
2d" TIMEOUT=5000 EXTRA_OPTIONS="-dm_plex_transform_view"
Using MAKEFLAGS: --jobserver-fds=3,4 -j --
EXTRA_OPTIONS=-dm_plex_transform_view TIMEOUT=5000
search=dm_impls_plex_tests-ex20_2d
        TEST arch-pylith-opt/tests/counts/dm_impls_plex_tests-ex20_2d.counts
 ok dm_impls_plex_tests-ex20_2d
not ok diff-dm_impls_plex_tests-ex20_2d # Error code: 1
#       11a12,14
#       > DMPlexTransform Object: 1 MPI process
#       >   type: refine_regular
#       > Regular refinement DMPlexTransform_0x84000000_1

You can see that it is regular refinement, so it ignores the input and
refines everything. If you change it, you can get adaptive refinement,

knepley/pylith $:/PETSc3/petsc/petsc-pylith$ PETSC_ARCH=arch-pylith-opt
make -j8 -f ./gmakefile test search="dm_impls_plex_tests-ex20_
2d" TIMEOUT=5000 EXTRA_OPTIONS="-pre_adapt_dm_view draw -post_adapt_dm_view
draw -draw_pause -1 -dm_plex_transform_type refine_sbr"

I attached the plot.


> 2. I found there is a function named `DMAdaptLabel_Plex`, and
> `DMAdaptLabel` did not call that function when the type of the dm is
> `DMPlex`. Is the function `DMAdaptLabel_Plex` still in use?
>

No. I rewrote all the transformations last year. I think the new form is
much smaller, cleaner, and more performant. I should delete this function,
but I am finishing
up the review of all adaptive refinement with Joe Wallwork at Imperial.


> 3. `DMAdaptLabel` seems to lack some useful information when I use the
> wrong adaptor. For example, if I set `-dm_adaptor mmg`, then the process
> will give a segment fault because the `metric` passed to
> `DMAdaptMetric_Mmg_Plex` is NULL, see the output below:
> ```
> [real-int32-gcc] z2yang at ws5:~/opt/firedrake/real-int32-gcc/petsc/src/dm/impls/plex/tests$
> ./ex20 -dm_plex_box_faces 3,3 -dm_coord_space 0 -pre_adapt_dm_view
> draw:tikz:figure1.tex -post_adapt_dm_view draw:tikz:figure2.tex -dm_adaptor
> mmg
> [0]PETSC ERROR:
> ------------------------------------------------------------------------
> [0]PETSC ERROR: Caught signal number 11 SEGV: Segmentation Violation,
> probably memory access out of range
> [0]PETSC ERROR: Try option -start_in_debugger or -on_error_attach_debugger
> [0]PETSC ERROR: or see https://petsc.org/release/faq/#valgrind and
> https://petsc.org/release/faq/
> [0]PETSC ERROR: configure using --with-debugging=yes, recompile, link, and
> run
> [0]PETSC ERROR: to get more information on the crash.
> [0]PETSC ERROR: Run with -malloc_debug to check if memory corruption is
> causing the crash.
> Abort(59) on node 0 (rank 0 in comm 0): application called
> MPI_Abort(MPI_COMM_WORLD, 59) - process 0
> ```
>

Hmm, I at least get an error message:

#       [0]PETSC ERROR: --------------------- Error Message
--------------------------------------------------------------
#       [0]PETSC ERROR: Null argument, when expecting valid pointer
#       [0]PETSC ERROR: Null Pointer: Parameter # 1
#       [0]PETSC ERROR: WARNING! There are option(s) set that were not
used! Could be the program crashed before they were used or a spelling
mistake, etc!
#       [0]PETSC ERROR: Option left: name:-post_adapt_dm_view value:
ascii::ascii_info
#       [0]PETSC ERROR: See https://petsc.org/release/faq/ for trouble
shooting.
#       [0]PETSC ERROR: Petsc Development GIT revision:
v3.17.4-1472-ga50e2f9f007  GIT Date: 2022-09-23 13:01:31 +0000
#       [0]PETSC ERROR: ../ex20 on a arch-master-debug named
MacBook-Pro.local by knepley Tue Oct  4 17:29:20 2022
#       [0]PETSC ERROR: Configure options --PETSC_ARCH=arch-master-debug
--download-bamg --download-bison --download-chaco --download-ctetgen
--download-egads --download-eigen --download-exodusii --download-fftw
--download-hpddm --download-ks --download-libceed --download-libpng
--download-metis --download-ml --download-mmg --download-mumps
--download-netcdf --download-opencascade --download-p4est
--download-parmetis --download-parmmg --download-pnetcdf
--download-pragmatic --download-ptscotch --download-scalapack
--download-slepc --download-suitesparse --download-superlu_dist
--download-tetgen --download-triangle
--with-cmake-exec=/PETSc3/petsc/apple/bin/cmake
--with-ctest-exec=/PETSc3/petsc/apple/bin/ctest
--with-hdf5-dir=/PETSc3/petsc/apple --with-mpi-dir=/PETSc3/petsc/apple
--with-petsc4py=1 --with-shared-libraries --with-slepc --with-zlib
--download-muparser
#       [0]PETSC ERROR: #1 VecViewFromOptions() at
/PETSc3/petsc/petsc-dev/src/vec/vec/interface/vector.c:627
#       [0]PETSC ERROR: #2 DMAdaptMetric_Mmg_Plex() at
/PETSc3/petsc/petsc-dev/src/dm/impls/plex/adaptors/mmg/mmgadapt.c:130
#       [0]PETSC ERROR: #3 DMAdaptLabel() at
/PETSc3/petsc/petsc-dev/src/dm/interface/dmgenerate.c:179
#       [0]PETSC ERROR: #4 main() at
/PETSc3/petsc/petsc-dev/src/dm/impls/plex/tests/ex20.c:24
#       [0]PETSC ERROR: PETSc Option Table entries:
#       [0]PETSC ERROR: -dm_adaptor mmg
#       [0]PETSC ERROR: -dm_coord_space 0
#       [0]PETSC ERROR: -dm_plex_box_faces 3,3
#       [0]PETSC ERROR: -post_adapt_dm_view ascii::ascii_info
#       [0]PETSC ERROR: -pre_adapt_dm_view ascii::ascii_info
#       [0]PETSC ERROR: ----------------End of Error Message -------send
entire error message to petsc-maint at mcs.anl.gov----------
#       application called MPI_Abort(MPI_COMM_SELF, 85) - process 0
 ok dm_impls_plex_tests-ex20_2d # SKIP Command failed so no diff

I agree that it would be nice to segregate the adaptors into those that
work with labels and those that work with metrics, but I thought we could
have an automated system to convert between metrics and labels. However, I
have not implemented it yet, since I am still trying to figure out exactly
how everything should work.

  Thanks,

     Matt


> Thanks,
> Zongze Yang
>


-- 
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/20221004/02e9c5a8/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Screen Shot 2022-10-04 at 5.24.02 PM.png
Type: image/png
Size: 89863 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20221004/02e9c5a8/attachment-0001.png>


More information about the petsc-users mailing list