Exemplo n.º 1
0
def epsilon_family(
        limited_srm,
        par_dict,
        control_start_values, 
        times,
        func_dict,
        epsilons
    ):    
    z=Symbol('z')
    eps=Symbol('eps')
    u_z_exp=half_saturation(z,eps)
    bm=BastinModel(limited_srm,u_z_exp,z)
    fig=plt.figure()
    ax1=fig.add_subplot(1,1,1)
    ax1.set_title("control u for different values of epsilon")
    for eps_val in epsilons:
        par_dict[eps]=eps_val
        bmr=BastinModelRun(
            bm, 
            par_dict,
            control_start_values, 
            times,
            func_dict
        )
        phi_num=bmr.phi_num((z,))
        soln=bmr.solve() 
        z_sol=soln[:,3]
        pe('bm.u_expr',locals())
        u=phi_num(z_sol)
        ax1.plot(times,u)
        ax1.legend(loc=3)
     
    fig.savefig(my_func_name()+'.pdf')
Exemplo n.º 2
0
def epsilon_family_2(limited_srm, par_dict, start_values, times, func_dict, zs,
                     epsilons):
    z = Symbol('z')
    eps = Symbol('eps')
    z0 = Symbol('z0')
    u_z_exp = half_saturation(z, eps)
    bm = BastinModel(limited_srm, u_z_exp, z)
    fig = plt.figure()
    ax1 = fig.add_subplot(1, 1, 1)
    ax1.set_title("control u for different values of epsilon")
    for z0_val in zs:
        for eps_val in epsilons:
            control_start_values = np.array(list(start_values) + [z0_val])
            par_dict[eps] = eps_val
            par_dict[z0] = z0_val,
            bmr = BastinModelRun(bm, par_dict, control_start_values, times,
                                 func_dict)
            phi_num = bmr.phi_num((z, ))
            soln = bmr.solve()
            z_sol = soln[:, 3]
            pe('bm.u_expr', locals())
            u = phi_num(z_sol)
            ax1.plot(times,
                     u,
                     label="eps:" + str(eps_val) + ",z0=" + str(z0_val))
    ax1.legend(loc=3)

    fig.savefig(my_func_name() + '.pdf')
Exemplo n.º 3
0
def deceleration_family(limited_srm, par_dict, start_values, times, func_dict,
                        zs, alphas):
    z = Symbol('z')
    z_max = Symbol('z_max')
    alph = Symbol('alph')
    u_z_exp = deceleration(z, z_max, alph)
    bm = BastinModel(limited_srm, u_z_exp, z)
    fig = plt.figure()
    ax1 = fig.add_subplot(1, 1, 1)
    ax1.set_title(
        "control u with deceleration limiter for different values of alph")
    for z_max_val in zs:
        for alpha_val in alphas:
            control_start_values = np.array(list(start_values) + [z_max_val])
            par_dict[z_max] = z_max_val
            par_dict[alph] = alpha_val
            bmr = BastinModelRun(bm, par_dict, control_start_values, times,
                                 func_dict)
            phi_num = bmr.phi_num((z, ))
            soln = bmr.solve()
            z_sol = soln[:, 3]
            pe('bm.u_expr', locals())
            u = phi_num(z_sol)
            ax1.plot(times,
                     u,
                     label="alph:" + str(alpha_val) + ",z_max=" +
                     str(z_max_val))
    ax1.legend(loc=3)

    fig.savefig(my_func_name() + '.pdf')
Exemplo n.º 4
0
def cubic_family(
        limited_srm,
        par_dict,
        start_values, 
        times,
        func_dict,
        zs
    ):    
    z=Symbol('z')
    z_max=Symbol('z_max')
    u_z_exp=cubic(z,z_max)
    bm=BastinModel(limited_srm,u_z_exp,z)
    fig=plt.figure()
    ax1=fig.add_subplot(1,1,1)
    #ax1.set_title("control u for different values of z_max")
    for z_max_val in zs:
        control_start_values=np.array(list(start_values)+[z_max_val])
        par_dict[z_max]=z_max_val
        bmr=BastinModelRun(
            bm, 
            par_dict,
            control_start_values, 
            times,
            func_dict
        )
        phi_num=bmr.phi_num((z,))
        soln=bmr.solve() 
        z_sol=soln[:,3]
        pe('bm.u_expr',locals())
        u=phi_num(z_sol)
        ax1.plot(times,u,label="$z_{max}$="+str(z_max_val))
        ax1.set_ylabel('$u(t)$ (unitless)')
        ax1.set_xlabel('Time (years)')
        ax1.legend(loc=3)
     
    fig.savefig(my_func_name()+'.pdf')
Exemplo n.º 5
0
times = np.arange(start_year, end_year + 1, 1)  # (end_year-start_year)/1000)

# create some models
unlimited_srm = SmoothReservoirModel(state_vector, time_symbol,
                                     net_input_fluxes, net_output_fluxes,
                                     internal_fluxes)
limited_srm = SmoothReservoirModel(state_vector, time_symbol, net_input_fluxes,
                                   net_output_fluxes, lim_inf)
#limited_srm_90 = SmoothReservoirModel(
#        state_vector, time_symbol, net_input_fluxes, net_output_fluxes,
#        lim_inf_90
#)
#half_saturation_bm_300=BastinModel(
#        limited_srm_300,half_saturation_utz_exp,z
#)
cubic_bm = BastinModel(limited_srm, cubic_utz_exp, z)
#deceleration_bm_300=BastinModel(
#        limited_srm_300,deceleration_utz_exp,z
#)

# create a dictionary of model runs
all_mrs = {
    "unlimited_smr":
    SmoothModelRun(unlimited_srm, par_dict, start_values, times, func_dict),
    "limited_smr":
    SmoothModelRun(limited_srm, par_dict, start_values, times, func_dict),
    #        "limited_90_smr":
    #            SmoothModelRun(
    #                limited_srm_90, par_dict, start_values , times, func_dict),
    #        "limited_300_controlled_half_saturation_10_20":
    #            BastinModelRun(
Exemplo n.º 6
0
#start_year = 100
start_year = 1765
end_year = 2500
times = np.arange(start_year, end_year + 1, 1)  # (end_year-start_year)/1000)

# create some models
unlimited_srm = SmoothReservoirModel(state_vector, time_symbol,
                                     net_input_fluxes, net_output_fluxes,
                                     internal_fluxes)
limited_srm_300 = SmoothReservoirModel(state_vector, time_symbol,
                                       net_input_fluxes, net_output_fluxes,
                                       lim_inf_300)
limited_srm_90 = SmoothReservoirModel(state_vector, time_symbol,
                                      net_input_fluxes, net_output_fluxes,
                                      lim_inf_90)
half_saturation_bm_300 = BastinModel(limited_srm_300, half_saturation_utz_exp,
                                     z)
cubic_bm_300 = BastinModel(limited_srm_300, cubic_utz_exp, z)
deceleration_bm_300 = BastinModel(limited_srm_300, deceleration_utz_exp, z)

# create a dictionary of model runs
all_mrs = {
    "unlimited_smr":
    SmoothModelRun(unlimited_srm, par_dict, start_values, times, func_dict),
    "limited_300_smr":
    SmoothModelRun(limited_srm_300, par_dict, start_values, times, func_dict),
    "limited_90_smr":
    SmoothModelRun(limited_srm_90, par_dict, start_values, times, func_dict),
    "limited_300_controlled_half_saturation_10_20":
    BastinModelRun(half_saturation_bm_300,
                   par_dict_half_saturation_10,
                   start_values=np.array(list(start_values) + [20]),