private void OnDoSoilOrganicMatter(object sender, EventArgs e) { // Get potential residue decomposition from surfaceom. SurfaceOrganicMatterDecompType SurfaceOrganicMatterDecomp = SurfaceOrganicMatter.PotentialDecomposition(); foreach (soilCNPatch aPatch in Patch) { aPatch.OnPotentialResidueDecompositionCalculated(SurfaceOrganicMatterDecomp); } num_residues = SurfaceOrganicMatterDecomp.Pool.Length; sw_dep = Soil.Water; // calculate C and N processes // - Assesses potential decomposition of surface residues; // . adjust decomposition if needed; // . accounts for mineralisation/immobilisation of N; // - Compute the transformations on soil organic matter (including N mineralisation/immobilition); // - Calculates hydrolysis of urea, nitrification, and denitrification; for (int k = 0; k < Patch.Count; k++) { Patch[k].Process(); } // send actual decomposition back to surface OM if (!is_pond_active) { SendActualResidueDecompositionCalculated(); } }
private void OnDoSoilOrganicMatter(object sender, EventArgs e) { // Get potential residue decomposition from surfaceom. PotentialSOMDecomp = SurfaceOrganicMatter.PotentialDecomposition(); SurfaceResidue.C[0] = 0; SurfaceResidue.N[0] = 0; for (int i = 0; i < PotentialSOMDecomp.Pool.Length; i++) { SurfaceResidue.C[0] += PotentialSOMDecomp.Pool[i].FOM.C; SurfaceResidue.N[0] += PotentialSOMDecomp.Pool[i].FOM.N; } }
private void OnDoSoilOrganicMatter(object sender, EventArgs e) { // Get potential residue decomposition from surfaceom. PotentialSOMDecomp = SurfaceOrganicMatter.PotentialDecomposition(); SurfaceResidue.C[0] = 0; SurfaceResidue.N[0] = 0; SurfaceResidue.LayerFraction[0] = Math.Max(Math.Min(1.0, 100 / Soil.Thickness[0]), 0.0); for (int i = 0; i < PotentialSOMDecomp.Pool.Length; i++) { SurfaceResidue.C[0] += PotentialSOMDecomp.Pool[i].FOM.C; SurfaceResidue.N[0] += PotentialSOMDecomp.Pool[i].FOM.N; } }
private void OnDoSoilOrganicMatter(object sender, EventArgs e) { // Get potential residue decomposition from surfaceom. SurfaceOrganicMatterDecompType SurfaceOrganicMatterDecomp = SurfaceOrganicMatter.PotentialDecomposition(); foreach (soilCNPatch aPatch in Patch) { aPatch.OnPotentialResidueDecompositionCalculated(SurfaceOrganicMatterDecomp); } num_residues = SurfaceOrganicMatterDecomp.Pool.Length; sw_dep = Soil.Water; // update soil temperature if (use_external_st) { Tsoil = ave_soil_temp; } else { // initialise soil temperature if (simpleST == null) { simpleST = new simpleSoilTemp(MetFile.Latitude, MetFile.Tav, MetFile.Amp, MetFile.MinT, MetFile.MaxT); } Tsoil = simpleST.SoilTemperature(Clock.Today, MetFile.MinT, MetFile.MaxT, MetFile.Radn, salb, dlayer, bd, ll15_dep, sw_dep); } // calculate C and N processes // - Assesses potential decomposition of surface residues; // . adjust decomposition if needed; // . accounts for mineralisation/immobilisation of N; // - Compute the transformations on soil organic matter (including N mineralisation/immobilition); // - Calculates hydrolysis of urea, nitrification, and denitrification; for (int k = 0; k < Patch.Count; k++) { Patch[k].Process(); } // send actual decomposition back to surface OM if (!is_pond_active) { SendActualResidueDecompositionCalculated(); } }
private void OnDoSoilOrganicMatter(object sender, EventArgs e) { // Get potential residue decomposition from surfaceom. SurfaceResidueDecomposition = SurfaceOrganicMatter.PotentialDecomposition(); var surfaceResiduePool = (NutrientPool)SurfaceResidue; surfaceResiduePool.C[0] = 0; surfaceResiduePool.N[0] = 0; surfaceResiduePool.LayerFraction[0] = Math.Max(Math.Min(1.0, 100 / soilPhysical.Thickness[0]), 0.0); for (int i = 0; i < SurfaceResidueDecomposition.Pool.Length; i++) { surfaceResiduePool.C[0] += SurfaceResidueDecomposition.Pool[i].FOM.C; surfaceResiduePool.N[0] += SurfaceResidueDecomposition.Pool[i].FOM.N; } }