correction_delivered_power(1e4, 1e3, 10, 0.8, 0.7)13750.000000000002
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?
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
The lower case abreviations are
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
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
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
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 |
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 = 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
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
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
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
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
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
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
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
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 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
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
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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\)
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
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.
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 |
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 |
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
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}
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]