llnl / llnl/smith

Improve documentation for ::serac::mesh::refineAndDistribute() method

Open
#839 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bugfix day
Dominant language
C++
Stars
245
Forks
36
Avg merge
8d 23h
Merged PRs (30d)
4

Description

https://github.com/LLNL/serac/blob/a300c9c98c631d5503428aff9f67dbd2cdc0df90/src/serac/mesh/mesh_utils_base.hpp#L221

The meaning of refine_parallel and refine_serial arguments is opaque unless you peek at the implementation. It's the number of calls to mfem's UniformRefinement() which is regrettably also relatively opaque.

I am not really a finite element modeler, nor do I play one on TV. However, it seems like it would be useful to know how the arguments will impact the number of DOFs, elements, vertices, or some mesh size metric rather than how many times UniformRefinement will be called.

For me, I think it would be better to specify a target ratio, double serial_multiplier=1 and double parallel_multiplier=1, where your asking serac to increase the DOF's (or whatever the most important mesh size metric is) by approximately the given number. Default arguments of 1 would mean don't change the mesh. Otherwise, I guess it would keep calling UniformRefinement on the mesh until the size metric of the new mesh is >= serial_multiplier*size of the original mesh.

Alternatively, it would be useful if there was some rule of thumb about how much each type of refinement is likely to increase the size of the mesh. It would be useful to know is each call going to double size or what.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Read src/serac/mesh/mesh_utils_base.hpp at refineAndDistribute() and inspect how refine_parallel and refine_serial are passed to MFEM's UniformRefinement(). Document what each argument does and how refinement affects mesh size metrics, or clarify the intended metric and rule of thumb. Done means a user can predict the effect of the arguments without reading the implementation.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
documentation
Issue type
Documentation
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.