geodynamics / aspect

A parallel, extensible finite element code to simulate convection in both 2D and 3D models.
https://aspect.geodynamics.org/
Other
227 stars 237 forks source link

Use something else rather than gravity direction to determine the local vertical direction for projection of the mesh velocity #2482

Open anne-glerum opened 6 years ago

anne-glerum commented 6 years ago

When gravity is switched off, the free surface no longer moves when using the vertical surface velocity projection. This is because the local vertical direction is determined using the gravity. As @gassmoeller suggested, we could use two calls to the representative point function of the geometry model with different given depths to get the local vertical.

ian-r-rose commented 6 years ago

There is an option for the projection onto the mesh outward normal (rather than the unit gravity vector): https://github.com/geodynamics/aspect/blob/master/source/simulator/free_surface.cc#L199

I found that using the gravity vector was a bit more stable, since regions with sharply varying topography could result in a poorly conditioned surface normal. However, as long as the topography is not too kinky, using normal should work.

bangerth commented 6 years ago

Why would you not use a gravity? In that case, what would be the force that counters deformation?

anne-glerum commented 6 years ago

I came across this for a very specific test case where we only want the vertical surface velocity projection and switched off gravity to avoid the slight pressure variations arising from tiny variations in the free surface advection. We needed precise control over the flow field to be able to compute and check the position of particles, but the pressure variations where driving some lateral flow variations. When the gravity is switched off, the vertical projection leads to no displacement of the surface. The boundary conditions still led to some divergence in the domain corners, so I found another way to set up the test by using the single Advection, no Stokes solver scheme, but thought I'd report this specific case anyway. Maybe an assert for gravity magnitude not being zero when using the vertical projection could help?

bangerth commented 6 years ago

I agree that an assertion would be useful.

I think I should restate my question: My understanding of the free surface is that you try to find that surface displacement where the upward motion of material caused by an excess normal stress on the previous boundary is exactly countered by the downward force due to the gravity of the material you are moving upward. If there is no gravity, then the displacement of the boundary should be infinite as we have no surface tension. That's like thinking of a blob of water in weightless space: if you had an excess pressure on one side (e.g. by blowing on the opposite side), you'd just get a sideways motion that has no stable limit. So I agree that asserting that the gravity is not zero is a useful step: It ensures that one of the underlying physical assumptions is satisfied.