Skip to content

Commit

Permalink
feat: update flow rate adjuster (#1044)
Browse files Browse the repository at this point in the history
  • Loading branch information
Sviatose authored Jul 15, 2024
1 parent 579e8c1 commit b30c815
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ public class FlowRateAdjuster extends TwoPortEquipment {

int iterations = 0;
private boolean activateWhenLess = false;
Stream waterStream;
double waterDensity;

/**
* <p>
Expand Down Expand Up @@ -92,6 +94,17 @@ public void setAdjustedFlowRates(Double desiredGasFlow, Double desiredOilFlow,
this.unit = unit;
}

/**
* <p>
* setAdjustedVariable.
* </p>
*
*/
public void setAdjustedFlowRates(Double desiredGasFlow, Double desiredOilFlow, String unit){
this.setAdjustedFlowRates(desiredGasFlow, desiredOilFlow,
0.0, unit);
}

/** {@inheritDoc} */
@Override
public void run(UUID id) {
Expand All @@ -105,18 +118,25 @@ public void run(UUID id) {

SystemInterface gasFluid = adjustedFluid.phaseToSystem("gas").clone();
SystemInterface oilFluid = adjustedFluid.phaseToSystem("oil").clone();
SystemInterface waterFluid = adjustedFluid.phaseToSystem("aqueous").clone();

double temperature = inStream.getTemperature("C");
double pressure = inStream.getPressure("bara");

if (desiredWaterFlow > 0.0){
SystemInterface waterFluid = adjustedFluid.phaseToSystem("aqueous").clone();
waterFluid.initPhysicalProperties();
waterDensity = waterFluid.getDensity("kg/m3");

waterStream = new Stream("Water Stream", waterFluid);
waterStream.setTemperature(temperature, "C");
waterStream.setPressure(pressure, "bara");

}
gasFluid.initPhysicalProperties();
oilFluid.initPhysicalProperties();
waterFluid.initPhysicalProperties();

double oilDensity = oilFluid.getDensity("kg/m3");
double waterDensity = waterFluid.getDensity("kg/m3");

double temperature = inStream.getTemperature("C");
double pressure = inStream.getPressure("bara");
double oilDensity = oilFluid.getDensity("kg/m3");

Stream gasStream = new Stream("Gas Stream", gasFluid);
gasStream.setTemperature(temperature, "C");
Expand All @@ -126,27 +146,31 @@ public void run(UUID id) {
oilStream.setTemperature(temperature, "C");
oilStream.setPressure(pressure, "bara");

Stream waterStream = new Stream("Water Stream", waterFluid);
waterStream.setTemperature(temperature, "C");
waterStream.setPressure(pressure, "bara");

if (unit.equals("Sm3/hr")) {
gasStream.setFlowRate(desiredGasFlow, unit);
oilStream.setFlowRate(desiredOilFlow * oilDensity, "kg/hr");
waterStream.setFlowRate(desiredWaterFlow * waterDensity, "kg/hr");
if (desiredWaterFlow > 0.0){
waterStream.setFlowRate(desiredWaterFlow * waterDensity, "kg/hr");
}
} else {
gasStream.setFlowRate(desiredGasFlow, unit);
oilStream.setFlowRate(desiredOilFlow, unit);
if (desiredWaterFlow > 0.0){
waterStream.setFlowRate(desiredWaterFlow, unit);
}
}
gasStream.run();
oilStream.run();
if (desiredWaterFlow > 0.0){
waterStream.run();
}

Mixer wellStramMixer = new StaticMixer("Stream mixer");
wellStramMixer.addStream(gasStream);
wellStramMixer.addStream(oilStream);
if (desiredWaterFlow > 0.0){
wellStramMixer.addStream(waterStream);
}
wellStramMixer.run();

outStream.setThermoSystem(wellStramMixer.getOutletStream().getFluid());
Expand Down
20 changes: 13 additions & 7 deletions src/main/java/neqsim/thermo/component/Component.java
Original file line number Diff line number Diff line change
Expand Up @@ -499,13 +499,19 @@ public Component clone() {
@Override
public void addMolesChemReac(double dn, double totdn) {
if (numberOfMoles + totdn < 0 || numberOfMolesInPhase + dn < 0) {
String msg = "will lead to negative number of moles of component in phase for component "
+ getComponentName() + " who has " + numberOfMolesInPhase
+ " in phase and chage request was " + dn;
neqsim.util.exception.InvalidInputException ex =
new neqsim.util.exception.InvalidInputException(this, "addMolesChemReac", "dn", msg);
throw new RuntimeException(ex);
// logger.error(ex.getMessage());
if (Math.abs(dn) < 1e-12){
dn = 0;
totdn = 0;
}
else{
String msg = "will lead to negative number of moles of component in phase for component "
+ getComponentName() + " who has " + numberOfMolesInPhase
+ " in phase and chage request was " + dn;
neqsim.util.exception.InvalidInputException ex =
new neqsim.util.exception.InvalidInputException(this, "addMolesChemReac", "dn", msg);
throw new RuntimeException(ex);
// logger.error(ex.getMessage());
}
}
numberOfMoles += totdn;
numberOfMolesInPhase += dn;
Expand Down

0 comments on commit b30c815

Please sign in to comment.