Issue: solving for water height in crevasse--implemented with the class method Crevasse.calc_water_height()
--becomes invalid for shallow crevasses < ~22 m.
Current (Kristin's solution), was implemented in Crevasse.calc_water_depth()
where the water height was forced to be less than or equal to crevasse depth (return max(0,crevasse_depth-water_height)
) and an extrapolation method for b (below) was included for crevasses<30m, implemented with an if-statement
Options added to function in conjunction with added plotting water depth required to balance KIC within crevasse for crevasse depths - utilizing Crevasse.calc_water_height()
Figure shows crevasse depth (d) and computed water height calculated from .calc_water_height()
for an ice thickness of 600, and fracture toughnesses of 0.1MPa (blue), 0.15 MPa (orange), 0.2MPa (green). The gray dashed lines correspond to the b-approximation used for small crevasse depths (d<30m) and plotted against different values of sigmaCrev
(Rxx or the applied stress to the crevasse) ranging from 0 (top curves) to 150000Pa (amplitude of crevasse field's stress field), bottom.
![Screenshot 2023-04-28 at 4 39 49 PM](https://user-images.githubusercontent.com/25235264/235250064-36c4d4d1-9b48-443d-a533-e3e725c72ff3.png)
Fracture Toughness = 0.1MPa (Blue), 0.15MPa (orange), 0.2MPa (Green)
![Screenshot 2023-04-28 at 5 02 53 PM](https://user-images.githubusercontent.com/25235264/235253735-77933306-4d8c-44cc-aef2-137a2dcfe30a.png)
NOTE for small values of sigmaCrev
whereby b never becomes null, there is a region within these low crevasse depths (d<~22m) where b>d which should not be allowed to occur. Kristin's model appears to use the b-approximation (dashed lines) to try and circumvent the areas where b is NaN
, and the max(0,water_depth)
restriction to fix b>d results. While this is probably fine, the b extrapolation is being computed when the results will be set to 0 by the max()
conditional.
This may also not be an issue if we calculate a better initial crevasse depth (likely deeper than in this area of uncertainty) such that it is all avoided and we only use realistic crevasse depths.
def extrapolate_b(crevasse_depth, rxx):
d1 = 30
d2 = 40
b1 = Crevasse.calc_water_height(d1, Rxx=rxx)
b2 = Crevasse.calc_water_height(d2, Rxx=rxx)
return b1 + (b2-b1)/(d2-d1)*(crevasse_depth-d1)