Skip to content

Shortcut Column

Represents a shortcut distillation column unit operation that uses the Fenske-Underwood-Gilliland method to estimate the minimum number of stages, minimum reflux ratio, condenser and reboiler duties, and optimum feed stage for a single-feed, two-product column.

DWSIM.UnitOperations.UnitOperations.ShortcutColumn
Assembly DWSIM.UnitOperations.dll · Object ← BaseClass ← UnitOpBaseClass ← ShortcutColumn

At a glance

Shortcut Column in the example flowsheet

Port Index Connected in the example
Inlet, material 0 Feed
Inlet, energy 1 Q-reb
Outlet, material 0 Distillate
Outlet, material 1 Bottoms
Outlet, energy energy Q-cond

Example

This code runs on every build of this site, and the output below is what it printed.

fs = (Flowsheet.Create("ShortcutColumnExample")
      .WithCompounds("Benzene", "Toluene")
      .WithPropertyPackage(PropertyPackages.PengRobinson))

# equimolar liquid feed just below its bubble point (about 92 C at 1 atm)
feed = (fs.AddMaterialStream("Feed")
        .At(Q.Celsius(90.0), Q.Bar(1.01325))
        .WithMolarFlow(Q.MolPerSecond(100.0))
        .SetCompoundMolarFlow("Benzene", 50.0)
        .SetCompoundMolarFlow("Toluene", 50.0))
distillate = fs.AddMaterialStream("Distillate")
bottoms = fs.AddMaterialStream("Bottoms")
q_cond = fs.AddEnergyStream("Q-cond")
q_reb = fs.AddEnergyStream("Q-reb")

column = (fs.AddShortcutColumn("T-1")
          .ConnectFeed(feed, 0)
          .ConnectProduct(distillate, 0)
          .ConnectProduct(bottoms, 1)
          .ConnectEnergyProduct(q_cond)       # condenser duty leaves on the energy port
          .ConnectEnergyFeed(q_reb, 1))       # reboiler duty enters on inlet port 1

sc = column.Object
sc.m_lightkey = "Benzene"
sc.m_heavykey = "Toluene"
sc.m_lightkeymolarfrac = 0.01      # benzene mole fraction in the bottoms
sc.m_heavykeymolarfrac = 0.01      # toluene mole fraction in the distillate
sc.m_refluxratio = 2.0
sc.m_condenserpressure = 101325.0  # Pa
sc.m_boilerpressure = 101325.0     # Pa

fs.AutoLayout()
fs.Solve()

print(f"Minimum reflux ratio  = {sc.m_Rmin:.3f}")
print(f"Minimum stages        = {sc.m_Nmin:.2f}")
print(f"Theoretical stages    = {sc.m_N:.2f} (optimum feed stage {sc.ofs:.1f})")
print(f"Distillate            = {distillate.MolarFlowMolPerSecond:.2f} mol/s, "
      f"benzene {distillate.OverallMoleFraction('Benzene'):.4f}")
print(f"Condenser duty        = {q_cond.EnergyFlowKW:.1f} kW")
print(f"Reboiler duty         = {q_reb.EnergyFlowKW:.1f} kW")

Output

Minimum reflux ratio  = 1.328
Minimum stages        = 10.26
Theoretical stages    = 18.71 (optimum feed stage 9.4)
Distillate            = 50.00 mol/s, benzene 0.9900
Condenser duty        = 4556.3 kW
Reboiler duty         = 4659.3 kW

DWSIM 10.2.11.0, generated 2026-10-08.

Properties

IDs accepted by GetPropertyValue, SetPropertyValue, the sensitivity analysis, the optimizer, the Adjust block and dynamic events. Units are SI; pass another unit system to GetPropertyValue to get them converted.

ID Name Unit (SI) Input
PROP_SC_0 Reflux Ratio yes
PROP_SC_1 Heavy Key Molar Fraction yes
PROP_SC_2 Light Key Molar Fraction yes
PROP_SC_3 Condenser Pressure Pa yes
PROP_SC_4 Reboiler Pressure Pa yes
PROP_SC_5 Minimum Reflux Ratio result
PROP_SC_6 Minimum Stages result
PROP_SC_7 Optimal Feed Stage result
PROP_SC_8 Stripping Liquid Molar Flow mol/s result
PROP_SC_9 Rectify Liquid Molar Flow mol/s result
PROP_SC_10 Stripping Vapor Molar Flow mol/s result
PROP_SC_11 Rectify Vapor Molar Flow mol/s result
PROP_SC_12 Condenser Duty kW result
PROP_SC_13 Reboiler Duty kW result
PROP_SC_14 Actual Stages result
Stage Height m yes
Estimated Height m yes
Estimated Diameter m yes

Dynamic mode

Extra properties used when the flowsheet runs in dynamic mode.

Name Unit
Condenser Volume m3
Reboiler Volume m3
Condenser UA
Reboiler UA
Initialize using Inlet Stream
Reset Content

Learn more

API members

Public members declared by this class. Inherited members are documented on the base classes.

Constructors

ShortcutColumn(): Initializes a new default instance of the ShortcutColumn class.

Initializes a new default instance of the ShortcutColumn class.

public ShortcutColumn()
Public Sub New()

ShortcutColumn(string, string): Initializes a new instance of the ShortcutColumn class with a name and description.

Initializes a new instance of the ShortcutColumn class with a name and description.

Parameter Type Description
name String The display name of the shortcut column.
description String A brief description of the shortcut column.
public ShortcutColumn(string name, string description)
Public Sub New(name As String, description As String)

Properties

CondenserAccumulationStream: Material stream that holds the condenser (reflux drum) contents in dynamic mode.

Material stream that holds the condenser (reflux drum) contents in dynamic mode. Its mass flow carries the holdup mass, in kg. Created on the first dynamic step and discarded by the "Reset Content" dynamic property.

public MaterialStream CondenserAccumulationStream { get; set; }
Public Property CondenserAccumulationStream As MaterialStream

EquipmentTypes: Gets the list of equipment sub-types available for this column (Tray, Packed).

Gets the list of equipment sub-types available for this column (Tray, Packed).

public override List<string> EquipmentTypes { get; }
Public Overrides ReadOnly Property EquipmentTypes As List(Of String)

EstimatedDiameter: Gets or sets the estimated column diameter (m) from the last calculation.

Gets or sets the estimated column diameter (m) from the last calculation.

public double EstimatedDiameter { get; set; }
Public Property EstimatedDiameter As Double

EstimatedHeight: Gets or sets the estimated column height (m) from the last calculation.

Gets or sets the estimated column height (m) from the last calculation.

public double EstimatedHeight { get; set; }
Public Property EstimatedHeight As Double

HasPropertiesForDynamicMode: Gets a value indicating whether this unit operation has properties used in dynamic mode.

Gets a value indicating whether this unit operation has properties used in dynamic mode. Always True.

public override bool HasPropertiesForDynamicMode { get; }
Public Overrides ReadOnly Property HasPropertiesForDynamicMode As Boolean

MobileCompatible: Gets a value indicating whether this unit operation is compatible with mobile interfaces.

Gets a value indicating whether this unit operation is compatible with mobile interfaces.

public override bool MobileCompatible { get; }
Public Overrides ReadOnly Property MobileCompatible As Boolean

ObjectClass: Gets or sets the simulation object class category (Columns).

Gets or sets the simulation object class category (Columns).

public override SimulationObjectClass ObjectClass { get; set; }
Public Overrides Property ObjectClass As SimulationObjectClass

ReboilerAccumulationStream: Material stream that holds the reboiler sump contents in dynamic mode.

Material stream that holds the reboiler sump contents in dynamic mode. Its mass flow carries the holdup mass, in kg. Created on the first dynamic step and discarded by the "Reset Content" dynamic property.

public MaterialStream ReboilerAccumulationStream { get; set; }
Public Property ReboilerAccumulationStream As MaterialStream

StageHeight: Gets or sets the tray or packing height per theoretical stage (m).

Gets or sets the tray or packing height per theoretical stage (m).

public double StageHeight { get; set; }
Public Property StageHeight As Double

SupportsDynamicMode: Gets a value indicating whether this unit operation can run in dynamic mode.

Gets a value indicating whether this unit operation can run in dynamic mode. Always True.

public override bool SupportsDynamicMode { get; }
Public Overrides ReadOnly Property SupportsDynamicMode As Boolean

Methods

Calculate(object): Performs the Fenske-Underwood-Gilliland shortcut calculation: determines minimum stages, minimum reflux, actual...

Performs the Fenske-Underwood-Gilliland shortcut calculation: determines minimum stages, minimum reflux, actual number of stages, condenser/reboiler duties, and product compositions.

Parameter Type Description
args Object Optional calculation arguments (not used).
public override void Calculate(object args = null)
Public Overrides Sub Calculate(args As Object = Nothing)

CloneXML(): Creates a deep copy of this shortcut column via XML serialization.

Creates a deep copy of this shortcut column via XML serialization.

public override object CloneXML()
Public Overrides Function CloneXML() As Object

CloseEditForm(): Closes and disposes the editing form.

Closes and disposes the editing form.

public override void CloseEditForm()
Public Overrides Sub CloseEditForm()

CreateDimensionsList(): Creates the dimensions list (Diameter, Height, NumberOfTrays) used for column sizing.

Creates the dimensions list (Diameter, Height, NumberOfTrays) used for column sizing.

public override void CreateDimensionsList()
Public Overrides Sub CreateDimensionsList()

CreateDynamicProperties(): Registers the dynamic properties for dynamic simulation mode: condenser and reboiler holdup volumes, condenser and...

Registers the dynamic properties for dynamic simulation mode: condenser and reboiler holdup volumes, condenser and reboiler UA, initialization from the feed stream and content reset.

public override void CreateDynamicProperties()
Public Overrides Sub CreateDynamicProperties()

DeCalculate(): Clears all calculated results.

Clears all calculated results.

public override void DeCalculate()
Public Overrides Sub DeCalculate()

DisplayEditForm(): Opens or activates the editing form.

Opens or activates the editing form.

public override void DisplayEditForm()
Public Overrides Sub DisplayEditForm()

GetDisplayDescription(): Returns the localised display description.

Returns the localised display description.

public override string GetDisplayDescription()
Public Overrides Function GetDisplayDescription() As String

GetDisplayName(): Returns the localised display name.

Returns the localised display name.

public override string GetDisplayName()
Public Overrides Function GetDisplayName() As String

GetIconBitmapBytes(): Returns the icon bitmap as a byte array.

Returns the icon bitmap as a byte array.

public override byte[] GetIconBitmapBytes()
Public Overrides Function GetIconBitmapBytes() As Byte()

GetProperties(PropertyType): Returns an array of property identifiers for the specified property type.

Returns an array of property identifiers for the specified property type.

Parameter Type Description
proptype PropertyType
public override string[] GetProperties(PropertyType proptype)
Public Overrides Function GetProperties(proptype As PropertyType) As String()

GetPropertyDescription(string): Returns a human-readable description of the specified property.

Returns a human-readable description of the specified property.

Parameter Type Description
p String
public override string GetPropertyDescription(string p)
Public Overrides Function GetPropertyDescription(p As String) As String

GetPropertyUnit(string, IUnitsOfMeasure): Returns the unit string for the specified property.

Returns the unit string for the specified property.

Parameter Type Description
prop String
su IUnitsOfMeasure
public override string GetPropertyUnit(string prop, IUnitsOfMeasure su = null)
Public Overrides Function GetPropertyUnit(prop As String, su As IUnitsOfMeasure = Nothing) As String

GetPropertyValue(string, IUnitsOfMeasure): Returns the value of the specified property.

Returns the value of the specified property.

Parameter Type Description
prop String
su IUnitsOfMeasure
public override object GetPropertyValue(string prop, IUnitsOfMeasure su = null)
Public Overrides Function GetPropertyValue(prop As String, su As IUnitsOfMeasure = Nothing) As Object

GetReport(IUnitsOfMeasure, CultureInfo, string): Generates a plain-text results report for this unit operation: inlet conditions, calculation parameters and the...

Generates a plain-text results report for this unit operation: inlet conditions, calculation parameters and the shortcut results (minimum reflux, stage counts, feed stage, duties, section flows and estimated size).

Parameter Type Description
su IUnitsOfMeasure The unit system used for formatting output values.
ci CultureInfo The culture info used for number formatting.
numberformat String A .NET numeric format string (e.g. "G6") applied to output values.
public override string GetReport(IUnitsOfMeasure su, CultureInfo ci, string numberformat)
Public Overrides Function GetReport(su As IUnitsOfMeasure, ci As CultureInfo, numberformat As String) As String

LoadData(List<XElement>): Restores the shortcut column state from a list of XML elements.

Restores the shortcut column state from a list of XML elements.

Parameter Type Description
data List<XElement> The list of XML elements containing the serialized data.
public override bool LoadData(List<XElement> data)
Public Overrides Function LoadData(data As List(Of XElement)) As Boolean

rminfunc(double, object, object, double, int): Objective function for the Underwood root search: the squared residual of sum(alpha_i z_i / (alpha_i - theta)) - 1 +...

Objective function for the Underwood root search: the squared residual of sum(alpha_i z_i / (alpha_i - theta)) - 1 + q over the compounds present in the feed.

Parameter Type Description
x Double The trial Underwood root theta.
alpha Object The relative volatilities of the compounds with respect to the heavy key.
z Object The feed mole fractions.
q Double The feed thermal condition (liquid fraction of the feed).
n Int32 The index of the last compound (number of compounds minus one).
public double rminfunc(double x, object alpha, object z, double q, int n)
Public Function rminfunc(x As Double, alpha As Object, z As Object, q As Double, n As Integer) As Double

RunDynamicModel(): Runs one dynamic-mode integration step.

Runs one dynamic-mode integration step. The feed is added to the reboiler holdup and the products are withdrawn; the reboiler holdup is flashed at the reboiler pressure and its vapor moves to the condenser holdup; the condenser holdup is flashed at the condenser pressure and the reflux fraction R/(R+1) of its liquid returns to the reboiler. The distillate and bottoms take the liquid phase, temperature and enthalpy of the condenser and reboiler holdups. When no holdup exists and initialization from the feed is off, the steady-state calculation runs instead.

public override void RunDynamicModel()
Public Overrides Sub RunDynamicModel()

SaveData(): Serializes the shortcut column state into a list of XML elements.

Serializes the shortcut column state into a list of XML elements.

public override List<XElement> SaveData()
Public Overrides Function SaveData() As List(Of XElement)

SetPropertyValue(string, object, IUnitsOfMeasure): Sets the value of the specified property.

Sets the value of the specified property.

Parameter Type Description
prop String
propval Object
su IUnitsOfMeasure
public override bool SetPropertyValue(string prop, object propval, IUnitsOfMeasure su = null)
Public Overrides Function SetPropertyValue(prop As String, propval As Object, su As IUnitsOfMeasure = Nothing) As Boolean

UpdateDimensionsList(): Updates the dimension values from the current calculated results.

Updates the dimension values from the current calculated results.

public override void UpdateDimensionsList()
Public Overrides Sub UpdateDimensionsList()

UpdateEditForm(): Refreshes the editing form with updated data.

Refreshes the editing form with updated data.

public override void UpdateEditForm()
Public Overrides Sub UpdateEditForm()

Fields

condtype: Condenser type: TotalCond (total condenser, liquid distillate) or PartialCond (partial condenser, vapor distillate).

Condenser type: TotalCond (total condenser, liquid distillate) or PartialCond (partial condenser, vapor distillate). Default TotalCond.

public ShortcutColumn.CondenserType condtype
Public condtype As ShortcutColumn.CondenserType

f: The classic (WinForms) editor window open for this unit operation, if any.

The classic (WinForms) editor window open for this unit operation, if any. Not saved with the flowsheet.

public object f
Public f As Object

L: Calculated results.

Calculated results. m_N: actual number of stages (Gilliland). m_Nmin: minimum number of stages (Fenske). m_Rmin: minimum reflux ratio (Underwood). m_Tc, m_Tb: condenser and reboiler temperatures in K, set by the dynamic model from the holdup streams. m_Qc, m_Qb: condenser and reboiler duties, in kW. L, V: rectifying section liquid and vapor molar flows, in mol/s. L_, V_: stripping section liquid and vapor molar flows, in mol/s. ofs: optimum feed stage location, estimated as the number of stripping section stages (Fenske between feed and bottoms, scaled by m_N/m_Nmin).

public double L
Public L As Double

L_: Calculated results.

Calculated results. m_N: actual number of stages (Gilliland). m_Nmin: minimum number of stages (Fenske). m_Rmin: minimum reflux ratio (Underwood). m_Tc, m_Tb: condenser and reboiler temperatures in K, set by the dynamic model from the holdup streams. m_Qc, m_Qb: condenser and reboiler duties, in kW. L, V: rectifying section liquid and vapor molar flows, in mol/s. L_, V_: stripping section liquid and vapor molar flows, in mol/s. ofs: optimum feed stage location, estimated as the number of stripping section stages (Fenske between feed and bottoms, scaled by m_N/m_Nmin).

public double L_
Public L_ As Double

m_boilerpressure: Reboiler pressure, in Pa.

Reboiler pressure, in Pa. Default 101325 Pa.

public double m_boilerpressure
Public m_boilerpressure As Double

m_condenserpressure: Condenser pressure, in Pa.

Condenser pressure, in Pa. Default 101325 Pa.

public double m_condenserpressure
Public m_condenserpressure As Double

m_heavykey: Name of the heavy key compound.

Name of the heavy key compound.

public string m_heavykey
Public m_heavykey As String

m_heavykeymolarfrac: Specified mole fraction of the heavy key in the distillate product.

Specified mole fraction of the heavy key in the distillate product. Default 0.01.

public double m_heavykeymolarfrac
Public m_heavykeymolarfrac As Double

m_lightkey: Name of the light key compound.

Name of the light key compound.

public string m_lightkey
Public m_lightkey As String

m_lightkeymolarfrac: Specified mole fraction of the light key in the bottoms product.

Specified mole fraction of the light key in the bottoms product. Default 0.01.

public double m_lightkeymolarfrac
Public m_lightkeymolarfrac As Double

m_N: Calculated results.

Calculated results. m_N: actual number of stages (Gilliland). m_Nmin: minimum number of stages (Fenske). m_Rmin: minimum reflux ratio (Underwood). m_Tc, m_Tb: condenser and reboiler temperatures in K, set by the dynamic model from the holdup streams. m_Qc, m_Qb: condenser and reboiler duties, in kW. L, V: rectifying section liquid and vapor molar flows, in mol/s. L_, V_: stripping section liquid and vapor molar flows, in mol/s. ofs: optimum feed stage location, estimated as the number of stripping section stages (Fenske between feed and bottoms, scaled by m_N/m_Nmin).

public double m_N
Public m_N As Double

m_Nmin: Calculated results.

Calculated results. m_N: actual number of stages (Gilliland). m_Nmin: minimum number of stages (Fenske). m_Rmin: minimum reflux ratio (Underwood). m_Tc, m_Tb: condenser and reboiler temperatures in K, set by the dynamic model from the holdup streams. m_Qc, m_Qb: condenser and reboiler duties, in kW. L, V: rectifying section liquid and vapor molar flows, in mol/s. L_, V_: stripping section liquid and vapor molar flows, in mol/s. ofs: optimum feed stage location, estimated as the number of stripping section stages (Fenske between feed and bottoms, scaled by m_N/m_Nmin).

public double m_Nmin
Public m_Nmin As Double

m_Qb: Calculated results.

Calculated results. m_N: actual number of stages (Gilliland). m_Nmin: minimum number of stages (Fenske). m_Rmin: minimum reflux ratio (Underwood). m_Tc, m_Tb: condenser and reboiler temperatures in K, set by the dynamic model from the holdup streams. m_Qc, m_Qb: condenser and reboiler duties, in kW. L, V: rectifying section liquid and vapor molar flows, in mol/s. L_, V_: stripping section liquid and vapor molar flows, in mol/s. ofs: optimum feed stage location, estimated as the number of stripping section stages (Fenske between feed and bottoms, scaled by m_N/m_Nmin).

public double m_Qb
Public m_Qb As Double

m_Qc: Calculated results.

Calculated results. m_N: actual number of stages (Gilliland). m_Nmin: minimum number of stages (Fenske). m_Rmin: minimum reflux ratio (Underwood). m_Tc, m_Tb: condenser and reboiler temperatures in K, set by the dynamic model from the holdup streams. m_Qc, m_Qb: condenser and reboiler duties, in kW. L, V: rectifying section liquid and vapor molar flows, in mol/s. L_, V_: stripping section liquid and vapor molar flows, in mol/s. ofs: optimum feed stage location, estimated as the number of stripping section stages (Fenske between feed and bottoms, scaled by m_N/m_Nmin).

public double m_Qc
Public m_Qc As Double

m_refluxratio: Specified (actual) reflux ratio L/D.

Specified (actual) reflux ratio L/D. Must be greater than the calculated minimum reflux ratio. Default 1.5.

public double m_refluxratio
Public m_refluxratio As Double

m_Rmin: Calculated results.

Calculated results. m_N: actual number of stages (Gilliland). m_Nmin: minimum number of stages (Fenske). m_Rmin: minimum reflux ratio (Underwood). m_Tc, m_Tb: condenser and reboiler temperatures in K, set by the dynamic model from the holdup streams. m_Qc, m_Qb: condenser and reboiler duties, in kW. L, V: rectifying section liquid and vapor molar flows, in mol/s. L_, V_: stripping section liquid and vapor molar flows, in mol/s. ofs: optimum feed stage location, estimated as the number of stripping section stages (Fenske between feed and bottoms, scaled by m_N/m_Nmin).

public double m_Rmin
Public m_Rmin As Double

m_Tb: Calculated results.

Calculated results. m_N: actual number of stages (Gilliland). m_Nmin: minimum number of stages (Fenske). m_Rmin: minimum reflux ratio (Underwood). m_Tc, m_Tb: condenser and reboiler temperatures in K, set by the dynamic model from the holdup streams. m_Qc, m_Qb: condenser and reboiler duties, in kW. L, V: rectifying section liquid and vapor molar flows, in mol/s. L_, V_: stripping section liquid and vapor molar flows, in mol/s. ofs: optimum feed stage location, estimated as the number of stripping section stages (Fenske between feed and bottoms, scaled by m_N/m_Nmin).

public double m_Tb
Public m_Tb As Double

m_Tc: Calculated results.

Calculated results. m_N: actual number of stages (Gilliland). m_Nmin: minimum number of stages (Fenske). m_Rmin: minimum reflux ratio (Underwood). m_Tc, m_Tb: condenser and reboiler temperatures in K, set by the dynamic model from the holdup streams. m_Qc, m_Qb: condenser and reboiler duties, in kW. L, V: rectifying section liquid and vapor molar flows, in mol/s. L_, V_: stripping section liquid and vapor molar flows, in mol/s. ofs: optimum feed stage location, estimated as the number of stripping section stages (Fenske between feed and bottoms, scaled by m_N/m_Nmin).

public double m_Tc
Public m_Tc As Double

ofs: Calculated results.

Calculated results. m_N: actual number of stages (Gilliland). m_Nmin: minimum number of stages (Fenske). m_Rmin: minimum reflux ratio (Underwood). m_Tc, m_Tb: condenser and reboiler temperatures in K, set by the dynamic model from the holdup streams. m_Qc, m_Qb: condenser and reboiler duties, in kW. L, V: rectifying section liquid and vapor molar flows, in mol/s. L_, V_: stripping section liquid and vapor molar flows, in mol/s. ofs: optimum feed stage location, estimated as the number of stripping section stages (Fenske between feed and bottoms, scaled by m_N/m_Nmin).

public double ofs
Public ofs As Double

V: Calculated results.

Calculated results. m_N: actual number of stages (Gilliland). m_Nmin: minimum number of stages (Fenske). m_Rmin: minimum reflux ratio (Underwood). m_Tc, m_Tb: condenser and reboiler temperatures in K, set by the dynamic model from the holdup streams. m_Qc, m_Qb: condenser and reboiler duties, in kW. L, V: rectifying section liquid and vapor molar flows, in mol/s. L_, V_: stripping section liquid and vapor molar flows, in mol/s. ofs: optimum feed stage location, estimated as the number of stripping section stages (Fenske between feed and bottoms, scaled by m_N/m_Nmin).

public double V
Public V As Double

V_: Calculated results.

Calculated results. m_N: actual number of stages (Gilliland). m_Nmin: minimum number of stages (Fenske). m_Rmin: minimum reflux ratio (Underwood). m_Tc, m_Tb: condenser and reboiler temperatures in K, set by the dynamic model from the holdup streams. m_Qc, m_Qb: condenser and reboiler duties, in kW. L, V: rectifying section liquid and vapor molar flows, in mol/s. L_, V_: stripping section liquid and vapor molar flows, in mol/s. ofs: optimum feed stage location, estimated as the number of stripping section stages (Fenske between feed and bottoms, scaled by m_N/m_Nmin).

public double V_
Public V_ As Double