@@ -575,10 +575,6 @@ def _set_pknl_results(self,
575575
576576 vel_units_in = in_units ['velocity' ]
577577 q_units_in = in_units ['dynamic_pressure' ]
578- if _is_q_units_consistent (density_units_in , vel_units_in , q_units_in ):
579- q = 0.5 * rho * vel ** 2
580- else : # pragma: no cover
581- raise NotImplementedError ((density_units_in , vel_units_in , q_units_in ))
582578
583579 # eas = (2 * q / rho_ref)**0.5
584580 # eas = V * sqrt(rho / rhoSL)
@@ -590,27 +586,35 @@ def _set_pknl_results(self,
590586 altitude_units = in_units ['altitude' ]
591587
592588 # print('density_units_in=%r density_units2=%r' % (density_units_in, density_units2))
593- kdensityi = convert_density (1. , density_units_in , 'slug/ft^3' )
594-
595589 resultsi = results [:, :, :9 ]
596590 assert resultsi .shape [2 ] == 9 , resultsi .shape
597591
598- rho_in_slug_ft3 = rho * kdensityi
592+ rho_in_slug_ft3 = rho_ref * rho
599593 ft_to_alt_unit = convert_altitude (1. , 'ft' , altitude_units )
600594 if self .make_alt :
595+ nrho = len (rho )
601596 alt_ft = []
602597 for idensity , densityi in enumerate (rho_in_slug_ft3 .ravel ()):
603598 try :
604599 alt_fti = get_alt_for_density (densityi , density_units = 'slug/ft^3' ,
605- alt_units = 'ft' , nmax = 20 )
600+ alt_units = 'ft' , nmax = 50 )
606601 except Exception :
607- raise RuntimeError (f'failed to find altitude for density[{ idensity } ]='
608- f'{ rho .ravel ()[idensity ]:g} ; density_units_in={ density_units_in !r} ' )
602+ raise RuntimeError (f'Case { idensity + 1 } /{ nrho } : failed to find altitude for density='
603+ f'{ rho .ravel ()[idensity ]:g} ; density_units_in={ density_units_in !r} ({ densityi :g} slug/ft^3)\n '
604+ ' output_rho_range = rho_ref * input_rho_range\n '
605+ f' rho_ref: { rho_ref :g} { density_units_in } \n '
606+ f' input_rho_range: [{ rho .min ():g} , { rho .max ()} ]\n '
607+ f' => output_rho_range: [{ rho_in_slug_ft3 .min ():g} , { rho_in_slug_ft3 .max ()} ] slug/ft^3' )
609608 alt_ft .append (alt_fti )
610609 alt = np .array (alt_ft , dtype = rho .dtype ).reshape (vel .shape ) * ft_to_alt_unit
611610 else :
612611 alt = np .full (vel .shape , np .nan , dtype = vel .dtype )
613612
613+ # get dynamic pressure
614+ if _is_q_units_consistent (density_units_in , vel_units_in , q_units_in ):
615+ q = 0.5 * rho * vel ** 2
616+ else : # pragma: no cover
617+ raise NotImplementedError ((density_units_in , vel_units_in , q_units_in ))
614618 results2 = np .dstack ([resultsi , eas , q , alt ])
615619 # results2[:, :, self.idensity] = rho
616620 return results2
@@ -809,6 +813,9 @@ def get_flutter_crossings(self,
809813 easi , dampi , freqi = remove_eas_range (
810814 easi , dampi , freqi , eas_range )
811815
816+ if len (freqi ) == 0 :
817+ continue
818+
812819 for damping_targeti , damping_requiredi in damping_crossings_dict .items ():
813820 if dampi .max () < damping_requiredi :
814821 continue
@@ -1796,6 +1803,8 @@ def plot_vg_vf(self, fig=None, damp_axes=None, freq_axes=None,
17961803 vel_calc , damping_calc , freq_calc = remove_eas_range (
17971804 vel , damping , freq , eas_range )
17981805
1806+ if len (freq ) == 0 :
1807+ continue
17991808 jcolor , color , linestyle2 , symbol2 , texti , is_removedi = _increment_jcolor (
18001809 mode , jcolor , color , linestyle , symbol ,
18011810 freq , damping , freq_tol = freq_tol , freq_tol_remove = freq_tol_remove ,
@@ -3653,14 +3662,22 @@ def _get_divergence(self,
36533662 dampi = self .results [imode , :, self .idamping ].flatten ()
36543663 easi = self .results [imode , :, self .ieas ].flatten ()
36553664 freqi = self .results [imode , :, self .ifreq ].flatten ()
3656-
36573665 easi , dampi , freqi = remove_excluded_points (
36583666 easi , dampi , freqi , point_removal )
36593667 easi , dampi , freqi = remove_eas_range (
36603668 easi , dampi , freqi , eas_range )
36613669
3670+ if len (freqi ) == 0 :
3671+ continue
3672+
36623673 for freq_targeti , freq_requiredi in freq_crossings_dict .items ():
3663- if freqi .min () > freq_requiredi :
3674+ try :
3675+ freqi_min = freqi .min ()
3676+ except :
3677+ warnings .warn (f'mode={ mode } ; freqi={ freqi } ' )
3678+ raise
3679+
3680+ if freqi_min > freq_requiredi :
36643681 continue
36653682
36663683 # dfreq sign is flipped because get_zero_crossings
0 commit comments