[petsc-users] DMDA with 0 in lx, ly, lz ... or how to create a DMDA for a subregion
Randall Mackie
rlmackie862 at gmail.com
Tue Jan 25 17:09:25 CST 2022
Take a look at these posts from last year and see if they will help you at least get a slice:
https://lists.mcs.anl.gov/pipermail/petsc-users/2021-January/043037.html <https://lists.mcs.anl.gov/pipermail/petsc-users/2021-January/043037.html>
https://lists.mcs.anl.gov/pipermail/petsc-users/2021-January/043043.html <https://lists.mcs.anl.gov/pipermail/petsc-users/2021-January/043043.html>
Good luck,
Randy M.
> On Jan 25, 2022, at 2:52 PM, Bastian Löhrer <bastian.loehrer at tu-dresden.de> wrote:
>
> Dear PETSc community,
>
> in our CFD code we use a 3D DMDA to organize our data.
>
> Now I need to compute a derived quantity in a subregion of the global domain and to write these data to disk for further post-processing.
>
> The subregion is actually a planar slice for now, but it could also be a boxed-shaped region in future applications.
>
> Hence, I figured I would create a new DMDA for this subregion by writing something along the lines of
>
> call DMDACreate3d( & ! https://www.mcs.anl.gov/petsc/petsc-3.8.4/docs/manualpages/DMDA/DMDACreate3d.html <https://www.mcs.anl.gov/petsc/petsc-3.8.4/docs/manualpages/DMDA/DMDACreate3d.html>
> PETSC_COMM_WORLD, &
> DM_BOUNDARY_NONE, DM_BOUNDARY_NONE, DM_BOUNDARY_NONE, &
> DMDA_STENCIL_BOX, & ! <= stencil type
> sum(lx), sum(ly), sum(lz), & ! <= global dimension (of data) in each direction
> px, py, pz, & ! <= number of processors in each dimension
> 1, 0, & ! <= dof per node, stencil width (no ghost cell)
> lx, ly, lz, & ! <= numbers of nodes held by processors
> dmobject, ierr )
>
> where lx, ly and lz could look like
>
> lx = (/ 0, 1, 0 /)
> ly = (/ 16, 16 /)
> lz = (/ 16, 16 /)
>
> Unfortunately, this does not work:
>
>
>> [0]PETSC ERROR: --------------------- Error Message --------------------------------------------------------------
>> [0]PETSC ERROR: Argument out of range
>> [0]PETSC ERROR: Partition in x direction is too fine! 1 2
>> [0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/documentation/faq.html <http://www.mcs.anl.gov/petsc/documentation/faq.html> for trouble shooting.
>> [0]PETSC ERROR: Petsc Release Version 3.8.4, Mar, 24, 2018
>> [0]PETSC ERROR: ./prime on a foss_debug named laptwo by bastian Tue Jan 25 23:32:30 2022
>> [0]PETSC ERROR: Configure options PETSC_ARCH=foss_debug --with-cc=gcc --with-cxx=g++ --with-fc=gfortran --download-mpich --with-large-file-io=1 --with-shared-libraries=1 COPTFLAGS=" " CXXOPTFLAGS=" " FOPTFLAGS=" " --march=native --mtune=native --download-hypre=/soft/petsc-3.8.4/foss_debug/hypre-v2.12.0.tar.gz --with-debugging=yes
>> [0]PETSC ERROR: #1 DMSetUp_DA_3D() line 318 in /soft/petsc-3.8.4/src/dm/impls/da/da3.c
>> [0]PETSC ERROR: #2 DMSetUp_DA() line 25 in /soft/petsc-3.8.4/src/dm/impls/da/dareg.c
>> [0]PETSC ERROR: #3 DMSetUp() line 720 in /soft/petsc-3.8.4/src/dm/interface/dm.c
>> [0]PETSC ERROR: #4 User provided function() line 0 in User file
>> application called MPI_Abort(MPI_COMM_WORLD, 63) - process 0
> Apparently, lx, ly and lz cannot contain zeros.
> (Which would be a useful information in the documentation, too.)
>
> Is there any workaround?
>
> My current understanding is that I need to go the extra mile of creating an additional Communicator involving only those ranks that will share at least one cell in the subregion DMDA.
>
> If this is the way to go? If so, how can I control which rank receives which subdomain in the subregion? DMDACreate3d does not enable me to do so, but I need to make sure that a rank holds only those cells of the subregion which are also present in its share of the global domain.
>
> Many thanks in advance,
> Bastian Löhrer
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20220125/9a27ea7e/attachment.html>
More information about the petsc-users
mailing list