Dear Jed,

Thank you for your help!

Now I moved the line using "DMViewFromOptions" after the function 
"PetscDSSetObjective",

and it works for "-dm_coord_petscspace_degree 3 -petscspace_degree 3".


But when I tried degree 4:

./ex33 -dm_plex_simplex 0 -dm_plex_box_faces 1,1 -mesh_transform annulus 
-dm_coord_space 0 -dm_coord_petscspace_degree 4 -petscspace_degree 4 -dm_refine 
1 -dm_view cgns:test.cgns

Paraview gives an empty render.


Using degree 5:

./ex33 -dm_plex_simplex 0 -dm_plex_box_faces 1,1 -mesh_transform annulus 
-dm_coord_space 0 -dm_coord_petscspace_degree 5 -petscspace_degree 5 -dm_refine 
1 -dm_view cgns:test.cgns

it reports:


[0]PETSC ERROR: --------------------- Error Message 
--------------------------------------------------------------
[0]PETSC ERROR: No support for this operation for this object type
[0]PETSC ERROR: Cell type quadrilateral with closure size 36
[0]PETSC ERROR: See https://petsc.org/release/faq/ for trouble shooting.
[0]PETSC ERROR: Petsc Release Version 3.19.2, unknown
[0]PETSC ERROR: ./ex33 on a arch-darwin-c-debug named JunmingMacBook-Pro.local 
by Junming Mon Jun 12 20:23:04 2023
[0]PETSC ERROR: Configure options --download-cgns --download-hdf5 
--download-openmpi --download-triangle --with-fc=0 
PETSC_ARCH=arch-darwin-c-debug --download-cgns
[0]PETSC ERROR: #1 DMPlexCGNSGetPermutation_Internal() at 
/Users/Junming/Packages/petsc/src/dm/impls/plex/cgns/plexcgns2.c:533
[0]PETSC ERROR: #2 DMView_PlexCGNS() at 
/Users/Junming/Packages/petsc/src/dm/impls/plex/cgns/plexcgns2.c:769
[0]PETSC ERROR: #3 DMView_Plex() at 
/Users/Junming/Packages/petsc/src/dm/impls/plex/plex.c:1801
[0]PETSC ERROR: #4 DMView() at 
/Users/Junming/Packages/petsc/src/dm/interface/dm.c:996
[0]PETSC ERROR: #5 PetscObjectView() at 
/Users/Junming/Packages/petsc/src/sys/objects/destroy.c:78
[0]PETSC ERROR: #6 PetscObjectViewFromOptions() at 
/Users/Junming/Packages/petsc/src/sys/objects/destroy.c:128
[0]PETSC ERROR: #7 DMViewFromOptions() at 
/Users/Junming/Packages/petsc/src/dm/interface/dm.c:940
[0]PETSC ERROR: #8 CreateDiscretization() at ex33.c:232
[0]PETSC ERROR: #9 main() at ex33.c:263
[0]PETSC ERROR: PETSc Option Table entries:
[0]PETSC ERROR: -dm_coord_petscspace_degree 5 (source: command line)
[0]PETSC ERROR: -dm_coord_space 0 (source: command line)
[0]PETSC ERROR: -dm_plex_box_faces 1,1 (source: command line)
[0]PETSC ERROR: -dm_plex_simplex 0 (source: command line)
[0]PETSC ERROR: -dm_refine 1 (source: command line)
[0]PETSC ERROR: -dm_view cgns:test.cgns (source: command line)
[0]PETSC ERROR: -mesh_transform annulus (source: command line)
[0]PETSC ERROR: -petscspace_degree 5 (source: command line)
[0]PETSC ERROR: ----------------End of Error Message -------send entire error 
message to [email protected]
--------------------------------------------------------------------------
MPI_ABORT was invoked on rank 0 in communicator MPI_COMM_SELF
with errorcode 56.


Does cgns work for degree >= 4?


Junming


________________________________
From: Jed Brown <[email protected]>
Sent: Monday, June 12, 2023 19:07
To: Duan Junming; Matthew Knepley
Cc: [email protected]
Subject: Re: [petsc-users] dm_view of high-order geometry/solution

And here's an MR to do what you want without any code/arg changes.

https://gitlab.com/petsc/petsc/-/merge_requests/6588

Jed Brown <[email protected]> writes:

> Duan Junming <[email protected]> writes:
>
>> Dear Jed,
>>
>>
>> Thank you for the suggestion.
>>
>> When I run tests/ex33.c with
>>
>> ./ex33 -dm_plex_simplex 0 -dm_plex_box_faces 1,1 -mesh_transform annulus 
>> -dm_coord_space 0 -dm_coord_petscspace_degree 3 -dm_refine 1 -dm_view 
>> cgns:test.cgns
>>
>> and load it using Paraview,
>>
>> the mesh is still with straight lines.
>
> Ah, the viewer is keyed on the field (since the CGNS as supported by Paraview 
> specifies coordinates and fields in the same space). That doesn't exist in 
> your case. If you apply this patch and add `-petscspace_degre 3` to your 
> command, you'll see that high order information is present. Paraview doesn't 
> render as curves in all views, but it has the data.
>
> diff --git i/src/dm/impls/plex/tests/ex33.c w/src/dm/impls/plex/tests/ex33.c
> index 803095bc082..590facfa4f4 100644
> --- i/src/dm/impls/plex/tests/ex33.c
> +++ w/src/dm/impls/plex/tests/ex33.c
> @@ -198,7 +198,6 @@ PetscErrorCode CreateMesh(MPI_Comm comm, AppCtx *ctx, DM 
> *dm)
>    default:
>      SETERRQ(comm, PETSC_ERR_ARG_OUTOFRANGE, "Unknown mesh transform %d", 
> ctx->meshTransform);
>    }
> -  PetscCall(DMViewFromOptions(*dm, NULL, "-dm_view"));
>    PetscFunctionReturn(PETSC_SUCCESS);
>  }
>
> @@ -227,6 +226,7 @@ static PetscErrorCode CreateDiscretization(DM dm, AppCtx 
> *ctx)
>    PetscCall(DMCreateDS(dm));
>    PetscCall(DMGetDS(dm, &ds));
>    PetscCall(PetscDSSetObjective(ds, 0, volume));
> +  PetscCall(DMViewFromOptions(dm, NULL, "-dm_view"));
>    PetscFunctionReturn(PETSC_SUCCESS);
>  }
>
>
> I can update the viewer to handle the degenerate case of no field (all my 
> models have fields).

Reply via email to