<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>