public void JGFrun(int size) throws MPIException {

    if (rank == 0) {
      JGFInstrumentor.addTimer("Section3:MonteCarlo:Total", "Solutions", size);
      JGFInstrumentor.addTimer("Section3:MonteCarlo:Run", "Samples", size);
    }

    JGFsetsize(size);

    MPI.COMM_WORLD.Barrier();
    if (rank == 0) {
      JGFInstrumentor.startTimer("Section3:MonteCarlo:Total");
    }

    JGFinitialise();
    JGFapplication();

    if (rank == 0) {
      JGFvalidate();
    }
    JGFtidyup();

    MPI.COMM_WORLD.Barrier();
    if (rank == 0) {
      JGFInstrumentor.stopTimer("Section3:MonteCarlo:Total");

      JGFInstrumentor.addOpsToTimer("Section3:MonteCarlo:Run", (double) input[1]);
      JGFInstrumentor.addOpsToTimer("Section3:MonteCarlo:Total", 1);

      JGFInstrumentor.printTimer("Section3:MonteCarlo:Run");
      JGFInstrumentor.printTimer("Section3:MonteCarlo:Total");
    }
  }
  public void JGFapplication() throws MPIException {

    MPI.COMM_WORLD.Barrier();
    if (rank == 0) {
      JGFInstrumentor.startTimer("Section3:MonteCarlo:Run");
    }

    runiters();

    MPI.COMM_WORLD.Barrier();
    if (rank == 0) {
      JGFInstrumentor.stopTimer("Section3:MonteCarlo:Run");
    }

    if (rank == 0) {
      presults();
    }
  }