def main(Ca=None): par = 1500.0 Ci = Ca * 0.7 Rd = None Tleaf = 25. deg2kelvin = 273.15 Tleaf += deg2kelvin Eaj = 27900.0 Eav = 69900.0 deltaSj = 619.0 deltaSv = 634.0 Hdv = 200000.0 Hdj = 200000.0 r25 = 2.0 Q10 = 2.0 N_c = 0.015 N_e = 0.015 N_p = 0.10 #===== Medlyn paper ====# alpha = 0.425 # (-) g_m = 0.4 # mol m-2 s-1 bar-1 ie mol m-2 s-1 at 1 atm K_cat = 24.0 # mmol CO2 mol-1 Rubisco-1 K_s = 1.25E-04 # mol N s umol-1 #=======================# P = PhotosynthesisModel(peaked_Jmax=True, peaked_Vcmax=True, alpha=alpha, g_m=g_m, K_cat=K_cat, K_s=K_s) O = OptimiseNitrogenAllocation(model=P) Jm_store = np.zeros(0) Vm_store = np.zeros(0) leaf_temp = np.linspace(5, 30, 10) Npools_store = np.zeros((len(leaf_temp), 4)) for i, Tleaf in enumerate(leaf_temp): initial_guess = np.array([N_c, N_e]) # ===== OPTIMIZE parameter set ===== # result = O.main(fit_params=initial_guess, par=par, Rd=Rd, Ci=Ci, N_p=N_p, Tleaf=Tleaf + deg2kelvin, Tref=25.0, Eaj=Eaj, Eav=Eav, deltaSj=deltaSj, deltaSv=deltaSv, r25=r25, Q10=Q10, Hdv=Hdv, Hdj=Hdj) # retrieve all fitted N pools (N_c, N_e, N_r, N_s) = P.N_pool_store Npools_store[i] = N_c, N_e, N_r, N_s fitted_x0 = np.array([N_c, N_e]) (An, Anc, Anj, Jmax25, Vcmax25) = P.calc_photosynthesis(N_pools=fitted_x0, par=par, Ci=Ci, Rd=Rd, N_p=N_p, Tleaf=Tleaf + deg2kelvin, Tref=25.0, Eaj=Eaj, Eav=Eav, deltaSj=deltaSj, deltaSv=deltaSv, r25=r25, Q10=Q10, Hdv=Hdv, Hdj=Hdj) Jm_store = np.append(Jm_store, Jmax25) Vm_store = np.append(Vm_store, Vcmax25) jv_ratio = Jm_store / Vm_store return jv_ratio, leaf_temp, Npools_store
Hdv = 200000.0 Hdj = 200000.0 r25 = None Q10 = None N_c = 0.015 N_e = 0.015 #===== Medlyn paper ====# alpha = 0.425 # (-) g_m = 0.4 # mol m-2 s-1 bar-1 ie mol m-2 s-1 at 1 atm K_cat = 24.0 # mmol CO2 mol-1 Rubisco-1 K_s = 1.25E-04 # mol N s umol-1 #=======================# P = PhotosynthesisModel(peaked_Jmax=True, peaked_Vcmax=True, alpha=alpha, g_m=g_m, K_cat=K_cat, K_s=K_s) O = OptimiseNitrogenAllocation(model=P) N_c_store = [] N_e_store = [] N_r_store = [] N_s_store = [] An_store = [] for N_p in np.linspace(0.05, 0.15, 10): x0 = np.array([N_c, N_e]) # ===== OPTIMIZE parameter set ===== # result = O.main(fit_params=x0, par=par,