def create(self, n=1): # cautious! considering multiple created aircraft with same type super(OpenAP, self).create(n) actype = bs.traf.type[-1].upper() # check fixwing or rotor, default fixwing if not found if actype in self.coeff.actypes_rotor: self.lifttype[-n:] = coeff.LIFT_ROTOR self.mass[-n:] = 0.5 * (self.coeff.acs_rotor[actype]['oew'] + self.coeff.acs_rotor[actype]['mtow']) self.engnum[-n:] = int(self.coeff.acs_rotor[actype]['n_engines']) self.engpower[-n:] = self.coeff.acs_rotor[actype]['engines'][0][1] # engine power (kW) else: # convert to known aircraft type if actype not in self.coeff.actypes_fixwing: actype = 'A320' # populate fuel flow model es = self.coeff.acs_fixwing[actype]['engines'] e = es[list(es.keys())[0]] coeff_a, coeff_b, coeff_c = thrust.compute_eng_ff_coeff(e['ff_idl'], e['ff_app'], e['ff_co'], e['ff_to']) self.lifttype[-n:] = coeff.LIFT_FIXWING self.Sref[-n:] = self.coeff.acs_fixwing[actype]['wa'] self.mass[-n:] = 0.5 * (self.coeff.acs_fixwing[actype]['oew'] + self.coeff.acs_fixwing[actype]['mtow']) self.engnum[-n:] = int(self.coeff.acs_fixwing[actype]['n_engines']) self.ff_coeff_a[-n:] = coeff_a self.ff_coeff_b[-n:] = coeff_b self.ff_coeff_c[-n:] = coeff_c all_ac_engs = list(self.coeff.acs_fixwing[actype]['engines'].keys()) self.engthrust[-n:] = self.coeff.acs_fixwing[actype]['engines'][all_ac_engs[0]]['thr'] self.engbpr[-n:] = self.coeff.acs_fixwing[actype]['engines'][all_ac_engs[0]]['bpr'] # init drag polar coefficients if actype in self.coeff.dragpolar_fixwing.keys(): self.cd0_clean[-n:] = self.coeff.dragpolar_fixwing[actype]['cd0_clean'] self.cd0_gd[-n:] = self.coeff.dragpolar_fixwing[actype]['cd0_gd'] self.cd0_to[-n:] = self.coeff.dragpolar_fixwing[actype]['cd0_to'] self.cd0_ic[-n:] = self.coeff.dragpolar_fixwing[actype]['cd0_ic'] self.cd0_ap[-n:] = self.coeff.dragpolar_fixwing[actype]['cd0_ap'] self.cd0_ld[-n:] = self.coeff.dragpolar_fixwing[actype]['cd0_ld'] self.k[-n:] = self.coeff.dragpolar_fixwing[actype]['k'] else: self.cd0_clean[-n:] = self.coeff.dragpolar_fixwing['NA']['cd0_clean'] self.cd0_gd[-n:] = self.coeff.dragpolar_fixwing['NA']['cd0_gd'] self.cd0_to[-n:] = self.coeff.dragpolar_fixwing['NA']['cd0_to'] self.cd0_ic[-n:] = self.coeff.dragpolar_fixwing['NA']['cd0_ic'] self.cd0_ap[-n:] = self.coeff.dragpolar_fixwing['NA']['cd0_ap'] self.cd0_ld[-n:] = self.coeff.dragpolar_fixwing['NA']['cd0_ld'] self.k[-n:] = self.coeff.dragpolar_fixwing['NA']['k'] # append update actypes, after removing unkown types self.actypes[-n:] = [actype] * n
def create(self, n=1): # cautious! considering multiple created aircraft with same type super(OpenAP, self).create(n) actype = bs.traf.type[-n] # check fixwing or rotor, default fixwing if not found if actype in self.coeff.actypes_rotor: self.lifttype[-n:] = coeff.LIFT_ROTOR self.mass[-n:] = 0.5 * (self.coeff.acs_rotor[actype]['oew'] + self.coeff.acs_rotor[actype]['mtow']) self.engnum[-n:] = int(self.coeff.acs_rotor[actype]['n_engines']) self.engpower[-n:] = self.coeff.acs_rotor[actype]['engines'][0][ 1] # engine power (kW) else: # convert to known aircraft type if actype not in self.coeff.actypes_fixwing: actype = 'A320' # populate fuel flow model es = self.coeff.acs_fixwing[actype]['engines'] e = es[list(es.keys())[0]] coeff_a, coeff_b, coeff_c = thrust.compute_eng_ff_coeff( e['ff_idl'], e['ff_app'], e['ff_co'], e['ff_to']) self.lifttype[-n:] = coeff.LIFT_FIXWING self.Sref[-n:] = self.coeff.acs_fixwing[actype]['wa'] self.mass[-n:] = 0.5 * (self.coeff.acs_fixwing[actype]['oew'] + self.coeff.acs_fixwing[actype]['mtow']) self.engnum[-n:] = int(self.coeff.acs_fixwing[actype]['n_engines']) self.ff_coeff_a[-n:] = np.ones(n) * coeff_a self.ff_coeff_b[-n:] = np.ones(n) * coeff_b self.ff_coeff_c[-n:] = np.ones(n) * coeff_c all_ac_engs = list( self.coeff.acs_fixwing[actype]['engines'].keys()) self.engthrust[-n:] = self.coeff.acs_fixwing[actype]['engines'][ all_ac_engs[0]]['thr'] self.engbpr[-n:] = self.coeff.acs_fixwing[actype]['engines'][ all_ac_engs[0]]['bpr'] # append update actypes, after removing unkown types self.actypes[-n:] = [actype] * n self.n_ac += n
def create(self, n=1): # cautious! considering multiple created aircraft with same type super(OpenAP, self).create(n) actype = bs.traf.type[-1].upper() # Check synonym file if not in open ap actypes if (actype not in self.coeff.actypes_rotor) and ( actype not in self.coeff.dragpolar_fixwing): if actype in self.coeff.synodict: # print(actype,"replaced by",self.coeff.synodict[actype]) actype = self.coeff.synodict[actype] # check fixwing or rotor, default to fixwing if actype in self.coeff.actypes_rotor: self.lifttype[-n:] = coeff.LIFT_ROTOR self.mass[-n:] = 0.5 * (self.coeff.acs_rotor[actype]["oew"] + self.coeff.acs_rotor[actype]["mtow"]) self.engnum[-n:] = int(self.coeff.acs_rotor[actype]["n_engines"]) self.engpower[-n:] = self.coeff.acs_rotor[actype]["engines"][0][ 1] # engine power (kW) else: # convert to known aircraft type if actype not in self.coeff.actypes_fixwing: actype = "B744" # populate fuel flow model es = self.coeff.acs_fixwing[actype]["engines"] e = es[list(es.keys())[0]] coeff_a, coeff_b, coeff_c = thrust.compute_eng_ff_coeff( e["ff_idl"], e["ff_app"], e["ff_co"], e["ff_to"]) self.lifttype[-n:] = coeff.LIFT_FIXWING self.Sref[-n:] = self.coeff.acs_fixwing[actype]["wa"] self.mass[-n:] = 0.5 * (self.coeff.acs_fixwing[actype]["oew"] + self.coeff.acs_fixwing[actype]["mtow"]) self.engnum[-n:] = int(self.coeff.acs_fixwing[actype]["n_engines"]) self.ff_coeff_a[-n:] = coeff_a self.ff_coeff_b[-n:] = coeff_b self.ff_coeff_c[-n:] = coeff_c all_ac_engs = list( self.coeff.acs_fixwing[actype]["engines"].keys()) self.engthrmax[-n:] = self.coeff.acs_fixwing[actype]["engines"][ all_ac_engs[0]]["thr"] self.engbpr[-n:] = self.coeff.acs_fixwing[actype]["engines"][ all_ac_engs[0]]["bpr"] # init type specific coefficients if actype in self.coeff.limits_fixwing.keys(): self.vminic[-n:] = self.coeff.limits_fixwing[actype]["vminic"] self.vminer[-n:] = self.coeff.limits_fixwing[actype]["vminer"] self.vminap[-n:] = self.coeff.limits_fixwing[actype]["vminap"] self.vmaxic[-n:] = self.coeff.limits_fixwing[actype]["vmaxic"] self.vmaxer[-n:] = self.coeff.limits_fixwing[actype]["vmaxer"] self.vmaxap[-n:] = self.coeff.limits_fixwing[actype]["vmaxap"] self.vsmin[-n:] = self.coeff.limits_fixwing[actype]["vsmin"] self.vsmax[-n:] = self.coeff.limits_fixwing[actype]["vsmax"] self.hmax[-n:] = self.coeff.limits_fixwing[actype]["hmax"] self.axmax[-n:] = self.coeff.limits_fixwing[actype]["axmax"] self.vminto[-n:] = self.coeff.limits_fixwing[actype]["vminto"] self.cd0_clean[-n:] = self.coeff.dragpolar_fixwing[actype][ "cd0_clean"] self.k_clean[-n:] = self.coeff.dragpolar_fixwing[actype]["k_clean"] self.cd0_to[-n:] = self.coeff.dragpolar_fixwing[actype]["cd0_to"] self.k_to[-n:] = self.coeff.dragpolar_fixwing[actype]["k_to"] self.cd0_ld[-n:] = self.coeff.dragpolar_fixwing[actype]["cd0_ld"] self.k_ld[-n:] = self.coeff.dragpolar_fixwing[actype]["k_ld"] self.delta_cd_gear[-n:] = self.coeff.dragpolar_fixwing[actype][ "delta_cd_gear"] elif actype in self.coeff.limits_rotor.keys(): # rotorcraft self.vmin[-n:] = self.coeff.limits_rotor[actype]["vmin"] self.vmax[-n:] = self.coeff.limits_rotor[actype]["vmax"] self.vsmin[-n:] = self.coeff.limits_rotor[actype]["vsmin"] self.vsmax[-n:] = self.coeff.limits_rotor[actype]["vsmax"] self.hmax[-n:] = self.coeff.limits_rotor[actype]["hmax"] self.vsmin[-n:] = self.coeff.limits_rotor[actype]["vsmin"] self.vsmax[-n:] = self.coeff.limits_rotor[actype]["vsmax"] self.hmax[-n:] = self.coeff.limits_rotor[actype]["hmax"] self.cd0_clean[-n:] = np.nan self.k_clean[-n:] = np.nan self.cd0_to[-n:] = np.nan self.k_to[-n:] = np.nan self.cd0_ld[-n:] = np.nan self.k_ld[-n:] = np.nan self.delta_cd_gear[-n:] = np.nan else: # Use default B747-400 print( "Open AP (perfoap.py): Unknown actype, using default B744 instead." ) self.vminic[-n:] = self.coeff.limits_fixwing["B744"]["vminic"] self.vminer[-n:] = self.coeff.limits_fixwing["B744"]["vminer"] self.vminap[-n:] = self.coeff.limits_fixwing["B744"]["vminap"] self.vmaxic[-n:] = self.coeff.limits_fixwing["B744"]["vmaxic"] self.vmaxer[-n:] = self.coeff.limits_fixwing["B744"]["vmaxer"] self.vmaxap[-n:] = self.coeff.limits_fixwing["B744"]["vmaxap"] self.vsmin[-n:] = self.coeff.limits_fixwing["B744"]["vsmin"] self.vsmax[-n:] = self.coeff.limits_fixwing["B744"]["vsmax"] self.hmax[-n:] = self.coeff.limits_fixwing["B744"]["hmax"] self.axmax[-n:] = self.coeff.limits_fixwing["B744"]["axmax"] self.vminto[-n:] = self.coeff.limits_fixwing["B744"]["vminto"] self.cd0_clean[-n:] = self.coeff.dragpolar_fixwing["B744"][ "cd0_clean"] self.k_clean[-n:] = self.coeff.dragpolar_fixwing["B744"]["k_clean"] self.cd0_to[-n:] = self.coeff.dragpolar_fixwing["B744"]["cd0_to"] self.k_to[-n:] = self.coeff.dragpolar_fixwing["B744"]["k_to"] self.cd0_ld[-n:] = self.coeff.dragpolar_fixwing["B744"]["cd0_ld"] self.k_ld[-n:] = self.coeff.dragpolar_fixwing["B744"]["k_ld"] self.delta_cd_gear[-n:] = self.coeff.dragpolar_fixwing["B744"][ "delta_cd_gear"] # append update actypes, after removing unkown types self.actypes[-n:] = [actype] * n
def create(self, n=1): # cautious! considering multiple created aircraft with same type super(OpenAP, self).create(n) actype = bs.traf.type[-1].upper() # Check synonym file if not in open ap actypes if (actype not in self.coeff.actypes_rotor) and \ (actype not in self.coeff.dragpolar_fixwing): if actype in self.coeff.synodict: #print(actype,"replaced by",self.coeff.synodict[actype]) actype = self.coeff.synodict[actype] # check fixwing or rotor, default fixwing if not found if actype in self.coeff.actypes_rotor: self.lifttype[-n:] = coeff.LIFT_ROTOR self.mass[-n:] = 0.5 * (self.coeff.acs_rotor[actype]['oew'] + self.coeff.acs_rotor[actype]['mtow']) self.engnum[-n:] = int(self.coeff.acs_rotor[actype]['n_engines']) self.engpower[-n:] = self.coeff.acs_rotor[actype]['engines'][0][ 1] # engine power (kW) else: # convert to known aircraft type if actype not in self.coeff.actypes_fixwing: actype = "B744" # populate fuel flow model es = self.coeff.acs_fixwing[actype]['engines'] e = es[list(es.keys())[0]] coeff_a, coeff_b, coeff_c = thrust.compute_eng_ff_coeff( e['ff_idl'], e['ff_app'], e['ff_co'], e['ff_to']) self.lifttype[-n:] = coeff.LIFT_FIXWING self.Sref[-n:] = self.coeff.acs_fixwing[actype]['wa'] self.mass[-n:] = 0.5 * (self.coeff.acs_fixwing[actype]['oew'] + self.coeff.acs_fixwing[actype]['mtow']) self.engnum[-n:] = int(self.coeff.acs_fixwing[actype]['n_engines']) self.ff_coeff_a[-n:] = coeff_a self.ff_coeff_b[-n:] = coeff_b self.ff_coeff_c[-n:] = coeff_c all_ac_engs = list( self.coeff.acs_fixwing[actype]['engines'].keys()) self.engthrmax[-n:] = self.coeff.acs_fixwing[actype]['engines'][ all_ac_engs[0]]['thr'] self.engbpr[-n:] = self.coeff.acs_fixwing[actype]['engines'][ all_ac_engs[0]]['bpr'] # init drag polar coefficients if actype in self.coeff.dragpolar_fixwing.keys(): self.cd0_clean[-n:] = self.coeff.dragpolar_fixwing[actype][ 'cd0_clean'] self.cd0_gd[-n:] = self.coeff.dragpolar_fixwing[actype][ 'cd0_gd'] self.cd0_to[-n:] = self.coeff.dragpolar_fixwing[actype][ 'cd0_to'] self.cd0_ic[-n:] = self.coeff.dragpolar_fixwing[actype][ 'cd0_ic'] self.cd0_ap[-n:] = self.coeff.dragpolar_fixwing[actype][ 'cd0_ap'] self.cd0_ld[-n:] = self.coeff.dragpolar_fixwing[actype][ 'cd0_ld'] self.k[-n:] = self.coeff.dragpolar_fixwing[actype]['k'] else: self.cd0_clean[-n:] = self.coeff.dragpolar_fixwing['NA'][ 'cd0_clean'] self.cd0_gd[-n:] = self.coeff.dragpolar_fixwing['NA']['cd0_gd'] self.cd0_to[-n:] = self.coeff.dragpolar_fixwing['NA']['cd0_to'] self.cd0_ic[-n:] = self.coeff.dragpolar_fixwing['NA']['cd0_ic'] self.cd0_ap[-n:] = self.coeff.dragpolar_fixwing['NA']['cd0_ap'] self.cd0_ld[-n:] = self.coeff.dragpolar_fixwing['NA']['cd0_ld'] self.k[-n:] = self.coeff.dragpolar_fixwing['NA']['k'] # append update actypes, after removing unkown types self.actypes[-n:] = [actype] * n
def create(self, n=1): # cautious! considering multiple created aircraft with same type super().create(n) actype = bs.traf.type[-1].upper() # Check synonym file if not in open ap actypes if (actype not in self.coeff.actypes_rotor) and ( actype not in self.coeff.dragpolar_fixwing): if actype in self.coeff.synodict.keys(): # warn = f"Warning: {actype} replaced by {self.coeff.synodict[actype]}" # print(warn) # bs.scr.echo(warn) actype = self.coeff.synodict[actype] # initialize aircraft / engine performance parameters # check fixwing or rotor, default to fixwing if actype in self.coeff.actypes_rotor: self.lifttype[-n:] = coeff.LIFT_ROTOR self.mass[-n:] = 0.5 * (self.coeff.acs_rotor[actype]["oew"] + self.coeff.acs_rotor[actype]["mtow"]) self.engnum[-n:] = int(self.coeff.acs_rotor[actype]["n_engines"]) self.engpower[-n:] = self.coeff.acs_rotor[actype]["engines"][0][1] else: # convert to known aircraft type if actype not in self.coeff.actypes_fixwing: # warn = f"Warning: {actype} replaced by B744" # print(warn) # bs.scr.echo(warn) actype = "B744" # populate fuel flow model es = self.coeff.acs_fixwing[actype]["engines"] e = es[list(es.keys())[0]] coeff_a, coeff_b, coeff_c = thrust.compute_eng_ff_coeff( e["ff_idl"], e["ff_app"], e["ff_co"], e["ff_to"]) self.lifttype[-n:] = coeff.LIFT_FIXWING self.Sref[-n:] = self.coeff.acs_fixwing[actype]["wa"] self.mass[-n:] = 0.5 * (self.coeff.acs_fixwing[actype]["oew"] + self.coeff.acs_fixwing[actype]["mtow"]) self.engnum[-n:] = int(self.coeff.acs_fixwing[actype]["n_engines"]) self.ff_coeff_a[-n:] = coeff_a self.ff_coeff_b[-n:] = coeff_b self.ff_coeff_c[-n:] = coeff_c all_ac_engs = list( self.coeff.acs_fixwing[actype]["engines"].keys()) self.engthrmax[-n:] = self.coeff.acs_fixwing[actype]["engines"][ all_ac_engs[0]]["thr"] self.engbpr[-n:] = self.coeff.acs_fixwing[actype]["engines"][ all_ac_engs[0]]["bpr"] # init type specific coefficients for flight envelops if actype in self.coeff.limits_rotor.keys(): # rotorcraft self.vmin[-n:] = self.coeff.limits_rotor[actype]["vmin"] self.vmax[-n:] = self.coeff.limits_rotor[actype]["vmax"] self.vsmin[-n:] = self.coeff.limits_rotor[actype]["vsmin"] self.vsmax[-n:] = self.coeff.limits_rotor[actype]["vsmax"] self.hmax[-n:] = self.coeff.limits_rotor[actype]["hmax"] self.vsmin[-n:] = self.coeff.limits_rotor[actype]["vsmin"] self.vsmax[-n:] = self.coeff.limits_rotor[actype]["vsmax"] self.hmax[-n:] = self.coeff.limits_rotor[actype]["hmax"] self.cd0_clean[-n:] = np.nan self.k_clean[-n:] = np.nan self.cd0_to[-n:] = np.nan self.k_to[-n:] = np.nan self.cd0_ld[-n:] = np.nan self.k_ld[-n:] = np.nan self.delta_cd_gear[-n:] = np.nan else: if actype not in self.coeff.limits_fixwing.keys(): actype = "B744" self.vminic[-n:] = self.coeff.limits_fixwing[actype]["vminic"] self.vminer[-n:] = self.coeff.limits_fixwing[actype]["vminer"] self.vminap[-n:] = self.coeff.limits_fixwing[actype]["vminap"] self.vmaxic[-n:] = self.coeff.limits_fixwing[actype]["vmaxic"] self.vmaxer[-n:] = self.coeff.limits_fixwing[actype]["vmaxer"] self.vmaxap[-n:] = self.coeff.limits_fixwing[actype]["vmaxap"] self.vsmin[-n:] = self.coeff.limits_fixwing[actype]["vsmin"] self.vsmax[-n:] = self.coeff.limits_fixwing[actype]["vsmax"] self.hmax[-n:] = self.coeff.limits_fixwing[actype]["hmax"] self.axmax[-n:] = self.coeff.limits_fixwing[actype]["axmax"] self.vminto[-n:] = self.coeff.limits_fixwing[actype]["vminto"] self.hcross[-n:] = self.coeff.limits_fixwing[actype]["crosscl"] self.mmo[-n:] = self.coeff.limits_fixwing[actype]["mmo"] self.cd0_clean[-n:] = self.coeff.dragpolar_fixwing[actype][ "cd0_clean"] self.k_clean[-n:] = self.coeff.dragpolar_fixwing[actype]["k_clean"] self.cd0_to[-n:] = self.coeff.dragpolar_fixwing[actype]["cd0_to"] self.k_to[-n:] = self.coeff.dragpolar_fixwing[actype]["k_to"] self.cd0_ld[-n:] = self.coeff.dragpolar_fixwing[actype]["cd0_ld"] self.k_ld[-n:] = self.coeff.dragpolar_fixwing[actype]["k_ld"] self.delta_cd_gear[-n:] = self.coeff.dragpolar_fixwing[actype][ "delta_cd_gear"] # append update actypes, after removing unknown types self.actype[-n:] = [actype] * n # Update envelope speed limits mask = np.zeros_like(self.actype, dtype=bool) mask[-n:] = True self.vmin[-n:], self.vmax[-n:] = self._construct_v_limits(mask)
def create(self, n=1): # cautious! considering multiple created aircraft with same type super(OpenAP, self).create(n) actype = bs.traf.type[-1].upper() # check fixwing or rotor, default fixwing if not found if actype in self.coeff.actypes_rotor: self.lifttype[-n:] = coeff.LIFT_ROTOR self.mass[-n:] = 0.5 * (self.coeff.acs_rotor[actype]['oew'] + self.coeff.acs_rotor[actype]['mtow']) self.engnum[-n:] = int(self.coeff.acs_rotor[actype]['n_engines']) self.engpower[-n:] = self.coeff.acs_rotor[actype]['engines'][0][ 1] # engine power (kW) else: # convert to known aircraft type if (actype not in self.coeff.actypes_fixwing) or ( actype not in self.coeff.limits_fixwing.keys()): print( "WARNING: Aircraft type: %s was not found. It is set to %s." % (actype, 'A320')) actype = 'A320' # populate fuel flow model if not self.coeff.acs_fixwing[actype]['engines']: print( "WARNING: Engine type of %s was not found. Aircraft type is set to %s." % (actype, 'A320')) actype = 'A320' es = self.coeff.acs_fixwing[actype]['engines'] e = es[list(es.keys())[0]] coeff_a, coeff_b, coeff_c = thrust.compute_eng_ff_coeff( e['ff_idl'], e['ff_app'], e['ff_co'], e['ff_to']) self.lifttype[-n:] = coeff.LIFT_FIXWING self.Sref[-n:] = self.coeff.acs_fixwing[actype]['wa'] self.mass[-n:] = 0.5 * (self.coeff.acs_fixwing[actype]['oew'] + self.coeff.acs_fixwing[actype]['mtow']) self.engnum[-n:] = int(self.coeff.acs_fixwing[actype]['n_engines']) self.ff_coeff_a[-n:] = coeff_a self.ff_coeff_b[-n:] = coeff_b self.ff_coeff_c[-n:] = coeff_c all_ac_engs = list( self.coeff.acs_fixwing[actype]['engines'].keys()) self.engthrust[-n:] = self.coeff.acs_fixwing[actype]['engines'][ all_ac_engs[0]]['thr'] self.engbpr[-n:] = self.coeff.acs_fixwing[actype]['engines'][ all_ac_engs[0]]['bpr'] # init drag polar coefficients if actype in self.coeff.dragpolar_fixwing.keys(): self.cd0_clean[-n:] = self.coeff.dragpolar_fixwing[actype][ 'cd0_clean'] self.cd0_gd[-n:] = self.coeff.dragpolar_fixwing[actype][ 'cd0_gd'] self.cd0_to[-n:] = self.coeff.dragpolar_fixwing[actype][ 'cd0_to'] self.cd0_ic[-n:] = self.coeff.dragpolar_fixwing[actype][ 'cd0_ic'] self.cd0_ap[-n:] = self.coeff.dragpolar_fixwing[actype][ 'cd0_ap'] self.cd0_ld[-n:] = self.coeff.dragpolar_fixwing[actype][ 'cd0_ld'] self.k[-n:] = self.coeff.dragpolar_fixwing[actype]['k'] else: self.cd0_clean[-n:] = self.coeff.dragpolar_fixwing['NA'][ 'cd0_clean'] self.cd0_gd[-n:] = self.coeff.dragpolar_fixwing['NA']['cd0_gd'] self.cd0_to[-n:] = self.coeff.dragpolar_fixwing['NA']['cd0_to'] self.cd0_ic[-n:] = self.coeff.dragpolar_fixwing['NA']['cd0_ic'] self.cd0_ap[-n:] = self.coeff.dragpolar_fixwing['NA']['cd0_ap'] self.cd0_ld[-n:] = self.coeff.dragpolar_fixwing['NA']['cd0_ld'] self.k[-n:] = self.coeff.dragpolar_fixwing['NA']['k'] # append update actypes, after removing unkown types self.actypes[-n:] = [actype] * n