def cross_reference(self, model: BDF) -> None: """ Cross links the card so referenced cards can be extracted directly Parameters ---------- model : BDF() the BDF object """ msg = ', which is required by FLUTTER sid=%s' % self.sid self.density_ref = model.FLFACT(self.density, msg=msg) self.mach_ref = model.FLFACT(self.mach, msg=msg) self.reduced_freq_velocity_ref = model.FLFACT(self.reduced_freq_velocity, msg=msg)
def test_flutter(self): """checks the FLUTTER/FLFACT cards""" log = SimpleLogger(level='warning') model = BDF(log=log) sid = 75 method = 'PKNL' idensity = 76 imach = 77 ivelocity = 78 # density, mach, velocity flutter1 = FLUTTER(sid, method, idensity, imach, ivelocity) flutter2 = FLUTTER.add_card(BDFCard(['FLUTTER', sid, method, idensity, imach, ivelocity]), comment='flutter card') assert flutter2.headers == ['density', 'mach', 'velocity'], flutter2.headers flutter1.validate() flutter1.write_card() flutter2.validate() flutter2.write_card() model.flutters[75] = flutter1 densities = np.linspace(0., 1.) density = FLFACT(idensity, densities) model.flfacts[idensity] = density machs = np.linspace(0.7, 0.8) mach = FLFACT(imach, machs) mach = FLFACT.add_card(BDFCard(['FLFACT', imach] + list(machs)), comment='flfact card') mach.write_card(size=16) model.flfacts[imach] = mach velocities = np.linspace(3., 4.) velocity = FLFACT(ivelocity, velocities) velocity.validate() velocity.write_card() assert velocity.min() == 3., velocities assert velocity.max() == 4., velocities model.flfacts[ivelocity] = velocity ikfreq = 79 kfreqs = np.linspace(0.1, 0.2) card = ['FLFACT', ikfreq] + list(kfreqs) model.add_card(card, card[0]) kfreq = model.FLFACT(ikfreq) kfreq.validate() kfreq.write_card() assert kfreq.min() == 0.1, kfreqs assert kfreq.max() == 0.2, kfreqs model.flfacts[ikfreq] = kfreq ikfreq2 = 80 card = ['FLFACT', ikfreq2, 10., 'THRU', 20., 11] model.add_card(card, card[0]) kfreq = model.FLFACT(ikfreq2) kfreq.validate() kfreq.write_card() assert kfreq.min() == 10., 'min=%s; card=%s factors=%s' % (kfreq.min(), card, kfreq.factors) assert kfreq.max() == 20., 'max=%s; card=%s factors=%s' % (kfreq.max(), card, kfreq.factors) model.flfacts[ikfreq] = kfreq ikfreq3 = 81 factors = [10., 'THRU', 20., 10] kfreq = FLFACT(ikfreq3, factors) kfreq.validate() kfreq.write_card() assert kfreq.min() == 10., 'min=%s; factors=%s' % (kfreq.min(), factors) assert kfreq.max() == 20., 'max=%s; factors=%s' % (kfreq.max(), factors) model.flfacts[ikfreq] = kfreq # density, mach, rfreq card = ['FLUTTER', 85, 'KE', idensity, imach, ikfreq] model.add_card(card, card[0]) model.cross_reference() flutter = model.Flutter(85) assert flutter.headers == ['density', 'mach', 'reduced_frequency'], flutter.headers flutter.write_card()