Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ElmerCSC
GitHub Repository: ElmerCSC/elmerfem
Path: blob/devel/elmerice/Solvers/Documentation/CalvingHydroInterp.F90
3206 views
1
# Solver CalvingHydroInterp
2
## General Information
3
- **Solver Fortran File:** CalvingHydroInterp.F90
4
- **Solver Name:** IceToHydroInterp and HydroToIceInterp
5
- **Required Output Variable(s):** None
6
- **Required Input Variable(s):**
7
- Normal stress (assumed to be called 'normalstress')
8
- Velocity (assumed to be called 'velocity')
9
- Temperature residual (assumed to be called 'temp residual')
10
- Water pressure (assumed to be called 'water pressure')
11
- Effective pressure (assumed to be called 'effective pressure')
12
- **Optional Output Variable(s):**
13
- None
14
- **Optional Input Variable(s):**
15
- Grounded mask (assumed to be called 'GroundedMask')
16
- Grounded mask validity mask (assumed to be called 'GMCheck')
17
- **Solver Keywords:**
18
- (All of these are for IceToHydroInterp; there are no options for the other subroutines)
19
- 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)
20
- Threshold Distance = Real... (The distance from the reference node beyond which you want to force groundedness (removes GroundedMask artefacts inland))
21
- 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.)
22
23
## General Description
24
This 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.
25
The 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.
26
There 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).
27
This 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.
28
29
## Known Bugs and Limitations
30
None
31
32
## SIF contents
33
The required keywords in the SIF file for this solver are:
34
35
```
36
Solver 1
37
Equation = "IceToHydroInterp"
38
Procedure = "ElmerIceSolvers" "IceToHydroInterp"
39
40
Load Reader Variables = Logical True
41
Number Of Variables To Read = Integer 3
42
Reader Solver 1 = Integer 4
43
Reader V1 = String "zb"
44
Reader Solver 2 = Integer 5
45
Reader V2 = String "runoff"
46
Reader Solver 3 = Integer 53
47
Reader V3 = String "hydroweights"
48
49
Reference Node(3) = Integer -209278 -2135324 0
50
Threshold Distance = Real 10000.0
51
End
52
53
Solver 2
54
Equation = "HydroToIceInterp"
55
Procedure = "ElmerIceSolvers" "HydroToIceInterp"
56
End
57
58
Solver 3
59
Equation = IceWeightsCalculator
60
Procedure = "ElmerIceSolvers" "IceWeightsSolver"
61
Variable = -dofs 1 "IceWeights"
62
End
63
64
Solver 4
65
Equation = HydroWeightsCalculator
66
Exec Solver = "Before Simulation"
67
Procedure = "ElmerIceSolvers" "HydroWeightsSolver"
68
Mesh = "." "mesh/HydroMeshFinalNO"
69
Variable = -dofs 1 "HydroWeights"
70
End
71
72
Boundary Condition 1
73
Side = Logical True !if a lateral boundary; set to False if front or inflow
74
End
75
```
76
## Examples
77
TO DO
78
An example in which the ... can be found here [ELMER_TRUNK]/elmerice/Tests/...
79
80
## References
81
None
82
83