Beispiel #1
0
    void SampleListing::CreateListing()
    {
        StdTitle("Uncertainty Propogation Setup");

        ClearEnumStrs();
        AddEnumStr("Monte Carlo", utMonteCarlo);
        AddEnumStr("FOSM", utFOSM);
        AddEnumStr("PEM", utPEM);

        AddStdEnum("Uncertainty", uncertType);
        AddBoolText("Unspecified correlations", forceCorrelationsToZero, "Force to 0.0", "Random");

        if (IsMonteCarlo())
        {
            AddBoolText("Sampling procedure", samplingIsLHS, "Latin Hyper-Cube", "Monte-Carlo");
            AddStdInt("Number of trials", numberOfTrials);
            AddStdInt("Random number seed", randSeed);

            AddYesNo("User-specified correlations ?", specifyCorrelations);
                }
        else if (IsFOSM())
        {
            AddBoolText("Derivative Span", calcDerivSpan, "Calculated", "User-Specified");
            if (calcDerivSpan)
                AddStdReal("Initial Derivative Span", derivSpan);
            else
                AddStdReal("Specified Derivative Span", derivSpan);
        }

        AddStdInt("# of sampled variables", SampVar::GetnActive());

        SC_SetupErr tempErr;
        SampVarArray currSamp;
        for (int i = 0; i < currSamp.Size(); i++)
            AddStatus(currSamp[i]->GetLongID(), currSamp[i]->SampleSetupOK(tempErr));
    }
Beispiel #2
0
void LayerListing::CreateListing()
{
  StdTitle("Multiple Layer Specification");


  AddBoolText("Layer depth specification", enterLayerDepths, "Depth BGS", "Elevation ASL");

  const char* titleStr;
  UnitReal currThick;
  if (enterLayerDepths)
  {
    titleStr = "Depth";
    AddUnitReal("Depth of system bottom", bottomLayerDepth);
    currThick = bottomLayerDepth;
  }
  else
  {
    titleStr = "Elevation";
    AddUnitReal("Elevation of system bottom", bottomLayerElevation);
    currThick = bottomLayerElevation;
  }

  char unitStr[40];
  currThick.MakeUnitString(unitStr, 40);

  LayerStaticSupport::GeoLayerCleanup();

  SubTitle("Geology Layers");

  SC_IntArray colWidth(7, 15);
  SC_BoolArray leftJust(7, false);
  colWidth[0] = 20;
  leftJust[0] = true;
  TableSetup(colWidth, leftJust, 1, 0);
  SetTableCol("ID", titleStr, "Thickness", "Skin?", "Conductivity", "# nodes");
  SetTableCol(1, unitStr);
  SetTableCol(2, unitStr);
  AddNextLine();
  AddNextLine();

  char tempStr[80];
  for (int i = 0; i < geologyLayers.Size(); i++)
  {
    GeologyLayer& currLayer = geologyLayers[i];
    SetTableCol(0, currLayer.intervalID);

    currLayer.GetUserDepthString(tempStr, 80);
    SetTableCol(1, tempStr);

    currLayer.GetUserThickString(tempStr, 80);
    SetTableCol(2, tempStr);

    SetTableBool(3, currLayer.layerHasSkin, "Skin", "No Skin");
    SetTableBool(4, currLayer.layerIsIsotropic, "Isotropic", "Anisotropic");
    SetTableInt(5, currLayer.nintervalNodes);
    AddNextLine();
  }

  SubTitle("Wellbore Zones");

  LayerStaticSupport::WellBoreZoneCleanup();

  colWidth.SetSize(7);
  leftJust.SetSize(7);
  TableSetup(colWidth, leftJust, 1, 0);
  SetTableCol("ID", titleStr, "Thickness", "Type", "Delta Volume", "TZ Comp", "# nodes");
  SetTableCol(1, unitStr);
  SetTableCol(2, unitStr);

  char deltaVolUnitStr[40];
  wellboreZoneDeltaVolumeUnits.MakeUnitString(deltaVolUnitStr, 40);
  SetTableCol(4, unitStr);

  char tzCompUnitStr[40];
  wellboreZoneTZCompUnits.MakeUnitString(tzCompUnitStr, 40);
  SetTableCol(5, unitStr);

  AddNextLine();
  AddNextLine();


  for (int i = 0; i < wellBoreZones.Size(); i++)
  {
    WellBoreZone& currZone = wellBoreZones[i];
    SetTableCol(0, currZone.intervalID);

    currZone.GetUserDepthString(tempStr, 80);
    SetTableCol(1, tempStr);

    currZone.GetUserThickString(tempStr, 80);
    SetTableCol(2, tempStr);

    SetTableBool(3, currZone.zoneIsPacker, "Packer", "Zone");

    if (currZone.zoneIsPacker)
    {
      SetTableCol(4, "n/a");
      SetTableCol(5, "n/a");
    }
    else
    {
      currZone.GetUserDeltaVolumeString(tempStr, 80);
      SetTableCol(4, tempStr);
      currZone.GetUserTZCompString(tempStr, 80);
      SetTableCol(5, tempStr);
    }
    SetTableInt(6, currZone.nintervalNodes);

    AddNextLine();
  }

}
Beispiel #3
0
void DataCaptureListing::ListDataCapture(const DataCaptureSpec& outDC)
{
  AddConditionalBlank();
  AddStdText("Output ID", outDC.dataDesig);


  ClearEnumStrs();
  AddEnumStr("Pressure", DataCaptureSpec::ctPressure);
  AddEnumStr("Flow Rate", DataCaptureSpec::ctFlow);
  AddEnumStr("Cumulative Production", DataCaptureSpec::ctProduction);
  AddEnumStr("Test Zone Property", DataCaptureSpec::ctTestZone);
  AddEnumStr("Water Table", DataCaptureSpec::ctWaterTable);
  AddStdEnum("  Output type", outDC.captureType);

  ClearEnumStrs();
  switch (outDC.captureType)
  {
  case DataCaptureSpec::ctPressure  : {
    AddEnumStr("Test Zone", DataCaptureSpec::pctTestZone);
    AddEnumStr("Observation Well", DataCaptureSpec::pctRadius);
    AddEnumStr("Superposition", DataCaptureSpec::pctSuperposition);
    AddStdEnum("  Pressure capture type", outDC.pressureCapType);
    switch (outDC.pressureCapType)
    {
    case DataCaptureSpec::pctTestZone : {
      if (control.IsLayered())
      {
        AddStdText("Wellbore zone", outDC.wellboreZoneID);
      }
      break;
    }
    case DataCaptureSpec::pctRadius : {
      if (control.IsHorizontalAnisotropic())
      {
        AddUnitReal("  Observation well X location", outDC.obsXLocation);
        AddUnitReal("  Observation well Y location", outDC.obsYLocation);
        AddStdReal("  Observation well angle (degrees)", Degrees(outDC.GetObsAngle()), SC_DecFormat(3));
      }
      AddUnitReal("  Observation well radius", outDC.radiusData);
      if (control.Is2DRadial())
      {
        AddBoolText("  Vertical position", outDC.zvalueIsRatio, "Actual", "Ratio");
        if (outDC.zvalueIsRatio)
          AddStdReal("  Vertical ratio", outDC.normalizedZ, SC_DecFormat(3));
        else
          AddUnitReal("  Vertical offset", outDC.actualZ);
      }
      break;
    }
    case DataCaptureSpec::pctSuperposition : {
      for (int i = 0; i < outDC.superData.Size(); i++)
        if (outDC.superData.IsValid(i))
          ListSuperComponent(outDC.superData.GetRef(i));
      break;
    }
    }
    break;
  }
  case DataCaptureSpec::ctFlow  : {
    AddEnumStr("Well",        DataCaptureSpec::fctWell);
    AddEnumStr("Formation",     DataCaptureSpec::fctFormation);
    AddEnumStr("Test Zone",     DataCaptureSpec::fctTestZone);
    AddEnumStr("Wellbore Storage",  DataCaptureSpec::fctWellboreStorage);
    AddStdEnum("  Flow rate output type", outDC.flowCapType);
    break;
  }
  case DataCaptureSpec::ctProduction  : {
    AddEnumStr("Well",        DataCaptureSpec::prctWell);
    AddEnumStr("Formation",     DataCaptureSpec::prctFormation);
    AddEnumStr("Test Zone",     DataCaptureSpec::prctTestZone);
    AddStdEnum("  Production output type", outDC.flowCapType);
    break;
  }

  case DataCaptureSpec::ctTestZone : {
    AddEnumStr("Temperature",   DataCaptureSpec::tzctTemperature);
    AddEnumStr("Compressibility",    DataCaptureSpec::tzctCompressibility);
    AddEnumStr("Volume",      DataCaptureSpec::tzctVolume);
    AddStdEnum("  Test zone property output type", outDC.flowCapType);
    break;
  }

  case DataCaptureSpec::ctWaterTable : {
    AddUnitReal("  Water table radius", outDC.radiusData);
    break;
  }
  }

  AddUnitIndex("  Output units", outDC.outputUnits);
}