def test_NumericCompartmentalMatrixFunc(self): for n in self.symbol_names: var(n) k_1o = Function("k_1o") sym_B = hr.compartmental_matrix_2(self.out_fluxes_by_symbol, self.internal_fluxes_by_symbol, self.state_variables) par_dict = { k_01: 1 / 100, # 1/year k_10: 1 / 100, # 1/year k_0o: 1 / 2, # 1/year } def k_1o_func(t): omega = 2 * pi # 1/year phi = pi / 8 V_0 = 20 # kilogram/year V_range = 5 # kilogram/year u_res = V_0 + V_range * sin(omega * t + phi) return u_res func_dict = {'k_1o': k_1o_func} para_num = NumericParameterization(par_dict, func_dict) start_values_num = np.array([1, 2]) # kg times_num = NumericSimulationTimes(np.linspace(0, 20, 16)) B_func = numericCompartmentalMatrixFunc(sym_B, self.state_variables, self.time_symbol, para_num) npsrm = numeric_parameterized_smooth_reservoir_model_1( srm=self.srm, para_num=para_num) smr = numeric_model_run_1(npsrm, start_values_num, times_num) xs = numeric_solution_array_1(smr) ress = numericCompartmentalMatrixSolutionTuple(xs, times_num, B_func)
def compartmental_matrix_2( ofl: OutFluxesBySymbol, ifl: InternalFluxesBySymbol, svt: StateVariableTuple ) -> CompartmentalMatrix: return CompartmentalMatrix( hr.compartmental_matrix_2( ofl, ifl, svt ) )
def nitrogen_compartmental_matrix_2( ofl: NitrogenOutFluxesBySymbol, ifl: NitrogenInternalFluxesBySymbol, svt: NitrogenStateVariableTuple ) -> NitrogenCompartmentalMatrix: return NitrogenCompartmentalMatrix( hr.compartmental_matrix_2( ofl, ifl, svt ) )
def vegetation_carbon_compartmental_matrix_1( in_fluxes: InFluxesBySymbol, out_fluxes: OutFluxesBySymbol, internal_fluxes: InternalFluxesBySymbol, svt: StateVariableTuple, vcsvt: VegetationCarbonStateVariableTuple ) -> VegetationCarbonCompartmentalMatrix: svt_set=frozenset({v for v in svt}) vcsvt_set=frozenset({v for v in vcsvt}) combined = ( svt_set, in_fluxes, out_fluxes, internal_fluxes, ) _,in_fluxes_veg,out_fluxes_veg,internal_fluxes_veg=hr.extract(combined,vcsvt_set) cm=hr.compartmental_matrix_2( out_fluxes_veg, internal_fluxes_veg, vcsvt ) return VegetationCarbonCompartmentalMatrix(cm)
_,in_fluxes_veg,out_fluxes_veg,internal_fluxes_veg=hr.extract(combined,sv_set_veg) #obviously we do not need to return sv_set_veg, since it is an argument _,in_fluxes_soil,out_fluxes_soil,internal_fluxes_soil=hr.extract(combined,sv_set_soil) internal_fluxes_veg, in_fluxes_soil part_dict = { sv_set_veg:'green', sv_set_soil:'brown', } hr.igraph_part_plot( mvs_mm.get_StateVariableTuple(), in_fluxes, internal_fluxes, out_fluxes, part_dict ) #Now we can compute the vegetation cycling matrix hr.compartmental_matrix_2( out_fluxes_veg, internal_fluxes_veg, mvs_mm.get_VegetationCarbonStateVariableTuple() ) #Now we can compute the soil cycling matrix hr.compartmental_matrix_2( out_fluxes_soil, internal_fluxes_soil, state_vector_soil )