From 909619c8cc966abf0e8a7246df43daa8e88eb380 Mon Sep 17 00:00:00 2001 From: jean-pierre charras Date: Wed, 1 Nov 2023 15:41:01 +0100 Subject: [PATCH] pcb_calculator, MICROSTRIP::calcSynthesize(): fix incorrect init of a variable It was initialized before other calculations, thus using a bad value. --- pcb_calculator/transline/microstrip.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pcb_calculator/transline/microstrip.cpp b/pcb_calculator/transline/microstrip.cpp index 38405906d1..07cdac2732 100644 --- a/pcb_calculator/transline/microstrip.cpp +++ b/pcb_calculator/transline/microstrip.cpp @@ -5,6 +5,7 @@ * Copyright (C) 2002 Claudio Girardi * Copyright (C) 2005, 2006 Stefan Jahn * Modified for Kicad: 2018 Jean-Pierre Charras + * Copyright (C) 1992-2023 Kicad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -516,18 +517,19 @@ void MICROSTRIP::showAnalyze() */ void MICROSTRIP::calcSynthesize() { - double const er_eff = m_parameters[EPSILON_EFF_PRM]; - double angl_dest, z0_dest; - z0_dest = m_parameters[Z0_PRM]; - angl_dest = m_parameters[ANG_L_PRM]; + double z0_dest = m_parameters[Z0_PRM]; + double angl_dest = m_parameters[ANG_L_PRM]; /* calculate width and use for initial value in Newton's method */ m_parameters[PHYS_WIDTH_PRM] = synth_width(); minimizeZ0Error1D( &( m_parameters[PHYS_WIDTH_PRM] ) ); + m_parameters[Z0_PRM] = z0_dest; m_parameters[ANG_L_PRM] = angl_dest; + double const er_eff = m_parameters[EPSILON_EFF_PRM]; m_parameters[PHYS_LEN_PRM] = C0 / m_parameters[FREQUENCY_PRM] / sqrt( er_eff * mur_eff ) * m_parameters[ANG_L_PRM] / 2.0 / M_PI; /* in m */ calcAnalyze(); + m_parameters[Z0_PRM] = z0_dest; m_parameters[ANG_L_PRM] = angl_dest; m_parameters[PHYS_LEN_PRM] = C0 / m_parameters[FREQUENCY_PRM] / sqrt( er_eff * mur_eff )