Esempio n. 1
0
def time_hef_run_until_in_steps():

    mb_mod = massbalance.RandomMassBalance(gdir, bias=0, seed=0)
    fls = gdir.read_pickle('model_flowlines')
    model = flowline.FluxBasedModel(fls, mb_model=mb_mod, y0=0.)
    for yr in np.linspace(0, 200, 400):
        model.run_until(yr)
Esempio n. 2
0
 def test_random_mb_seed(self):
     gdirs = up_to_inversion()
     seed = None
     years = np.arange(1800, 2201)
     odf = pd.DataFrame(index=years)
     for gd in gdirs[:6]:
         mb = massbalance.RandomMassBalance(gd, y0=1970, seed=seed)
         h, w = gd.get_inversion_flowline_hw()
         odf[gd.rgi_id] = mb.get_specific_mb(h, w, year=years)
     self.assertLessEqual(odf.corr().mean().mean(), 0.5)
     seed = 1
     for gd in gdirs[:6]:
         mb = massbalance.RandomMassBalance(gd, y0=1970, seed=seed)
         h, w = gd.get_inversion_flowline_hw()
         odf[gd.rgi_id] = mb.get_specific_mb(h, w, year=years)
     self.assertGreaterEqual(odf.corr().mean().mean(), 0.9)
Esempio n. 3
0
def time_hef_run_until_and_store_with_nc():

    mb_mod = massbalance.RandomMassBalance(gdir, bias=0, seed=0)
    fls = gdir.read_pickle('model_flowlines')
    model = flowline.FluxBasedModel(fls, mb_model=mb_mod, y0=0.)
    model.run_until_and_store(200, run_path=os.path.join(testdir, 'run.nc'),
                              diag_path=os.path.join(testdir, 'diag.nc'))
Esempio n. 4
0
def time_RandomMassBalance():

    mb_mod = massbalance.RandomMassBalance(gdir, bias=0)
    for yr in years:
        mb_mod.get_annual_mb(heights, year=yr)
Esempio n. 5
0
def run_uncertain_random_climate(gdir,
                                 nyears=700,
                                 output_filesuffix='',
                                 sigma_t=None,
                                 sigma_p=None,
                                 sigma_smb=None,
                                 rdn_temp_bias_seed=None,
                                 rdn_prcp_bias_seed=None,
                                 rdn_bias_seed=None,
                                 orig_mb_tbias=0,
                                 orig_mb_pbias=1,
                                 orig_mb_sbias=0,
                                 **kwargs):
    """Test stuff

    Parameters
    ----------
    gdir
    nyears
    output_filesuffix
    rdn_temp_bias_seed
    rdn_prcp_bias_seed
    rdn_bias_seed
    kwargs

    Returns
    -------
    """

    # Find the optimal bias for a balanced MB
    mbref = mbmods.PastMassBalance(gdir)
    h, w = gdir.get_inversion_flowline_hw()
    cyrs = np.unique(mbref.years)

    def to_minimize(x):
        mbref.bias = x
        return np.mean(mbref.get_specific_mb(h, w, cyrs))

    opti_bias = optimization.brentq(to_minimize, -10000, 10000, xtol=0.01)
    mbref.bias = opti_bias
    assert np.allclose(np.mean(mbref.get_specific_mb(h, w, cyrs)),
                       0,
                       atol=0.01)

    rdf = pd.DataFrame(index=cyrs)
    for y in cyrs:
        rdf.loc[y, 'SMB'] = mbref.get_specific_mb(h, w, year=y)
        t, _, p, _ = mbref.get_annual_climate([np.mean(h)], year=y)
        rdf.loc[y, 'TEMP'] = t
        rdf.loc[y, 'PRCP'] = p

    if sigma_smb is None:
        sigma_smb = rdf.std()['SMB'] / 2
    if sigma_t is None:
        sigma_t = rdf.std()['TEMP'] / 2
    if sigma_p is None:
        sigma_p = (rdf.std() / rdf.mean())['PRCP'] / 2

    mb = mbmods.RandomMassBalance(gdir, all_years=True, seed=0)
    mb.mbmod.temp_bias = orig_mb_tbias
    mb.mbmod.prcp_bias = orig_mb_pbias
    mb.mbmod.bias = orig_mb_sbias + opti_bias

    rmb = mbmods.UncertainMassBalance(mb,
                                      rdn_temp_bias_seed=rdn_temp_bias_seed,
                                      rdn_temp_bias_sigma=sigma_t,
                                      rdn_prcp_bias_seed=rdn_prcp_bias_seed,
                                      rdn_prcp_bias_sigma=sigma_p,
                                      rdn_bias_seed=rdn_bias_seed,
                                      rdn_bias_sigma=sigma_smb)

    return robust_model_run(gdir,
                            output_filesuffix=output_filesuffix,
                            mb_model=rmb,
                            ys=0,
                            ye=nyears,
                            **kwargs)
Esempio n. 6
0
def time_hef_run_until_and_store():

    mb_mod = massbalance.RandomMassBalance(gdir, bias=0, seed=0)
    fls = gdir.read_pickle('model_flowlines')
    model = flowline.FluxBasedModel(fls, mb_model=mb_mod, y0=0.)
    model.run_until_and_store(200)