Path: blob/devel/elmerice/Solvers/Documentation/CalvingHydroInterp.F90
3206 views
# Solver CalvingHydroInterp1## General Information2- **Solver Fortran File:** CalvingHydroInterp.F903- **Solver Name:** IceToHydroInterp and HydroToIceInterp4- **Required Output Variable(s):** None5- **Required Input Variable(s):**6- Normal stress (assumed to be called 'normalstress')7- Velocity (assumed to be called 'velocity')8- Temperature residual (assumed to be called 'temp residual')9- Water pressure (assumed to be called 'water pressure')10- Effective pressure (assumed to be called 'effective pressure')11- **Optional Output Variable(s):**12- None13- **Optional Input Variable(s):**14- Grounded mask (assumed to be called 'GroundedMask')15- Grounded mask validity mask (assumed to be called 'GMCheck')16- **Solver Keywords:**17- (All of these are for IceToHydroInterp; there are no options for the other subroutines)18- Reference Node (3) = Integer x y z (The reference node, usually somewhere on the front, that you want to use as a distance marker in artefact correction)19- Threshold Distance = Real... (The distance from the reference node beyond which you want to force groundedness (removes GroundedMask artefacts inland))20- Side = Logical... (This isn’t a solver option, but something that should be set in the boundary condition section of the SIF. The interpolation routine tends to create a lot of artefacts on the lateral boundaries of the domain – if you set `Side = Logical True` in the boundary condition sections for the sidewalls of the hydrology mesh, this will force them to be grounded and remove the frequent ungrounded artefacts.)2122## General Description23This solver handles the interpolation of necessary variables between the ice and hydrology meshes. It also corrects interpolation artefacts that will otherwise nix your simulation sooner or later, and ensures conservation of the temperature residual (one of the interpolated variables) to stop the glacier accidentally destroying or creating some energy….24The file contains two main subroutines, imaginatively titled “IceToHydroInterp” and “HydroToIceInterp”. Make sure you get them the right way round. IceToHydroInterp interpolates the ice normal stress, velocity, grounded mask and temperature residual over to the hydrology mesh and then spends a lot of time clearing up artefacts and conserving the temperature residual. HydroToIceInterp is much simpler, as the hydrology mesh is usually finer than the ice mesh, so the interpolation routine doesn’t create anywhere near as many artefacts in problematic locations. Therefore, it pretty much just interpolates the water pressure and effective pressure onto the ice mesh.25There are also two small subroutines: “HydroWeightsSolver” and “IceWeightsSolver”. These calculate the boundary weights used in the main routines (the reason this happens in a separate solver is complicated – suffice to say it does exist). These need to be called as solvers before the relevant interpolation routines (IceToHydro or HydroToIce) are called, otherwise they’ll crash. IceWeightsSolver needs to run every time the ice mesh is updated (probably every n timesteps); HydroWeightsSolver every time the hydrology mesh is updated (probably never, so it can just run once at the start of the simulation).26This solver is part of the coupled calving-GlaDS-plumes suite described in [this document](./CoupledIceHydrologyCalvingPlumesDocumentation.md). It may require additional work to be used outside of this context.2728## Known Bugs and Limitations29None3031## SIF contents32The required keywords in the SIF file for this solver are:3334```35Solver 136Equation = "IceToHydroInterp"37Procedure = "ElmerIceSolvers" "IceToHydroInterp"3839Load Reader Variables = Logical True40Number Of Variables To Read = Integer 341Reader Solver 1 = Integer 442Reader V1 = String "zb"43Reader Solver 2 = Integer 544Reader V2 = String "runoff"45Reader Solver 3 = Integer 5346Reader V3 = String "hydroweights"4748Reference Node(3) = Integer -209278 -2135324 049Threshold Distance = Real 10000.050End5152Solver 253Equation = "HydroToIceInterp"54Procedure = "ElmerIceSolvers" "HydroToIceInterp"55End5657Solver 358Equation = IceWeightsCalculator59Procedure = "ElmerIceSolvers" "IceWeightsSolver"60Variable = -dofs 1 "IceWeights"61End6263Solver 464Equation = HydroWeightsCalculator65Exec Solver = "Before Simulation"66Procedure = "ElmerIceSolvers" "HydroWeightsSolver"67Mesh = "." "mesh/HydroMeshFinalNO"68Variable = -dofs 1 "HydroWeights"69End7071Boundary Condition 172Side = Logical True !if a lateral boundary; set to False if front or inflow73End74```75## Examples76TO DO77An example in which the ... can be found here [ELMER_TRUNK]/elmerice/Tests/...7879## References80None818283