/// <summary> /// 计算光合速率(umol·m^-2·s^-1) /// </summary> /// <param name="PAR">光合有效辐射(umol·m^-2·s^-1)</param> /// <param name="type">环境因素(正常 or 缺氮 or 缺磷 or 缺钾)</param> /// <returns>光合速率(umol·m^-2·s^-1)</returns> public static double PhotosyntheticRate(double PAR, LightResponseType type = LightResponseType.NORMAL) { switch (type) { case LightResponseType.NORMAL: return(PhotosyntheticRate_Normal(PAR)); case LightResponseType.N_LACK: return(PhotosyntheticRate_LackOfN(PAR)); case LightResponseType.P_LACK: return(PhotosyntheticRate_LackOfP(PAR)); case LightResponseType.K_LACK: return(PhotosyntheticRate_LackOfK(PAR)); default: return(PhotosyntheticRate_Normal(PAR)); } }
/// <summary> /// 计算一定时间内一定面积累积的生物量(ug) /// </summary> /// <param name="duration">持续时间(s)</param> /// <param name="type">环境因素(正常 or 缺氮 or 缺磷 or 缺钾)</param> /// <returns>累积生物量(ug)</returns> public static double CumulativeBiomass(TreeModel treeModel, int duration, LightResponseType type = LightResponseType.NORMAL) { double CO2Absorption = 0.0; List <OrganIndex> organIndexes = treeModel.OrganIndexes; foreach (OrganIndex organIndex in organIndexes) { if (organIndex.Type != OrganType.Leaf) { continue; } /* * 叶片已经开始衰老 * 不能进行光合作用 */ if (organIndex.Age > 12) { continue; } /* * 光合有效辐射,单位umol·m^-2·s^-1 * 作用:用于计算光合速率 */ double PAR = PARRecption((organIndex as LeafIndex)); /* * 光合速率,单位 umol·m^-2·s^-1 * 作用:用于计算二氧化碳吸收量 */ double photosyntheticRate = LightResponse.PhotosyntheticRate(PAR, type); /* * 二氧化碳吸收量 单位 微克(ug) * 计算公式: 摩尔质量 * 光合速率 * 持续时间 * 面积 * 作用:用于计算生物量 */ CO2Absorption += 44 * photosyntheticRate * duration * (organIndex as LeafIndex).LeafArea; } /* * 二氧化碳吸收量转换为生物量 */ return(CO2Absorption * 30.0 / 44.0); }
/// <summary> /// 深拷贝 /// </summary> /// <param name="envirParams"></param> public void DepthCopy(EnvironmentParams envirParams) { DailyMaxTemperature = envirParams.DailyMaxTemperature; DailyMinTemperature = envirParams.DailyMinTemperature; DailyMaxRelativeHumidity = envirParams.DailyMaxRelativeHumidity; DailyMinRelativeHumidity = envirParams.DailyMinRelativeHumidity; WaterContent = envirParams.WaterContent; NutrientType = envirParams.NutrientType; TemperatureType = envirParams.TemperatureType; SunshineType = envirParams.SunshineType; WindSpeed = envirParams.WindSpeed; HaveInsects = envirParams.HaveInsects; PhotosyntheticModel = envirParams.PhotosyntheticModel; ChangeDay = envirParams.ChangeDay; }
public static double BiomassCal(TreeModel treeModel) { double biomass = Normal(treeModel); LightResponseType type = treeModel.EnvironmentParams.NutrientType; switch (type) { case LightResponseType.N_LACK: biomass *= 0.8; break; case LightResponseType.P_LACK: biomass *= 0.75; break; case LightResponseType.K_LACK: biomass *= 0.94; break; case LightResponseType.ALL_LACK: biomass *= 0.65; break; } if (treeModel.EnvironmentParams.HaveInsects) { biomass = BiomassUnderInsected(treeModel, biomass); } return(biomass); }
/// <summary> /// 计算一段时间内的光合速率(umol·m^-2·s^-1) /// </summary> /// <param name="type">环境因素(正常 or 缺氮 or 缺磷 or 缺钾)</param> public static double PhotosyntheticRate(TreeModel treeModel, LightResponseType type = LightResponseType.NORMAL) { double PAR = FunctionSim.PARRecption_Mean(treeModel); return(PhotosyntheticRate(PAR, type)); }