idaholab / moose

Multiphysics Object Oriented Simulation Environment
https://www.mooseframework.org
GNU Lesser General Public License v2.1
1.77k stars 1.05k forks source link

Scale mesh geometry via scaling of kernels #14119

Open tophmatthews opened 5 years ago

tophmatthews commented 5 years ago

Reason

There are many thermo-mechanical problems that have asymmetrical dimensions (e. g. long and skinny). In mechanical problems, problems start to happen when elements deviate from squares. As a result, there is often an unnecessary level of mesh refinement required to keep things square.

With the new automatic scaling working wonderfully, it may be possible to scale the geometry to make square elements, by simultaneously scaling the physics in the opposite direction.

Design

Add parameters that scale the mesh, and scale the necessary physics.

Impact

This will allow WAY more capability of running hard problems with fewer processors by dropping the necessary number of nodes.

dschwen commented 5 years ago

Uniform refinement cannot keep things square (so my suggestion would be to add non-uniform refinement to libmesh. I've already voiced that but haven't found any takers yet). Scaling the physics would mean scaling gradients, but that's equivalent to scaling the mesh. Are you sure there is a chance this would help?

On Tue, Oct 1, 2019, 5:04 PM Topher Matthews notifications@github.com wrote:

Reason

There are many thermo-mechanical problems that have asymmetrical dimensions (e. g. long and skinny). In mechanical problems, problems start to happen when elements deviate from squares. As a result, there is often an unnecessary level of mesh refinement required to keep things square.

With the new automatic scaling working wonderfully, it may be possible to scale the geometry to make square elements, by simultaneously scaling the physics in the opposite direction. Design

Add parameters that scale the mesh, and scale the necessary physics. Impact

This will allow WAY more capability of running hard problems with fewer processors by dropping the necessary number of nodes.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/idaholab/moose/issues/14119?email_source=notifications&email_token=AABRMPXLXDV5Q3RYAUBZE6TQMPQQBA5CNFSM4I4QE3AKYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HO7ZAGQ, or mute the thread https://github.com/notifications/unsubscribe-auth/AABRMPSRXSXRVLKMFOSKHBDQMPQQBANCNFSM4I4QE3AA .

tophmatthews commented 5 years ago

Yes, I'm positive this will help. We have these silly meshes with crazy axial refinement in order to keep elements square-ish, something like 6 radial rings and 300 axial slices. The physics changes very slowly axially (ie temperature/stress gradients), but changes very rapidly radially. Really, it should be more like 50-100 radial rings to capture physics we are ignoring, but I can't realistically run and debug that...its like 4000 axial slices. This results in massive meshes, where really 20 axial slices is enough to capture the axial physics.

This will change the numbers and how we run significantly.

tophmatthews commented 5 years ago

Mesh refinement won't reduce the axial slices, it has to be a scaling of the mesh, with opposite scaling the physics. I think it just comes down to good book-keeping, now that scaling can take care of the convergence.

lindsayad commented 5 years ago

Uniform refinement cannot keep things square (so my suggestion would be to add non-uniform refinement to libmesh. I've already voiced that but haven't found any takers yet).

The problem with BISON meshes is that they start out non-square. It sounds like anistropic refinement would only make them more non-square. I think @tophmatthews quest here is a good one if he can make it work.

tophmatthews commented 5 years ago

@lindsayad is certainly interested so I can start actually sending him sane meshes to debug :smile:

lindsayad commented 5 years ago

Indeed

tophmatthews commented 5 years ago

@bwspenc and I talked a bit about this, and he's wondering if maybe the residual scaling could allow the use of high aspect ratio elements. This would achieve the same goal as geometric scaling, namely smaller meshes by allowing mesh refinements to be driven by variable gradients, rather than keeping elements square. I'm running a simulation with 200:1 axial:radial now, that seems to be doing fine with residual scaling.

Can we pull this into a bigger discussion, maybe with @novasr and @acasagran about why high aspect ratio elements are bad?

lindsayad commented 5 years ago

What do you mean by residual scaling? Setting variable scaling factors either manually through the input file or automatically?

tophmatthews commented 5 years ago

automatically, using your automatic scaling implementation