Program: 84607
Project: 84607
Buggy source:
/** 
 * entry point for Scenario Generator Application
 * @param args
 */
public static void main(String[] args){
  OptionParser optParser=new OptionParser();
  OptionSpec<Integer> optScen=optParser.accepts("String_Node_Str").withRequiredArg().ofType(Integer.class);
  OptionSpec<Double> optA=optParser.accepts("String_Node_Str").withRequiredArg().ofType(Double.class);
  OptionSpec<Double> optB=optParser.accepts("String_Node_Str").withRequiredArg().ofType(Double.class);
  OptionSpec<Double> optS=optParser.accepts("String_Node_Str").withRequiredArg().ofType(Double.class);
  OptionSet optSet=optParser.parse(args);
  double a=0;
  double b=0;
  double s=0;
  int scenNum=10000;
  if (optSet.hasArgument(optScen)) {
    scenNum=optSet.valueOf(optScen);
  }
  if (optSet.hasArgument(optA) && optSet.hasArgument(optB) && optSet.hasArgument(optS)) {
    a=optSet.valueOf(optA);
    b=optSet.valueOf(optB);
    s=optSet.valueOf(optS);
    if (Math.abs(a) < 0.0000000001 || Math.abs(b) < 0.0000000001 || Math.abs(s) < 0.0000000001) {
      System.out.println("String_Node_Str");
      return;
    }
    ScenGen scenGenerator=new ScenGen(scenNum,a,b,s);
    scenGenerator.generate();
    scenGenerator.windSpeedForecastErrorScenarios.writeToXML(errorScenarioFile);
  }
  Scenarios errorScen=Scenarios.getScenarios(errorScenarioFile);
  WsData windSpeedForecastData=WsData.getWsData(wsForecastFile);
  Map<Integer,Double> mapLeadHourToWindSpeed=new HashMap<Integer,Double>();
  Map<Integer,Double> mapLeadHourToTemp=new HashMap<Integer,Double>();
  for (int i=0; i < 24; i++) {
    double wspeed=windSpeedForecastData.getForecastWindSpeed(i + 1);
    double temp=windSpeedForecastData.getForecastTemperature(i + 1);
    if (wspeed < -9999.0) {
      wspeed=0;
      temp=0;
    }
    mapLeadHourToWindSpeed.put(i + 1,wspeed);
    mapLeadHourToTemp.put(i + 1,temp);
  }
  Scenarios windSpeedScenarios=new Scenarios();
  for (  Scenario es : errorScen.getScenarios()) {
    double p=es.getProbability();
    int sn=es.getScenarioNumber();
    List<ScenarioValue> svs=es.getValueList();
    Scenario windSpeedForecastScenario=new Scenario(sn,p);
    for (    ScenarioValue sv : svs) {
      int hr=sv.getHour();
      double err=sv.getValue();
      double windSpeedValue=mapLeadHourToWindSpeed.get(hr) + err;
      ScenarioValue wsScenVal=new ScenarioValue(hr,windSpeedValue);
      windSpeedForecastScenario.addValue(wsScenVal);
    }
    windSpeedScenarios.addScenario(windSpeedForecastScenario);
  }
  Scenarios powerOutputScenarios=new Scenarios();
  WindPark wpark=new WindPark();
  for (  Scenario wsp : windSpeedScenarios.getScenarios()) {
    double p=wsp.getProbability();
    int sn=wsp.getScenarioNumber();
    List<ScenarioValue> svs=wsp.getValueList();
    Scenario powerOutputScenario=new Scenario(sn,p);
    for (    ScenarioValue sv : svs) {
      int hr=sv.getHour();
      double wspForecast=sv.getValue();
      double temperature=mapLeadHourToTemp.get(hr);
      double windParkOutput=wpark.getPowerOutput(temperature,wspForecast);
      ScenarioValue wpScenVal=new ScenarioValue(hr,windParkOutput);
      powerOutputScenario.addValue(wpScenVal);
    }
    powerOutputScenarios.addScenario(powerOutputScenario);
  }
  powerOutputScenarios.writeToXML(wpScenarioFile);
  System.out.println("String_Node_Str");
  return;
}

Fixed version (ground truth):
/** 
 * entry point for Scenario Generator Application
 * @param args
 */
public static void main(String[] args){
  OptionParser optParser=new OptionParser();
  OptionSpec<Integer> optScen=optParser.accepts("String_Node_Str").withRequiredArg().ofType(Integer.class);
  OptionSpec<Double> optA=optParser.accepts("String_Node_Str").withRequiredArg().ofType(Double.class);
  OptionSpec<Double> optB=optParser.accepts("String_Node_Str").withRequiredArg().ofType(Double.class);
  OptionSpec<Double> optS=optParser.accepts("String_Node_Str").withRequiredArg().ofType(Double.class);
  OptionSet optSet=optParser.parse(args);
  double a=0;
  double b=0;
  double s=0;
  int scenNum=10000;
  if (optSet.hasArgument(optScen)) {
    scenNum=optSet.valueOf(optScen);
  }
  if (optSet.hasArgument(optA) && optSet.hasArgument(optB) && optSet.hasArgument(optS)) {
    a=optSet.valueOf(optA);
    b=optSet.valueOf(optB);
    s=optSet.valueOf(optS);
    if (Math.abs(a) < 0.0000000001 || Math.abs(b) < 0.0000000001 || Math.abs(s) < 0.0000000001) {
      System.out.println("String_Node_Str");
      return;
    }
    ScenGen scenGenerator=new ScenGen(scenNum,a,b,s);
    scenGenerator.generate();
    scenGenerator.windSpeedForecastErrorScenarios.writeToXML(errorScenarioFile);
  }
  Scenarios errorScen=Scenarios.getScenarios(errorScenarioFile);
  WsData windSpeedForecastData=WsData.getWsData(wsForecastFile);
  if (windSpeedForecastData == null) {
    System.out.println("String_Node_Str");
    return;
  }
  Map<Integer,Double> mapLeadHourToWindSpeed=new HashMap<Integer,Double>();
  Map<Integer,Double> mapLeadHourToTemp=new HashMap<Integer,Double>();
  for (int i=0; i < 24; i++) {
    double wspeed=windSpeedForecastData.getForecastWindSpeed(i + 1);
    double temp=windSpeedForecastData.getForecastTemperature(i + 1);
    if (wspeed < -9999.0) {
      wspeed=0;
      temp=0;
    }
    mapLeadHourToWindSpeed.put(i + 1,wspeed);
    mapLeadHourToTemp.put(i + 1,temp);
  }
  Scenarios windSpeedScenarios=new Scenarios();
  for (  Scenario es : errorScen.getScenarios()) {
    double p=es.getProbability();
    int sn=es.getScenarioNumber();
    List<ScenarioValue> svs=es.getValueList();
    Scenario windSpeedForecastScenario=new Scenario(sn,p);
    for (    ScenarioValue sv : svs) {
      int hr=sv.getHour();
      double err=sv.getValue();
      double windSpeedValue=mapLeadHourToWindSpeed.get(hr) + err;
      ScenarioValue wsScenVal=new ScenarioValue(hr,windSpeedValue);
      windSpeedForecastScenario.addValue(wsScenVal);
    }
    windSpeedScenarios.addScenario(windSpeedForecastScenario);
  }
  Scenarios powerOutputScenarios=new Scenarios();
  WindPark wpark=new WindPark();
  for (  Scenario wsp : windSpeedScenarios.getScenarios()) {
    double p=wsp.getProbability();
    int sn=wsp.getScenarioNumber();
    List<ScenarioValue> svs=wsp.getValueList();
    Scenario powerOutputScenario=new Scenario(sn,p);
    for (    ScenarioValue sv : svs) {
      int hr=sv.getHour();
      double wspForecast=sv.getValue();
      double temperature=mapLeadHourToTemp.get(hr);
      double windParkOutput=wpark.getPowerOutput(temperature,wspForecast);
      ScenarioValue wpScenVal=new ScenarioValue(hr,windParkOutput);
      powerOutputScenario.addValue(wpScenVal);
    }
    powerOutputScenarios.addScenario(powerOutputScenario);
  }
  powerOutputScenarios.writeToXML(wpScenarioFile);
  System.out.println("String_Node_Str");
  return;
}