/// <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 SunShineSim(TreeModel treeModel, PhotosyntheticModels type) { double biomass = 0.0; switch (type) { case PhotosyntheticModels.LightResponse: Octree octree = Octree.Build(treeModel); biomass = octree == null? //无模型,说明未出苗 MaizeParams.SEED_BIOMASS : DailySunShineSimluation(treeModel, DateTime.Now, 119, 26, octree, 0.1f, 100, 100); if (octree != null) { octree.Clear(); } break; default: GameObject go = treeModel.TreeModelInstance; if (go != null) { Mesh.AddBoxColliderInParent(go); } biomass = treeModel.GetLeafIndexes().Count != 0 ? //无叶片,说明未出苗 BeerRule.BiomassCal(treeModel) / FunctionSim.ComputeDaysInGC(treeModel) : MaizeParams.SEED_BIOMASS; break; } if (biomass != MaizeParams.SEED_BIOMASS) { biomass *= EnvironmentEffect.TemperatureStressFactor(treeModel) * EnvironmentEffect.WaterStressFactor(treeModel) * EnvironmentEffect.SunshineStress(treeModel); } return(biomass); }