[petsc-users] DMPlex filter with Face Sets
Thibault Bridel-Bertomeu
thibault.bridelbertomeu at gmail.com
Fri Jan 14 07:23:34 CST 2022
Dear all,
I have a new question - in relation with my other ongoing thread
"Fluid-Structure interaction with multiple DMPlex" actually.
Is it possible to filter a DMPlex and keep in the new piece of DM the
strata from the Face Sets label that belong to that piece ?
Consider for instance the following example :
// Standard includes
#include <cstdlib>
// PETSc includes
#include <petscsys.h>
#include <petscdmplex.h>
#include <petscds.h>
int main(
int argc, /**< Number of CLI arguments */
char* argv[] /**< List of CLI arguments as strings */
)
{
User user;
DM dm;
PetscErrorCode ierr = EXIT_SUCCESS;
// Start-up the PETSc interface
ierr = PetscInitialize(&argc, &argv, (char*)0, NULL);if (ierr) return ierr;
// Allocate whatever needs to be
ierr = PetscNew(&user);CHKERRQ(ierr);
// Parse the mesh given by the user
//+ Mesh filename
ierr = PetscOptionsBegin(PETSC_COMM_WORLD, NULL, "PETSc DMPlex Coupled
Physics Demo Mesh Options", "");CHKERRQ(ierr);
{
ierr = PetscStrcpy(user->meshName,
"data/divided_square/divided_square_gmsh22ascii.msh");CHKERRQ(ierr);
ierr = PetscOptionsString("-meshname", "Mesh filename", "", user->meshName,
user->meshName, sizeof(user->meshName), NULL);CHKERRQ(ierr);
}
ierr = PetscOptionsEnd();CHKERRQ(ierr);
//+ Read the mesh in
ierr = DMPlexCreateFromFile(PETSC_COMM_WORLD, user->meshName,
"CoupledPhysics_Plex", PETSC_TRUE, &dm);CHKERRQ(ierr);
ierr = DMSetFromOptions(dm);CHKERRQ(ierr);
ierr = DMViewFromOptions(dm, NULL, "-dm_view");CHKERRQ(ierr);
// Extract both domains separately
//+ Label of the fluid domain
DMLabel fluidLabel;
ierr = DMGetLabel(dm, "Fluid", &fluidLabel);CHKERRQ(ierr);
//+ Sub-DM for the fluid domain
DM fluidDM;
// ierr = DMPlexFilter(dm, domainsLabel, 2, &fluidDM);CHKERRQ(ierr);
ierr = DMPlexFilter(dm, fluidLabel, 2, &fluidDM);CHKERRQ(ierr);
ierr = DMViewFromOptions(fluidDM, NULL, "-fluid_dm_view");CHKERRQ(ierr);
//+ Label of the solid domain
DMLabel solidLabel;
ierr = DMGetLabel(dm, "Solid", &solidLabel);CHKERRQ(ierr);
//+ Sub-DM for the solid domain
DM solidDM;
ierr = DMPlexFilter(dm, solidLabel, 1, &solidDM);CHKERRQ(ierr);
ierr = DMViewFromOptions(solidDM, NULL, "-solid_dm_view");CHKERRQ(ierr);
// Close the PETSc interface and end the parallel communicator
ierr = PetscFree(user);CHKERRQ(ierr);
ierr = PetscFinalize();
return(ierr);
}
run with the mesh attached to this email and the command ./program
-meshname divided_square_gmsh41ascii.msh -dm_plex_gmsh_use_regions -dm_view
-fluid_dm_view.
It yields :
DM Object: CoupledPhysics_Plex 1 MPI processes
type: plex
CoupledPhysics_Plex in 2 dimensions:
Number of 0-cells per rank: 1409
Number of 1-cells per rank: 4084
Number of 2-cells per rank: 2676
Labels:
celltype: 3 strata with value/size (0 (1409), 3 (2676), 1 (4084))
depth: 3 strata with value/size (0 (1409), 1 (4084), 2 (2676))
Cell Sets: 2 strata with value/size (1 (924), 2 (1752))
Solid: 1 strata with value/size (1 (924))
Fluid: 1 strata with value/size (2 (1752))
Face Sets: 5 strata with value/size (4 (60), 3 (40), 7 (20), 5 (40), 6
(20))
Insulation: 1 strata with value/size (4 (60))
Wall: 1 strata with value/size (3 (40))
Outlet: 1 strata with value/size (7 (20))
Freestream: 1 strata with value/size (5 (40))
Inlet: 1 strata with value/size (6 (20))
DM Object: 1 MPI processes
type: plex
DM_0x557ff009be70_1 in 2 dimensions:
Number of 0-cells per rank: 937
Number of 1-cells per rank: 2688
Number of 2-cells per rank: 1752
Labels:
celltype: 3 strata with value/size (0 (937), 1 (2688), 3 (1752))
depth: 3 strata with value/size (0 (937), 1 (2688), 2 (1752))
In the attached mesh, Wall, Outlet, Freestream and Inlet "belong" to the
Fluid domain, therefore I would like to transfer them to the fluidDM during
or right after the DMPlexFilter action.
Is that possible ? I was looking at extracting the IS from those labels of
dm and creating new labels in fluidDM from those IS, but the indices won't
match, will they ? The filtering operation renumbers everything right ?
Thank you very much !!
Thibault Bridel-Bertomeu
—
Eng, MSc, PhD
Research Engineer
CEA/CESTA
33114 LE BARP
Tel.: (+33)557046924
Mob.: (+33)611025322
Mail: thibault.bridelbertomeu at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20220114/87a43780/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: divided_square_gmsh41ascii.msh
Type: model/mesh
Size: 111184 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20220114/87a43780/attachment-0001.msh>
More information about the petsc-users
mailing list