Replies: 2 comments 10 replies
-
I think the problem is that without doing so, EMF at the edges will never communicate between two different cores and their difference can grow in time. Eventually, the difference grows exponentially and is so large that the code crashed. Theoretically we don't have to do it at any step. For B and CT, if we only have a little bit round-off error at one step, this may not be an issue. If we just average B without correcting EMF, the EMF error can grow exponentially. |
Beta Was this translation helpful? Give feedback.
-
I guess it is theoretically possible that the error in the CT phase may cause mismatch in the shared face field, but I have never seen such a case in my experience, including turbulent protoplanetary disks in spherical polar coordinates. |
Beta Was this translation helpful? Give feedback.
-
Hi, everyone! I have been thinking about EMF corrections recently and wanted to run a question by everyone:
For uniform meshes (without any refinement), Athena++ communicates EMFs between neighboring MeshBlocks and averages them. This is because when computing the EMF at boundaries for two different neighboring MeshBlocks, round-off error level differences can arise. My question, however, is…
After communicating and averaging EMF’s at MeshBlock boundaries, those updated EMF’s are used to perform CT. Can CT also produce round-off error level differences in the updated magnetic field at a face that is shared by two MeshBlock boundaries? If so, I worry that in highly chaotic simulations, the magnetic field value at the same face but from the perspective of two different MeshBlocks may begin to differ. Is this possible?
If this was an issue (which I am not convinced it is), the solution would be to just communicate the magnetic field component at the face shared by two MeshBlocks and average them (just like the EMFs). The resultant averaged magnetic field should still be divergence-less to round-off error.
Beta Was this translation helpful? Give feedback.
All reactions