예제 #1
0
파일: A_Field.cpp 프로젝트: nsights/nSIGHTS
static void FieldProcessing(FuncObjC*& inputXYFO)
{
  char baseID[idLen];
  CopyString(baseID, inputXYFO->GetID(), 80);

  int idNum = 0;
  char incID[idLen];
  IncrementID(baseID, incID, idNum);

  inputXYFO->SetID(incID);

  if (processDups)
  {
    IncrementID(baseID, incID, idNum);
    MenuObjC* xyObj = AddNewObject("DPO_XYRemoveDuplicate", incID);
    DFO_XYRemoveDuplicate* currXY = static_cast<DFO_XYRemoveDuplicate*>(xyObj->objFunction);

    currXY->xyInputObjRef = FuncObjRef(*inputXYFO);

    inputXYFO = currXY;
  }

  if (processReduce)
  {
    IncrementID(baseID, incID, idNum);
    MenuObjC* xyObj = AddNewObject("DPO_XYReduction", incID);
    DFO_XYReduction* currXY = static_cast<DFO_XYReduction*>(xyObj->objFunction);

    currXY->xyInputObjRef = FuncObjRef(*inputXYFO);

    inputXYFO = currXY;
  }

  if (processST)
  {
    IncrementID(baseID, incID, idNum);
    MenuObjC* xyObj = AddNewObject("DPO_XYDualScaleTransform", incID);
    DFO_XYDualScaleTransform* currXY = static_cast<DFO_XYDualScaleTransform*>(xyObj->objFunction);

    currXY->xyInputObjRef = FuncObjRef(*inputXYFO);

    inputXYFO = currXY;
  }

  inputXYFO->SetID(baseID);
}
예제 #2
0
CaptureOutputFO::CaptureOutputFO() : FuncObjC("f(t)Output")
{
  DataCaptureStaticSupport::capturedObj.AddTo(this);
  dcIndex = 0;
  AddOutPort(xyDataDO);
  AddInPort(xyArrayObjRef, typeid(DO_XYDataArray));
  xyArrayObjRef = FuncObjRef(capturedDataFO);
}
예제 #3
0
파일: G_Sample.cpp 프로젝트: jjayne/nSIGHTS
 void  UncertInput::IsBeingDeleted(FuncObjC* delObj)
 {
     for (int i = 0; i < maxMetricSel; i++)
     {
         if (inputMetrics[i].metricObject.objRef == delObj)
         {
             inputMetrics[i].uncertOnMetric = false;
             inputMetrics[i].metricObject = FuncObjRef();
         }
     }
 }
예제 #4
0
파일: A_Field.cpp 프로젝트: nsights/nSIGHTS
void AutoFieldSetup()
{
  MenuRootC::currTreeObj = NULL;
  fieldDataRoot.CloseUI();

  bool multiWells = MultiWellIDS() && processTestZonePressureData;

  autoRoot = &fieldDataRoot;

  // just for effect
  fieldDataRoot.pageLeafs[0]->pageObjects[0]->SetID("Pens&ColorMaps");
  fieldDataRoot.pageLeafs[0]->pageSelected = false;
  fieldDataRoot.pageLeafs[0]->pageExpanded = false;
  fieldDataRoot.pageLeafs[0]->UpdatePage();

  // delete downstream pages
  DeleteFieldPage(processTestZonePressureData, "P_Cartesian", 0);
  DeleteFieldPage(processTestZoneFlowData, "Q_Cartesian", 0);

  //
  FuncObjArray fieldPFO, fieldQFO, simPFO, simQFO;
  if (multiWells)
  {
    for (int i = 0; i < currentWells.Size(); i++)
    {
      MenuPageC* currWell = fieldDataRoot.FindPage(currentWells[i], 0);
      if (currWell)
      {
        DeleteFieldPages(currWell);
        if (currWell->childPages.IsEmpty())
          DeleteFieldPage(true, currentWells[i], 0);
      }
    }

    for (int i = 0; i < currentWells.Size(); i++)
    {
      wellID = currentWells[i];
      MenuPageC* currWell = fieldDataRoot.FindPage(wellID, 0);
      if (!currWell)
      {
        AddNewDataPage(wellID, 0);
        currWell = autoPage;
      }

      AddFieldPages(autoPage, i == 0, fieldPFO, fieldQFO);
      simPFO += DataCaptureStaticSupport::GetWellPFO(wellID);
      simQFO += DataCaptureStaticSupport::GetWellQFO(wellID);
    }

  }
  else
  {
    DeleteFieldPages(0);
    wellID = currentWells[0];
    AddFieldPages(0, true, fieldPFO, fieldQFO);
    simPFO += DataCaptureStaticSupport::GetWellPFO(wellID);
    simQFO += DataCaptureStaticSupport::GetWellQFO(wellID);
  }


  // set data capture
//  dataCapture.SetToInitial();   // sets s_PDAT & s_QDAT

  FuncObjC* pressSimFO = 0;
  FuncObjC* flowSimFO = 0;
  if (dataCapture.DataCaptureOK())
  {
    pressSimFO = dataCaptureData[0]->GetObjRef();
    if (processTestZoneFlowData)
      flowSimFO = dataCaptureData[1]->GetObjRef();
  }

  if (createPressurePlot && processTestZonePressureData)
  {
    AddNewXYPage("Fld", "P_Cartesian", true, true);

    if (multiWells)
    {
      for (int i = 0; i < currentWells.Size(); i++)
      {
        char objID[80];
        MakeString(objID, currentWells[i], "_Pressure", 80);
        PFO_2DXYData* currXY = AddXYDataPFO(objID);

        MakeString(objID, currentWells[i], " measured pressure", 80);
        SetXYDisplay(*currXY, 0, FuncObjRef(fieldPFO[i], 0), ps_FCircle, objID);
        currXY->xySeries[0].seriesPen = i + 1;

        MakeString(objID, currentWells[i], " simulated pressure", 80);
        SetXYDisplay(*currXY, 1, FuncObjRef(simPFO[i], 0), "Simulated pressure");
        currXY->xySeries[1].seriesPen = i + 1;
      }
    }
    else
    {
      PFO_2DXYData* currXY = AddXYDataPFO("Pressure");
      SetXYDisplay(*currXY, 0, FuncObjRef(fieldPFO[0], 0), ps_FCircle, "Measured pressure");
      SetXYDisplay(*currXY, 1, FuncObjRef(simPFO[0], 0), "Simulated pressure");
    }

    AddNewObject("PPO_SequenceGridLines", "Sequences", true);
    RecalcPage();
  }

  if (createFlowPlot && processTestZoneFlowData)
  {
    AddNewXYPage("Fld", "Q_Cartesian", true, true);
    PFO_2DXYData* currXY = AddXYDataPFO("Flow");
    SetXYDisplay(*currXY, 0, FuncObjRef(fieldQFO[0], 0), ps_FCircle, "Field flow rate");
    SetXYDisplay(*currXY, 1, FuncObjRef(simQFO[0], 0), "Simulated flow rate");
    AddNewObject("PPO_SequenceGridLines", "Sequences", true);
    RecalcPage();
  }

  RecalcAll();
}
예제 #5
0
파일: A_Field.cpp 프로젝트: nsights/nSIGHTS
static void AddFieldPages(MenuPageC*    parent,
                          bool        isMainWell,
                          FuncObjArray& fieldPFO,
                          FuncObjArray& fieldQFO)
{
  FuncObjC* pressXYFO = 0;
  FuncObjC* flowXYFO = 0;

  char pressureID[80];
  MakeString(pressureID, "fP", wellID, 80);

  char flowID[80];
  MakeString(flowID, "fQ", wellID, 80);


  if ((inputDataFormat == idfTable) ||  (inputDataFormat == idfMiniTroll))
  {
    MenuObjC* pressTblObj = 0;
    MenuObjC* flowTblObj = 0;
    MenuPageC* flowPage = 0;
    MenuPageC* pressPage = 0;

    const char* readObj = "DPO_ReadTable";
    if (inputDataFormat == idfMiniTroll)
      readObj = "DPO_ReadMiniTroll";

    if (isMainWell && processTestZonePressureData && processTestZoneFlowData && bothInSameFile)
    {
      DeleteFieldPage(true, "PQ_Input", parent);
      AddNewDataPage("PQ_Input", parent);

      pressTblObj = AddNewObject(readObj, "PQ_Input");
      flowTblObj  = pressTblObj;
      flowPage  = autoPage;
      pressPage = autoPage;
    }
    else
    {
      // seperate pages
      if (processTestZonePressureData)
      {
        AddNewDataPage("P_Input", parent);
        pressTblObj = AddNewObject(readObj, "P_Input");
        pressPage = autoPage;
      }

      if (isMainWell && processTestZoneFlowData)
      {
        AddNewDataPage("Q_Input", parent);
        flowTblObj = AddNewObject(readObj, "Q_Input");
        flowPage = autoPage;
      }
    }

    if (processTestZonePressureData)
    {
      pressPage->pageSelected = true;
      pressTblObj->objSelected = true;
    }
    else if (isMainWell)
    {
      flowPage->pageSelected = true;
      flowTblObj->objSelected = true;
    }

    if (processTestZonePressureData)
    {
      autoPage = pressPage;
      MenuObjC* pressXYObj = AddNewObject("DPO_SelectXY", pressureID);
      DFO_SelectXY* currXY = static_cast<DFO_SelectXY*>(pressXYObj->objFunction);
      currXY->xyDataArrayObjRef = FuncObjRef(*(pressTblObj->objFunction));
      pressXYFO = currXY;
    }

    if (isMainWell && processTestZoneFlowData)
    {
      autoPage = flowPage;
      MenuObjC* flowXYObj = AddNewObject("DPO_SelectXY", flowID);
      DFO_SelectXY* currXY = static_cast<DFO_SelectXY*>(flowXYObj->objFunction);
      currXY->xyDataArrayObjRef = FuncObjRef(*(flowTblObj->objFunction));
      flowXYFO = currXY;
    }

  }
  else
  {
    if (processTestZonePressureData)
    {
      AddNewDataPage("P_Input", parent);
      MenuObjC* pressObj = AddNewObject("DPO_ReadXY", pressureID);
      autoPage->pageSelected = true;
      pressObj->objSelected = true;
      pressXYFO = pressObj->objFunction;
    }
    if (isMainWell && processTestZoneFlowData)
    {
      AddNewDataPage("Q_Input", parent);
      MenuObjC* flowObj = AddNewObject("DPO_ReadXY", flowID);
      if (!processTestZonePressureData)
      {
        autoPage->pageSelected = true;
        flowObj->objSelected = true;
      }
      flowXYFO = flowObj->objFunction;
    }
  }


  // check for post processing
  if (processDups || processReduce || processST)
  {

    if (processTestZonePressureData)
    {
      DeleteFieldPage(true, "P_Process", parent);
      AddNewDataPage("P_Process", parent);
      FieldProcessing(pressXYFO);
    }

    if (isMainWell && processTestZoneFlowData)
    {
      DeleteFieldPage(true, "Q_Process", parent);
      AddNewDataPage("Q_Process",parent);
      FieldProcessing(flowXYFO);
    }
  }

  fieldPFO += pressXYFO;
  fieldQFO += flowXYFO;
}