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.
207 lines
6.0 KiB
C++
207 lines
6.0 KiB
C++
#ifndef NMDATAFORECAST_H
|
|
#define NMDATAFORECAST_H
|
|
|
|
#include <QObject>
|
|
|
|
#include "nmData_global.h"
|
|
#include "nmDataBase.h"
|
|
#include "nmDataAttribute.h"
|
|
|
|
struct NM_DATA_EXPORT PressureRow {
|
|
nmDataAttribute duration;
|
|
nmDataAttribute pressure;
|
|
|
|
PressureRow();
|
|
};
|
|
|
|
struct NM_DATA_EXPORT FlowRow {
|
|
nmDataAttribute duration;
|
|
nmDataAttribute q0;
|
|
|
|
FlowRow();
|
|
};
|
|
|
|
struct NM_DATA_EXPORT ConstantPressure {
|
|
nmDataAttribute initialPressure;
|
|
nmDataAttribute abandonmentRate;
|
|
bool isAbandonmentRate;
|
|
nmDataAttribute maximumRate;
|
|
bool isMaximumRate;
|
|
nmDataAttribute forecastDuration;
|
|
nmDataAttribute producingPressure;
|
|
|
|
ConstantPressure();
|
|
|
|
// Getter and Setter for initialPressure
|
|
nmDataAttribute& getInitialPressure();
|
|
void setInitialPressure(const nmDataAttribute& value);
|
|
|
|
// Getter and Setter for abandonmentRate
|
|
nmDataAttribute& getAbandonmentRate();
|
|
void setAbandonmentRate(const nmDataAttribute& value);
|
|
|
|
// Getter and Setter for isAbandonmentRate
|
|
bool getIsAbandonmentRate() const;
|
|
void setIsAbandonmentRate(bool value);
|
|
|
|
// Getter and Setter for maximumRate
|
|
nmDataAttribute& getMaximumRate();
|
|
void setMaximumRate(const nmDataAttribute& value);
|
|
|
|
// Getter and Setter for isMaximumRate
|
|
bool getIsMaximumRate() const;
|
|
void setIsMaximumRate(bool value);
|
|
|
|
// Getter and Setter for forecastDuration
|
|
nmDataAttribute& getForecastDuration();
|
|
void setForecastDuration(const nmDataAttribute& value);
|
|
|
|
// Getter and Setter for producingPressure
|
|
nmDataAttribute& getProducingPressure();
|
|
void setProducingPressure(const nmDataAttribute& value);
|
|
};
|
|
|
|
struct NM_DATA_EXPORT DecliningPressure {
|
|
nmDataAttribute initialPressure;
|
|
nmDataAttribute abandonmentRate;
|
|
bool isAbandonmentRate;
|
|
nmDataAttribute maximumRate;
|
|
bool isMaximumRate;
|
|
nmDataAttribute forecastDuration;
|
|
nmDataAttribute producingPressureStart;
|
|
nmDataAttribute producingPressureEnd;
|
|
nmDataAttribute pressureChangePeriod;
|
|
|
|
DecliningPressure();
|
|
|
|
// Getter and Setter for initialPressure
|
|
nmDataAttribute& getInitialPressure();
|
|
void setInitialPressure(const nmDataAttribute& value);
|
|
|
|
// Getter and Setter for abandonmentRate
|
|
nmDataAttribute& getAbandonmentRate();
|
|
void setAbandonmentRate(const nmDataAttribute& value);
|
|
|
|
// Getter and Setter for isAbandonmentRate
|
|
bool getIsAbandonmentRate() const;
|
|
void setIsAbandonmentRate(bool value);
|
|
|
|
// Getter and Setter for maximumRate
|
|
nmDataAttribute& getMaximumRate();
|
|
void setMaximumRate(const nmDataAttribute& value);
|
|
|
|
// Getter and Setter for isMaximumRate
|
|
bool getIsMaximumRate() const;
|
|
void setIsMaximumRate(bool value);
|
|
|
|
// Getter and Setter for forecastDuration
|
|
nmDataAttribute& getForecastDuration();
|
|
void setForecastDuration(const nmDataAttribute& value);
|
|
|
|
// Getter and Setter for producingPressureStart
|
|
nmDataAttribute& getProducingPressureStart();
|
|
void setProducingPressureStart(const nmDataAttribute& value);
|
|
|
|
// Getter and Setter for producingPressureEnd
|
|
nmDataAttribute& getProducingPressureEnd();
|
|
void setProducingPressureEnd(const nmDataAttribute& value);
|
|
|
|
// Getter and Setter for pressureChangePeriod
|
|
nmDataAttribute& getPressureChangePeriod();
|
|
void setPressureChangePeriod(const nmDataAttribute& value);
|
|
};
|
|
|
|
struct NM_DATA_EXPORT MultiplePressures {
|
|
nmDataAttribute initialPressure;
|
|
nmDataAttribute abandonmentRate;
|
|
bool isAbandonmentRate;
|
|
nmDataAttribute maximumRate;
|
|
bool isMaximumRate;
|
|
|
|
MultiplePressures();
|
|
|
|
QVector<PressureRow> pressureTable;
|
|
|
|
// Getter and Setter for initialPressure
|
|
nmDataAttribute& getInitialPressure();
|
|
void setInitialPressure(const nmDataAttribute& value);
|
|
|
|
// Getter and Setter for abandonmentRate
|
|
nmDataAttribute& getAbandonmentRate();
|
|
void setAbandonmentRate(const nmDataAttribute& value);
|
|
|
|
// Getter and Setter for isAbandonmentRate
|
|
bool getIsAbandonmentRate() const;
|
|
void setIsAbandonmentRate(bool value);
|
|
|
|
// Getter and Setter for maximumRate
|
|
nmDataAttribute& getMaximumRate();
|
|
void setMaximumRate(const nmDataAttribute& value);
|
|
|
|
// Getter and Setter for isMaximumRate
|
|
bool getIsMaximumRate() const;
|
|
void setIsMaximumRate(bool value);
|
|
|
|
QVector<PressureRow>& getPressureTable();
|
|
void setPressureTable(const QVector<PressureRow>& table);
|
|
|
|
};
|
|
|
|
struct NM_DATA_EXPORT MultipleRates {
|
|
nmDataAttribute initialPressure;
|
|
|
|
MultipleRates();
|
|
|
|
QVector<FlowRow> flowTable;
|
|
|
|
// Getter and Setter for initialPressure
|
|
nmDataAttribute& getInitialPressure();
|
|
void setInitialPressure(const nmDataAttribute& value);
|
|
|
|
QVector<FlowRow>& getFlowTable();
|
|
void setFlowTable(const QVector<FlowRow>& table);
|
|
};
|
|
|
|
class NM_DATA_EXPORT nmDataForecast : public nmDataBase
|
|
{
|
|
public:
|
|
nmDataForecast();
|
|
~nmDataForecast();
|
|
nmDataForecast(const nmDataForecast& other);
|
|
nmDataForecast& operator=(const nmDataForecast& other);
|
|
|
|
enum ForecastOption {
|
|
ConstantPressureOption = 0,
|
|
DecliningPressureOption = 1,
|
|
MultiplePressuresOption = 2,
|
|
MultipleRatesOption = 3,
|
|
};
|
|
|
|
void setForecastOption(ForecastOption option);
|
|
ForecastOption getForecastOption() const;
|
|
|
|
void setConstantPressureData(const ConstantPressure& cp);
|
|
ConstantPressure& getConstantPressureData();
|
|
|
|
void setDecliningPressureData(const DecliningPressure& dp);
|
|
DecliningPressure& getDecliningPressureData();
|
|
|
|
void setMultiplePressuresData(const MultiplePressures& mp);
|
|
MultiplePressures& getMultiplePressuresData();
|
|
|
|
void setMultipleRatesData(const MultipleRates& mr);
|
|
MultipleRates& getMultipleRatesData();
|
|
|
|
virtual rapidjson::Value ToJsonValue(rapidjson::Document::AllocatorType& allocator) const override;
|
|
virtual void FromJsonValue(const rapidjson::Value& jsonValue) override;
|
|
|
|
private:
|
|
ForecastOption currentOption;
|
|
ConstantPressure constantPressureData;
|
|
DecliningPressure decliningPressureData;
|
|
MultiplePressures multiplePressuresData;
|
|
MultipleRates multipleRatesData;
|
|
};
|
|
|
|
#endif // NMDATAFORECAST_H
|