示例#1
0
    internal void sequestNutrients(string nutrientName, SoilHorizon soilHorizon, float volume)
    {
        SoilNutrientManager soilNutrient = soilHorizon.soilNutrientManagers[nutrientName];
        float amountAvailableFactor      = soilNutrient.getAmountAvailableFactor();
        float amount            = soilNutrient.amount;
        float amountToSequester = volume * currentSequestrationRate * amountAvailableFactor * amount;

        soilNutrient.amount -= amountToSequester;
        currentLevel        += amountToSequester;
    }
示例#2
0
    // TODO: approximation made here that only the first layer of soil can be dug. Alter this for depth.
    public void digSoil()
    {
        SoilHorizon soil = soilHorizons[0];

        // firstly, the soil becomes a great deal more porous.
        //TODO: have different modifiers for different soil types
        soil.porosity = soil.porosityAfterDigging;
        // secondly the soil biota decreases.
        soil.biota = soil.biotaAfterDigging;
        // thirdly aggregate stability decreases
        soil.aggregateStability = soil.aggregateStabilityAfterDigging;

        // also the amount of nutrient available increases
        foreach (string nutrientName in soil.soilNutrientManagers.Keys)
        {
            //we don't care about water here, because only water content is meaningful
            SoilNutrientManager nutrient = soil.soilNutrientManagers[nutrientName];
            nutrient.setAmountAvailableFactor(nutrient.postDiggingAvailability);
        }
    }