@@ -767,7 +767,13 @@ def __simulate(self, verbose):
767767 callbacks = [
768768 lambda self , parachute_cd_s = parachute .cd_s : setattr (
769769 self , "parachute_cd_s" , parachute_cd_s
770- )
770+ ),
771+ lambda self , parachute_radius = parachute .radius : setattr (
772+ self , "parachute_radius" , parachute_radius
773+ ),
774+ lambda self , parachute_porosity = parachute .porosity : setattr (
775+ self , "parachute_porosity" , parachute_porosity
776+ ),
771777 ]
772778 self .flight_phases .add_phase (
773779 node .t + parachute .lag ,
@@ -1013,7 +1019,13 @@ def __simulate(self, verbose):
10131019 lambda self ,
10141020 parachute_cd_s = parachute .cd_s : setattr (
10151021 self , "parachute_cd_s" , parachute_cd_s
1016- )
1022+ ),
1023+ lambda self , parachute_radius = parachute .radius : setattr (
1024+ self , "parachute_radius" , parachute_radius
1025+ ),
1026+ lambda self , parachute_porosity = parachute .porosity : setattr (
1027+ self , "parachute_porosity" , parachute_porosity
1028+ ),
10171029 ]
10181030 self .flight_phases .add_phase (
10191031 overshootable_node .t + parachute .lag ,
@@ -1961,22 +1973,26 @@ def u_dot_parachute(self, t, u, post_processing=False):
19611973
19621974 # Get Parachute data
19631975 cd_s = self .parachute_cd_s
1976+ R = self .parachute_radius
1977+ porosity = self .parachute_porosity
1978+
19641979
19651980 # Get the mass of the rocket
19661981 mp = self .rocket .dry_mass
19671982
19681983 # Define constants
1969- ka = 1 # Added mass coefficient (depends on parachute's porosity)
1970- R = 1.5 # Parachute radius
1984+ ka = 1.068 * (1 - 1.465 * porosity - 0.25975 * porosity ** 2 + 1.2626 * porosity ** 3 )
19711985 # to = 1.2
19721986 # eta = 1
19731987 # Rdot = (6 * R * (1 - eta) / (1.2**6)) * (
19741988 # (1 - eta) * t**5 + eta * (to**3) * (t**2)
19751989 # )
19761990 # Rdot = 0
19771991
1992+ # tf = 8 * nominal diameter / velocity at line stretch
1993+
19781994 # Calculate added mass
1979- ma = ka * rho * (4 / 3 ) * np .pi * R ** 3
1995+ ma = ka * rho * (4 / 3 ) * np .pi * R ** 3 # ma = ka * rho * (4 / 3) * np.pi * R**2 * height
19801996
19811997 # Calculate freestream speed
19821998 freestream_x = vx - wind_velocity_x
@@ -1985,9 +2001,9 @@ def u_dot_parachute(self, t, u, post_processing=False):
19852001 free_stream_speed = (freestream_x ** 2 + freestream_y ** 2 + freestream_z ** 2 ) ** 0.5
19862002
19872003 # Determine drag force
1988- pseudo_drag = - 0.5 * rho * cd_s * free_stream_speed
2004+ pseudo_drag = - 0.5 * rho * cd_s * free_stream_speed # * Area
19892005 # pseudo_drag = pseudo_drag - ka * rho * 4 * np.pi * (R**2) * Rdot
1990- Dx = pseudo_drag * freestream_x
2006+ Dx = pseudo_drag * freestream_x # add eta efficiency for wake
19912007 Dy = pseudo_drag * freestream_y
19922008 Dz = pseudo_drag * freestream_z
19932009 ax = Dx / (mp + ma )
0 commit comments