From: Stogner, R. H <roy...@ic...> - 2019-01-14 21:46:22
|
Please use the libmesh-users list in the future; it's often responsive even when an individual developer is busy. On Tue, 8 Jan 2019, 서승진 wrote: > Hi. I currently trying to solve the boundary deformation model in parallel. > > 1) I have tried to write the code to solve the boundary deformation by using moving mesh, > exactly saying, by moving the nodes in the boundary. > > I used the MeshBase element iterator, and the boundary condition by using (elem->neighbor(side) == NULL) condition. > Within the condition in the loop, I used > mesh.node(node_id) = Point (new_x, new_y, new_z); > function, and it worked. However, the deformed boundary had spitz pattern. (Original shape of boundary was line) I'm afraid I don't know what a "spitz pattern" is. Could you upload a picture somewhere? > I want to make a model for deformed boundary without these spitz > pattern, but it seems that I should link the moved boundary > nodes each other by adding new boundary lines . This seems very unlikely. I might be misunderstanding the problem, but generally with a deforming domain you want to change the geometry but not the topology. > 2) Libmesh can calculate the fem physics in one mesh in parallel, as > like example introduction_ex4.C > However, what I want to do is calculating two mesh with same fem > physics in parallel. > > By using Parallel::Communicator class with > > LibmeshInit init (argc,argv); > Parallel::Communicator & comm = init.comm(); > > I can assign the work for each processor along it's rank (ex, processor_id_type rank = comm.rank();) > > Each processor will define mesh object, equation systems object, and system object, and then solve each system. The key here is: how do you define the mesh object? If you just use comm above, then you will get a Mesh defined over all processors, because init.comm() includes all processors libMesh sees. You'll need to do something like Communicator::split to get a new Communicator defined over a subset of processors, then create a Mesh using just that. I don't think we have enough (or any?...) test coverage on that use case, so please let us know ASAP (preferably via libmesh-devel or a Github issue) if you run into anything which looks like a bug, or (preferably via libmesh-users) if you need more assistance. --- Roy |