示例#1
0
    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)
示例#2
0
def compartmental_matrix_2(
    ofl: OutFluxesBySymbol,
    ifl: InternalFluxesBySymbol,
    svt: StateVariableTuple
) -> CompartmentalMatrix:
    return CompartmentalMatrix(
        hr.compartmental_matrix_2(
            ofl,
            ifl,
            svt
        )
    )
示例#3
0
def nitrogen_compartmental_matrix_2(
    ofl: NitrogenOutFluxesBySymbol,
    ifl: NitrogenInternalFluxesBySymbol,
    svt: NitrogenStateVariableTuple
) -> NitrogenCompartmentalMatrix:
    return NitrogenCompartmentalMatrix(
        hr.compartmental_matrix_2(
            ofl,
            ifl,
            svt
        )
    )
示例#4
0
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)
示例#5
0
_,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
)