Search in sources :

Example 6 with ImpactMethod

use of org.openlca.core.model.ImpactMethod in project olca-modules by GreenDelta.

the class ILCDExport method tryExport.

private void tryExport(RootEntity component) throws Exception {
    if (component instanceof ImpactMethod) {
        ImpactMethodExport export = new ImpactMethodExport(config);
        export.run((ImpactMethod) component);
    } else if (component instanceof ProductSystem) {
        SystemExport export = new SystemExport(config);
        export.run((ProductSystem) component);
    } else if (component instanceof Process) {
        ProcessExport export = new ProcessExport(config);
        export.run((Process) component);
    } else if (component instanceof Flow) {
        FlowExport flowExport = new FlowExport(config);
        flowExport.run((Flow) component);
    } else if (component instanceof FlowProperty) {
        FlowPropertyExport export = new FlowPropertyExport(config);
        export.run((FlowProperty) component);
    } else if (component instanceof UnitGroup) {
        UnitGroupExport export = new UnitGroupExport(config);
        export.run((UnitGroup) component);
    } else if (component instanceof Actor) {
        ActorExport export = new ActorExport(config);
        export.run((Actor) component);
    } else if (component instanceof Source) {
        SourceExport export = new SourceExport(config);
        export.run((Source) component);
    }
}
Also used : UnitGroup(org.openlca.core.model.UnitGroup) ProductSystem(org.openlca.core.model.ProductSystem) Process(org.openlca.core.model.Process) FlowExport(org.openlca.io.ilcd.output.FlowExport) UnitGroupExport(org.openlca.io.ilcd.output.UnitGroupExport) SourceExport(org.openlca.io.ilcd.output.SourceExport) ImpactMethod(org.openlca.core.model.ImpactMethod) Source(org.openlca.core.model.Source) Flow(org.openlca.core.model.Flow) FlowPropertyExport(org.openlca.io.ilcd.output.FlowPropertyExport) Actor(org.openlca.core.model.Actor) ActorExport(org.openlca.io.ilcd.output.ActorExport) ImpactMethodExport(org.openlca.io.ilcd.output.ImpactMethodExport) ProcessExport(org.openlca.io.ilcd.output.ProcessExport) FlowProperty(org.openlca.core.model.FlowProperty) SystemExport(org.openlca.io.ilcd.output.SystemExport)

Example 7 with ImpactMethod

use of org.openlca.core.model.ImpactMethod in project olca-modules by GreenDelta.

the class DataUtil method toDataSet.

static ProtoDataSet.Builder toDataSet(IDatabase db, RefEntity e) {
    var ds = ProtoDataSet.newBuilder();
    var conf = WriterConfig.of(db);
    if (e instanceof Actor)
        return ds.setActor(new ActorWriter(conf).write((Actor) e));
    if (e instanceof Category)
        return ds.setCategory(new CategoryWriter(conf).write((Category) e));
    if (e instanceof Currency)
        return ds.setCurrency(new CurrencyWriter(conf).write((Currency) e));
    if (e instanceof DQSystem)
        return ds.setDqSystem(new DQSystemWriter(conf).write((DQSystem) e));
    if (e instanceof Flow)
        return ds.setFlow(new FlowWriter(conf).write((Flow) e));
    if (e instanceof FlowProperty)
        return ds.setFlowProperty(new FlowPropertyWriter(conf).write((FlowProperty) e));
    if (e instanceof ImpactCategory)
        return ds.setImpactCategory(new ImpactCategoryWriter(conf).write((ImpactCategory) e));
    if (e instanceof ImpactMethod)
        return ds.setImpactMethod(new ImpactMethodWriter(conf).write((ImpactMethod) e));
    if (e instanceof Location)
        return ds.setLocation(new LocationWriter(conf).write((Location) e));
    if (e instanceof Parameter)
        return ds.setParameter(new ParameterWriter(conf).write((Parameter) e));
    if (e instanceof Process)
        return ds.setProcess(new ProcessWriter(conf).write((Process) e));
    if (e instanceof ProductSystem)
        return ds.setProductSystem(new ProductSystemWriter(conf).write((ProductSystem) e));
    if (e instanceof Project)
        return ds.setProject(new ProjectWriter(conf).write((Project) e));
    if (e instanceof SocialIndicator)
        return ds.setSocialIndicator(new SocialIndicatorWriter(conf).write((SocialIndicator) e));
    if (e instanceof Source)
        return ds.setSource(new SourceWriter(conf).write((Source) e));
    if (e instanceof UnitGroup)
        return ds.setUnitGroup(new UnitGroupWriter(conf).write((UnitGroup) e));
    return ds;
}
Also used : ImpactCategory(org.openlca.core.model.ImpactCategory) Category(org.openlca.core.model.Category) UnitGroup(org.openlca.core.model.UnitGroup) ImpactCategoryWriter(org.openlca.proto.io.output.ImpactCategoryWriter) ProductSystem(org.openlca.core.model.ProductSystem) Process(org.openlca.core.model.Process) UnitGroupWriter(org.openlca.proto.io.output.UnitGroupWriter) ImpactMethod(org.openlca.core.model.ImpactMethod) ProductSystemWriter(org.openlca.proto.io.output.ProductSystemWriter) Source(org.openlca.core.model.Source) CurrencyWriter(org.openlca.proto.io.output.CurrencyWriter) FlowPropertyWriter(org.openlca.proto.io.output.FlowPropertyWriter) Actor(org.openlca.core.model.Actor) Currency(org.openlca.core.model.Currency) CategoryWriter(org.openlca.proto.io.output.CategoryWriter) ImpactCategoryWriter(org.openlca.proto.io.output.ImpactCategoryWriter) FlowProperty(org.openlca.core.model.FlowProperty) FlowWriter(org.openlca.proto.io.output.FlowWriter) ImpactCategory(org.openlca.core.model.ImpactCategory) SourceWriter(org.openlca.proto.io.output.SourceWriter) Flow(org.openlca.core.model.Flow) LocationWriter(org.openlca.proto.io.output.LocationWriter) Project(org.openlca.core.model.Project) DQSystemWriter(org.openlca.proto.io.output.DQSystemWriter) ParameterWriter(org.openlca.proto.io.output.ParameterWriter) DQSystem(org.openlca.core.model.DQSystem) ActorWriter(org.openlca.proto.io.output.ActorWriter) ImpactMethodWriter(org.openlca.proto.io.output.ImpactMethodWriter) ProjectWriter(org.openlca.proto.io.output.ProjectWriter) Parameter(org.openlca.core.model.Parameter) SocialIndicator(org.openlca.core.model.SocialIndicator) ProcessWriter(org.openlca.proto.io.output.ProcessWriter) Location(org.openlca.core.model.Location) SocialIndicatorWriter(org.openlca.proto.io.output.SocialIndicatorWriter)

Example 8 with ImpactMethod

use of org.openlca.core.model.ImpactMethod in project olca-modules by GreenDelta.

the class ImpactMethodReferenceSearchTest method createModel.

@Override
protected ImpactMethod createModel() {
    ImpactMethod method = new ImpactMethod();
    method.category = insertAndAddExpected("category", new Category());
    String n1 = generateName();
    // String n2 = generateName();
    String n3 = generateName();
    String n4 = generateName();
    String n5 = generateName();
    // method.parameters.add(createParameter(n1, 3d, false));
    // method.parameters.add(createParameter(n2, n1 + "*2*" + n3, false));
    insertAndAddExpected(n3, createParameter(n3, "5*5", true));
    // formula with parameter to see if added as reference (unexpected)
    insertAndAddExpected(n4, createParameter(n4, "3*" + n5, true));
    Parameter globalUnreferenced = createParameter(n1, "3*3", true);
    Parameter globalUnreferenced2 = createParameter(n5, "3*3", true);
    // must be inserted manually
    globalUnreferenced = db.insert(globalUnreferenced);
    globalUnreferenced2 = db.insert(globalUnreferenced2);
    method.impactCategories.add(createImpactCategory(n4));
    method.impactCategories.add(createImpactCategory(n4));
    method = db.insert(method);
    for (ImpactCategory category : method.impactCategories) for (ImpactFactor f : category.impactFactors) {
        addExpected("flow", f.flow, "impactFactors", ImpactFactor.class, f.id);
        addExpected("flowPropertyFactor", f.flowPropertyFactor, "impactFactors", ImpactFactor.class, f.id);
        addExpected("flowProperty", f.flowPropertyFactor.flowProperty, "flowPropertyFactor", FlowPropertyFactor.class, f.flowPropertyFactor.id);
        addExpected("unit", f.unit, "impactFactors", ImpactFactor.class, f.id);
    }
    return method;
}
Also used : ImpactFactor(org.openlca.core.model.ImpactFactor) ImpactCategory(org.openlca.core.model.ImpactCategory) Category(org.openlca.core.model.Category) Parameter(org.openlca.core.model.Parameter) ImpactCategory(org.openlca.core.model.ImpactCategory) FlowPropertyFactor(org.openlca.core.model.FlowPropertyFactor) ImpactMethod(org.openlca.core.model.ImpactMethod)

Example 9 with ImpactMethod

use of org.openlca.core.model.ImpactMethod in project olca-modules by GreenDelta.

the class RegionalizedCalculationTest method testRegionalizedCalculation.

@Test
public void testRegionalizedCalculation() {
    Flow nox = flow("NOx", "mg", FlowType.ELEMENTARY_FLOW);
    // create the process
    Process p = new Process();
    p.name = "transport, bus";
    p.quantitativeReference = p.output(flow("transport, bus", "p*km", FlowType.PRODUCT_FLOW), 1);
    Exchange e1 = p.output(nox, 5);
    e1.location = loc1;
    Exchange e2 = p.output(nox, 10);
    e2.location = loc2;
    p = new ProcessDao(db).insert(p);
    // create the LCIA category & method
    var impact = new ImpactCategory();
    impact.name = "human tox";
    impact.factor(nox, 0.5);
    impact.factor(nox, 0.1).location = loc1;
    impact.factor(nox, 0.9).location = loc2;
    impact = new ImpactCategoryDao(db).insert(impact);
    var method = new ImpactMethod();
    method.impactCategories.add(impact);
    method = new ImpactMethodDao(db).insert(method);
    // create the product system and calculation setup
    var setup = CalculationSetup.fullAnalysis(ProductSystem.of(p)).withImpactMethod(method).withRegionalization(true);
    var calculator = new SystemCalculator(db);
    FullResult r = calculator.calculateFull(setup);
    Assert.assertTrue(r.enviIndex().isRegionalized());
    checkRegTotalFlowResults(r, new Object[][] { { nox, loc1, 5.0 }, { nox, loc2, 10.0 } });
}
Also used : Exchange(org.openlca.core.model.Exchange) FullResult(org.openlca.core.results.FullResult) ImpactMethodDao(org.openlca.core.database.ImpactMethodDao) ProcessDao(org.openlca.core.database.ProcessDao) Process(org.openlca.core.model.Process) ImpactCategory(org.openlca.core.model.ImpactCategory) ImpactCategoryDao(org.openlca.core.database.ImpactCategoryDao) ImpactMethod(org.openlca.core.model.ImpactMethod) Flow(org.openlca.core.model.Flow) EnviFlow(org.openlca.core.matrix.index.EnviFlow) TechFlow(org.openlca.core.matrix.index.TechFlow) Test(org.junit.Test)

Example 10 with ImpactMethod

use of org.openlca.core.model.ImpactMethod in project olca-modules by GreenDelta.

the class SimulatorTest method testImpactParam.

@Test
public void testImpactParam() {
    // create a simple model with an uncertain
    // parameter in a LCIA category
    Process p = TestProcess.refProduct("p", 1.0, "kg").elemOut("CH4", 1.0, "kg").get();
    ProductSystem s = TestSystem.of(p).get();
    ImpactMethod m = TestData.method("method", TestData.impact("GWP").factor("CH4", "1 * param", "kg").parameter("param", Uncertainty.uniform(22, 26)).get());
    // create the simulator
    var setup = CalculationSetup.monteCarlo(s, 100).withImpactMethod(m);
    var simulator = Simulator.create(setup, db).withSolver(new JavaSolver());
    // check the simulation results
    for (int i = 0; i < 100; i++) {
        SimpleResult r = simulator.nextRun();
        double[] impacts = r.totalImpactResults();
        Assert.assertEquals(1, impacts.length);
        double val = impacts[0];
        Assert.assertTrue(val >= 22 && val <= 26);
    }
    Arrays.asList(s, m, p).forEach(db::delete);
}
Also used : JavaSolver(org.openlca.core.matrix.solvers.JavaSolver) ProductSystem(org.openlca.core.model.ProductSystem) Process(org.openlca.core.model.Process) TestProcess(org.openlca.core.TestProcess) SimpleResult(org.openlca.core.results.SimpleResult) ImpactMethod(org.openlca.core.model.ImpactMethod) Test(org.junit.Test)

Aggregations

ImpactMethod (org.openlca.core.model.ImpactMethod)21 ImpactCategory (org.openlca.core.model.ImpactCategory)8 ImpactMethodDao (org.openlca.core.database.ImpactMethodDao)6 NwSet (org.openlca.core.model.NwSet)6 Process (org.openlca.core.model.Process)5 Flow (org.openlca.core.model.Flow)4 ProductSystem (org.openlca.core.model.ProductSystem)4 Test (org.junit.Test)3 Category (org.openlca.core.model.Category)3 FlowProperty (org.openlca.core.model.FlowProperty)3 NwFactor (org.openlca.core.model.NwFactor)3 Parameter (org.openlca.core.model.Parameter)3 JsonObject (com.google.gson.JsonObject)2 Objects (java.util.Objects)2 ProcessDao (org.openlca.core.database.ProcessDao)2 Actor (org.openlca.core.model.Actor)2 FlowPropertyFactor (org.openlca.core.model.FlowPropertyFactor)2 ImpactFactor (org.openlca.core.model.ImpactFactor)2 ModelType (org.openlca.core.model.ModelType)2 Project (org.openlca.core.model.Project)2