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

Reply via email to