[petsc-users] Testing DMPlex new functionalities

Matthew Knepley knepley at gmail.com
Thu Jan 22 16:39:04 CST 2015


On Thu, Jan 22, 2015 at 4:31 PM, Luc Berger-Vergiat <lb2653 at columbia.edu>
wrote:

>  Ok, I think what I will do is the following:
>
>  void top_bc(const PetscReal x[], PetscScalar *u, void *ctx)
> {
>   *u = 0.2;
> }
>   void bottom_bc(const PetscReal x[], PetscScalar *u, void *ctx)
> {
>   *u = 0.0;
> }
>
>
> ierr = DMPlexAddBoundary(dm, PETSC_TRUE,"bottom","Face Sets",0,(void
> (*)())bottom_bc,1,ids[0],&user);CHKERRQ(ierr);
>
ierr = DMPlexAddBoundary(dm, PETSC_TRUE,"top","Face Sets",0,(void
> (*)())top_bc,1,ids[1],&user);CHKERRQ(ierr);
>

You need &ids[0] and &ids[1].


>
> Matt, have you started writing some documentation for these function?
>

I thought I had, but I cannot find the branch.


> If not I could probably get something started since I'm reading them.
>

That would be great.


> Another question, how do I explain to my DMPlex that I am solving an
> elasticity problem and hence my solution field will be a 2 components
> vector and not a scalar? I haven't seen where you set this info in snes
> example 12...
>

Yes, ex12 is all scalar. In the call to PetscFECreateDefault() there is a
1, which you would make 'dim'.

  Thanks,

    Matt


> Best,
> Luc
>
> On 01/22/2015 05:19 PM, Matthew Knepley wrote:
>
>  On Thu, Jan 22, 2015 at 4:17 PM, Luc Berger-Vergiat <lb2653 at columbia.edu>
> wrote:
>
>>  Yes you are right, I corrected for the machine epsilon.
>> I also looked deeper in Petsc's source code and I think I understand
>> better how you implemented the GMSH reader.
>> For instance the label I really care about is "Face Sets" since it
>> detects automatically the BC's for me.
>> An issue is that "Face Sets" contains 4 strata and I only care about two
>> of these strata.
>> How can I get the names of the Strata and how can I loop over the strata
>> to assign my BCs?
>>
>
>  Instead of "marker" give "Face Sets"
>
>  Instead of 1, give 2
>
>  Instead of &id give ids, where PetscInt ids[2] = {stratumValue1,
> stratumValue2}
>
>    Thanks,
>
>      Matt
>
>
>>  Best,
>> Luc
>>
>> On 01/22/2015 05:12 PM, Matthew Knepley wrote:
>>
>>  On Thu, Jan 22, 2015 at 12:08 PM, Luc Berger-Vergiat <
>> lb2653 at columbia.edu> wrote:
>>
>>> Hi all,
>>> I'm trying to test some functionalities in DMPlex, specifically I want
>>> to do a 2d fem simulation using a mesh generated by GMSH.
>>> At this point I am trying to understand how Dirichlet BC can be applied.
>>>
>>> Can you explain to me what arguments I have to pass to:
>>> DMPlexAddBoundary()?
>>>
>>
>>    ierr = DMPlexAddBoundary(dm, PETSC_TRUE,"wall","marker",(void
>> (*)())top_displacement,1,&id,user)
>>
>>  PETSC_TRUE means that these unknowns will be eliminated from the global
>> system
>>
>>  "wall" is the name of the BC
>>
>>  "marker" is the name of the DMLabel that you want to use to identify
>> the mesh points
>>
>>  1 is the number of label IDs that identify constrained mesh points
>>
>>  id is the label ID which identifies constrained mesh points
>>
>>  top_displacement is the function used to set boundary values
>>
>>
>>> I am attaching a little bit of c code and my mesh.geo and mesh.msh so
>>> that you understand the context.
>>> The BCs I want to apply are displacement of 0.2 in the y direction if
>>> y==1.0
>>> 0.0 in the x direction if y==0.0
>>
>>
>>  I might do this:
>>
>>  void top_displacement(const PetscReal x[], PetscScalar *u, void *ctx)
>> {
>>   *u = x[1] < PETSC_MACHINE_EPSILON ? 0.0 : 0.2;
>> }
>>
>>    Thanks,
>>
>>       Matt
>>
>>
>>>
>>>  --
>>> Best,
>>> Luc
>>>
>>>
>>
>>
>>  --
>> 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
>>
>>
>>
>
>
>  --
> 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
>
>
>


-- 
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20150122/06d95bff/attachment.html>


More information about the petsc-users mailing list