added set steady state functionality
This commit is contained in:
@@ -33,6 +33,9 @@ class Ausgleichsbecken_class:
|
||||
velocity_unit_print = 'm/s'
|
||||
volume_unit_print = 'm³'
|
||||
|
||||
g = 9.81 # m/s²
|
||||
rho = 1000 # kg/m³
|
||||
|
||||
# init
|
||||
def __init__(self,area,outflux_area,level_min = 0,level_max = np.inf ,timestep = 1):
|
||||
self.area = area # base area of the rectangular structure
|
||||
@@ -67,6 +70,16 @@ class Ausgleichsbecken_class:
|
||||
self.pressure = pressure
|
||||
self.pressure_unit = pressure_unit
|
||||
self.pressure_unit_print = display_pressure_unit
|
||||
|
||||
def set_steady_state(self,ss_influx,ss_level,pressure_unit,display_pressure_unit):
|
||||
ss_outflux = ss_influx
|
||||
ss_outflux_vel = ss_outflux/self.area_outflux
|
||||
ss_pressure = self.rho*self.g*ss_level-ss_outflux_vel**2*self.rho/2
|
||||
|
||||
self.set_initial_level(ss_level)
|
||||
self.set_influx(ss_influx)
|
||||
self.set_outflux(ss_outflux)
|
||||
self.set_pressure(ss_pressure,pressure_unit,display_pressure_unit)
|
||||
# getter
|
||||
def get_info(self, full = False):
|
||||
new_line = '\n'
|
||||
|
||||
@@ -41,7 +41,7 @@ class Druckrohrleitung_class:
|
||||
self.n_seg = number_segments
|
||||
self.angle = pipeline_angle
|
||||
self.f_D = Darcy_friction_factor # = Rohrreibungszahl oder flow coefficient
|
||||
self.density = 1000
|
||||
self.rho = rho
|
||||
self.g = g
|
||||
|
||||
self.dx = total_length/number_segments
|
||||
@@ -89,8 +89,8 @@ class Druckrohrleitung_class:
|
||||
self.v_old = self.v0.copy()
|
||||
self.v = np.empty_like(self.v_old)
|
||||
|
||||
def set_boundary_conditions_next_timestep(self,v_reservoir,p_reservoir,v_turbine,input_unit_pressure = 'Pa'):
|
||||
rho = self.density
|
||||
def set_boundary_conditions_next_timestep(self,v_reservoir,p_reservoir,v_turbine):
|
||||
rho = self.rho
|
||||
c = self.c
|
||||
f_D = self.f_D
|
||||
dt = self.dt
|
||||
@@ -108,6 +108,14 @@ class Druckrohrleitung_class:
|
||||
self.p[0] = self.p_boundary_res.copy()
|
||||
self.p[-1] = self.p_boundary_tur.copy()
|
||||
|
||||
|
||||
def set_steady_state(self,ss_flux,ss_level_reservoir,pl_vec,h_vec,pressure_unit,display_pressure_unit):
|
||||
ss_v0 = np.full(self.n_seg+1,ss_flux/(self.dia**2/4*np.pi))
|
||||
ss_pressure = (self.rho*self.g*(ss_level_reservoir+h_vec)-ss_v0**2*self.rho/2)-(self.f_D*pl_vec/self.dia*self.rho/2*ss_v0**2)
|
||||
|
||||
self.set_initial_flow_velocity(ss_v0)
|
||||
self.set_initial_pressure(ss_pressure,pressure_unit,display_pressure_unit)
|
||||
|
||||
# getter
|
||||
def get_info(self):
|
||||
new_line = '\n'
|
||||
@@ -150,7 +158,7 @@ class Druckrohrleitung_class:
|
||||
def timestep_characteristic_method(self):
|
||||
#number of nodes
|
||||
nn = self.n_seg+1
|
||||
rho = self.density
|
||||
rho = self.rho
|
||||
c = self.c
|
||||
f_D = self.f_D
|
||||
dt = self.dt
|
||||
|
||||
@@ -31,4 +31,10 @@ class Francis_Turbine:
|
||||
LA_diff_max = self.d_LA_max_dt*timestep
|
||||
if abs(LA_diff) > LA_diff_max:
|
||||
LA_diff = np.sign(LA_diff)*LA_diff_max
|
||||
self.LA = self.LA-LA_diff
|
||||
self.LA = self.LA-LA_diff
|
||||
|
||||
def set_steady_state(self,ss_flux,ss_pressure):
|
||||
ss_LA = self.LA_n*ss_flux/self.Q_n*np.sqrt(self.p_n/ss_pressure)
|
||||
self.set_LA(ss_LA)
|
||||
if ss_LA < 0 or ss_LA > 1:
|
||||
print('LA out of range')
|
||||
|
||||
Reference in New Issue
Block a user