[aspect-devel] Dealing with the curved spherical mesh when applying different initial global refinement at different depths

Wolfgang Bangerth bangerth at tamu.edu
Mon Jul 25 14:05:02 PDT 2016

On 07/23/2016 11:26 PM, Shangxin Liu wrote:
> Hi;
> When I use the fixed mesh to run global spherical shell model with ASPECT, I
> find that the mesh size of shallower depths is larger than that of deeper
> depths. In my model with 5 initial global refinement and 0 initial adaptive
> refinement, for example, the mesh size above ~4501km is ~58km and the mesh
> size below ~4501km is ~32 km. Because we commonly want the mesh size of upper
> mantle smaller than that of lower mantle, I add the following code into the
> core.cc after calling the initial global refinement to apply an additional
> global refinement to the cells above a specified depth:
> // Do the additional initial global refinement down to specified depth if required
>         if (parameters.increase_initial_global_refinement_to_depth)
>           {
>             for (unsigned int m=0;
> m<parameters.additional_initial_global_refinemnt; ++m)
>               {
>                 for (typename Triangulation<dim>::active_cell_iterator
>                      cell = triangulation.begin_active();
>                      cell != triangulation.end(); ++cell)
>                   {
>                     const Point<dim> cell_center = cell->center();
>                     const double depth = geometry_model->depth(cell_center);
>                     if (depth <
> parameters.apply_initial_global_refinement_to_depth)
>                       cell->set_refine_flag ();
>                   }
>                 mesh_refinement_manager.tag_additional_cells ();
>                 triangulation.execute_coarsening_and_refinement();
>               }
>           }
> "increase_initial_global_refinement_to_depth",
> "additional_initial_global_refinemnt", and
> "apply_initial_global_refinement_to_depth" represent my new specified input
> parameters to define whether apply this additional global refinement, the
> additional refinement level, and above which depth this is applied. This
> indeed works to add additional global refinement of the mesh at shallower
> depths. However, for the curved spherical shell geometry domain, this will
> generate the empty slots around the input division depth due to the
> inconsistency of the mesh size above and below this depth. I attach one of my
> test figure output from Paraview here to show this "empty slots" issue for
> curved spherical shell geometry. Of course these empty slots will be smaller
> and closer to 0 when using higher global refinement, but I wonder whether I
> can directly make the mesh here tracking the circular domain at the division
> depth. Jacky may have made this depth-dependent global refinement working.
> Have you run into this "tiny empty slots" problem?
> Any idea how to fix this issue in curved spherical shell geometry?

That's actually just an artifact of the visualization. The gap does not exist 
in the computation. A similar issue is discussed here:



Wolfgang Bangerth               email:            bangerth at math.tamu.edu
                                 www: http://www.math.tamu.edu/~bangerth/

More information about the Aspect-devel mailing list