Skip to content

MALI: Several Improvements related to handling Albany velocity solver #402

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 9 commits into from

Conversation

mperego
Copy link
Contributor

@mperego mperego commented Nov 15, 2019

Several modifications to improve MPAS/Albany interface

  1. Modifications to interface to simplify the code, reduce communications and improve the partitioning FE mesh to avoid critical situations for the solvers:

    • use MPAS global ids for FE elements entities (years ago we created contiguous global IDs for the FE meshes to avoid some issues with solvers that have been overcome)
    • change ownership of FE triangles (Voronoi vertices) to better distribute triangles along the interface between processors
    • change ownership of FE nodes (Voronoi cells) to avoid corner situations like having a processor that owns a node but no triangles containing that node
  2. Allow building shared libraries for Albany and Trilinos

  3. Enable use of Prismatic FE elements (in alternative to tets).

  4. Remove obsolete code related to LIFEV library

  5. Modify writing of ascii mesh so that it can be printed in parallel

  6. Fix logic to determine whether the finite element mesh needs to be recomputed. Note: in order to compare the cell mask with the previous time steps, we would need the cell mask to have 2 time levels. However, if we set the cell mask to have 2 time levels we get different results. This needs to be fixed. At the moment the cell mask is set to have 1 time level, so it might happen that the mesh is not recomputed when it should.

…s to be recomputed or not

The mesh needs to be recomputed non only of the vertices ice mask has changed, but also if
the floating edges mask and the cell ice mask has changed.
Note: in order to compare the clee mask with the previous time steps, we would need the cell mask
to have 2 time levels. Howver, if we set the cell mask to have 2 time levels we get different results.
This needs to be fixed.
These functions will be copied in Albany, so that the MALI can be built
with shared libraries.
1. sendig now MPAS global IDs to Albany, instead of creating contiguous id
   (this was created for overcoming some issues with solver. It is not needed
    any more now. Old functionality can be restored by defining the
    useContiguousIds preprocessor directive.)
2. Change ownership to Albany triangles (MPAS vertices). This allows to
   better distribute the triangles along the interface.
   A triangle is set to belong to a processor P if:
   1. P owns at least 2 nodes of the triangle associated to that vertex, OR
   2. all the nodes of the triangle belong to three different processors, and P owns the fortran vertex  and a node OR
   3. the three nodes of the triangle and the fortran vertex belong to four different processors, and P owns the triangle node with the minimum ID

   It is possible to avoid changing ownership of triangles by undefining the preprocessor directive changeTrianglesOwnership.

3. Each node is owned by a processor that owns a triangle that contain the node
   This avoids situations problematic to the solver

The Albany mesh will be constructed keeping the ownership of nodes and triangles as defined in MPAS Interface.
Ownership of edges is not dictated by the MPAS Interface and can be arbitrarily chosen by Albany

Cleaning
…omm lists

                           for vertices and cells into one function
@matthewhoffman
Copy link
Member

@mperego , I'm finally starting to review this now. One thing I am concerned about is commit b514e40 where there still is some work to do with the time levels of the cellMask field. I propose that we remove that commit from this PR and deal with it later. That way trying to resolve that issue does not hold up merging the rest of this PR. If you are ok with that, I can modify the branch to have that commit removed, and then open a new PR with just that commit that we can finish working on later.

@mperego
Copy link
Contributor Author

mperego commented Feb 20, 2020

Sure, It makes sense to me.

@matthewhoffman
Copy link
Member

Note: Closing and reopening as #452 in order to fix branch names and update commit history at the same time.

@matthewhoffman
Copy link
Member

Also opening #453 separately for item 6 in the list above.

matthewhoffman added a commit that referenced this pull request Feb 25, 2020
Several modifications to improve MPAS/Albany interface

1. Modifications to interface to simplify the code, reduce
communications and improve the partitioning FE mesh to avoid critical
situations for the solvers:
   - use MPAS global ids for FE elements entities (years ago we created
     contiguous global IDs for the FE meshes to avoid some issues with
solvers that have been overcome)
   - change ownership of FE triangles (Voronoi vertices) to better
     distribute triangles along the interface between processors
   - change ownership of FE nodes (Voronoi cells) to avoid corner
     situations like having a processor that owns a node but no
triangles containing that node

2.  Allow building shared libraries for Albany and Trilinos

3.  Enable use of Prismatic FE elements (in alternative to tets).

4. Remove obsolete code related to LIFEV library

5. Modify writing of ascii mesh so that it can be printed in parallel

Note: updated version from #402

* matt/landice/interface_update:
  Update hashes to use for Trilinos & Albany
  Modify albany input files of some tests to use Prisms and remove old options
  Consolidate fns to create reversed comm lists for vert. and cells into 1 fn
  Remove option to send to Albany list of contiguous Ids
  Several changes to the Interface_velocity_solver
  Remove functions computing the tet/prism mesh connectivity
  Modify write_ascii_mesh so that it can mesh can be printed in parallel.
  Remove old code for LIFEV from the Interface_velocty_solver.*pp. Cleaning.
  Adding boundary conditions info whe printing the ascii mesh. Minor bug fix for floating condition
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants