示例#1
0
    public void OnEndCrop()
    {
        NewCropType Crop = new NewCropType();

        Crop.crop_type = CropType;
        Crop.sender    = Name;
        if (CropEnding != null)
        {
            CropEnding.Invoke(Crop);
        }

        // Keep track of some variables for reporting.
        Biomass AboveGroundBiomass = new Biomass(AboveGround);
        Biomass BelowGroundBiomass = new Biomass(BelowGround);

        // Call each organ's OnHarvest. They fill a BiomassRemoved structure. We then publish a
        // BiomassRemoved event.
        BiomassRemovedType BiomassRemovedData = new BiomassRemovedType();

        foreach (Organ1 Organ in Organ1s)
        {
            Organ.OnEndCrop(BiomassRemovedData);
        }
        BiomassRemovedData.crop_type = CropType;
        BiomassRemoved.Invoke(BiomassRemovedData);

        Console.WriteLine("    Organic matter from crop:-      Tops to surface residue      Roots to soil FOM");
        Console.WriteLine(string.Format("                      DM (kg/ha) = {0,21:F1}{1,24:F1}",
                                        AboveGroundBiomass.Wt, BelowGroundBiomass.Wt));
        Console.WriteLine(string.Format("                      N  (kg/ha) = {0,22:F2}{1,24:F2}",
                                        AboveGroundBiomass.N, BelowGroundBiomass.N));
        //Console.WriteLine(string.Format("                      P  (kg/ha) = {0,22:F2}{1,24:F2}",
        //                                AboveGroundBiomass.P, BelowGroundBiomass.P));
    }
示例#2
0
    public void OnEndCrop()
    {
        NewCropType Crop = new NewCropType();

        Crop.crop_type = CropType;
        Crop.sender    = Name;
        if (CropEnding != null)
        {
            CropEnding.Invoke(Crop);
        }

        BiomassRemovedType BiomassRemovedData = new BiomassRemovedType();

        BiomassRemovedData.crop_type           = CropType;
        BiomassRemovedData.dm_type             = new string[Organs.Count];
        BiomassRemovedData.dlt_crop_dm         = new float[Organs.Count];
        BiomassRemovedData.dlt_dm_n            = new float[Organs.Count];
        BiomassRemovedData.dlt_dm_p            = new float[Organs.Count];
        BiomassRemovedData.fraction_to_residue = new float[Organs.Count];
        int i = 0;

        foreach (Organ O in Organs)
        {
            if (O is AboveGround)
            {
                BiomassRemovedData.dm_type[i]             = O.Name;
                BiomassRemovedData.dlt_crop_dm[i]         = (float)(O.Live.Wt + O.Dead.Wt) * 10f;
                BiomassRemovedData.dlt_dm_n[i]            = (float)(O.Live.N + O.Dead.N) * 10f;
                BiomassRemovedData.dlt_dm_p[i]            = 0f;
                BiomassRemovedData.fraction_to_residue[i] = 1f;
            }
            else
            {
                BiomassRemovedData.dm_type[i]             = O.Name;
                BiomassRemovedData.dlt_crop_dm[i]         = 0f;
                BiomassRemovedData.dlt_dm_n[i]            = 0f;
                BiomassRemovedData.dlt_dm_p[i]            = 0f;
                BiomassRemovedData.fraction_to_residue[i] = 0f;
            }
            i++;
        }
        BiomassRemoved.Invoke(BiomassRemovedData);

        // tell all our children about sow
        foreach (Organ Child in Organs)
        {
            Child.OnEndCrop();
        }
    }