def setup_cache(self): utils.mkdir(self.testdir, reset=True) self.cfg_init() hef_file = get_demo_file('Hintereisferner_RGI5.shp') entity = gpd.read_file(hef_file).iloc[0] gdir = oggm.GlacierDirectory(entity, base_dir=self.testdir) tasks.define_glacier_region(gdir, entity=entity) tasks.glacier_masks(gdir) tasks.compute_centerlines(gdir) tasks.initialize_flowlines(gdir) tasks.compute_downstream_line(gdir) tasks.compute_downstream_bedshape(gdir) tasks.catchment_area(gdir) tasks.catchment_intersections(gdir) tasks.catchment_width_geom(gdir) tasks.catchment_width_correction(gdir) tasks.process_custom_climate_data(gdir) tasks.mu_candidates(gdir) mbdf = gdir.get_ref_mb_data()['ANNUAL_BALANCE'] res = climate.t_star_from_refmb(gdir, mbdf) tasks.local_mustar(gdir, tstar=res['t_star'], bias=res['bias']) tasks.apparent_mb(gdir) tasks.prepare_for_inversion(gdir) tasks.mass_conservation_inversion(gdir) return gdir
if np.isnan(w_depth): w_depth = thick - t_altitude else: w_depth = thick - t_altitude fl = gdir.read_pickle('inversion_flowlines')[-1] width = fl.widths[-1] * gdir.grid.dx # Lets compute the theoretical calving out of it pre_calving = k * thick * w_depth * width / 1e9 gdir.inversion_calving_rate = pre_calving print('pre_calving', pre_calving) # Recompute all with calving tasks.distribute_t_stars([gdir], minimum_mustar=0.) tasks.apparent_mb(gdir) tasks.prepare_for_inversion(gdir, add_debug_var=True) tasks.volume_inversion(gdir, glen_a=cfg.A, fs=cfg.FS) df = pd.read_csv(gdir.get_filepath('local_mustar')).iloc[0] mu_star = df['mu_star'] while i < 50: # First calculates a calving flux from model output F_calving, new_depth, new_thick, t_width = calving_from_depth( gdir, k) # Stores the data, and we see it data_calving += [F_calving] w_depth = np.append(w_depth, new_depth) thick = np.append(thick, new_thick)