Limiting Optimization Table Data Checking / Alternate API Samples
Phil Weinstein, CADSES, 12-26-2013

Below are several variations of sample calls from PowerReservoir to set up optimization variable (X,Y,Z) / TableSlot column associations, and indicate which of those columns support Optimization Limits (minimums and maximums). At this time, the "OptTableCheck" GIT branch has the first form of these methods (1a, 1b).

In all examples, the 'true' optional parameter is for a 'supportsOptMinMax' variable. For readability, we could make use of a terse 'true' constant in place of just 'true', e.g. OPT_LIMIT.

  // Set optimization variable / column index associations
  maxTurbineQ->setXcolIndex(0, true);             // opt limit
  maxTurbineQ->setYcolIndex(1);
  tailwaterTable->setXcolIndex(0, true);          // opt limit
  tailwaterTable->setYcolIndex(1);
  stageFlowTailwaterTable->setXcolIndex(1, true); // opt limit
  stageFlowTailwaterTable->setYcolIndex(2);
  stageFlowTailwaterTable->setZcolIndex(0, true); // opt limit
  convolvedStageFlowTailwaterTable->setXcolIndex(SFTW_OUTFLOW_COL, true);
  convolvedStageFlowTailwaterTable->setZcolIndex(SFTW_STAGE_COL, true);
  plantPowerTable->setXcolIndex(1, true);         // opt limit
  plantPowerTable->setYcolIndex(2);
  plantPowerTable->setZcolIndex(0, true);         // opt limit
(1a)
  // Set optimization variable / column index associations
  maxTurbineQ             -> setXcolIndex (0, true);
  maxTurbineQ             -> setYcolIndex (1);
  tailwaterTable          -> setXcolIndex (0, true);
  tailwaterTable          -> setYcolIndex (1);
  stageFlowTailwaterTable -> setXcolIndex (1, true);
  stageFlowTailwaterTable -> setYcolIndex (2);
  stageFlowTailwaterTable -> setZcolIndex (0, true);
  convolvedStageFlowTailwaterTable -> setXcolIndex (SFTW_OUTFLOW_COL, true);
  convolvedStageFlowTailwaterTable -> setZcolIndex (SFTW_STAGE_COL, true);
  plantPowerTable         -> setXcolIndex (1, true);
  plantPowerTable         -> setYcolIndex (2);
  plantPowerTable         -> setZcolIndex (0, true);
(1b)
with code
alignment
  // Set optimization variable / column index associations
  maxTurbineQ                      -> setCol ('X', 0, true);
  maxTurbineQ                      -> setCol ('Y', 1);
  tailwaterTable                   -> setCol ('X', 0, true);
  tailwaterTable                   -> setCol ('Y', 1);
  stageFlowTailwaterTable          -> setCol ('X', 1, true);
  stageFlowTailwaterTable          -> setCol ('Y', 2);
  stageFlowTailwaterTable          -> setCol ('Z', 0, true);
  convolvedStageFlowTailwaterTable -> setCol ('X', SFTW_OUTFLOW_COL, true);
  convolvedStageFlowTailwaterTable -> setCol ('Z', SFTW_STAGE_COL,   true);
  plantPowerTable                  -> setCol ('X', 1, true);
  plantPowerTable                  -> setCol ('Y', 2);
  plantPowerTable                  -> setCol ('Z', 0, true);
(2)
  // Set optimization variable / column index associations
  maxTurbineQ               -> setCol_X (0, true);
  maxTurbineQ               -> setCol_Y (1);
  tailwaterTable            -> setCol_X (0, true);
  tailwaterTable            -> setCol_Y (1);
  stageFlowTailwaterTable   -> setCol_X (1, true);
  stageFlowTailwaterTable   -> setCol_Y (2);
  stageFlowTailwaterTable   -> setCol_Z (0, true);
  convolvedStageFlowTailwaterTable -> setCol_X (SFTW_OUTFLOW_COL, true);
  convolvedStageFlowTailwaterTable -> setCol_Z (SFTW_STAGE_COL,   true);
  plantPowerTable           -> setCol_X (1, true);
  plantPowerTable           -> setCol_Y (2);
  plantPowerTable           -> setCol_Z (0, true);
(3)
  // Set optimization variable / column index associations
  maxTurbineQ               -> set_Xcol (0, true);
  maxTurbineQ               -> set_Ycol (1);
  tailwaterTable            -> set_Xcol (0, true);
  tailwaterTable            -> set_Ycol (1);
  stageFlowTailwaterTable   -> set_Xcol (1, true);
  stageFlowTailwaterTable   -> set_Ycol (2);
  stageFlowTailwaterTable   -> set_Zcol (0, true);
  convolvedStageFlowTailwaterTable -> setCol_X (SFTW_OUTFLOW_COL, true);
  convolvedStageFlowTailwaterTable -> setCol_Z (SFTW_STAGE_COL,   true);
  plantPowerTable           -> set_Xcol (1, true);
  plantPowerTable           -> set_Ycol (2);
  plantPowerTable           -> set_Zcol (0, true);
(4)