From: Caleb M P. <cal...@ut...> - 2018-06-06 18:54:44
|
On Wed, Jun 6, 2018 at 1:45 PM, Roy Stogner <roy...@ic...> wrote: > > On Wed, 6 Jun 2018, John Peterson wrote: > > On Wed, Jun 6, 2018 at 11:51 AM, Caleb M Phillips < >> cal...@ut...> >> wrote: >> >> I'm a newer user to lib mesh and would like to attempt to incorporate it >>> in >>> my research. I am looking to take a list of objects (cells that make up a >>> blood vessel) and add nodes and elements to the mesh over the entire >>> domain. These new nodes/elements would act as a boundary for blood flow. >>> So >>> I would be solving incompressible 2D flow over the whole domain with the >>> new elements acting as a boundary (the wall of the vessel). The vessels >>> would move every time point so I would delete the new nodes at the end of >>> every time point and add the updated positions as new nodes. >>> >>> I'm wondering if this is thought to be feasible or if the manipulations >>> to >>> the mesh at every time point would be extremely computationally >>> expensive. >>> >> > 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. I would have to delete nodes if a cell were to die, obviously then it would no longer be a part of the vessel. > > > I am trying to implement this in a very simple case, but whenever I try to >>> add nodes wherever these cells are in the domain, I get an error "Error, >>> cannot insert node on top of existing node." which I am certainly not >>> adding a node directly on top of an existing node. I've looked through >>> some >>> of the documentation but cannot seem to make sense of my issue. >>> >> >> Hmm.. that error message is coming from ReplicatedMesh::insert_node(Node >> * >> n) and I agree it's a bit confusing. It's referring to inserting a new >> node >> being inserted with the same ID as an existing node, not at the same >> geometric location as an existing node. >> >> I'm not sure exactly what your algorithm entails, but from the description >> above I'd say it's definitely possible to do in libmesh. >> > > John is correct on both counts. Sorry about the misleading error > message! > > Looks like you're at UT? I'm working from the POB building 4 or 5 > days a week, if you'd like help with anything. I usually prefer > keeping user assistance as search-engine-accessible as possible, but I > know sometimes a long back-and-forth can go ten times faster in person > than it can over email. > --- > Roy > Is the error always the default? I'm surprised insert_node doesn't take both a Node * and id. 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! Caleb |