Exemplo n.º 1
0
    ///
    bool RUSLE2()
    {
        //Set climate pointer
        rusle2.leaf_wrapper_rusle2.SetObjPtr(
            rusle2.ObjectType.OBJTYP_CLIMATE, clir2.ConvertString());

        //Create RUSLE2 soil file
        string    ck    = soil.ConvertString(); ck = ck.Replace(':', '-');
        string    soiR2 = name.ConvertString() + "_" + ck + ".soi";
        SoilError err   = rusle2.leaf_wrapper_rusle2.CreateSoilFile(
            component, soiR2);

        if (err != SoilError.SOIERR_NONE)
        {
            return(false);
        }

        //Set soil pointer
        rusle2.leaf_wrapper_rusle2.SetObjPtr(
            rusle2.ObjectType.OBJTYP_SOIL, soiR2,
            rusle2.FilePrefix.HASHTAG_XML);
        double slope = component.GetSlope().value().ConvertDouble();

        if (slope <= 0.0 || slope > 100.0 /*|| slope == NaN*/)
        {
            return(false);
        }
        rusle2.leaf_wrapper_rusle2.AssignSlopeVals(
            new Var(slope), new Var(lightle.SlopeLen(slope)));

        //Set management pointer
        string manr2 = man.ConvertString();

        rusle2.leaf_wrapper_rusle2.SetObjPtr(
            rusle2.ObjectType.OBJTYP_MANAGEMENT, manr2);
        rusle2.leaf_wrapper_rusle2.AssignYields(cropMap);

        //Set wind erosion loss
        rusle2.leaf_wrapper_rusle2.SetWindErosionLoss(dataWeps.GetWindEros());

        //Run Rusle2 model
        Console.WriteLine("{0}: Running Rusle2........", 1);
        dataR2 = rusle2.leaf_wrapper_rusle2.CallRusle2(scenario, false);

        //Manual reset...this is still janky...
        rusle2.leaf_wrapper_rusle2.ResetObjPtr(
            rusle2.ObjectType.OBJTYP_MANAGEMENT);
        rusle2.leaf_wrapper_rusle2.ResetObjPtr(
            rusle2.ObjectType.OBJTYP_CLIMATE);
        rusle2.leaf_wrapper_rusle2.ResetObjPtr(
            rusle2.ObjectType.OBJTYP_SOIL);

        return(true);
    }
Exemplo n.º 2
0
    ///
    bool WEPS()
    {
        weru.leaf_wrapper_weru.UseCycleCount(cycleCount);
        weru.leaf_wrapper_weru.SetLocation(name.ConvertString());

        //Set climate pointer
        string cliWeps = name.ConvertString() + ".cli";

        weru.leaf_wrapper_weru.SetRfdFilePtr(weru.File.CLIMATE, cliWeps);

        //Set wind pointer
        string winWeps = name.ConvertString() + ".win";

        weru.leaf_wrapper_weru.SetRfdFilePtr(weru.File.WIND, winWeps);

        //Create WEPS soil file
        string    ck      = soil.ConvertString(); ck = ck.Replace(':', '-');
        string    ifcWeps = name.ConvertString() + "_" + ck + ".ifc";
        SoilError err     =
            weru.leaf_wrapper_weru.CreateSoilFile(component, ifcWeps);

        if (err != SoilError.SOIERR_NONE)
        {
            return(false);
        }

        //Set soil pointer
        weru.leaf_wrapper_weru.SetRfdFilePtr(weru.File.SOIL, ifcWeps);
        double slope = component.GetSlope().value().ConvertDouble();

        if (slope <= 0.0 || slope > 100.0 /*|| slope == NaN*/)
        {
            return(false);
        }
        weru.leaf_wrapper_weru.AssignSlopeVals(
            new Var(slope), new Var(lightle.SlopeLen(slope)));

        //Set management pointer
        string manWeps = man.ConvertString() + ".man";

        weru.leaf_wrapper_weru.SetRfdFilePtr(weru.File.MANAGEMENT, manWeps);
        weru.leaf_wrapper_weru.AssignYields(cropMap);

        //Set water erosion loss
        weru.leaf_wrapper_weru.SetWaterErosionLoss(new Var(0.0));

        //Run Weps model
        Console.WriteLine("{0}: Running Weps........", 1);
        dataWeps = weru.leaf_wrapper_weru.CallWeps(
            scenario, numCropCalItrs, cycleCount, 0);

        return(true);
    }