<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">Yeah I just got the compiler warning
for (int) instead of (int *).<br>
Final remark of the day, with GMSH you can do the following in the
.geo:<br>
<br>
Physical Line("bottom") = {line_id1};<br>
Physical Line("right") = {line_id2};<br>
Physical Line("left") = {line_id3};<br>
Physical Line("top") = {line_id4};<br>
<br>
which in turns will get you something like this in the .msh:<br>
<br>
$PhysicalNames<br>
4<br>
1 2 "bottom"<br>
1 3 "right"<br>
1 4 "left"<br>
1 5 "top"<br>
$EndPhysicalNames<br>
<br>
It would be cool to catch these in order to define multiple label
names to get a Petsc structure that looks like this:<br>
<font face="Courier New, Courier, monospace">Labels:<br>
bottom: 1 strata of sizes (12)<br>
right: 1 strata of sizes (12)<br>
top: 1 strata of sizes (12)<br>
left: 1 strata of sizes (12)<br>
depth: 3 strata of sizes (169, 312, 144)</font><br>
<br>
instead of:<br>
<font face="Courier New, Courier, monospace">Labels:<br>
Face Sets: 4 strata of sizes (12, 12, 12, 12)<br>
depth: 3 strata of sizes (169, 312, 144)</font><br>
<br>
<pre class="moz-signature" cols="72">Best,
Luc</pre>
On 01/22/2015 05:39 PM, Matthew Knepley wrote:<br>
</div>
<blockquote
cite="mid:CAMYG4G=j9WFE8Tti5Q6aSj=NXW4+P6FgJ_RKwREMDYpi1aUchQ@mail.gmail.com"
type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">On Thu, Jan 22, 2015 at 4:31 PM, Luc
Berger-Vergiat <span dir="ltr"><<a
moz-do-not-send="true" href="mailto:lb2653@columbia.edu"
target="_blank">lb2653@columbia.edu</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div>Ok, I think what I will do is the following:<br>
<br>
<div>
<div>void top_bc(const PetscReal x[], PetscScalar
*u, void *ctx)</div>
<div>{</div>
<div> *u = 0.2;</div>
<div>}</div>
</div>
<div>
<div>
<div>void bottom_bc(const PetscReal x[],
PetscScalar *u, void *ctx)</div>
<div>{</div>
<div> *u = 0.0;</div>
<div>}</div>
</div>
</div>
<br>
<br>
ierr = DMPlexAddBoundary(dm, PETSC_TRUE,"bottom","Face
Sets",0,(void
(*)())bottom_bc,1,ids[0],&user);CHKERRQ(ierr); </div>
</div>
</blockquote>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div> ierr = DMPlexAddBoundary(dm,
PETSC_TRUE,"top","Face Sets",0,(void
(*)())top_bc,1,ids[1],&user);CHKERRQ(ierr);<br>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>You need &ids[0] and &ids[1].</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div> <br>
Matt, have you started writing some documentation for
these function?<br>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>I thought I had, but I cannot find the branch.</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div> If not I could probably get something started
since I'm reading them.<br>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>That would be great.</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div> 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...<br>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>Yes, ex12 is all scalar. In the call to
PetscFECreateDefault() there is a 1, which you would make
'dim'.</div>
<div><br>
</div>
<div> Thanks,</div>
<div><br>
</div>
<div> Matt</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div>
<pre cols="72">Best,
Luc</pre>
On 01/22/2015 05:19 PM, Matthew Knepley wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">On Thu, Jan 22, 2015 at
4:17 PM, Luc Berger-Vergiat <span dir="ltr"><<a
moz-do-not-send="true"
href="mailto:lb2653@columbia.edu"
target="_blank">lb2653@columbia.edu</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0
0 0 .8ex;border-left:1px #ccc
solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div>Yes you are right, I corrected for the
machine epsilon.<br>
I also looked deeper in Petsc's source
code and I think I understand better how
you implemented the GMSH reader.<br>
For instance the label I really care about
is "Face Sets" since it detects
automatically the BC's for me.<br>
An issue is that "Face Sets" contains 4
strata and I only care about two of these
strata.<br>
How can I get the names of the Strata and
how can I loop over the strata to assign
my BCs?<br>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>Instead of "marker" give "Face Sets"</div>
<div><br>
</div>
<div>Instead of 1, give 2</div>
<div><br>
</div>
<div>Instead of &id give ids, where PetscInt
ids[2] = {stratumValue1, stratumValue2}</div>
<div><br>
</div>
<div> Thanks,</div>
<div><br>
</div>
<div> Matt</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0
0 0 .8ex;border-left:1px #ccc
solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div>
<pre cols="72">Best,
Luc</pre>
On 01/22/2015 05:12 PM, Matthew Knepley
wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">On Thu, Jan
22, 2015 at 12:08 PM, Luc
Berger-Vergiat <span dir="ltr"><<a
moz-do-not-send="true"
href="mailto:lb2653@columbia.edu"
target="_blank">lb2653@columbia.edu</a>></span>
wrote:<br>
<blockquote class="gmail_quote"
style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Hi
all,<br>
I'm trying to test some
functionalities in DMPlex,
specifically I want to do a 2d fem
simulation using a mesh generated
by GMSH.<br>
At this point I am trying to
understand how Dirichlet BC can be
applied.<br>
<br>
Can you explain to me what
arguments I have to pass to:<br>
DMPlexAddBoundary()?<br>
</blockquote>
<div><br>
</div>
<div>
<div> ierr =
DMPlexAddBoundary(dm,
PETSC_TRUE,"wall","marker",(void
(*)())top_displacement,1,&id,user)</div>
</div>
<div><br>
</div>
<div>PETSC_TRUE means that these
unknowns will be eliminated from
the global system</div>
<div><br>
</div>
<div>"wall" is the name of the BC</div>
<div><br>
</div>
<div>"marker" is the name of the
DMLabel that you want to use to
identify the mesh points</div>
<div><br>
</div>
<div>1 is the number of label IDs
that identify constrained mesh
points</div>
<div><br>
</div>
<div>id is the label ID which
identifies constrained mesh points</div>
<div><br>
</div>
<div>top_displacement is the
function used to set boundary
values</div>
<div> </div>
<blockquote class="gmail_quote"
style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">I
am attaching a little bit of c
code and my mesh.geo and mesh.msh
so that you understand the
context.<br>
The BCs I want to apply are
displacement of 0.2 in the y
direction if y==1.0<br>
0.0 in the x direction if y==0.0</blockquote>
<div><br>
</div>
<div>I might do this:</div>
<div><br>
</div>
<div>
<div>void top_displacement(const
PetscReal x[], PetscScalar *u,
void *ctx)</div>
<div>{</div>
<div> *u = x[1] <
PETSC_MACHINE_EPSILON ? 0.0 :
0.2;</div>
<div>}</div>
</div>
<div><br>
</div>
<div> Thanks,</div>
<div><br>
</div>
<div> Matt</div>
<div> </div>
<blockquote class="gmail_quote"
style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span><font
color="#888888"><br>
<span><font color="#888888">
-- <br>
Best,<br>
Luc<br>
<br>
</font></span></font></span></blockquote>
<span><font color="#888888"> </font></span></div>
<span><font color="#888888"> <br>
<br clear="all">
<span class="HOEnZb"><font
color="#888888">
<div><br>
</div>
-- <br>
<div>What most experimenters
take for granted before they
begin their experiments is
infinitely more interesting
than any results to which
their experiments lead.<br>
-- Norbert Wiener</div>
</font></span></font></span></div>
<span class="HOEnZb"><font
color="#888888"> </font></span></div>
<span class="HOEnZb"><font color="#888888">
</font></span></blockquote>
<span class="HOEnZb"><font color="#888888">
<br>
</font></span></div>
<span class="HOEnZb"><font color="#888888"> </font></span></blockquote>
<span class="HOEnZb"><font color="#888888"> </font></span></div>
<span class="HOEnZb"><font color="#888888"> <br>
<br clear="all">
<div><br>
</div>
-- <br>
<div>What most experimenters take for granted
before they begin their experiments is
infinitely more interesting than any results
to which their experiments lead.<br>
-- Norbert Wiener</div>
</font></span></div>
</div>
</blockquote>
<br>
</div>
</blockquote>
</div>
<br>
<br clear="all">
<div><br>
</div>
-- <br>
<div class="gmail_signature">What most experimenters take for
granted before they begin their experiments is infinitely
more interesting than any results to which their experiments
lead.<br>
-- Norbert Wiener</div>
</div>
</div>
</blockquote>
<br>
</body>
</html>