TetGen for Adaptation using residual error indicator

Thanks, this worked like a charm!
Sorry about the minimal example, I’ll try better next time. The 2D code now runs as I want it :slight_smile:

Where I’m stuck now is again in the 3D case. I get the following error:

Primary job terminated normally, but 1 process returned
a non-zero exit code. Per user-direction, the job has been aborted.
mpiexec noticed that process rank 0 with PID 0 on node tl1 exited on signal 11 (Segmentation fault).

Am I right in assuming that this is a memory problem? Should I free memory e.g. at the end of my macros, or is this already done anyway?

This is a very generic error, no idea of where the problem could come from, you should include the full stack.

I’m not sure I understand what you mean by including the full stack, there is not more to the error message. I attach a screenshot of the console, the last thing before is just the output from parmmg3d.

OK, I can’t help you on this one without being able to run the code. Does it work for smaller meshes? That one is quite huge and it’s not ideal for debugging.

Yes it does run to completion for smaller meshes. With big meshes it also does what it should do, taking longer and longer as the mesh size increases, until at some point it takes a very very long time and then aborts with the above error message.

I see. Well, probably not enough memory or enough processes. I’m not sure there is much we can do about it.

I’m in contact with IT to see what we can do about the memory.
In the meantime, I have another question regarding parmmg3d: What is the purpose of the input parameter metric? Can it have the same role as a Vh(Th, Pk) function passed in adaptmesh, in my case giving the newly desired mesh size (like in section 5.1.9 Adaptation using residual error indicator in the documentation)?
And on the same topic, what does mshmet do?

Yes, you should be able to do that, please go through Mmg documentation https://www.mmgtools.org.

Good morning,

I am trying to reduce the eigenfunction I obtain after remeshing onto the global mesh. But right now I have the problem that I don’t have a global mesh that contains the refinements I made using ParMmg, since the output from ParMmg is a local mesh with no overlap. You’ve showed me the command reconstructDmesh which makes a local mesh with overlap out of a local mesh with no overlap.
Is there also a command that makes a global mesh out of a local mesh with overlap?
Thanks in advance.

Is there also a command that makes a global mesh out of a local mesh with overlap?

No. First go from local with overlap to local with no overlap, then from local with no overlap to global. This is extremely inefficient, if you can afford to store the global eigenvectors, it means you can afford to store the global mesh, so there is no need for all this and I would just call ParMmg centralized (instead of distributed) interface.

This absolutely makes sense.
I was thinking that in the end, after all the remeshing when I’ve arrived at satisfying precision, I could go back to global, honestly just to see the whole function and have a nice plot :laughing: