You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nmWTAI-Platform/Src/nmNum/nmData/nmDataMixedResults.cpp

428 lines
21 KiB
C++

#include "nmDataMixedResults.h"
nmDataMixedResults::nmDataMixedResults()
{
// Warnings
m_criticalParameters = nmDataAttribute("Critical parameters", "Some default values were used!", "");
// Analysis summary
m_analysisName = nmDataAttribute("Analysis name", "Analysis 1", "");
m_referenceWell = nmDataAttribute("Reference well", "", "");
m_PVTReferencePhase = nmDataAttribute("PVT Reference phase", "Oil", "");
m_PVTPhases = nmDataAttribute("PVT phases", "Oil", "");
m_activeProduction = nmDataAttribute("Active production", "Oil rate", "");
m_activePressureGauge = nmDataAttribute("Active pressure gauge", "Test Design", "");
m_analysisType = nmDataAttribute("Analysis type", "Standard", "");
m_activeModel = nmDataAttribute("Active model", "Numerical", "");
// Main Results
m_source = nmDataAttribute("Source", "Numerical", "");
m_mobility = nmDataAttribute("Mobility", 33.3333, "md/cp");
m_Pbar = nmDataAttribute("Pbar", 4836.51, "psia");
m_productivityIndex = nmDataAttribute("Productivity Index", 0.802362, "[STB/D]/psia");
m_poreVolume = nmDataAttribute("Pore Volume", 54.4323, "MMB");
// Diagnostic
m_diagnosticWell = nmDataAttribute("Well", "Finite radius", "");
m_boundary = nmDataAttribute("Boundary", "Infinite", "");
m_referenceRate = nmDataAttribute("Reference rate", 62.8981, "STB/D");
m_extractionStartTime = nmDataAttribute("Extraction start time", 0.0, "hr");
m_PAtDt0 = nmDataAttribute("PAtDt0", 500.0, "psia");
m_timeMatch = nmDataAttribute("Time match", 29.5078, "1/hr");
m_pressureMatch = nmDataAttribute("Pressure match", 0.112593, "1/psia");
m_khMu = nmDataAttribute("khMu", 1000.0, "[md.ft]/cp");
m_deltaPSkin = nmDataAttribute("deltaPSkin", -0.13795, "psia");
// Model description
m_otherWellsIncluded = nmDataAttribute("Other wells included?", "No", "");
m_rateDependentSkin = nmDataAttribute("Rate dependent skin?", "No", "");
m_timeDependentSkin = nmDataAttribute("Time dependent skin?", "No", "");
// Model - Contour & faults
m_topBoundary = nmDataAttribute("Top boundary", "No flow", "");
m_bottomBoundary = nmDataAttribute("Bottom boundary", "No flow", "");
// Model - Results - Field
m_STOIIP = nmDataAttribute("STOIIP", 54.4323, "MMSTB");
m_STOIIPFree = nmDataAttribute("STOIIP (free)", 52.4323, "MMSTB");
m_STOIP = nmDataAttribute("STOIP", 52.4061, "MMSTB");
m_QoTmax = nmDataAttribute("Qo(tmax)", 0.0262075, "MMSTB");
m_Tmax = nmDataAttribute("Tmax", 10000.0, "hr");
m_area = nmDataAttribute("Area", 4836.51, "psia");
m_bulkVolume = nmDataAttribute("Bulk volume", 534.323, "MMB");
// Statistics
m_goodnessOfFit = nmDataAttribute("Goodness of fit", 0.0, "psia");
}
nmDataMixedResults::nmDataMixedResults(const nmDataMixedResults& other)
{
*this = other;
}
nmDataMixedResults::~nmDataMixedResults()
{
}
nmDataMixedResults& nmDataMixedResults::operator=(const nmDataMixedResults& other)
{
if (this != &other) {
// Warnings---提示
m_criticalParameters = other.m_criticalParameters;
// Analysis summary---分析总结
m_analysisName = other.m_analysisName;
m_referenceWell = other.m_referenceWell;
m_PVTReferencePhase = other.m_PVTReferencePhase;
m_PVTPhases = other.m_PVTPhases;
m_activeProduction = other.m_activeProduction;
m_oilRate = other.m_oilRate;
m_activePressureGauge = other.m_activePressureGauge;
m_analysisType = other.m_analysisType;
m_activeModel = other.m_activeModel;
// Main Results---主要结果
m_source = other.m_source;
m_mobility = other.m_mobility;
m_Pbar = other.m_Pbar;
m_productivityIndex = other.m_productivityIndex;
m_poreVolume = other.m_poreVolume;
// Diagnostic---诊断分析
m_diagnosticWell = other.m_diagnosticWell;
m_boundary = other.m_boundary;
m_referenceRate = other.m_referenceRate;
m_extractionStartTime = other.m_extractionStartTime;
m_PAtDt0 = other.m_PAtDt0;
m_timeMatch = other.m_timeMatch;
m_pressureMatch = other.m_pressureMatch;
m_khMu = other.m_khMu;
m_deltaPSkin = other.m_deltaPSkin;
// Model description---模型表征
m_otherWellsIncluded = other.m_otherWellsIncluded;
m_rateDependentSkin = other.m_rateDependentSkin;
m_timeDependentSkin = other.m_timeDependentSkin;
// Model - Contour & faults---模型-边界和断层
m_topBoundary = other.m_topBoundary;
m_bottomBoundary = other.m_bottomBoundary;
// Model - Results - Field---模型-结果-场
m_STOIIP = other.m_STOIIP;
m_STOIIPFree = other.m_STOIIPFree;
m_STOIP = other.m_STOIP;
m_QoTmax = other.m_QoTmax;
m_Tmax = other.m_Tmax;
m_area = other.m_area;
m_bulkVolume = other.m_bulkVolume;
}
return *this;
}
// 序列化 nmDataRegion 为 RapidJSON Value
rapidjson::Value nmDataMixedResults::ToJsonValue(rapidjson::Document::AllocatorType& allocator) const
{
// Create a RapidJSON object type value
rapidjson::Value mixedResultsObject(rapidjson::kObjectType);
// Serialize nmDataAttribute type members by calling ToJsonValue method of nmDataAttribute recursively
mixedResultsObject.AddMember("CriticalParameters", m_criticalParameters.ToJsonValue(allocator), allocator);
mixedResultsObject.AddMember("AnalysisName", m_analysisName.ToJsonValue(allocator), allocator);
mixedResultsObject.AddMember("ReferenceWell", m_referenceWell.ToJsonValue(allocator), allocator);
mixedResultsObject.AddMember("PVTReferencePhase", m_PVTReferencePhase.ToJsonValue(allocator), allocator);
mixedResultsObject.AddMember("PVTPhases", m_PVTPhases.ToJsonValue(allocator), allocator);
mixedResultsObject.AddMember("ActiveProduction", m_activeProduction.ToJsonValue(allocator), allocator);
mixedResultsObject.AddMember("ActivePressureGauge", m_activePressureGauge.ToJsonValue(allocator), allocator);
mixedResultsObject.AddMember("AnalysisType", m_analysisType.ToJsonValue(allocator), allocator);
mixedResultsObject.AddMember("ActiveModel", m_activeModel.ToJsonValue(allocator), allocator);
// Main Results
mixedResultsObject.AddMember("Source", m_source.ToJsonValue(allocator), allocator);
mixedResultsObject.AddMember("Mobility", m_mobility.ToJsonValue(allocator), allocator);
mixedResultsObject.AddMember("Pbar", m_Pbar.ToJsonValue(allocator), allocator);
mixedResultsObject.AddMember("ProductivityIndex", m_productivityIndex.ToJsonValue(allocator), allocator);
mixedResultsObject.AddMember("PoreVolume", m_poreVolume.ToJsonValue(allocator), allocator);
// Diagnostic
mixedResultsObject.AddMember("DiagnosticWell", m_diagnosticWell.ToJsonValue(allocator), allocator);
mixedResultsObject.AddMember("Boundary", m_boundary.ToJsonValue(allocator), allocator);
mixedResultsObject.AddMember("ReferenceRate", m_referenceRate.ToJsonValue(allocator), allocator);
mixedResultsObject.AddMember("ExtractionStartTime", m_extractionStartTime.ToJsonValue(allocator), allocator);
mixedResultsObject.AddMember("PAtDt0", m_PAtDt0.ToJsonValue(allocator), allocator);
mixedResultsObject.AddMember("TimeMatch", m_timeMatch.ToJsonValue(allocator), allocator);
mixedResultsObject.AddMember("PressureMatch", m_pressureMatch.ToJsonValue(allocator), allocator);
mixedResultsObject.AddMember("KhMu", m_khMu.ToJsonValue(allocator), allocator);
mixedResultsObject.AddMember("DeltaPSkin", m_deltaPSkin.ToJsonValue(allocator), allocator);
// Model description
mixedResultsObject.AddMember("OtherWellsIncluded", m_otherWellsIncluded.ToJsonValue(allocator), allocator);
mixedResultsObject.AddMember("RateDependentSkin", m_rateDependentSkin.ToJsonValue(allocator), allocator);
mixedResultsObject.AddMember("TimeDependentSkin", m_timeDependentSkin.ToJsonValue(allocator), allocator);
// Model - Contour & faults
mixedResultsObject.AddMember("TopBoundary", m_topBoundary.ToJsonValue(allocator), allocator);
mixedResultsObject.AddMember("BottomBoundary", m_bottomBoundary.ToJsonValue(allocator), allocator);
// Model - Results - Field
mixedResultsObject.AddMember("STOIIP", m_STOIIP.ToJsonValue(allocator), allocator);
mixedResultsObject.AddMember("STOIIPFree", m_STOIIPFree.ToJsonValue(allocator), allocator);
mixedResultsObject.AddMember("STOIP", m_STOIP.ToJsonValue(allocator), allocator);
mixedResultsObject.AddMember("QoTmax", m_QoTmax.ToJsonValue(allocator), allocator);
mixedResultsObject.AddMember("Tmax", m_Tmax.ToJsonValue(allocator), allocator);
mixedResultsObject.AddMember("Area", m_area.ToJsonValue(allocator), allocator);
mixedResultsObject.AddMember("BulkVolume", m_bulkVolume.ToJsonValue(allocator), allocator);
// Statistics
mixedResultsObject.AddMember("GoodnessOfFit", m_goodnessOfFit.ToJsonValue(allocator), allocator);
return mixedResultsObject; // Return the serialized RapidJSON Value
}
// 从 RapidJSON Value 反序列化数据到 nmDataFault
void nmDataMixedResults::FromJsonValue(const rapidjson::Value& jsonValue)
{
// Deserialize nmDataAttribute type members by calling FromJsonValue method recursively
if (jsonValue.HasMember("CriticalParameters") && jsonValue["CriticalParameters"].IsObject()) {
m_criticalParameters.FromJsonValue(jsonValue["CriticalParameters"]);
}
if (jsonValue.HasMember("AnalysisName") && jsonValue["AnalysisName"].IsObject()) {
m_analysisName.FromJsonValue(jsonValue["AnalysisName"]);
}
if (jsonValue.HasMember("ReferenceWell") && jsonValue["ReferenceWell"].IsObject()) {
m_referenceWell.FromJsonValue(jsonValue["ReferenceWell"]);
}
if (jsonValue.HasMember("PVTReferencePhase") && jsonValue["PVTReferencePhase"].IsObject()) {
m_PVTReferencePhase.FromJsonValue(jsonValue["PVTReferencePhase"]);
}
if (jsonValue.HasMember("PVTPhases") && jsonValue["PVTPhases"].IsObject()) {
m_PVTPhases.FromJsonValue(jsonValue["PVTPhases"]);
}
if (jsonValue.HasMember("ActiveProduction") && jsonValue["ActiveProduction"].IsObject()) {
m_activeProduction.FromJsonValue(jsonValue["ActiveProduction"]);
}
if (jsonValue.HasMember("ActivePressureGauge") && jsonValue["ActivePressureGauge"].IsObject()) {
m_activePressureGauge.FromJsonValue(jsonValue["ActivePressureGauge"]);
}
if (jsonValue.HasMember("AnalysisType") && jsonValue["AnalysisType"].IsObject()) {
m_analysisType.FromJsonValue(jsonValue["AnalysisType"]);
}
if (jsonValue.HasMember("ActiveModel") && jsonValue["ActiveModel"].IsObject()) {
m_activeModel.FromJsonValue(jsonValue["ActiveModel"]);
}
// Main Results
if (jsonValue.HasMember("Source") && jsonValue["Source"].IsObject()) {
m_source.FromJsonValue(jsonValue["Source"]);
}
if (jsonValue.HasMember("Mobility") && jsonValue["Mobility"].IsObject()) {
m_mobility.FromJsonValue(jsonValue["Mobility"]);
}
if (jsonValue.HasMember("Pbar") && jsonValue["Pbar"].IsObject()) {
m_Pbar.FromJsonValue(jsonValue["Pbar"]);
}
if (jsonValue.HasMember("ProductivityIndex") && jsonValue["ProductivityIndex"].IsObject()) {
m_productivityIndex.FromJsonValue(jsonValue["ProductivityIndex"]);
}
if (jsonValue.HasMember("PoreVolume") && jsonValue["PoreVolume"].IsObject()) {
m_poreVolume.FromJsonValue(jsonValue["PoreVolume"]);
}
// Diagnostic
if (jsonValue.HasMember("DiagnosticWell") && jsonValue["DiagnosticWell"].IsObject()) {
m_diagnosticWell.FromJsonValue(jsonValue["DiagnosticWell"]);
}
if (jsonValue.HasMember("Boundary") && jsonValue["Boundary"].IsObject()) {
m_boundary.FromJsonValue(jsonValue["Boundary"]);
}
if (jsonValue.HasMember("ReferenceRate") && jsonValue["ReferenceRate"].IsObject()) {
m_referenceRate.FromJsonValue(jsonValue["ReferenceRate"]);
}
if (jsonValue.HasMember("ExtractionStartTime") && jsonValue["ExtractionStartTime"].IsObject()) {
m_extractionStartTime.FromJsonValue(jsonValue["ExtractionStartTime"]);
}
if (jsonValue.HasMember("PAtDt0") && jsonValue["PAtDt0"].IsObject()) {
m_PAtDt0.FromJsonValue(jsonValue["PAtDt0"]);
}
if (jsonValue.HasMember("TimeMatch") && jsonValue["TimeMatch"].IsObject()) {
m_timeMatch.FromJsonValue(jsonValue["TimeMatch"]);
}
if (jsonValue.HasMember("PressureMatch") && jsonValue["PressureMatch"].IsObject()) {
m_pressureMatch.FromJsonValue(jsonValue["PressureMatch"]);
}
if (jsonValue.HasMember("KhMu") && jsonValue["KhMu"].IsObject()) {
m_khMu.FromJsonValue(jsonValue["KhMu"]);
}
if (jsonValue.HasMember("DeltaPSkin") && jsonValue["DeltaPSkin"].IsObject()) {
m_deltaPSkin.FromJsonValue(jsonValue["DeltaPSkin"]);
}
// Model description
if (jsonValue.HasMember("OtherWellsIncluded") && jsonValue["OtherWellsIncluded"].IsObject()) {
m_otherWellsIncluded.FromJsonValue(jsonValue["OtherWellsIncluded"]);
}
if (jsonValue.HasMember("RateDependentSkin") && jsonValue["RateDependentSkin"].IsObject()) {
m_rateDependentSkin.FromJsonValue(jsonValue["RateDependentSkin"]);
}
if (jsonValue.HasMember("TimeDependentSkin") && jsonValue["TimeDependentSkin"].IsObject()) {
m_timeDependentSkin.FromJsonValue(jsonValue["TimeDependentSkin"]);
}
// Model - Contour & faults
if (jsonValue.HasMember("TopBoundary") && jsonValue["TopBoundary"].IsObject()) {
m_topBoundary.FromJsonValue(jsonValue["TopBoundary"]);
}
if (jsonValue.HasMember("BottomBoundary") && jsonValue["BottomBoundary"].IsObject()) {
m_bottomBoundary.FromJsonValue(jsonValue["BottomBoundary"]);
}
// Model - Results - Field
if (jsonValue.HasMember("STOIIP") && jsonValue["STOIIP"].IsObject()) {
m_STOIIP.FromJsonValue(jsonValue["STOIIP"]);
}
if (jsonValue.HasMember("STOIIPFree") && jsonValue["STOIIPFree"].IsObject()) {
m_STOIIPFree.FromJsonValue(jsonValue["STOIIPFree"]);
}
if (jsonValue.HasMember("STOIP") && jsonValue["STOIP"].IsObject()) {
m_STOIP.FromJsonValue(jsonValue["STOIP"]);
}
if (jsonValue.HasMember("QoTmax") && jsonValue["QoTmax"].IsObject()) {
m_QoTmax.FromJsonValue(jsonValue["QoTmax"]);
}
if (jsonValue.HasMember("Tmax") && jsonValue["Tmax"].IsObject()) {
m_Tmax.FromJsonValue(jsonValue["Tmax"]);
}
if (jsonValue.HasMember("Area") && jsonValue["Area"].IsObject()) {
m_area.FromJsonValue(jsonValue["Area"]);
}
if (jsonValue.HasMember("BulkVolume") && jsonValue["BulkVolume"].IsObject()) {
m_bulkVolume.FromJsonValue(jsonValue["BulkVolume"]);
}
// Statistics
if (jsonValue.HasMember("GoodnessOfFit") && jsonValue["GoodnessOfFit"].IsObject()) {
m_goodnessOfFit.FromJsonValue(jsonValue["GoodnessOfFit"]);
}
}
// Warnings---提示
void nmDataMixedResults::setCriticalParameters(const nmDataAttribute& attr) { m_criticalParameters = attr; }
nmDataAttribute& nmDataMixedResults::getCriticalParameters() { return m_criticalParameters; }
// Analysis summary---分析总结
void nmDataMixedResults::setAnalysisName(const nmDataAttribute& attr) { m_analysisName = attr; }
nmDataAttribute& nmDataMixedResults::getAnalysisName() { return m_analysisName; }
void nmDataMixedResults::setReferenceWell(const nmDataAttribute& attr) { m_referenceWell = attr; }
nmDataAttribute& nmDataMixedResults::getReferenceWell() { return m_referenceWell; }
void nmDataMixedResults::setPVTReferencePhase(const nmDataAttribute& attr) { m_PVTReferencePhase = attr; }
nmDataAttribute& nmDataMixedResults::getPVTReferencePhase() { return m_PVTReferencePhase; }
void nmDataMixedResults::setPVTPhases(const nmDataAttribute& attr) { m_PVTPhases = attr; }
nmDataAttribute& nmDataMixedResults::getPVTPhases() { return m_PVTPhases; }
void nmDataMixedResults::setActiveProduction(const nmDataAttribute& attr) { m_activeProduction = attr; }
nmDataAttribute& nmDataMixedResults::getActiveProduction() { return m_activeProduction; }
void nmDataMixedResults::setOilRate(const nmDataAttribute& attr) { m_oilRate = attr; }
nmDataAttribute& nmDataMixedResults::getOilRate() { return m_oilRate; }
void nmDataMixedResults::setActivePressureGauge(const nmDataAttribute& attr) { m_activePressureGauge = attr; }
nmDataAttribute& nmDataMixedResults::getActivePressureGauge() { return m_activePressureGauge; }
void nmDataMixedResults::setAnalysisType(const nmDataAttribute& attr) { m_analysisType = attr; }
nmDataAttribute& nmDataMixedResults::getAnalysisType() { return m_analysisType; }
void nmDataMixedResults::setActiveModel(const nmDataAttribute& attr) { m_activeModel = attr; }
nmDataAttribute& nmDataMixedResults::getActiveModel() { return m_activeModel; }
// Main Results---主要结果
void nmDataMixedResults::setSource(const nmDataAttribute& attr) { m_source = attr; }
nmDataAttribute& nmDataMixedResults::getSource() { return m_source; }
void nmDataMixedResults::setMobility(const nmDataAttribute& attr) { m_mobility = attr; }
nmDataAttribute& nmDataMixedResults::getMobility() { return m_mobility; }
void nmDataMixedResults::setPbar(const nmDataAttribute& attr) { m_Pbar = attr; }
nmDataAttribute& nmDataMixedResults::getPbar() { return m_Pbar; }
void nmDataMixedResults::setProductivityIndex(const nmDataAttribute& attr) { m_productivityIndex = attr; }
nmDataAttribute& nmDataMixedResults::getProductivityIndex() { return m_productivityIndex; }
void nmDataMixedResults::setPoreVolume(const nmDataAttribute& attr) { m_poreVolume = attr; }
nmDataAttribute& nmDataMixedResults::getPoreVolume() { return m_poreVolume; }
// Diagnostic---诊断分析
void nmDataMixedResults::setDiagnosticWell(const nmDataAttribute& attr) { m_diagnosticWell = attr; }
nmDataAttribute& nmDataMixedResults::getDiagnosticWell() { return m_diagnosticWell; }
void nmDataMixedResults::setBoundary(const nmDataAttribute& attr) { m_boundary = attr; }
nmDataAttribute& nmDataMixedResults::getBoundary() { return m_boundary; }
void nmDataMixedResults::setReferenceRate(const nmDataAttribute& attr) { m_referenceRate = attr; }
nmDataAttribute& nmDataMixedResults::getReferenceRate() { return m_referenceRate; }
void nmDataMixedResults::setExtractionStartTime(const nmDataAttribute& attr) { m_extractionStartTime = attr; }
nmDataAttribute& nmDataMixedResults::getExtractionStartTime() { return m_extractionStartTime; }
void nmDataMixedResults::setPAtDt0(const nmDataAttribute& attr) { m_PAtDt0 = attr; }
nmDataAttribute& nmDataMixedResults::getPAtDt0() { return m_PAtDt0; }
void nmDataMixedResults::setTimeMatch(const nmDataAttribute& attr) { m_timeMatch = attr; }
nmDataAttribute& nmDataMixedResults::getTimeMatch() { return m_timeMatch; }
void nmDataMixedResults::setPressureMatch(const nmDataAttribute& attr) { m_pressureMatch = attr; }
nmDataAttribute& nmDataMixedResults::getPressureMatch() { return m_pressureMatch; }
void nmDataMixedResults::setKhMu(const nmDataAttribute& attr) { m_khMu = attr; }
nmDataAttribute& nmDataMixedResults::getKhMu() { return m_khMu; }
void nmDataMixedResults::setDeltaPSkin(const nmDataAttribute& attr) { m_deltaPSkin = attr; }
nmDataAttribute& nmDataMixedResults::getDeltaPSkin() { return m_deltaPSkin; }
// Model description---模型表征
void nmDataMixedResults::setOtherWellsIncluded(const nmDataAttribute& attr) { m_otherWellsIncluded = attr; }
nmDataAttribute& nmDataMixedResults::getOtherWellsIncluded() { return m_otherWellsIncluded; }
void nmDataMixedResults::setRateDependentSkin(const nmDataAttribute& attr) { m_rateDependentSkin = attr; }
nmDataAttribute& nmDataMixedResults::getRateDependentSkin() { return m_rateDependentSkin; }
void nmDataMixedResults::setTimeDependentSkin(const nmDataAttribute& attr) { m_timeDependentSkin = attr; }
nmDataAttribute& nmDataMixedResults::getTimeDependentSkin() { return m_timeDependentSkin; }
// Model - Contour & faults---模型-边界和断层
void nmDataMixedResults::setTopBoundary(const nmDataAttribute& attr) { m_topBoundary = attr; }
nmDataAttribute& nmDataMixedResults::getTopBoundary() { return m_topBoundary; }
void nmDataMixedResults::setBottomBoundary(const nmDataAttribute& attr) { m_bottomBoundary = attr; }
nmDataAttribute& nmDataMixedResults::getBottomBoundary() { return m_bottomBoundary; }
// Model - Results - Field---模型-结果-场
void nmDataMixedResults::setSTOIIP(const nmDataAttribute& attr) { m_STOIIP = attr; }
nmDataAttribute& nmDataMixedResults::getSTOIIP() { return m_STOIIP; }
void nmDataMixedResults::setSTOIIPFree(const nmDataAttribute& attr) { m_STOIIPFree = attr; }
nmDataAttribute& nmDataMixedResults::getSTOIIPFree() { return m_STOIIPFree; }
void nmDataMixedResults::setSTOIP(const nmDataAttribute& attr) { m_STOIP = attr; }
nmDataAttribute& nmDataMixedResults::getSTOIP() { return m_STOIP; }
void nmDataMixedResults::setQoTmax(const nmDataAttribute& attr) { m_QoTmax = attr; }
nmDataAttribute& nmDataMixedResults::getQoTmax() { return m_QoTmax; }
void nmDataMixedResults::setTmax(const nmDataAttribute& attr) { m_Tmax = attr; }
nmDataAttribute& nmDataMixedResults::getTmax() { return m_Tmax; }
void nmDataMixedResults::setArea(const nmDataAttribute& attr) { m_area = attr; }
nmDataAttribute& nmDataMixedResults::getArea() { return m_area; }
void nmDataMixedResults::setBulkVolume(const nmDataAttribute& attr) { m_bulkVolume = attr; }
nmDataAttribute& nmDataMixedResults::getBulkVolume() { return m_bulkVolume; }
void nmDataMixedResults::setGoodnessOfFit(const nmDataAttribute& attr) { m_goodnessOfFit = attr; }
nmDataAttribute& nmDataMixedResults::getGoodnessOfFit(){ return m_goodnessOfFit; }