-
Notifications
You must be signed in to change notification settings - Fork 40
Expand file tree
/
Copy pathPipeFlowSystem.java
More file actions
111 lines (101 loc) · 4.05 KB
/
PipeFlowSystem.java
File metadata and controls
111 lines (101 loc) · 4.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
package neqsim.fluidMechanics.flowSystem.onePhaseFlowSystem.pipeFlowSystem;
import java.util.UUID;
import neqsim.fluidMechanics.util.fluidMechanicsVisualization.flowSystemVisualization.onePhaseFlowVisualization.pipeFlowVisualization.PipeFlowVisualization;
import neqsim.thermo.system.SystemInterface;
/**
* <p>
* PipeFlowSystem class.
* </p>
*
* @author asmund
* @version $Id: $Id
*/
public class PipeFlowSystem
extends neqsim.fluidMechanics.flowSystem.onePhaseFlowSystem.OnePhaseFlowSystem {
private static final long serialVersionUID = 1000;
/**
* <p>
* Constructor for PipeFlowSystem.
* </p>
*/
public PipeFlowSystem() {}
/** {@inheritDoc} */
@Override
public void createSystem() {
thermoSystem.init(0);
thermoSystem.init(1);
flowLeg = new neqsim.fluidMechanics.flowLeg.pipeLeg.PipeLeg[this.getNumberOfLegs()];
for (int i = 0; i < getNumberOfLegs(); i++) {
flowLeg[i] = new neqsim.fluidMechanics.flowLeg.pipeLeg.PipeLeg();
}
flowNode =
new neqsim.fluidMechanics.flowNode.onePhaseNode.onePhasePipeFlowNode.onePhasePipeFlowNode[totalNumberOfNodes];
// System.out.println("nodes: " + totalNumberOfNodes);
flowNode[0] =
new neqsim.fluidMechanics.flowNode.onePhaseNode.onePhasePipeFlowNode.onePhasePipeFlowNode(
thermoSystem, this.equipmentGeometry[0]);
flowNode[0].initFlowCalc();
super.createSystem();
this.setNodes();
}
/** {@inheritDoc} */
@Override
public void init() {
for (int j = 0; j < getTotalNumberOfNodes(); j++) {
flowNode[j].initFlowCalc();
flowNode[j].setVelocityIn(this.flowNode[j].getVelocity());
}
for (int k = 0; k < getTotalNumberOfNodes() - 1; k++) {
this.flowNode[k].setVelocityOut(this.flowNode[k + 1].getVelocityIn());
}
}
/** {@inheritDoc} */
@Override
public void solveSteadyState(int type, UUID id) {
double[] times = {0.0};
display = new PipeFlowVisualization(this.getTotalNumberOfNodes(), 1);
getTimeSeries().setTimes(times);
SystemInterface[] systems = {flowNode[0].getBulkSystem()};
getTimeSeries().setInletThermoSystems(systems);
getTimeSeries().setNumberOfTimeStepsInInterval(1);
double[] outletFlowRates = {0.0, 0.0}; // this is not yet implemented
getTimeSeries().setOutletMolarFlowRate(outletFlowRates);
// SteadystateOnePhasePipeFlowSolver pipeSolve = new
// SteadystateOnePhasePipeFlowSolver(this, getSystemLength(),
// getTotalNumberOfNodes());
flowSolver =
new neqsim.fluidMechanics.flowSolver.onePhaseFlowSolver.onePhasePipeFlowSolver.OnePhaseFixedStaggeredGrid(
this, getSystemLength(), getTotalNumberOfNodes(), false);
flowSolver.setSolverType(type);
flowSolver.solveTDMA();
getTimeSeries().init(this);
display.setNextData(this);
calcIdentifier = id;
}
/** {@inheritDoc} */
@Override
public void solveTransient(int type, UUID id) {
getTimeSeries().init(this);
display =
new PipeFlowVisualization(this.getTotalNumberOfNodes(), getTimeSeries().getTime().length);
flowSolver.setDynamic(true);
flowSolver.setSolverType(type);
for (int i = 0; i < this.getTimeSeries().getTime().length; i++) {
getNode(0).setBulkSystem(this.getTimeSeries().getThermoSystem()[i]);
// getNode(0).getBulkSystem().setPressure();
getNode(0).initFlowCalc();
getNode(0).setVelocityIn(getNode(0).getVelocity());
flowNode[0].setVelocityOut(this.flowNode[0].getVelocity());
// flowNode[1].setVelocityIn(this.flowNode[0].getVelocity());
// flowNode[getTotalNumberOfNodes()-1].setVelocity(this.getTimeSeries().getOutletMolarFlowRates()[i]);
System.out.println("vel: " + this.flowNode[0].getVelocity());
getSolver().setTimeStep(this.getTimeSeries().getTimeStep()[i]);
// System.out.println("time step: " + i + " " +
// this.getTimeSeries().getTimeStep()[i]);
// System.out.println("time: " + i + " " + this.getTimeSeries().getTime()[i]);
flowSolver.solveTDMA();
display.setNextData(this, this.getTimeSeries().getTime(i));
}
calcIdentifier = id;
}
}