Implemented isostatic rebound: loss of weight due to erosion will compensate at regional scale

This commit is contained in:
Gael-de-Sailly 2020-04-10 19:37:27 +02:00
parent 6752ffa91d
commit 8b78f6c5b4
2 changed files with 17 additions and 2 deletions

View File

@ -47,14 +47,15 @@ def diffusion(dem, time, d=1):
return im.gaussian_filter(dem, radius, mode='reflect')
class EvolutionModel:
def __init__(self, dem, K=1, m=0.5, d=1, sea_level=0, flow=False):
def __init__(self, dem, K=1, m=0.5, d=1, sea_level=0, flow=False, flex_radius=100):
self.dem = dem
#self.bedrock = dem
self.K = K
self.m = m
self.d = d
self.sea_level = sea_level
#self.ref_isostasy = im.gaussian_filter(dem, radius, mode='reflect')
self.flex_radius = flex_radius
self.define_isostasy()
if flow:
self.calculate_flow()
else:
@ -75,3 +76,11 @@ class EvolutionModel:
def diffusion(self, time):
self.dem = diffusion(self.dem, time, d=self.d)
self.flow_uptodate = False
def define_isostasy(self):
self.ref_isostasy = im.gaussian_filter(self.dem, self.flex_radius, mode='reflect')
def adjust_isostasy(self, rate=1):
isostasy = im.gaussian_filter(self.dem, self.flex_radius, mode='reflect')
correction = (self.ref_isostasy - isostasy) * rate
self.dem = self.dem + correction

View File

@ -47,6 +47,9 @@ model.calculate_flow()
print('Advection 1')
model.advection(2)
print('Isostatic equilibration 1')
model.adjust_isostasy()
print('Flow calculation 2')
model.calculate_flow()
@ -56,6 +59,9 @@ model.diffusion(4)
print('Advection 2')
model.advection(2)
print('Isostatic equilibration 2')
model.adjust_isostasy()
print('Flow calculation 3')
model.calculate_flow()