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 )