Direct Power Analysis (power)

Finding the amount of power required for the ship to travel at the same speed if it were in perfect conditions

The calculating of the power transmitted to the water correcting for environmental conditions is

\[P_{Did} = P_{Dms}-\Delta P,\] where \(P_{Dms}\) is the delivered power in the trial conditions, and \(\Delta P\) is the correction of the delivered power taking into account the resistances and changes in propulsive power as a result of the trial conditions.

This section of the pyseatrials library is concerned with deriving the values needed for this calculation

Some things should come with a bit more clarification e.g. ‘wake-fraction’, what is it?

1 Understanding the notation

There are severl sub-scripts used in this section which are useful to understand

There are four types of upper case letter used which require further explanation

  • D ‘Delivered’ used to differentiate types of power
  • M ‘Model’ used for values taken from a model of the ship in a tank test
  • R ‘Relative’ used to differentiate different types of efficiency
  • S ‘Full-scale’ used to distinguish from values derived from models

The lower case abreviations are

  • id refers to the ‘ideal condition’
  • ms refers to the ‘trial condition’

2 Correction delivered power

Calculates the power when correcting for the resistances experienced by the vessel as well as the deciation of propeller efficiency relative to ideal

\[\Delta P = \frac{\Delta R V_s}{\eta_{Did}}+ P_{Dms}(1-\frac{\eta_{Dms}}{\eta_{Did}}), \] where \(\Delta R\) is the total resitance increase experienced by the ship, \(V_s\) is the speed through water, \(\eta_{Did}\) is the propulsive efficiency coefficient in the ideal conditions, \(P_{Dms}\) is the shaft power during the test,\(\eta_{Dms}\) is the propulsive efficiency coefficient in the trial conditions.

The value for \(\Delta R\) is calculated as the some of the wind, wave, and water resistances. The functions for these values are found at wind_resistance, stawave1_fn, and temp_salinity_water_resistance

ITTC equations: J-2


source

2.1 correction_delivered_power

 correction_delivered_power (p_dms:float, resistance_increase:float,
                             stw:float, eta_id:float, eta_ms:float)

calculates the corrected delivered power, used as part of the direct power analysis

Type Details
p_dms float delivered power [W]
resistance_increase float Resistance increase derived from data measured in seatrial
stw float speed through water [m/s]
eta_id float propulsive efficiency in the ideal conditions
eta_ms float propulsive efficiency in the seattrial
Returns float Returns the corrected delivered power in Newtons [N]

Example of using function, generally this is not used directly

correction_delivered_power(1e4, 1e3, 10, 0.8, 0.7)
13750.000000000002

3 Propulsive efficiency correction

This can be used to calculate both the ideal and trial conditions reffered to in equations J-3 and J-5 \[\eta_D = \eta_o \eta_R \frac{1-t}{1-w_s} \]

ITTC equations J-3, J-5


source

3.1 propulsive_efficiency_corr

 propulsive_efficiency_corr (n_o:float, n_r:float, t:float, w_s:float)

Calculates propeller efficiency adjusting for additional resistances

Type Details
n_o float open water efficiency
n_r float relative rotative efficiency
t float thrust deduction factor
w_s float full-scale wake fraction
propulsive_efficiency_corr(0.58, 0.7, 0.1, 0.5)
0.7308

4 Full scale wake fraction

There are two different functions related to the full scale wake fraction, both are presented in this sub-section.

The two related but distinct values are

  • \(w_{S}\): Full-scale wake fraction using model
  • \(w_{S}\): Full-scale wake fraction using speed
  • \(e_i\) Scale correlation factor of the wake faction

4.1 The full scale wake fraction

\[w_S = 1- (1- w_M)e_i,\] where \(W_S\) is the fullscale wake fraction, \(W_m\) is the model wake fraction derived from tank tests, and \(e_i\) is the scale correlation factor derived from XXXX derived from what?.

ITTC equation: J-4, J-20


source

4.2 full_scale_wake_fraction

 full_scale_wake_fraction (wake_fraction_model:float,
                           scale_correlation_factor:float)

used to scale from model results to full-scale vessel

The full scale wake fracrtion returns a value between 0 and 1

full_scale_wake_fraction(0.4, 0.8)
0.52

4.3 Full-scale wake fraction from speed

This approach calculates the wake fraction using the measured water speeds

\[w_S =1- \frac{V_A}{V_S},\] where \(V_A\) is the speed of flow into the propeller, and \(V_S\) is the ship’s speed through water.

ITTC equations: J-17


source

4.4 full_scale_wake_speed

 full_scale_wake_speed (flow_speed:float, stw:float)

Calculate the wake fraction using the measured water speeds

Type Details
flow_speed float The speed of flow through the propeller
stw float Ship’s speed through water
Returns float

This approach to obtianing the full scale wake speed is typically used for getting the trial conditions

full_scale_wake_speed(10,50)
0.8

4.5 Scale correlation factor

The scale correlation factor is simply the re-arranged fullscale wake fraction. And is shown as

\[e_i = \frac{1-w_S}{1-w_M},\] where values are the same as previously.

ITTC equation: J-21


source

4.6 scale_correlation_factor

 scale_correlation_factor (trial:float, model:float)

Calcualte the scale correlation factor using the model fraction from tank tests, and the full-scale fraction from trials

Type Details
trial float The full-scale wake fraction in the trial
model float The wake fraction of the model derived from tank tests
Returns float The dimensionless coefficient joining the full scale and model fractions

Deriving the scale correlation factor is easy given the inputs

scale_correlation_factor(0.6,0.8)
2.0000000000000004

5 Self propulsion factors

This function allows for ship factors to be adjust accounting for the difference between ideal/model conditions and the conditions during the trial. This function is equivalent to equation J-6 to J-8. The function is essentially the following equation

\[x_{test} = x_{ideal} + \Delta x_R (\frac{\Delta R}{R_{ideal}}),\] Where \(x\) is the variable to be adjusted \(x_{ideal}\) is the value of the variable under ideal conditions, \(\Delta x_R\) the coefficient of of change for each unit of \(\frac{\Delta R}{R_{ideal}}\), \(\Delta R\) the resistance increase derived from data measured during the sea trial and \(R_{ideal}\) is the resistance under ideal conditions. The values of \(x_{ideal}\) are obtained from a model test. The value of \(\Delta x_R\) is found by fitting a linear model using data gathered during a specific tank tests. The process of obtaining the value of \(x_R\) is described in detail in section J.2.

In practice however, these sets of values are not needed as the deviations are often negligable in comparison to the variation of \(\eta_O\). That using \[ x_{test} \approx x_{ideal},\] is acceptable

ITTC equations: J-6, J-7, J-8


source

5.1 self_propulsion_factors

 self_propulsion_factors (x_ideal:float, delta_x:float=0, delta_r:float=1,
                          delta_r_ideal:float=1)

Adjusting the self propulsion factors is only possible if the required model tests have been performed. By default this function returns the ideal value

Type Default Details
x_ideal float The variable in ideal conditions. It is acceptable to use this value without adjustments
delta_x float 0 The change per unit of the resistance ratios. Default is 0
delta_r float 1 increase in resistance from ideal conditions
delta_r_ideal float 1 Resistance in ideal conditions
Returns float

Generally the adjustment for the self propulsion factors will be small. But if available should be applied

self_propulsion_factors(0.8, 0.1, 1000, 10000)
0.81

6 Calculate Thrust coefficient, Torque coefficient, and Load factor

The thrust coefficient, torque coefficient and the load factor provide useful values for calculating the adjusted propeller efficiency. There are several different approaches. All three approaches are described in this sub-section and are used at various points in the process.

The different approaches are

  • The inverse quadratic method
  • The quadractic method
  • Torque coefficient from water conditions
  • Load factor using propeller advance and thrust
  • Load factor using resistance

6.1 The inverse quadratic method

The inverse quadratic method doesn’t actually calculate the coefficients themselves but using them as the dependent variable of a quadratic curve where the dependent variable is the propeller advance coefficient in the ideal condition. The result is that the coefficients of the quadratic curve can be either be solved to find the point closest to 0 where the line crosses the x-axis. Alternatively the quadratic coefficients are used replacing the propeller advance coefficients in the ideal condition with those of the trial condition, this creates a quadratic equation that return the thrust coefficient in the trial condition. The propeller advance coefficients in the ideal condition are provided by tank tests, usually 10 data points are supplied in order to fit the curve

\[y = aX^2 + bX +c\]

The coefficients of this model (\(a,b,c\)) are not useful inthemselves but are input parameters to other functions for example torque_coef

The equation is also used to calculate the thrust coefficient in the trial condition/

ITTC equations: J-9, J-10, J-11, J-25, J-26


source

6.2 get_curve_coefficient

 get_curve_coefficient (y:float, x:float)

Obtain the coefficients used to calculate the Thrus, and Torque coefficients and the load factor coefficients

Type Details
y float An array containing the dependent variable coefficient
x float An array containing the propeller advance coefficient
Returns float Returns an array containing model coefficients

For ship whose model tests give a propeller advance coefficient to thrust coefficent \(K\) relationship as shown below, we can (back) calculate the coefficients of the quadratic formula using the get_curve_coefficient function.

J = np.linspace(1,10, 10)
K = J**2 + 2*J +3 #In reality we obviously do not know the coefficients before hand!
get_curve_coefficient(K, J)
array([1., 2., 3.])

When calculating the loading factor coefficients \(\tau\) the values for the propeller advance coefficient needs to be inverted

J = 1/np.linspace(1,10, 10)
K = J**2 + 2*J +3 #In reality we obviously do not know the coefficients before hand!
get_curve_coefficient(K, J)
array([1., 2., 3.])

6.3 The quadratic method

The quadratic method assumes you have obtained the coefficients using the inverse quadratic method described previously. This approach simply plugs the value of propeller advance (\(J\)) into the equation to return the value of the target coefficients/ factor. This is typically used to calculate the coefficents in the trial condition


source

6.4 quadratic_method

 quadratic_method (coefs:float, propeller_advance_coef:float)

Calculate the coefficient using a modelled quadratic curve

Type Details
coefs float An array of the coefficients created by the function get_curve_coefficient
propeller_advance_coef float The propeller advance coefficient
Returns float The target value for the coefficient types entered

The ITTC use the quadratic method to calculate the thrust coefficient \(K_{Qms}\) in the trial condition.

quadratic_method([1,2,3], 2)
11

6.5 Torque coefficient from propeller state

The torque coefficient is obtained using

\[K_Q = \frac{P}{2 \pi \rho n^3 D^5} \eta,\] Where \(P\) is power, \(n\) is rotations per second, \(D\) is shaft diameter and \(\eta\) is relative rotative efficiency.

Generally the torque coefficient for the ideal condition is known through tank tests. However, this equation is also used to find the thrust coeficient during the trial. When the trial thrust coefficient is calculated \(P\), \(n\), and \(\eta\) are all from trial data.

ITTC equations: J-12


source

6.6 torque_coef

 torque_coef (power:float, shaft_speed:float, diameter:float,
              efficiency:float, water_density:float=1026)

calcualte the torque coefficient under ideal or trial conditions

Type Default Details
power float The delivered power
shaft_speed float measure propeller shaft speed [rev/s]
diameter float properller_diameter [m]
efficiency float relative rotative efficiency
water_density float 1026 water density [kg/m^3]
Returns float dimensionless thrust coefficient

under trial conditions the thrust coefficient is calculated directly

torque_coef(1e4, 50, 1.5, 0.8)
1.3073637822066664e-06

6.7 Load factor using propeller advance and thrust

The load factor on the propeller can be calculate by

\[\tau_{P} = \frac{K_{T}}{J^2},\] where \(K_{T}\) is the thrust coefficient and \(J\) is the propeller advance coefficient. This approach is usally for finding \(\tau_{P}\) the trial condition

ITTC equations: J-18


source

6.8 load_factor

 load_factor (thrust_coefficient:float, propeller_advance:float)

Calculate the load factor using the thrust and propeller advance coefficients

Type Details
thrust_coefficient float The thrust coefficient
propeller_advance float The propeller advance coefficient
Returns float dimensionless load factor

The load factor on the propeller for the given ship conditions is a key element to calculating the corrected power delivered

load_factor(0.8, 5)
0.032

6.9 Load factor using resistance and propellor state

This approach to calculating the loading factors are \[ \tau = \frac{R}{(1- t)(1-w_S)^2 \rho V^2_S D^2},\] where \(R\) is the total resistance, \(t\) is the thrust deduction factor, \(w_S4\) is the full-scale wake fraction, \(\rho\) is the water density, \(V_S\) is the ship speed through water, and \(D\) is the diameter of the propeller. This equation is the same as total_resistance but re-arranged to find \(\tau\).

ITTC equations: J-23


source

6.10 load_factor_resistance

 load_factor_resistance (resistance:float, thrust_deduction:float,
                         wake_fraction:float, stw:float, diameter:float,
                         water_density:float=1026)

Calculate the load factor of the propeller. Usually used to find the load factor in the ideal condition

Type Default Details
resistance float The total resistance experienced by the vessel
thrust_deduction float The thrust deduction factor
wake_fraction float The full-scale wake fraction
stw float Ships speed through water [m/s]
diameter float The diameter of the ships propeller
water_density float 1026 density of water in the given conditions [kg/m^3]
Returns float this value can be in the ideal condition or trial depending on parameters used

The load factor using resistance allow the load factor in the ideal condition to be calculated using only basic information

load_factor_resistance(1e4, 0.7, 0.8, 10, 2.3, 1026)
1.5353794413921111

7 Trial propeller advance

The propeller advance coefficient for the trial conditions can be calculated by factorising the coefficients of the quadratic curve founs using get_curve_coefficient. The factorisation is the standard quadratic method using

\[J = \frac{-b - \sqrt{b^2 -4a(c - K_Q)}}{2a},\] or \[J = \frac{-b - \sqrt{b^2 -4(a- \tau)c}}{2(a- \tau)},\] where \(a,b,\) and \(c\) are the ouput coefficients from get_curve_coefficient and \(K_Q\) is the torque coefficient calculated using torque_coef, and \(\tau\) is the load factor. Note that the propeller advance is only the negative part of the quadratic equation as properller advance must always be positive. This equation is used to derive the propeller advance coefficient from empirical measurements.

ITTC equations: J-13, J-24


source

7.1 propeller_advance_coefficient

 propeller_advance_coefficient (propeller_value:float, a:float, b:float,
                                c:float, mode:str)

Calculate the propeller advance coefficient using a quadratic curve

Type Details
propeller_value float The torque coefficient or loading factor as appropriate
a float coefficient ‘a’ from get_curve_coefficient
b float coefficient ‘b’ from get_curve_coefficient
c float coefficient ‘c’ from get_curve_coefficient
mode str Does function use torque or load mode?
Returns float

The propeller advance can then be calcualted by combining outputs of the previous functions get_curve_coefficient and torque_coef as inputs to propeller_advance_coefficient.

#These values are obviously not realistic
J = np.linspace(1,10, 10)
K = 2*J**2 + -5*J +3 #In reality we obviously do not know the coefficients before hand!
curve_coefs = get_curve_coefficient(K, J)
trial_torque_coef = torque_coef(1e4, 50, 1.5, 0.8)
propeller_advance_coefficient(trial_torque_coef, curve_coefs[0], curve_coefs[1], curve_coefs[2], mode ='torque'  )
0.9999986926396782

Remember when calulating the propeller advance using load factors the coefficients used are not those from the load quadratic method but from Thrust

#when I have some example data show that thrust is used not torque

propeller_advance_coefficient(trial_torque_coef, curve_coefs[0], curve_coefs[1], curve_coefs[2], mode ='load'  )
0.9999986926430968
propeller_advance_coefficient(0, 2, -5, 3, mode = "load" )
1.0

8 Open water efficiency

The efficiency of the properller in open water can be calcualted using

\[\eta_O = \frac{J}{2 \pi}\frac{K_T}{K_Q},\] where J is the propeller advance coefficient, \(K_T\) is the thrust coefficient, and \(K_Q\) is the torque coefficient. It can be used for calulating both the trial conditions, but is typically used for trial conditions as the ideal conditions are known from tank tests.

ITTC equations: J-15, J-27


source

8.1 open_water_efficiency

 open_water_efficiency (propeller_advance_coef:float, thrust_coef:float,
                        torque_coef:float)

Calculate the open water propeller efficiency

Type Details
propeller_advance_coef float The propeller advance coefficient of the ship
thrust_coef float thrust coefficient
torque_coef float
Returns float

The proppeller open water efficiency for a ship with a propeller advance coefficent of 5, thrust coefficent of 0.8 and torque coefficient of 0.9. Is shown below

open_water_efficiency(5, 0.8, 0.9)
0.707355302630646

9 Speed of flow into the propeller

The rate at which water flows past the propeller is given by

\[V_A = JnD,\] where \(J\) is the propeller advance coefficient, \(n\) is the rotations per second, and \(D\) is the diameter of the propeller. When calculating the speed under trial conditions the propeller advance coefficieant can be found using propeller_advance_coefficient

ITTC equations: J-16


source

9.1 propeller_flow

 propeller_flow (propeller_advance_coef:float, rotations_sec:float,
                 diameter:float)

Calculate speed of water flow into the propeller

Type Details
propeller_advance_coef float Propeller advance coefficient [n/a]
rotations_sec float propeller rotations per second [rev/sec]
diameter float Diamter of the propeller [m]
Returns float The value that comes out is in m3/s WHAT ARE THE UNITS?

really the propeller advance coefficient function is just a simple wrapper around the product of three values

propeller_flow(5, 30, 2)
300

10 Total Resistance

The total resistance (R) encountered by a ship system can be calculated using the following formula:

\[R = \tau(1- t)(1-w_S)^2 \rho V^2_S D^2,\] where \(\tau\) is the loading factor, \(t\) is the thrust deduction factor, \(w_S4\) is the full-scale wake fraction, \(\rho\) is the water density, \(V_S\) is the ship speed through water, and \(D\) is the diameter of the propeller. This equation is typically used to calculate the resistance in the trial conditions and is the same as load_factor_resistance but rearranged to get \(R\). It should be noted that the equation is analogous to calculating propeller thrust under stable conditions, as such the equation assumes a single propeller. In cases where multiple identical propellers are present, the total resistance can be calculated as follows: \(R = \sum_1^m R_i = R_i * m\), where \(R_i\) is the total resistance of a single propeller and \(m\) is the total number of propellers (usually two)

The total resistance in the trial conditions is used to calculate the resistance in the ideal conditions, using the following formula.\[R_{id} = R_{ms} - \Delta R,\] where \(R_{ms}\) is the resistance in the trial conditions, \(\Delta R\) is the resistance created by the wind, wave, and water.

ITTC equations: J-19


source

10.1 total_resistance

 total_resistance (load_factor:float, thrust_deduction:float,
                   wake_fraction:float, stw:float, diameter:float,
                   water_density:float=1026)

Calculate the total resistance of the ship. Used to find the resistance in the ideal condition

Type Default Details
load_factor float The load factor
thrust_deduction float The thrust deduction factor
wake_fraction float The full-scale wake fraction
stw float Ships speed through water [m/s]
diameter float The diameter of the ships propeller
water_density float 1026 density of water in the given conditions [kg/m^3]
Returns float this value can be in the ideal condition or trial depending on parameters used

total resistance of the ship ultimately decides it’s maximum speed and the fuel consumption it has at a given speed

total_resistance(5, 0.7, 0.8, 10, 2.3, 1026)
32565.23999999998

11 Corrected propeller shaft speed

The corrected propeller shaft speed is \[n = \frac{V_S(1-w_{S})}{JD},\] where \(V_s\) is the speed of the vessel, \(w_S\) is the full-scale wake fraction, \(J\) is the propeller advance coefficient in the ideal condition, and \(D\) is the diameter of the propeller. This equation is is a re-arranged version of propeller_flow with the substitution \(V_A = V_S (1-w_S)\)

ITTC equations: J-28


source

11.1 propeller_speed

 propeller_speed (propeller_advance_coef:float, stw:float, diameter:float,
                  wake_fraction:float)

Calculate the propeller speed in m/s

Type Details
propeller_advance_coef float Propeller advance coefficient [n/a]
stw float The speed through water of the vessel [m/s]
diameter float Diamter of the propeller [m]
wake_fraction float The full scale wake fraction
Returns float Propeller speed in rotations per second

Once calculated propeller speed can be inserted into the beggining of the calculation process to iterate the model to convergence and find the final value for \(\Delta P\)

propeller_speed(2, 10, 2, 0.5)
1.25

12 Power in the ideal conditions

After finding all the intermediary stages the final corrected power values can be calcualted. \[P_{Did} = P_{Dms} - \Delta P\]

The calulation of these values is broken into two stages

  • Trial: The calculations needed to get all the values relating to and required for values ‘in the trial condition’
  • Ideal: The calculations needed to get all the values relating to and required for values ‘in the ideal condition’

The trial values are calculated first then the results are used to calculate the ideal values. once both phases have been completed the delivered power in the ideal condition can be found.

12.1 Calculate values in the trial condition


source

12.2 calculate_all_values_from_trial_phase

 calculate_all_values_from_trial_phase (V_s:float, P_dms:float,
                                        eta_ms:float, delta_R:float,
                                        delta_eta:float, delta_t:float,
                                        delta_w:float, shaft_speed:float,
                                        diameter:float, t_Rid:float,
                                        w_Mid:float, number_shafts:float,
                                        K_T, K_Q, J,
                                        water_density:float=1026)

Perform all the calculations to get the ‘trials conditions’ values

Completing the trial phase values returns a dictionary of values. If vectors are entered instead of floats then a dictionary of arrays is returned. Using this structure makes converting the output of the function in a pandas dataframe straightforword.

As the output is all scalers an index must be passed to the dataframe commend. The index be the same length as the vectors returned by calculate_all_values_from_trial_phase.

trial_values, K_coeffs = calculate_all_values_from_trial_phase(
            V_s = 8.8,
            P_dms = 13500,
            eta_ms = 1.018,
            delta_R = -44000,
            delta_eta  = 0,
            delta_t = 0,
            delta_w = 0,
            shaft_speed = 1.35, 
            diameter =6,
            number_shafts = 2,
            water_density = 1023,
            t_Rid = 0.2,
            w_Mid = 0.24,
            J = np.linspace(0.3, 0.85, 12),
            K_T = np.asarray([0.30, 0.27, 0.26, 0.24, 0.21, 0.20, 0.195, 0.17, 0.15, 0.13, 0.09, 0.08]),
            K_Q = np.asarray([0.38,0.36,0.34,0.32,0.30,0.28,0.26,0.23,0.21,0.20,0.16,0.13])/10
)

pd.DataFrame(trial_values, index = [0])
K_Qms J_ms K_Tms tau_Pms V_A w_Sms R_ms R_id eta_Oms eta_Rms t_ms w_Mms eta_Dms e_ims w_Sid
0 0.000056 1.084483 -0.032797 -0.027887 8.78431 0.001783 -126796.729393 -82796.729393 -101.3081 1.018 0.2 0.24 -82.652683 1.313443 0.001783

12.3 Calculate values in the ideal condition


source

12.4 calculate_all_values_from_ideal_phase

 calculate_all_values_from_ideal_phase (V_s:float, P_dms:float,
                                        delta_R:float, diameter:float,
                                        number_shafts:float, t_Rid:float,
                                        R_id:float, eta_Rms:float,
                                        eta_Dms:float, w_Sid:float,
                                        K_T_coeffs, K_Q_coeffs,
                                        water_density:float=1026)

intermediary function that calculates all the values in the ideal condition

In most cases the function will take the output of calculate_all_values_from_trial_phase. However there may be cases where some variables will be substituted. In the case below the total resistance in the ideal condition \(R_{id}\) has been repplaced with another value with the rest of the values unchanged

ideal_values = calculate_all_values_from_ideal_phase(
            V_s = 8.8,
            P_dms = 13500,
            delta_R = -44000,
            diameter =6,
            number_shafts = 2,
            t_Rid = 0.2,
            R_id= 1.4e6, #trial_values['R_id'], #R_id is replaced with a different value 
            eta_Rms=trial_values['eta_Rms'],
            eta_Dms=trial_values['eta_Dms'],
            w_Sid=trial_values['w_Sid'],
            K_T_coeffs =  K_coeffs[0],
            K_Q_coeffs =  K_coeffs[1],
            water_density = 1026
)
ideal_values
{'tau_Pid': 0.5608892942446079,
 'J_id': 0.5839954628056303,
 'K_Tid': 0.19129168674857802,
 'K_Qid': 0.026521344043699324,
 'eta_Oid': 0.6703940820835084,
 'n_id': 1.8547261579189114,
 'eta_Did': 0.7392819259246924,
 'delta_P': 300871.69313356787}

However, it should be remembered that data can be entered as an array resulting with an array being returned. Also remember that the functions will perform broadcasting automatically.

ideal_values = calculate_all_values_from_ideal_phase(
            V_s = 8.8,
            P_dms = 13500,
            delta_R = -44000,
            diameter =6,
            number_shafts = 2,
            t_Rid = 0.2,
            R_id= np.array([1.8e6, 1.4e6, trial_values['R_id'] ]),
            eta_Rms=trial_values['eta_Rms'],
            eta_Dms=trial_values['eta_Dms'],
            w_Sid=trial_values['w_Sid'],
            K_T_coeffs =  K_coeffs[0],
            K_Q_coeffs =  K_coeffs[1],
            water_density = 1026
)

pd.DataFrame(ideal_values, index = [0,1,2])
tau_Pid J_id K_Tid K_Qid eta_Oid n_id eta_Did delta_P
0 0.721143 0.538156 0.208851 0.028523 0.627159 2.012711 0.691604 320682.544239
1 0.560889 0.583995 0.191292 0.026521 0.670394 1.854726 0.739282 300871.693134
2 -0.009672 1.039962 -0.010461 0.002753 -0.628948 1.041530 -0.693577 -292808.768684

12.5 Power delivered in the ideal condition

This function brings all the rest of the functions in this module together into a single function call. Generally it would be easiest to use this. However, in the case that iteration is necessary, creating a custom function with a loop would be better. Such functionality may added to the library later as its use is better understood


source

12.6 delivered_power_ideal_condition

 delivered_power_ideal_condition (V_s:float, P_dms:float, eta_ms:float,
                                  delta_R:float, delta_eta:float,
                                  delta_t:float, delta_w:float,
                                  shaft_speed:float, diameter:float,
                                  t_Rid:float, w_Mid:float,
                                  number_shafts:float, K_T, K_Q, J,
                                  water_density:float=1026)

Calculate the delivered power in the Ideal conditions

Type Default Details
V_s float
P_dms float
eta_ms float
delta_R float
delta_eta float
delta_t float
delta_w float
shaft_speed float
diameter float
t_Rid float
w_Mid float
number_shafts float
K_T
K_Q
J
water_density float 1026 returns three results ideal_values, trial_values and the K coefficients

Although this function produces a lot of output. Most can be ingored or used for checking results.

ideal_values, trial_values, K_coeffs = delivered_power_ideal_condition(
            V_s = 8.8,
            P_dms = 13500,
            eta_ms = 1.018,
            delta_R = -44000,
            delta_eta  = 0,
            delta_t = 0,
            delta_w = 0,
            shaft_speed = 1.35, 
            diameter =6,
            number_shafts = 2,
            water_density = 1023,
            t_Rid = 0.2,
            w_Mid = 0.24,
            J = np.linspace(0.3, 0.85, 12),
            K_T = np.asarray([0.30, 0.27, 0.26, 0.24, 0.21, 0.20, 0.195, 0.17, 0.15, 0.13, 0.09, 0.08]),
            K_Q = np.asarray([0.38,0.36,0.34,0.32,0.30,0.28,0.26,0.23,0.21,0.20,0.16,0.13])/10
)

ideal_values
{'tau_Pid': -0.018209572919191754,
 'J_id': 1.0600094727983314,
 'K_Tid': -0.02046064182433527,
 'K_Qid': 0.0015466896077949155,
 'eta_Oid': -2.2317521577870694,
 'n_id': 1.3811684700285562,
 'eta_Did': -1.8207853408921804,
 'delta_P': -386663.16162853956}

13 How it all hangs together

The relationships between the direct power equations are pretty complicated. The below flow diagram can help understand how it all hangs together

flowchart LR
  A[Hard edge] --> B(Round edge)
  B --> C{Decision}
  C --> D[Result one]
  C --> E[Result two]

import nbdev; nbdev.nbdev_export()