teichmann@5831: package org.dive4elements.river.artifacts.states.sq; rrenkert@5501: teichmann@5831: import org.dive4elements.artifactdatabase.state.DefaultFacet; teichmann@5831: import org.dive4elements.artifactdatabase.state.Facet; teichmann@5831: import org.dive4elements.artifacts.Artifact; teichmann@5831: import org.dive4elements.artifacts.CallContext; teichmann@5831: import org.dive4elements.river.artifacts.math.fitting.Function; teichmann@5831: import org.dive4elements.river.artifacts.math.fitting.FunctionFactory; teichmann@5831: import org.dive4elements.river.artifacts.model.sq.SQFunction; teichmann@5831: import org.dive4elements.river.artifacts.model.sq.StaticSQRelation; rrenkert@5501: rrenkert@5501: rrenkert@5501: public class StaticSQRelationFacet rrenkert@5501: extends DefaultFacet rrenkert@5501: implements Facet rrenkert@5501: { rrenkert@5501: public static final String FUNCTION = "sq-pow"; rrenkert@5501: rrenkert@5501: private StaticSQRelation relation; rrenkert@5501: rrenkert@5501: rrenkert@5501: public StaticSQRelationFacet( rrenkert@5501: int ndx, rrenkert@5501: String name, rrenkert@5501: String description, rrenkert@5501: StaticSQRelation relation) { rrenkert@5501: super(ndx, name, description); rrenkert@5501: this.relation = relation; rrenkert@5501: } rrenkert@5501: rrenkert@5501: @Override rrenkert@5501: public Object getData(Artifact artifact, CallContext context) { rrenkert@5501: double qmax = relation.getQmax(); rrenkert@5501: double[] coeffs = new double[] {relation.getA(), relation.getB()}; rrenkert@5501: Function func = FunctionFactory.getInstance().getFunction(FUNCTION); teichmann@5831: org.dive4elements.river.artifacts.math.Function function = rrenkert@5501: func.instantiate(coeffs); rrenkert@5501: SQFunction sqf = new SQFunction(function, 0, qmax); rrenkert@5501: return sqf; rrenkert@5501: } rrenkert@5501: rrenkert@5501: @Override rrenkert@5501: public Facet deepCopy() { rrenkert@5501: StaticSQRelationFacet copy = rrenkert@5501: new StaticSQRelationFacet(index, name, description, relation); rrenkert@5501: copy.set(this); rrenkert@5501: return copy; rrenkert@5501: } rrenkert@5501: }