On Wed, 6 Jun 2018, Caleb M Phillips wrote:
On Wed, Jun 6, 2018 at 1:45 PM, Roy Stogner <royst...@ices.utexas.edu> wrote: How expensive depends on your time stepping, and on your topology, I believe. My biggest question would be about the latter: do you really need to delete old nodes and add new nodes with every step? If your mesh topology can remain unchanged then you can simply change the geometry by setting new positions for the same old nodes, which ought to be much simpler. That sounds much simpler, my only concern would be after too much movement if the elements would become skewed. Or perhaps some elements would be 100 microns and some 1 micron.
Hmm... if you're working in 3D and you're worried about a little skew then you might be able to get away with just a smoother pass on internal nodes. If you're worried about a lot of skew then you'll be stuck working with Tets. You can't easily keep Hexes from skewing given enough deformation, but you can't remesh them easily *either*.
I would have to delete nodes if a cell were to die, obviously then it would no longer be a part of the vessel.
This is where meeting in person will help; I'm only 90% confident I understand what you're getting at without pictures. We can handle element deletion (and addition) to a mesh mid-simulation.
Is the error always the default? I'm surprised insert_node doesn't take both a Node * and id.
The documentation for insert_node literally says "Primarily intended for use with the mesh_inserter_iterator, only use if you know what you are doing..." I admit that that's only *slightly* scarier than the documentation for add_node() or add_point(), but still add_*() are intended for expert user code and insert_node() is basically only for internal use. If C++ had access control lists rather than just public/protected/private then insert_node would definitely be intra-library-only.
Is this done through adding a point first with an id and then adding a node? I believe I've overthought this processes several times!
You can add_node(n), in which case we simply append n to the mesh with the next unused id, or you can insert_node(n), in which case we assume you've already chosen an unused n->id() and we scream at you if it isn't unused, or you can add_point(p), in which case we'll put a Node at that point. If you add_point(p) or add_point(p, id) and id is free, then we'll create a new Node; if you add_point(p, id) and there's already a node with that id then we'll just move it to p. Where this *really* gets tricky is when you want to do it on a distributed mesh... --- Roy ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Libmesh-users mailing list Libmesh-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/libmesh-users