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)); }
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(); } }
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); }