SESubstanceTransport.h
26 #define SUBSTANCE_TRANSPORTER_TEMPLATE typename GraphType, typename FluxUnit, typename QuantityUnit, typename ExtensiveUnit, typename IntensiveUnit
45 using SELiquidTransportSubstance = SESubstanceTransportAmount<SEScalarMass, SEScalarMassPerVolume>;
63 virtual std::vector<SESubstanceTransportAmount<TRANSPORT_AMOUNT_TYPES>*>& GetTransportSubstances() = 0;
65 using SEGasTransportVertex = SESubstanceTransportVertex<SEScalarVolume, SEScalarVolume, SEScalarFraction>;
66 using SELiquidTransportVertex = SESubstanceTransportVertex<SEScalarVolume, SEScalarMass, SEScalarMassPerVolume>;
69 template <typename FluxScalar, typename QuantityScalar, typename ExtensiveScalar, typename IntensiveScalar>
87 using SEGasTransportEdge = SESubstanceTransportEdge<SEScalarVolumePerTime, SEScalarVolume, SEScalarVolume, SEScalarFraction>;
88 using SELiquidTransportEdge = SESubstanceTransportEdge<SEScalarVolumePerTime, SEScalarVolume, SEScalarMass, SEScalarMassPerVolume>;
90 template <typename FluxScalar, typename QuantityScalar, typename ExtensiveScalar, typename IntensiveScalar>
100 virtual size_t GetVertexIndex(const SESubstanceTransportVertex<TRANSPORT_VERTEX_TYPES>& v) const = 0;
101 virtual const std::vector<SESubstanceTransportVertex<TRANSPORT_VERTEX_TYPES>*>& GetVerticies() const = 0;
102 virtual const std::vector<SESubstanceTransportEdge<TRANSPORT_EDGE_TYPES>*>* GetSourceEdges(const SESubstanceTransportVertex<TRANSPORT_VERTEX_TYPES>& v) const = 0;
103 virtual const std::vector<SESubstanceTransportEdge<TRANSPORT_EDGE_TYPES>*>* GetTargetEdges(const SESubstanceTransportVertex<TRANSPORT_VERTEX_TYPES>& v) const = 0;
105 using SEGasTransportGraph = SESubstanceTransportGraph<SEScalarVolumePerTime, SEScalarVolume, SEScalarVolume, SEScalarFraction>;
106 using SELiquidTransportGraph = SESubstanceTransportGraph<SEScalarVolumePerTime, SEScalarVolume, SEScalarMass, SEScalarMassPerVolume>;
111 SESubstanceTransporter(const FluxUnit& fUnit, const QuantityUnit& qUnit, const ExtensiveUnit& eUnit, const IntensiveUnit& iUnit, Logger* logger);
123 using SEGasTransporter = SESubstanceTransporter<SEGasTransportGraph, VolumePerTimeUnit, VolumeUnit, VolumeUnit, NoUnit>;
124 using SELiquidTransporter = SESubstanceTransporter<SELiquidTransportGraph, VolumePerTimeUnit, VolumeUnit, MassUnit, MassPerVolumeUnit>;
Definition: SESubstanceTransport.h:29
virtual bool HasIntensive() const =0
const QuantityUnit & m_QuantityUnit
Definition: SESubstanceTransport.h:118
const ExtensiveUnit & m_ExtensiveUnit
Definition: SESubstanceTransport.h:119
virtual SESubstanceTransportVertex< TRANSPORT_VERTEX_TYPES > & GetSourceVertex()=0
virtual ExtensiveScalar & GetExtensive()=0
virtual const std::vector< SESubstanceTransportVertex< TRANSPORT_VERTEX_TYPES > * > & GetVerticies() const =0
Definition: SESubstanceTransport.h:91
virtual const char * GetName_cStr() const =0
virtual size_t GetVertexIndex(const SESubstanceTransportVertex< TRANSPORT_VERTEX_TYPES > &v) const =0
virtual std::string GetName() const =0
virtual const std::vector< SESubstanceTransportEdge< TRANSPORT_EDGE_TYPES > * > * GetTargetEdges(const SESubstanceTransportVertex< TRANSPORT_VERTEX_TYPES > &v) const =0
virtual void Invalidate()=0
const FluxUnit & m_FluxUnit
Definition: SESubstanceTransport.h:117
void Transport(GraphType &graph, double timeStep_s)
virtual ~SESubstanceTransportEdge()
Definition: SESubstanceTransport.h:75
Definition: Logger.h:27
virtual std::string GetName() const =0
Definition: Logger.h:75
virtual FluxScalar & GetFlux()=0
virtual IntensiveScalar & GetIntensive()=0
SESubstanceTransporter(const FluxUnit &fUnit, const QuantityUnit &qUnit, const ExtensiveUnit &eUnit, const IntensiveUnit &iUnit, Logger *logger)
virtual const char * GetName_cStr() const =0
virtual ~SESubstanceTransportVertex()
Definition: SESubstanceTransport.h:54
virtual ~SESubstanceTransportAmount()
Definition: SESubstanceTransport.h:34
virtual ~SESubstanceTransporter()
Definition: SESubstanceTransport.h:112
virtual SESubstanceTransportVertex< TRANSPORT_VERTEX_TYPES > & GetTargetVertex()=0
virtual ~SESubstanceTransportGraph()
Definition: SESubstanceTransport.h:96
virtual void BalanceByIntensive()=0
Definition: SESubstanceTransport.h:49
virtual bool HasFlux() const =0
virtual std::vector< SESubstanceTransportAmount< TRANSPORT_AMOUNT_TYPES > * > & GetTransportSubstances()=0
Definition: SESubstanceTransport.h:109
Definition: SESubstanceTransport.h:70
Definition: SEElectricalCircuit.h:18
virtual bool HasExtensive() const =0
const IntensiveUnit & m_IntensiveUnit
Definition: SESubstanceTransport.h:120
virtual QuantityScalar & GetQuantity()=0
virtual const std::vector< SESubstanceTransportEdge< TRANSPORT_EDGE_TYPES > * > * GetSourceEdges(const SESubstanceTransportVertex< TRANSPORT_VERTEX_TYPES > &v) const =0
virtual bool HasQuantity() const =0