public ModelGraph generateModelGraph() throws ReflectionException {
    LBConfiguration lbConf = laboConf.getLBConfiguration(simDesc.getLBConfigurationId());

    SubLatticesConfiguration subConf = lbConf.getSubLatticesConfiguration();
    ModelGraphGenerator mGraphGen =
        (ModelGraphGenerator) Reflection.newInstance(subConf.getGeneratorClassName());

    LatticeDescription lattDesc = lbConf.getLatticeDescription();
    int[] size = lattDesc.getSize();
    Lattice latt = (Lattice) Reflection.newInstance(lattDesc.getClassName());
    LatticeDescriptor desc = latt.getLatticeDescriptor();
    mGraphGen.setParameters(size, subConf.getMinSubLatticesCount(), desc);

    return mGraphGen.generateModelGraph();
  }
  public SimulationParameters(int simNum, LaBoGridConfiguration laboConf, DistributedAgent da)
      throws LBException {

    this.simNum = simNum;
    this.laboConf = laboConf;

    simDesc = laboConf.getExperienceDescription().getSimulationDescription(simNum);

    LBConfiguration lbConf = laboConf.getLBConfiguration(simDesc.getLBConfigurationId());
    latticeClass = lbConf.getLatticeDescription().getClassName();
    solidClass = lbConf.getSolidDescription().getClassName();

    String chainId = simDesc.getProcessingChainId();
    ProcessingChainDescription pcd = laboConf.getProcessingChain(chainId);
    powerDesc = SimulationDescription.getPowerDescriptor(latticeClass, pcd);
    procChain = ProcessingChain.getOperatorsChain(pcd, false);

    // Set output client.
    IODescription outDesc = simDesc.getOutput();
    if (outDesc != null) {

      try {
        outputClient = outDesc.getOutputClient();
        outputClient.setDistributedAgent(da);
      } catch (Exception e) {
        throw new LBException("Could not start output client", e);
      }
    }

    // Set input client.
    IODescription inDesc = simDesc.getInput();
    if (inDesc != null) {

      try {
        inputClient = inDesc.getInputClient();
        inputClient.setDistributedAgent(da);
      } catch (Exception e) {
        throw new LBException("Could not start input client", e);
      }
    }
  }