I've got this set up on 
https://github.com/libMesh/libmesh/tree/subdivision_surfaces

(subdivision_surfaces branch)

the new example, misc11, runs.  I applied the patch as-is and then needed to 
make some small tweaks to avoid duplicate symbols from template functions, 
these tend to show up on OSX when they can be hidden on linux.

Anyone (John?) want to help me rebase it against master?  mostly whitespace 
issues...

-Ben



On Mar 6, 2014, at 7:56 AM, Kirk, Benjamin (JSC-EG311) <benjamin.k...@nasa.gov> 
wrote:

> Thanks Roman, I'm hoping to set up the PR today.  Could you tell me what 
> version of libMesh you created this patch from? That'll help a lot.  It 
> *almost* applies cleanly on 0.9.3, but there are a few failures:
> 
> $ patch -p1 < ~/Desktop/0001-Add-Loop-subdivision-surface-elements.patch 
> --dry-run
> patching file configure.ac
> Hunk #1 FAILED at 303.
> 1 out of 1 hunk FAILED -- saving rejects to file configure.ac.rej
> patching file examples/miscellaneous/miscellaneous_ex11/Makefile.am
> patching file examples/miscellaneous/miscellaneous_ex11/miscellaneous_ex11.C
> patching file examples/miscellaneous/miscellaneous_ex11/run.sh
> patching file examples/miscellaneous/miscellaneous_ex11/square_mesh.off
> patching file include/base/dof_map.h
> Hunk #1 FAILED at 1057.
> 1 out of 1 hunk FAILED -- saving rejects to file include/base/dof_map.h.rej
> patching file include/enums/enum_elem_type.h
> patching file include/enums/enum_fe_family.h
> patching file include/fe/fe.h
> patching file include/fe/fe_map.h
> patching file include/geom/face_tri3_sd.h
> patching file include/geom/node.h
> patching file include/include_HEADERS
> patching file include/mesh/mesh_subdiv_support.h
> patching file src/base/dof_map.C
> Hunk #2 FAILED at 1661.
> Hunk #3 FAILED at 1679.
> Hunk #4 FAILED at 1715.
> Hunk #5 succeeded at 1676 (offset -74 lines).
> Hunk #6 succeeded at 1695 with fuzz 2 (offset -74 lines).
> Hunk #7 FAILED at 1722.
> Hunk #8 FAILED at 1748.
> Hunk #9 FAILED at 1772.
> Hunk #10 FAILED at 1851.
> Hunk #11 succeeded at 1946 (offset -86 lines).
> Hunk #12 succeeded at 1964 (offset -81 lines).
> Hunk #13 succeeded at 2029 with fuzz 1 (offset -68 lines).
> 7 out of 13 hunks FAILED -- saving rejects to file src/base/dof_map.C.rej
> patching file src/fe/fe.C
> patching file src/fe/fe_abstract.C
> patching file src/fe/fe_base.C
> patching file src/fe/fe_boundary.C
> patching file src/fe/fe_interface.C
> patching file src/fe/fe_lagrange.C
> patching file src/fe/fe_map.C
> patching file src/fe/fe_subdiv_2D.C
> patching file src/fe/fe_transformation_base.C
> patching file src/fe/fe_type.C
> patching file src/geom/elem.C
> patching file src/geom/face_tri3_sd.C
> patching file src/libmesh_SOURCES
> patching file src/mesh/exodusII_io_helper.C
> Hunk #1 succeeded at 1944 (offset -119 lines).
> patching file src/mesh/mesh_subdiv_support.C
> patching file src/mesh/vtk_io.C
> patching file src/quadrature/quadrature_gauss_2D.C
> patching file src/utils/string_to_enum.C
> 
> 
> 
> 
> 
> On Feb 24, 2014, at 9:37 AM, Roman Vetter <vette...@ethz.ch> wrote:
> 
>>> And if you're not comfortable generating the pull request I could help - if 
>>> you send along the patch I can try and break it up into number of smaller 
>>> changes on a new branch, and we can start discussion.
>> 
>> I'm very new to git, and it's all still a bit confusing, so I think I'll 
>> gladly accept the help. :)
>> 
>> Here's the patch. You'll need to run ./bootstrap as I didn't include the 
>> autoconf/automake/libtool output.
>> 
>> A few more explanations on the code:
>> 
>> 1. As already mentioned (also by Norbert), the solution on a given element 
>> depends on the 1-ring of that element (i.e., the direct neighbor elements). 
>> Obviously, boundary elements lack such neighbors. Therefore, subdivision 
>> meshes require special preparation, where an additional layer of elements is 
>> added along the mesh boundaries. These additional elements do not belong to 
>> the physical domain.
>> 
>> 2. The added boundary elements are named "ghost" elements in the literature. 
>> I guess this name somewhat clashes with the "ghost" elements that lie on 
>> processor domain boundaries.
>> 
>> 3. Any program using subdivision surface elements will need to operate only 
>> on non-ghost elements. To this end, a new element type TRI3SD is added, 
>> providing the is_ghost() member.
>> 
>> 4. Nodes that have valence 6 are called "regular", otherwise they are 
>> "irregular". Elements are regular iff all their nodes are regular. Regular 
>> elements have exactly 12 shape functions (quartic box splines). Irregular 
>> elements, however, need special treatment.
>> 
>> 5. Even though the subdivision surface shape functions are quartic, one 
>> Gauss point per element is perfectly sufficient. The traditional theoretical 
>> lower bound (predicting a minimum of 6 points for triangular elements with 
>> quartic shape fcts) doesn't apply due to the overlapping subdiv shape 
>> functions.
>> 
>> 6. For efficiency, we internally reorder the nodes of TRI3SD elements in 
>> such a way that if the elements is irregular, the irregular vertex is always 
>> the first (see also 
>> http://sourceforge.net/mailarchive/message.php?msg_id=20808509) and only the 
>> first. Clearly, this means that only meshes with elements with at most one 
>> irregular vertex are supported. (The mesh preparator will properly complain 
>> otherwise.)
>> 
>> 7. The custom DofMap originally mentioned by Norbert 
>> (http://sourceforge.net/mailarchive/message.php?msg_id=20778890) was avoided 
>> in the present implementation by generalizing the way DofMap computes the 
>> dof_indices.
>> 
>> 8. Due to 1., boundary conditions are non-trivial to impose. Have a look at 
>> miscellaneous_ex11 or the original paper (Int. J. Numer. Meth. Engng. 47, 
>> 2039-2072 (2000)) for one way to impose them. See Int. J. Numer. Meth. Eng. 
>> 61, 380–405 (2004) for an alternative constraint approach.
>> 
>> 9. I don't know what happens if a user attempts to use AMR, libmesh's 
>> boundary functionality, or constraints on the subdivision surface elements. 
>> I simply haven't tried.
>> 
>> Feel free to ask more questions.
>> 
>> -Roman
>> <0001-Add-Loop-subdivision-surface-elements.patch>------------------------------------------------------------------------------
>> Flow-based real-time traffic analytics software. Cisco certified tool.
>> Monitor traffic, SLAs, QoS, Medianet, WAAS etc. with NetFlow Analyzer
>> Customize your own dashboards, set traffic alerts and generate reports.
>> Network behavioral analysis & security monitoring. All-in-one tool.
>> http://pubads.g.doubleclick.net/gampad/clk?id=126839071&iu=/4140/ostg.clktrk_______________________________________________
>> Libmesh-devel mailing list
>> Libmesh-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/libmesh-devel
> 
> ------------------------------------------------------------------------------
> Subversion Kills Productivity. Get off Subversion & Make the Move to Perforce.
> With Perforce, you get hassle-free workflows. Merge that actually works. 
> Faster operations. Version large binaries.  Built-in WAN optimization and the
> freedom to use Git, Perforce or both. Make the move to Perforce.
> http://pubads.g.doubleclick.net/gampad/clk?id=122218951&iu=/4140/ostg.clktrk_______________________________________________
> Libmesh-devel mailing list
> Libmesh-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/libmesh-devel

Attachment: smime.p7s
Description: S/MIME cryptographic signature

------------------------------------------------------------------------------
Subversion Kills Productivity. Get off Subversion & Make the Move to Perforce.
With Perforce, you get hassle-free workflows. Merge that actually works. 
Faster operations. Version large binaries.  Built-in WAN optimization and the
freedom to use Git, Perforce or both. Make the move to Perforce.
http://pubads.g.doubleclick.net/gampad/clk?id=122218951&iu=/4140/ostg.clktrk
_______________________________________________
Libmesh-devel mailing list
Libmesh-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libmesh-devel

Reply via email to