AdrienWehrle / diuca

GNU Lesser General Public License v2.1
0 stars 1 forks source link

Add sediment layer with variable thickness through MOOSE #28

Closed AdrienWehrle closed 3 months ago

AdrienWehrle commented 3 months ago

Let's try and implement a sediment viscosity simpler than the Drucker-Prager formulation currently in FVSedimentMaterialSI (highly non linear).

An implementation we've used in the past in my team is in terms of slipperiness, such that mu = Cslip / h with Cslip a slipperiness coefficient and h the thickness of the sediment layer. (from e.g. here). That means the thickness of the sediment layer can vary. And I'd like to try and avoid creating one mesh per simulation. So I've been thinking I might be ale to stitch a one-element layer at the base of the glacier directly within MOOSE as a projection of the bed boundary, even if the bed is not flat. I'd have to assign the side sets according to the glacier above but I feel like that might be possible.

I've been going through the mesh generator objects but couldn't find one that could do what I'm describing here. Do you know if such an object exists @GiudGiud ? If I don't manage to do it within MOOSE, I'll get back to generating my meshes for each simulation, but doing it within MOOSE would also allow to pass the sediment thickness automatically both in the mesh generator and in the sediment object.

GiudGiud commented 3 months ago

Hello

there is a sideset extrusion generator.

If you make a sideset at the bottom of the ice mesh, you could make the sediment be an extrusion of that surface of the chosen height

AdrienWehrle commented 3 months ago

That works great, I'm just struggling to set side sets for that specific block only. SideSetsFromNormalsGenerator doesn't take a block argument. I managed to set the side set at the bottom of the extrusion (with bottom_sideset of MeshExtruderGenerator) but I don't manage to set the left/right upstream/downstream fully vertical ones.

GiudGiud commented 3 months ago

use a ParsedGenerateSideset ? there's plenty of arguments there that will let you narrow down one surface

AdrienWehrle commented 3 months ago

Yes that worked great too, I was just wondering if there was a way to set those sides without hard coding a combinatorial_geometry with mesh-specific coordinates since I've creating the mesh out of MOOSE, but that'll be good for now! Thanks a lot!

GiudGiud commented 3 months ago

I think we could modify the SidesetExtrusionGenerator to include a sideset of the "external" sides, and also check that we have a sideset at the base and top of the extrusion. Feel free to create a feature request in moose for this

AdrienWehrle commented 3 months ago

I feel like that could be modified in MeshExtruderGenerator first since SideSetExtruderGenerator is using it?

also check that we have a sideset at the base and top of the extrusion

MeshExtruderGenerator has that at the moment, right. What I struggle understanding is that the MeshExtruderGeneratordescription states "The Mesh Extruder can also add in the extra sidesets resulting from increasing the dimensionality of the original mesh. Existing sidesets are extruded." but it feels like this is not implented as of now. Yet this is exactly what I'd need!

AdrienWehrle commented 3 months ago

Feel free to create a feature request in moose for this

Happy to do this, just had a couple of thoughts before posting! (see above)

GiudGiud commented 3 months ago

The Mesh Extruder can also add in the extra sidesets resulting from increasing the dimensionality of the original mesh. Existing sidesets are extruded

sideset extruder does not do this yet. We would need to create the 1D sidesets (probably extracted from 2D sidesets nearby) on the 2D sideset to extrude the 1D ones into 2D sidesets.