from model import TransformerModel from optimizer import TransformerOptimizer # Create the same transformer as in app.py primary_taps = [0, 75, 75] secondary_taps = [0, 100, 150, 150, 150] primary_Rp_per_turn = [0.01, 0.01] secondary_Rs_per_turn = [0.004, 0.024, 0.024, 0.024] tf = TransformerModel( Ae_mm2=354.0, Ve_mm3=43900.0, use_core_loss_model=True, Np_total=150, Ns_total=250, primary_taps=primary_taps, secondary_taps=secondary_taps, primary_Rp_per_turn=primary_Rp_per_turn, secondary_Rs_per_turn=secondary_Rs_per_turn, ) # Test case: 300Hz, 10ohm, 25W target print("Testing with B_max_T=0.3T:") opt = TransformerOptimizer(tf) result = opt.optimize( load_ohms=10.0, target_power_W=25.0, freq_hz=300.0, Vp_min=5.0, Vp_max=50.0, Vp_step=0.5, B_max_T=0.3, Vs_max=200.0, core_loss_W=0.0, power_tolerance_percent=2.0, ) if result: print(f"Optimizer result:") print(f" Primary tap: {result.primary_tap}, Secondary tap: {result.secondary_tap}") print(f" Vp_rms: {result.Vp_rms:.2f}V") print(f" Efficiency: {result.efficiency*100:.2f}%") print(f" Power out: {result.P_out_W:.2f}W") print(f" B_peak: {result.B_peak_T:.4f}T") print() print("\nTesting with B_max_T=0.35T:") result2 = opt.optimize( load_ohms=10.0, target_power_W=25.0, freq_hz=300.0, Vp_min=5.0, Vp_max=50.0, Vp_step=0.5, B_max_T=0.35, Vs_max=200.0, core_loss_W=0.0, power_tolerance_percent=2.0, ) if result2: print(f"Optimizer result:") print(f" Primary tap: {result2.primary_tap}, Secondary tap: {result2.secondary_tap}") print(f" Vp_rms: {result2.Vp_rms:.2f}V") print(f" Efficiency: {result2.efficiency*100:.2f}%") print(f" Power out: {result2.P_out_W:.2f}W") print(f" B_peak: {result2.B_peak_T:.4f}T") print() # Now try manual settings to see what 85% efficiency looks like print("Manual test - trying different tap combinations:") for p_tap in [1, 2]: for s_tap in [1, 2, 3, 4]: for Vp in range(5, 51, 1): # 5V to 50V in 1V steps try: sim = tf.simulate( primary_tap=p_tap, secondary_tap=s_tap, Vp_rms=Vp, freq_hz=300.0, load_ohms=10.0, ) eff_pct = sim['efficiency'] * 100 if sim['P_out_W'] >= 20 and sim['P_out_W'] <= 30: # Close to target print(f" p={p_tap}, s={s_tap}, Vp={Vp}V: Pout={sim['P_out_W']:.1f}W, eff={eff_pct:.1f}%, B={sim['B_peak_T']:.4f}T, Pcore={sim['P_core_W']:.2f}W, Pcu={sim['P_cu_W']:.2f}W") except Exception as e: pass else: print("No solution found!")