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')
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')
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')
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')
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(
#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]),