コード例 #1
0
# load the corresponding model runs

# convert monthly time steps to daily time steps, each month comprising 31 days
data_times_m = np.arange(len(sub_ds_m["time"])) * 31
data_times_y0 = np.arange(len(sub_ds_y0["time"])) * 31 * 12
data_times_y6 = np.arange(len(sub_ds_y6["time"])) * 31 * 12

# +
# monthly
start_values_m = sub_ds_m["start_values"]
us_m = sub_ds_m["us"]
Bs_m = sub_ds_m["Bs"]

pwc_mr_m = PWCModelRunFD.from_Bs_and_us(symbols("t"),
                                        data_times_m,
                                        start_values_m.values,
                                        Bs_m[:-1],
                                        us_m[:-1],
                                        state_variables=sub_ds_m.pool.values)

# yearly (Jan)
start_values_y0 = sub_ds_y0["start_values"]
us_y0 = sub_ds_y0["us"]
Bs_y0 = sub_ds_y0["Bs"]

pwc_mr_y0 = PWCModelRunFD.from_Bs_and_us(symbols("t"),
                                         data_times_y0,
                                         start_values_y0.values,
                                         Bs_y0[:-1],
                                         us_y0[:-1],
                                         state_variables=sub_ds_y0.pool.values)
コード例 #2
0
sub_ds = ds.isel(lat=lat, lon=lon, prob=prob)
sub_ds

# +
# load the corresponding model run

# convert monthly time steps to daily time steps, each month comprising 31 days
data_times = np.arange(len(sub_ds["time"])) * 31

start_values = sub_ds["start_values"]
us = sub_ds["us"]
Bs = sub_ds["Bs"]

pwc_mr = PWCModelRunFD.from_Bs_and_us(symbols("t"),
                                      data_times,
                                      start_values.values,
                                      Bs[:-1],
                                      us[:-1],
                                      state_variables=sub_ds.pool.values)
# -

fig, ax = plt.subplots(figsize=(8, 8))
pwc_mr.model.plot_pools_and_fluxes(ax, legend=False)
_ = ax.set_title("CARDAMOM")

# compute the solution
#soln = pwc_mr.solve()
soln = sub_ds["solution"].values

# +
fig, axes = plt.subplots(ncols=2, nrows=3, figsize=(18, 12))
コード例 #3
0
ファイル: CARDAMOM_age_TT.py プロジェクト: chrislxj/bgc_md2
def func(ds_single_site):
    data_times = ds_single_site.times.data  #.compute()
    start_values = ds_single_site.start_values.data  #.compute()
    Bs = ds_single_site.Bs.data[:-1]  #.compute()
    us = ds_single_site.us.data[:-1]  #.compute()

    mr = PWCModelRunFD.from_Bs_and_us(symbols('t'), data_times, start_values,
                                      Bs, us)

    coords_time = ds_single_site.time
    coords_pool = ds_single_site.pool
    data_vars = dict()

    soln = mr.solve()
    data_vars['soln'] = xr.DataArray(
        data=soln,
        dims=['time', 'pool'],
        coords={
            'time': coords_time,
            'pool': coords_pool
        },
        attrs={'units': ds_single_site.start_values.attrs['units']})

    mav = mr.age_moment_vector(1) / 365.25
    data_vars['mean_age_vector'] = xr.DataArray(data=mav,
                                                dims=['time', 'pool'],
                                                coords={
                                                    'time': coords_time,
                                                    'pool': coords_pool
                                                },
                                                attrs={'units': 'yr'})

    msa = mr.system_age_moment(1) / 365.25
    data_vars['mean_system_age'] = xr.DataArray(data=msa,
                                                dims=['time'],
                                                coords={'time': coords_time},
                                                attrs={'units': 'yr'})

    asdv = np.sqrt(mr.age_moment_vector(2)) / 365.25
    data_vars['age_standard_deviation_vector'] = xr.DataArray(
        data=asdv,
        dims=['time', 'pool'],
        coords={
            'time': coords_time,
            'pool': coords_pool
        },
        attrs={'units': 'yr'})

    sasd = np.sqrt(mr.system_age_moment(2)) / 365.25
    data_vars['system_age_standard_deviation'] = xr.DataArray(
        data=sasd,
        dims=['time'],
        coords={'time': coords_time},
        attrs={'units': 'yr'})

    res = xr.Dataset(coords={
        'time': coords_time,
        'pool': coords_pool
    },
                     data_vars=data_vars)

    return res