V1_0.java [src/java/m/hydraulics/sediment] Revision:   Date:
package m.hydraulics.sediment;

import csip.annotations.Description;
import csip.annotations.Name;
import csip.annotations.VersionInfo;
import csip.api.server.PayloadParameter;
import csip.api.server.PayloadResults;
import csip.ModelDataService;
import hydraulics.SedimentTransport;
import javax.ws.rs.Path;

@Name("sediment")
@Description("sediment")
@VersionInfo("1.0")
@Path("m/hydraulics/sediment/1.0")
public class V1_0 extends ModelDataService {

    SedimentTransport model = new SedimentTransport();
    
    @Override
    protected void preProcess() throws Exception {
        PayloadParameter inputPayload = parameter();
        model.setTransportType(inputPayload.getString("transportType"));
        model.setWaterDensity(inputPayload.getDouble("rho"));
        model.setWaterTemperature(inputPayload.getDouble("waterTemp"));
        model.setWaterKinematicViscosity(inputPayload.getDouble("waterKinViscosity"));
        model.setSedDensity(inputPayload.getDouble("rho_S"));
        model.setGravelDensity(inputPayload.getDouble("rho_G"));
        model.setSedDiameter(inputPayload.getDouble("diamSed"));
        model.setGravelDiameter(inputPayload.getDouble("diamGravel"));
        model.setSandFraction(inputPayload.getDouble("sandFraction"));
        model.setSedD16(inputPayload.getDouble("d16"));
        model.setSedD50(inputPayload.getDouble("d50"));
        model.setSedD84(inputPayload.getDouble("d84"));
        model.setR1(inputPayload.getDouble("R1"));
        model.setR2(inputPayload.getDouble("R2"));
        model.setRatingCurveUnits(inputPayload.getString("ratingCurveUnits"));
        model.setChannelDepth(inputPayload.getDouble("depth"));
        model.setChannelBottomWidth(inputPayload.getDouble("width"));
        model.setChannelArea(inputPayload.getDouble("area"));
        model.setChannelHydraulicRadius(inputPayload.getDouble("hydRadius"));
        model.setChannelDischarge(inputPayload.getDouble("discharge"));
        model.setChannelBedSlope(inputPayload.getDouble("bedSlope"));
        model.setChannelEnergySlope(inputPayload.getDouble("energySlope"));
        model.setChannelFrictionSlope(inputPayload.getDouble("frictionSlope"));
    }

    @Override
    protected void doProcess() throws Exception {
        model.run();
    }

    @Override
    protected void postProcess() throws Exception {
        PayloadResults resultPayload = results();
        // files

        // values
        resultPayload.put("sedimentTransport", model.getSedTransport(), null, model.getUnits());
        resultPayload.put("units", model.getUnits());
    }
}