KiCad PCB EDA Suite
MICROSTRIP Class Reference

#include <microstrip.h>

Inheritance diagram for MICROSTRIP:
TRANSLINE

Public Member Functions

 MICROSTRIP ()
 
void setProperty (enum PRMS_ID aPrmId, double aValue)
 
double getProperty (enum PRMS_ID aPrmId)
 
void getProperties (void)
 @function getProperties More...
 
void checkProperties (void)
 @function checkProperties More...
 
void setResult (int, double, const char *)
 
void setResult (int, const char *)
 
bool isSelected (enum PRMS_ID aPrmId)
 
void Init ()
 
virtual void synthesize ()
 
virtual void calc ()
 
void analyze ()
 

Public Attributes

const char * m_Name
 
KIGFX::COLOR4D errCol = KIGFX::COLOR4D( 1, 0.63, 0.63, 1 )
 
KIGFX::COLOR4D warnCol = KIGFX::COLOR4D( 1, 1, 0.57, 1 )
 
KIGFX::COLOR4D okCol = KIGFX::COLOR4D( 1, 1, 1, 1 )
 

Protected Member Functions

bool minimizeZ0Error1D (double *)
 @function minimizeZ0Error1D More...
 
double skin_depth ()
 @function skin_depth calculate skin depth More...
 
void ellipke (double, double &, double &)
 
double ellipk (double)
 
void setErrorLevel (PRMS_ID, char)
 @function setErrorLevel More...
 

Protected Attributes

double m_parameters [EXTRA_PRMS_COUNT]
 
double len
 

Private Member Functions

double er_eff_freq ()
 
double alpha_c ()
 
double alpha_c_roughness ()
 
double alpha_dielectric ()
 
double char_impedance_ht ()
 
double synth_width ()
 
double ereff_dispersion ()
 
double Z0_dispersion ()
 
double Z0_homogeneous (double)
 
double delta_Z0_cover (double, double)
 
double filling_factor (double, double)
 
double delta_q_cover (double)
 
double delta_q_thickness (double, double)
 
double e_r_effective (double, double)
 
double delta_u_thickness (double, double, double)
 
double e_r_dispersion (double, double, double)
 
double Z0_dispersion (double, double, double, double, double)
 
double conductor_losses ()
 
double dielectric_losses ()
 
void microstrip_Z0 ()
 
void dispersion ()
 
void attenuation ()
 
void mur_eff_ms ()
 
void line_angle ()
 
void show_results () override
 Shows results. More...
 
void showSynthesize () override
 Shows analysis results and checks for errors / warnings. More...
 
void showAnalyze () override
 Shows synthesis results and checks for errors / warnings. More...
 
void calcAnalyze () override
 Computation for analysis. More...
 
void calcSynthesize () override
 Computation for synthesis. More...
 

Private Attributes

double h
 
double ht
 
double t
 
double rough
 
double mur
 
double w
 
double l
 
double Z0_0
 
double Z0
 
double ang_l
 
double er_eff_0
 
double er_eff
 
double mur_eff
 
double w_eff
 
double atten_dielectric
 
double atten_cond
 
double Z0_h_1
 

Friends

class C_MICROSTRIP
 

Detailed Description

Definition at line 30 of file microstrip.h.

Constructor & Destructor Documentation

◆ MICROSTRIP()

MICROSTRIP::MICROSTRIP ( )

Definition at line 42 of file microstrip.cpp.

42  : TRANSLINE(),
43  h( 0.0 ), // height of substrate
44  ht( 0.0 ), // height to the top of box
45  t( 0.0 ), // thickness of top metal
46  rough( 0.0 ), // Roughness of top metal
47  mur( 0.0 ), // magnetic permeability of substrate
48  w( 0.0 ), // width of line
49  l( 0.0 ), // length of line
50  Z0_0( 0.0 ), // static characteristic impedance
51  Z0( 0.0 ), // characteristic impedance
52  ang_l( 0.0 ), // Electrical length in angle
53  er_eff_0( 0.0 ), // Static effective dielectric constant
54  er_eff( 0.0 ), // Effective dielectric constant
55  mur_eff( 0.0 ), // Effective mag. permeability
56  w_eff( 0.0 ), // Effective width of line
57  atten_dielectric( 0.0 ), // Loss in dielectric (dB)
58  atten_cond( 0.0 ), // Loss in conductors (dB)
59  Z0_h_1( 0.0 ) // homogeneous stripline impedance
60 {
61  m_Name = "MicroStrip";
62  Init();
63 }
double mur_eff
Definition: microstrip.h:50
void Init()
Definition: transline.cpp:87
double rough
Definition: microstrip.h:41
double l
Definition: microstrip.h:44
double Z0_0
Definition: microstrip.h:45
double t
Definition: microstrip.h:40
double ht
Definition: microstrip.h:39
double Z0_h_1
Definition: microstrip.h:56
double Z0
Definition: microstrip.h:46
double er_eff_0
Definition: microstrip.h:48
double mur
Definition: microstrip.h:42
double ang_l
Definition: microstrip.h:47
const char * m_Name
Definition: transline.h:85
double atten_dielectric
Definition: microstrip.h:52
double er_eff
Definition: microstrip.h:49
double atten_cond
Definition: microstrip.h:53
double h
Definition: microstrip.h:38
double w
Definition: microstrip.h:43
double w_eff
Definition: microstrip.h:51

References TRANSLINE::Init(), and TRANSLINE::m_Name.

Member Function Documentation

◆ alpha_c()

double MICROSTRIP::alpha_c ( )
private

Referenced by conductor_losses().

◆ alpha_c_roughness()

double MICROSTRIP::alpha_c_roughness ( )
private

◆ alpha_dielectric()

double MICROSTRIP::alpha_dielectric ( )
private

◆ analyze()

void TRANSLINE::analyze ( )
inherited

Definition at line 203 of file transline.cpp.

204 {
205  getProperties();
206  checkProperties();
207  calcAnalyze();
208  showAnalyze();
209  show_results();
210 }
virtual void calcAnalyze()
Computation for analysis.
Definition: transline.h:101
void checkProperties(void)
@function checkProperties
Definition: transline.cpp:161
virtual void show_results()
Shows results.
Definition: transline.h:113
virtual void showAnalyze()
Shows synthesis results and checks for errors / warnings.
Definition: transline.h:107
void getProperties(void)
@function getProperties
Definition: transline.cpp:144

References TRANSLINE::calcAnalyze(), TRANSLINE::checkProperties(), TRANSLINE::getProperties(), TRANSLINE::show_results(), and TRANSLINE::showAnalyze().

Referenced by PCB_CALCULATOR_FRAME::OnTranslineAnalyse().

◆ attenuation()

void MICROSTRIP::attenuation ( )
private

Definition at line 375 of file microstrip.cpp.

376 {
378 
381 }
double conductor_losses()
Definition: microstrip.cpp:318
double m_parameters[EXTRA_PRMS_COUNT]
Definition: transline.h:120
double atten_dielectric
Definition: microstrip.h:52
double atten_cond
Definition: microstrip.h:53
double skin_depth()
@function skin_depth calculate skin depth
Definition: transline.cpp:229
double dielectric_losses()
Definition: microstrip.cpp:356

References atten_cond, atten_dielectric, conductor_losses(), dielectric_losses(), TRANSLINE::m_parameters, PHYS_LEN_PRM, TRANSLINE::skin_depth(), and SKIN_DEPTH_PRM.

Referenced by calcAnalyze().

◆ calc()

virtual void TRANSLINE::calc ( )
inlinevirtualinherited

Definition at line 98 of file transline.h.

98 {};

◆ calcAnalyze()

void MICROSTRIP::calcAnalyze ( )
overrideprivatevirtual

Computation for analysis.

Reimplemented from TRANSLINE.

Definition at line 448 of file microstrip.cpp.

449 {
450  /* effective permeability */
451  mur_eff_ms();
452  /* static impedance */
453  microstrip_Z0();
454  /* calculate freq dependence of er and Z0 */
455  dispersion();
456  /* calculate electrical lengths */
457  line_angle();
458  /* calculate losses */
459  attenuation();
460 }
void dispersion()
Definition: microstrip.cpp:290
void microstrip_Z0()
Definition: microstrip.cpp:178
void mur_eff_ms()
Definition: microstrip.cpp:387
void line_angle()
Definition: microstrip.cpp:432
void attenuation()
Definition: microstrip.cpp:375

References attenuation(), dispersion(), line_angle(), microstrip_Z0(), and mur_eff_ms().

Referenced by calcSynthesize().

◆ calcSynthesize()

void MICROSTRIP::calcSynthesize ( )
overrideprivatevirtual

Computation for synthesis.

Reimplemented from TRANSLINE.

Definition at line 520 of file microstrip.cpp.

521 {
522  double angl_dest, z0_dest;
523  z0_dest = m_parameters[Z0_PRM];
524  angl_dest = m_parameters[ANG_L_PRM];
525  /* calculate width and use for initial value in Newton's method */
528  m_parameters[Z0_PRM] = z0_dest;
529  m_parameters[ANG_L_PRM] = angl_dest;
531  * m_parameters[ANG_L_PRM] / 2.0 / M_PI; /* in m */
532  calcAnalyze();
533  m_parameters[Z0_PRM] = z0_dest;
534  m_parameters[ANG_L_PRM] = angl_dest;
536  * m_parameters[ANG_L_PRM] / 2.0 / M_PI; /* in m */
537 }
double mur_eff
Definition: microstrip.h:50
bool minimizeZ0Error1D(double *)
@function minimizeZ0Error1D
Definition: transline.cpp:337
double m_parameters[EXTRA_PRMS_COUNT]
Definition: transline.h:120
double synth_width()
Definition: microstrip.cpp:398
#define C0
Definition: units.h:62
void calcAnalyze() override
Computation for analysis.
Definition: microstrip.cpp:448
double er_eff
Definition: microstrip.h:49

References ANG_L_PRM, C0, calcAnalyze(), er_eff, FREQUENCY_PRM, TRANSLINE::m_parameters, TRANSLINE::minimizeZ0Error1D(), mur_eff, PHYS_LEN_PRM, PHYS_WIDTH_PRM, synth_width(), and Z0_PRM.

◆ char_impedance_ht()

double MICROSTRIP::char_impedance_ht ( )
private

◆ checkProperties()

void TRANSLINE::checkProperties ( void  )
inherited

@function checkProperties

Checks the input parameters (ie: negative length). Does not check for incompatibility between values as this depends on the line shape.

Definition at line 161 of file transline.cpp.

162 {
163  // Do not check for values that are results of anylzing / synthesizing
164  // Do not check for transline specific incompatibilities ( like " conductor height sould be lesser than dielectric height")
165  if( !std::isfinite( m_parameters[EPSILONR_PRM] ) || m_parameters[EPSILONR_PRM] <= 0 )
167 
168  if( !std::isfinite( m_parameters[TAND_PRM] ) || m_parameters[TAND_PRM] < 0 )
170 
171  if( !std::isfinite( m_parameters[RHO_PRM] ) || m_parameters[RHO_PRM] < 0 )
173 
174  if( !std::isfinite( m_parameters[H_PRM] ) || m_parameters[H_PRM] < 0 )
176 
177  if( !std::isfinite( m_parameters[TWISTEDPAIR_TWIST_PRM] )
180 
181  if( !std::isfinite( m_parameters[STRIPLINE_A_PRM] ) || m_parameters[STRIPLINE_A_PRM] <= 0 )
183 
184  if( !std::isfinite( m_parameters[H_T_PRM] ) || m_parameters[H_T_PRM] <= 0 )
186 
187  // How can we check ROUGH_PRM ?
188 
189  if( !std::isfinite( m_parameters[MUR_PRM] ) || m_parameters[MUR_PRM] < 0 )
191 
192  if( !std::isfinite( m_parameters[TWISTEDPAIR_EPSILONR_ENV_PRM] )
195 
196  if( !std::isfinite( m_parameters[MURC_PRM] ) || m_parameters[MURC_PRM] < 0 )
198 
199  if( !std::isfinite( m_parameters[FREQUENCY_PRM] ) || m_parameters[FREQUENCY_PRM] <= 0 )
201 }
double m_parameters[EXTRA_PRMS_COUNT]
Definition: transline.h:120
#define TRANSLINE_WARNING
Definition: transline.h:31
void setErrorLevel(PRMS_ID, char)
@function setErrorLevel
Definition: transline.cpp:423

References EPSILONR_PRM, FREQUENCY_PRM, H_PRM, H_T_PRM, TRANSLINE::m_parameters, MUR_PRM, MURC_PRM, RHO_PRM, TRANSLINE::setErrorLevel(), STRIPLINE_A_PRM, TAND_PRM, TRANSLINE_WARNING, TWISTEDPAIR_EPSILONR_ENV_PRM, and TWISTEDPAIR_TWIST_PRM.

Referenced by TRANSLINE::analyze(), and TRANSLINE::synthesize().

◆ conductor_losses()

double MICROSTRIP::conductor_losses ( )
private

Definition at line 318 of file microstrip.cpp.

319 {
320  double e_r_eff_0, delta;
321  double K, R_s, Q_c, alpha_c;
322 
323  e_r_eff_0 = er_eff_0;
324  delta = m_parameters[SKIN_DEPTH_PRM];
325 
326  if( m_parameters[FREQUENCY_PRM] > 0.0 )
327  {
328  /* current distribution factor */
329  K = exp( -1.2 * pow( Z0_h_1 / ZF0, 0.7 ) );
330  /* skin resistance */
331  R_s = 1.0 / ( m_parameters[SIGMA_PRM] * delta );
332 
333  /* correction for surface roughness */
334  R_s *= 1.0
335  + ( ( 2.0 / M_PI )
336  * atan( 1.40 * pow( ( m_parameters[ROUGH_PRM] / delta ), 2.0 ) ) );
337  /* strip inductive quality factor */
339  / ( R_s * C0 * K );
340  alpha_c = ( 20.0 * M_PI / log( 10.0 ) ) * m_parameters[FREQUENCY_PRM] * sqrt( e_r_eff_0 )
341  / ( C0 * Q_c );
342  }
343  else
344  {
345  alpha_c = 0.0;
346  }
347 
348  return alpha_c;
349 }
double Z0_h_1
Definition: microstrip.h:56
#define ZF0
Definition: units.h:63
double er_eff_0
Definition: microstrip.h:48
double m_parameters[EXTRA_PRMS_COUNT]
Definition: transline.h:120
double alpha_c()
#define C0
Definition: units.h:62

References alpha_c(), C0, er_eff_0, FREQUENCY_PRM, TRANSLINE::m_parameters, PHYS_WIDTH_PRM, ROUGH_PRM, SIGMA_PRM, SKIN_DEPTH_PRM, Z0_h_1, and ZF0.

Referenced by attenuation().

◆ delta_q_cover()

double MICROSTRIP::delta_q_cover ( double  h2h)
private

Definition at line 118 of file microstrip.cpp.

119 {
120  double q_c;
121 
122  q_c = tanh( 1.043 + 0.121 * h2h - 1.164 / h2h );
123  return q_c;
124 }

Referenced by microstrip_Z0().

◆ delta_q_thickness()

double MICROSTRIP::delta_q_thickness ( double  u,
double  t_h 
)
private

Definition at line 130 of file microstrip.cpp.

131 {
132  double q_t;
133 
134  q_t = ( 2.0 * log( 2.0 ) / M_PI ) * ( t_h / sqrt( u ) );
135  return q_t;
136 }

Referenced by C_MICROSTRIP::er_eff_static(), and microstrip_Z0().

◆ delta_u_thickness()

double MICROSTRIP::delta_u_thickness ( double  u,
double  t_h,
double  e_r 
)
private

Definition at line 155 of file microstrip.cpp.

156 {
157  double delta_u;
158 
159  if( t_h > 0.0 )
160  {
161  /* correction for thickness for a homogeneous microstrip */
162  delta_u = ( t_h / M_PI )
163  * log( 1.0 + ( 4.0 * M_E ) * pow( tanh( sqrt( 6.517 * u ) ), 2.0 ) / t_h );
164  /* correction for strip on a substrate with relative permettivity e_r */
165  delta_u = 0.5 * delta_u * ( 1.0 + 1.0 / cosh( sqrt( e_r - 1.0 ) ) );
166  }
167  else
168  {
169  delta_u = 0.0;
170  }
171  return delta_u;
172 }

Referenced by microstrip_Z0().

◆ delta_Z0_cover()

double MICROSTRIP::delta_Z0_cover ( double  u,
double  h2h 
)
private

Definition at line 84 of file microstrip.cpp.

85 {
86  double P, Q;
87  double h2hp1;
88 
89  h2hp1 = 1.0 + h2h;
90  P = 270.0 * ( 1.0 - tanh( 1.192 + 0.706 * sqrt( h2hp1 ) - 1.389 / h2hp1 ) );
91  Q = 1.0109 - atanh( ( 0.012 * u + 0.177 * u * u - 0.027 * u * u * u ) / ( h2hp1 * h2hp1 ) );
92  return P * Q;
93 }
double atanh(double x)
Definition: units.h:52

References atanh().

◆ dielectric_losses()

double MICROSTRIP::dielectric_losses ( )
private

Definition at line 356 of file microstrip.cpp.

357 {
358  double e_r, e_r_eff_0;
359  double alpha_d;
360 
361  e_r = m_parameters[EPSILONR_PRM];
362  e_r_eff_0 = er_eff_0;
363 
364  alpha_d = ( 20.0 * M_PI / log( 10.0 ) ) * ( m_parameters[FREQUENCY_PRM] / C0 )
365  * ( e_r / sqrt( e_r_eff_0 ) ) * ( ( e_r_eff_0 - 1.0 ) / ( e_r - 1.0 ) )
367 
368  return alpha_d;
369 }
double er_eff_0
Definition: microstrip.h:48
double m_parameters[EXTRA_PRMS_COUNT]
Definition: transline.h:120
#define C0
Definition: units.h:62

References C0, EPSILONR_PRM, er_eff_0, FREQUENCY_PRM, TRANSLINE::m_parameters, and TAND_PRM.

Referenced by attenuation().

◆ dispersion()

void MICROSTRIP::dispersion ( )
private

Definition at line 290 of file microstrip.cpp.

291 {
292  double e_r, e_r_eff_0;
293  double u, f_n, P, e_r_eff_f, D, Z0_f;
294 
295  e_r = m_parameters[EPSILONR_PRM];
296  e_r_eff_0 = er_eff_0;
298 
299  /* normalized frequency [GHz * mm] */
300  f_n = m_parameters[FREQUENCY_PRM] * m_parameters[H_PRM] / 1e06;
301 
302  P = e_r_dispersion( u, e_r, f_n );
303  /* effective dielectric constant corrected for dispersion */
304  e_r_eff_f = e_r - ( e_r - e_r_eff_0 ) / ( 1.0 + P );
305 
306  D = Z0_dispersion( u, e_r, e_r_eff_0, e_r_eff_f, f_n );
307  Z0_f = Z0_0 * D;
308 
309  er_eff = e_r_eff_f;
310  m_parameters[Z0_PRM] = Z0_f;
311 }
double Z0_0
Definition: microstrip.h:45
double e_r_dispersion(double, double, double)
Definition: microstrip.cpp:229
double er_eff_0
Definition: microstrip.h:48
double m_parameters[EXTRA_PRMS_COUNT]
Definition: transline.h:120
double Z0_dispersion()
#define D(x)
Definition: ptree.cpp:41
double er_eff
Definition: microstrip.h:49

References D, e_r_dispersion(), EPSILONR_PRM, er_eff, er_eff_0, FREQUENCY_PRM, H_PRM, TRANSLINE::m_parameters, PHYS_WIDTH_PRM, Z0_0, Z0_dispersion(), and Z0_PRM.

Referenced by calcAnalyze(), and C_MICROSTRIP::compute_single_line().

◆ e_r_dispersion()

double MICROSTRIP::e_r_dispersion ( double  u,
double  e_r,
double  f_n 
)
private

Definition at line 229 of file microstrip.cpp.

230 {
231  double P_1, P_2, P_3, P_4, P;
232 
233  P_1 = 0.27488 + u * ( 0.6315 + 0.525 / pow( 1.0 + 0.0157 * f_n, 20.0 ) )
234  - 0.065683 * exp( -8.7513 * u );
235  P_2 = 0.33622 * ( 1.0 - exp( -0.03442 * e_r ) );
236  P_3 = 0.0363 * exp( -4.6 * u ) * ( 1.0 - exp( -pow( f_n / 38.7, 4.97 ) ) );
237  P_4 = 1.0 + 2.751 * ( 1.0 - exp( -pow( e_r / 15.916, 8.0 ) ) );
238 
239  P = P_1 * P_2 * pow( ( P_3 * P_4 + 0.1844 ) * f_n, 1.5763 );
240 
241  return P;
242 }

Referenced by dispersion().

◆ e_r_effective()

double MICROSTRIP::e_r_effective ( double  e_r,
double  q 
)
private

Definition at line 143 of file microstrip.cpp.

144 {
145  double e_r_eff;
146 
147  e_r_eff = 0.5 * ( e_r + 1.0 ) + 0.5 * q * ( e_r - 1.0 );
148  return e_r_eff;
149 }

Referenced by microstrip_Z0().

◆ ellipk()

double TRANSLINE::ellipk ( double  k)
protectedinherited

Definition at line 312 of file transline.cpp.

313 {
314  double r, lost;
315 
316  ellipke( k, r, lost );
317  return r;
318 }
void ellipke(double, double &, double &)
Definition: transline.cpp:251

References TRANSLINE::ellipke().

Referenced by COPLANAR::calcAnalyze().

◆ ellipke()

void TRANSLINE::ellipke ( double  arg,
double &  k,
double &  e 
)
protectedinherited

Definition at line 251 of file transline.cpp.

252 {
253  int iMax = 16;
254 
255  if( arg == 1.0 )
256  {
257  k = INFINITY; // infinite
258  e = 0;
259  }
260  else if( std::isinf( arg ) && arg < 0 )
261  {
262  k = 0;
263  e = INFINITY; // infinite
264  }
265  else
266  {
267  double a, b, c, fr, s, fk = 1, fe = 1, t, da = arg;
268  int i;
269  if( arg < 0 )
270  {
271  fk = 1 / sqrt( 1 - arg );
272  fe = sqrt( 1 - arg );
273  da = -arg / ( 1 - arg );
274  }
275  a = 1;
276  b = sqrt( 1 - da );
277  c = sqrt( da );
278  fr = 0.5;
279  s = fr * c * c;
280  for( i = 0; i < iMax; i++ )
281  {
282  t = ( a + b ) / 2;
283  c = ( a - b ) / 2;
284  b = sqrt( a * b );
285  a = t;
286  fr *= 2;
287  s += fr * c * c;
288  if( c / a < NR_EPSI )
289  break;
290  }
291 
292  if( i >= iMax )
293  {
294  k = 0;
295  e = 0;
296  }
297  else
298  {
299  k = M_PI_2 / a;
300  e = M_PI_2 * ( 1 - s ) / a;
301  if( arg < 0 )
302  {
303  k *= fk;
304  e *= fe;
305  }
306  }
307  }
308 }
#define M_PI_2
Definition: transline.cpp:37
#define NR_EPSI
Definition: transline.cpp:245
#define INFINITY
Definition: transline.cpp:32

References INFINITY, M_PI_2, and NR_EPSI.

Referenced by TRANSLINE::ellipk().

◆ er_eff_freq()

double MICROSTRIP::er_eff_freq ( )
private

◆ ereff_dispersion()

double MICROSTRIP::ereff_dispersion ( )
private

◆ filling_factor()

double MICROSTRIP::filling_factor ( double  u,
double  e_r 
)
private

Definition at line 100 of file microstrip.cpp.

101 {
102  double a, b, q_inf;
103  double u2, u3, u4;
104 
105  u2 = u * u;
106  u3 = u2 * u;
107  u4 = u3 * u;
108  a = 1.0 + log( ( u4 + u2 / 2704 ) / ( u4 + 0.432 ) ) / 49.0 + log( 1.0 + u3 / 5929.741 ) / 18.7;
109  b = 0.564 * pow( ( e_r - 0.9 ) / ( e_r + 3.0 ), 0.053 );
110  q_inf = pow( 1.0 + 10.0 / u, -a * b );
111  return q_inf;
112 }

Referenced by microstrip_Z0().

◆ getProperties()

void TRANSLINE::getProperties ( void  )
inherited

@function getProperties

Get all properties from the UI. Computes some extra ones.

Definition at line 144 of file transline.cpp.

145 {
146  int i;
147  for( i = 0; i < DUMMY_PRM; ++i )
148  {
149  m_parameters[i] = getProperty( (PRMS_ID) i );
151  }
155 }
double m_parameters[EXTRA_PRMS_COUNT]
Definition: transline.h:120
PRMS_ID
Definition: transline.h:37
double getProperty(enum PRMS_ID aPrmId)
Definition: transline.cpp:135
#define TRANSLINE_OK
Definition: transline.h:30
double skin_depth()
@function skin_depth calculate skin depth
Definition: transline.cpp:229
void setErrorLevel(PRMS_ID, char)
@function setErrorLevel
Definition: transline.cpp:423

References DUMMY_PRM, EPSILON_EFF_PRM, TRANSLINE::getProperty(), TRANSLINE::m_parameters, RHO_PRM, TRANSLINE::setErrorLevel(), SIGMA_PRM, TRANSLINE::skin_depth(), SKIN_DEPTH_PRM, and TRANSLINE_OK.

Referenced by TRANSLINE::analyze(), and TRANSLINE::synthesize().

◆ getProperty()

double TRANSLINE::getProperty ( enum PRMS_ID  aPrmId)
inherited

◆ Init()

void TRANSLINE::Init ( void  )
inherited

Definition at line 87 of file transline.cpp.

88 {
89  wxColour wxcol = wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW );
90  okCol = KIGFX::COLOR4D( wxcol );
91  okCol.r = wxcol.Red() / 255.0;
92  okCol.g = wxcol.Green() / 255.0;
93  okCol.b = wxcol.Blue() / 255.0;
94  int i;
95  // Initialize these variables mainly to avoid warnings from a static analyzer
96  for( i = 0; i < EXTRA_PRMS_COUNT; ++i )
97  {
98  m_parameters[i] = 0;
99  }
100 }
double g
Green component.
Definition: color4d.h:367
double b
Blue component.
Definition: color4d.h:368
double m_parameters[EXTRA_PRMS_COUNT]
Definition: transline.h:120
KIGFX::COLOR4D okCol
Definition: transline.h:117
double r
Red component.
Definition: color4d.h:366
COLOR4D is the color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:99

References KIGFX::COLOR4D::b, EXTRA_PRMS_COUNT, KIGFX::COLOR4D::g, TRANSLINE::m_parameters, TRANSLINE::okCol, and KIGFX::COLOR4D::r.

Referenced by C_MICROSTRIP::C_MICROSTRIP(), COAX::COAX(), COPLANAR::COPLANAR(), MICROSTRIP(), RECTWAVEGUIDE::RECTWAVEGUIDE(), STRIPLINE::STRIPLINE(), TRANSLINE::TRANSLINE(), and TWISTEDPAIR::TWISTEDPAIR().

◆ isSelected()

bool TRANSLINE::isSelected ( enum PRMS_ID  aPrmId)
inherited

◆ line_angle()

void MICROSTRIP::line_angle ( )
private

Definition at line 432 of file microstrip.cpp.

433 {
434  double e_r_eff;
435  double v, lambda_g;
436 
437  e_r_eff = er_eff;
438 
439  /* velocity */
440  v = C0 / sqrt( e_r_eff * mur_eff );
441  /* wavelength */
442  lambda_g = v / m_parameters[FREQUENCY_PRM];
443  /* electrical angles */
444  m_parameters[ANG_L_PRM] = 2.0 * M_PI * m_parameters[PHYS_LEN_PRM] / lambda_g; /* in radians */
445 }
double mur_eff
Definition: microstrip.h:50
double m_parameters[EXTRA_PRMS_COUNT]
Definition: transline.h:120
#define C0
Definition: units.h:62
double er_eff
Definition: microstrip.h:49

References ANG_L_PRM, C0, er_eff, FREQUENCY_PRM, TRANSLINE::m_parameters, mur_eff, and PHYS_LEN_PRM.

Referenced by calcAnalyze().

◆ microstrip_Z0()

void MICROSTRIP::microstrip_Z0 ( )
private

Definition at line 178 of file microstrip.cpp.

179 {
180  double e_r, h2, h2h, u, t_h;
181  double Z0_h_r;
182  double delta_u_1, delta_u_r, q_inf, q_c, q_t, e_r_eff, e_r_eff_t, q;
183 
184  e_r = m_parameters[EPSILONR_PRM];
185  h2 = m_parameters[H_T_PRM];
186  h2h = h2 / m_parameters[H_PRM];
189 
190  /* compute normalized width correction for e_r = 1.0 */
191  delta_u_1 = delta_u_thickness( u, t_h, 1.0 );
192  /* compute homogeneous stripline impedance */
193  Z0_h_1 = Z0_homogeneous( u + delta_u_1 );
194  /* compute normalized width corection */
195  delta_u_r = delta_u_thickness( u, t_h, e_r );
196  u += delta_u_r;
197  /* compute homogeneous stripline impedance */
198  Z0_h_r = Z0_homogeneous( u );
199 
200  /* filling factor, with width corrected for thickness */
201  q_inf = filling_factor( u, e_r );
202  /* cover effect */
203  q_c = delta_q_cover( h2h );
204  /* thickness effect */
205  q_t = delta_q_thickness( u, t_h );
206  /* resultant filling factor */
207  q = ( q_inf - q_t ) * q_c;
208 
209  /* e_r corrected for thickness and non homogeneous material */
210  e_r_eff_t = e_r_effective( e_r, q );
211 
212  /* effective dielectric constant */
213  e_r_eff = e_r_eff_t * pow( Z0_h_1 / Z0_h_r, 2.0 );
214 
215  /* characteristic impedance, corrected for thickness, cover */
216  /* and non homogeneous material */
217  m_parameters[Z0_PRM] = Z0_h_r / sqrt( e_r_eff_t );
218 
219  w_eff = u * m_parameters[H_PRM];
220  er_eff_0 = e_r_eff;
222 }
double delta_q_thickness(double, double)
Definition: microstrip.cpp:130
double delta_q_cover(double)
Definition: microstrip.cpp:118
double filling_factor(double, double)
Definition: microstrip.cpp:100
double Z0_0
Definition: microstrip.h:45
double Z0_h_1
Definition: microstrip.h:56
double er_eff_0
Definition: microstrip.h:48
double m_parameters[EXTRA_PRMS_COUNT]
Definition: transline.h:120
double delta_u_thickness(double, double, double)
Definition: microstrip.cpp:155
double Z0_homogeneous(double)
Definition: microstrip.cpp:70
double e_r_effective(double, double)
Definition: microstrip.cpp:143
double w_eff
Definition: microstrip.h:51

References delta_q_cover(), delta_q_thickness(), delta_u_thickness(), e_r_effective(), EPSILONR_PRM, er_eff_0, filling_factor(), H_PRM, H_T_PRM, TRANSLINE::m_parameters, PHYS_WIDTH_PRM, T_PRM, w_eff, Z0_0, Z0_h_1, Z0_homogeneous(), and Z0_PRM.

Referenced by calcAnalyze(), and C_MICROSTRIP::compute_single_line().

◆ minimizeZ0Error1D()

bool TRANSLINE::minimizeZ0Error1D ( double *  aVar)
protectedinherited

@function minimizeZ0Error1D

Tries to find a parameter that minimizes the error ( on Z0 ). This function only works with a single parameter. Calls calcAnalyze several times until the error is acceptable. While the error is unnacceptable, changes slightly the parameter.

This function does not change Z0 / Angl_L.

Parameters
avarParameter to synthesize
Returns
'true' if error < MAX_ERROR, else 'false'

Definition at line 337 of file transline.cpp.

338 {
339  double Z0_dest, Z0_current, Z0_result, angl_l_dest, increment, slope, error;
340  int iteration;
341 
342  if( !std::isfinite( m_parameters[Z0_PRM] ) )
343  {
344  *aVar = NAN;
345  return false;
346  }
347 
348  if( ( !std::isfinite( *aVar ) ) || ( *aVar == 0 ) )
349  {
350  *aVar = 0.001;
351  }
352 
353  /* required value of Z0 */
354  Z0_dest = m_parameters[Z0_PRM];
355 
356  /* required value of angl_l */
357  angl_l_dest = m_parameters[ANG_L_PRM];
358 
359  /* Newton's method */
360  iteration = 0;
361 
362  /* compute parameters */
363  calcAnalyze();
364  Z0_current = m_parameters[Z0_PRM];
365 
366  error = fabs( Z0_dest - Z0_current );
367 
368  while( error > MAX_ERROR )
369  {
370  iteration++;
371  increment = *aVar / 100.0;
372  *aVar += increment;
373  /* compute parameters */
374  calcAnalyze();
375  Z0_result = m_parameters[Z0_PRM];
376  /* f(w(n)) = Z0 - Z0(w(n)) */
377  /* f'(w(n)) = -f'(Z0(w(n))) */
378  /* f'(Z0(w(n))) = (Z0(w(n)) - Z0(w(n+delw))/delw */
379  /* w(n+1) = w(n) - f(w(n))/f'(w(n)) */
380  slope = ( Z0_result - Z0_current ) / increment;
381  slope = ( Z0_dest - Z0_current ) / slope - increment;
382  *aVar += slope;
383  if( *aVar <= 0.0 )
384  *aVar = increment;
385  /* find new error */
386  /* compute parameters */
387  calcAnalyze();
388  Z0_current = m_parameters[Z0_PRM];
389  error = fabs( Z0_dest - Z0_current );
390 
391  if( iteration > 100 )
392  break;
393  }
394 
395  /* Compute one last time, but with correct length */
396  m_parameters[Z0_PRM] = Z0_dest;
397  m_parameters[ANG_L_PRM] = angl_l_dest;
400  / 2.0 / M_PI; /* in m */
401  calcAnalyze();
402 
403  /* Restore parameters */
404  m_parameters[Z0_PRM] = Z0_dest;
405  m_parameters[ANG_L_PRM] = angl_l_dest;
408  / 2.0 / M_PI; /* in m */
409  return error <= MAX_ERROR;
410 }
virtual void calcAnalyze()
Computation for analysis.
Definition: transline.h:101
#define MAX_ERROR
Definition: transline.cpp:320
double m_parameters[EXTRA_PRMS_COUNT]
Definition: transline.h:120
#define C0
Definition: units.h:62

References ANG_L_PRM, C0, TRANSLINE::calcAnalyze(), EPSILON_EFF_PRM, FREQUENCY_PRM, TRANSLINE::m_parameters, MAX_ERROR, PHYS_LEN_PRM, and Z0_PRM.

Referenced by COPLANAR::calcSynthesize(), TWISTEDPAIR::calcSynthesize(), STRIPLINE::calcSynthesize(), and calcSynthesize().

◆ mur_eff_ms()

void MICROSTRIP::mur_eff_ms ( )
private

Definition at line 387 of file microstrip.cpp.

388 {
389  double* mur = &m_parameters[MUR_PRM];
390  double* h = &m_parameters[H_PRM];
391  double* w = &m_parameters[PHYS_WIDTH_PRM];
392  mur_eff = ( 2.0 * *mur )
393  / ( ( 1.0 + *mur ) + ( ( 1.0 - *mur ) * pow( ( 1.0 + ( 10.0 * *h / *w ) ), -0.5 ) ) );
394 }
double mur_eff
Definition: microstrip.h:50
double mur
Definition: microstrip.h:42
double m_parameters[EXTRA_PRMS_COUNT]
Definition: transline.h:120
double h
Definition: microstrip.h:38
double w
Definition: microstrip.h:43

References h, H_PRM, TRANSLINE::m_parameters, mur, mur_eff, MUR_PRM, PHYS_WIDTH_PRM, and w.

Referenced by calcAnalyze().

◆ setErrorLevel()

void TRANSLINE::setErrorLevel ( PRMS_ID  aP,
char  aErrorLevel 
)
protectedinherited

@function setErrorLevel

set an error / warning level for a given parameter.

See also
TRANSLINE_OK
TRANSLINE_WARNING
TRANSLINE_ERROR
Parameters
aPparameter
aErrorLevelError level

Definition at line 423 of file transline.cpp.

424 {
425  switch( aErrorLevel )
426  {
427  case( TRANSLINE_WARNING ):
429  break;
430  case( TRANSLINE_ERROR ):
432  break;
433  default:
435  break;
436  }
437 }
void SetPropertyBgColorInDialog(enum PRMS_ID aPrmId, const KIGFX::COLOR4D *aCol)
Function SetPropertyBgColorInDialog Set the background color of a parameter.
KIGFX::COLOR4D okCol
Definition: transline.h:117
KIGFX::COLOR4D errCol
Definition: transline.h:115
#define TRANSLINE_ERROR
Definition: transline.h:32
KIGFX::COLOR4D warnCol
Definition: transline.h:116
#define TRANSLINE_WARNING
Definition: transline.h:31

References TRANSLINE::errCol, TRANSLINE::okCol, SetPropertyBgColorInDialog(), TRANSLINE_ERROR, TRANSLINE_WARNING, and TRANSLINE::warnCol.

Referenced by TRANSLINE::checkProperties(), TRANSLINE::getProperties(), TWISTEDPAIR::showAnalyze(), COAX::showAnalyze(), STRIPLINE::showAnalyze(), COPLANAR::showAnalyze(), RECTWAVEGUIDE::showAnalyze(), showAnalyze(), C_MICROSTRIP::showAnalyze(), TWISTEDPAIR::showSynthesize(), STRIPLINE::showSynthesize(), COAX::showSynthesize(), COPLANAR::showSynthesize(), RECTWAVEGUIDE::showSynthesize(), showSynthesize(), and C_MICROSTRIP::showSynthesize().

◆ setProperty()

◆ setResult() [1/2]

void TRANSLINE::setResult ( int  line,
double  value,
const char *  text 
)
inherited

Definition at line 128 of file transline.cpp.

129 {
130  SetResultInDialog( line, value, text );
131 }
void SetResultInDialog(int line, const char *text)

References SetResultInDialog().

Referenced by TWISTEDPAIR::show_results(), STRIPLINE::show_results(), COAX::show_results(), COPLANAR::show_results(), RECTWAVEGUIDE::show_results(), show_results(), and C_MICROSTRIP::show_results().

◆ setResult() [2/2]

void TRANSLINE::setResult ( int  line,
const char *  text 
)
inherited

Definition at line 124 of file transline.cpp.

125 {
126  SetResultInDialog( line, text );
127 }
void SetResultInDialog(int line, const char *text)

References SetResultInDialog().

◆ show_results()

void MICROSTRIP::show_results ( )
overrideprivatevirtual

Shows results.

Reimplemented from TRANSLINE.

Definition at line 463 of file microstrip.cpp.

464 {
467 
468  setResult( 0, er_eff, "" );
469  setResult( 1, atten_cond, "dB" );
470  setResult( 2, atten_dielectric, "dB" );
471 
473 }
void setResult(int, double, const char *)
Definition: transline.cpp:128
void setProperty(enum PRMS_ID aPrmId, double aValue)
Definition: transline.cpp:106
double m_parameters[EXTRA_PRMS_COUNT]
Definition: transline.h:120
#define UNIT_MICRON
Definition: units_scales.h:33
double atten_dielectric
Definition: microstrip.h:52
double er_eff
Definition: microstrip.h:49
double atten_cond
Definition: microstrip.h:53

References ANG_L_PRM, atten_cond, atten_dielectric, er_eff, TRANSLINE::m_parameters, TRANSLINE::setProperty(), TRANSLINE::setResult(), SKIN_DEPTH_PRM, UNIT_MICRON, and Z0_PRM.

◆ showAnalyze()

void MICROSTRIP::showAnalyze ( )
overrideprivatevirtual

Shows synthesis results and checks for errors / warnings.

Reimplemented from TRANSLINE.

Definition at line 497 of file microstrip.cpp.

498 {
501 
502  // Check for errors
503  if( !std::isfinite( m_parameters[Z0_PRM] ) || ( m_parameters[Z0_PRM] < 0 ) )
505 
506  if( !std::isfinite( m_parameters[ANG_L_PRM] ) || ( m_parameters[ANG_L_PRM] < 0 ) )
508 
509  // Check for warnings
510  if( !std::isfinite( m_parameters[PHYS_LEN_PRM] ) || ( m_parameters[PHYS_LEN_PRM] < 0 ) )
512 
513  if( !std::isfinite( m_parameters[PHYS_WIDTH_PRM] ) || ( m_parameters[PHYS_WIDTH_PRM] <= 0 ) )
515 }
void setProperty(enum PRMS_ID aPrmId, double aValue)
Definition: transline.cpp:106
double m_parameters[EXTRA_PRMS_COUNT]
Definition: transline.h:120
#define TRANSLINE_ERROR
Definition: transline.h:32
#define TRANSLINE_WARNING
Definition: transline.h:31
void setErrorLevel(PRMS_ID, char)
@function setErrorLevel
Definition: transline.cpp:423

References ANG_L_PRM, TRANSLINE::m_parameters, PHYS_LEN_PRM, PHYS_WIDTH_PRM, TRANSLINE::setErrorLevel(), TRANSLINE::setProperty(), TRANSLINE_ERROR, TRANSLINE_WARNING, and Z0_PRM.

◆ showSynthesize()

void MICROSTRIP::showSynthesize ( )
overrideprivatevirtual

Shows analysis results and checks for errors / warnings.

Reimplemented from TRANSLINE.

Definition at line 476 of file microstrip.cpp.

477 {
480 
481  // Check for errors
482  if( !std::isfinite( m_parameters[PHYS_LEN_PRM] ) || ( m_parameters[PHYS_LEN_PRM] < 0 ) )
484 
485  if( !std::isfinite( m_parameters[PHYS_WIDTH_PRM] ) || ( m_parameters[PHYS_WIDTH_PRM] <= 0 ) )
487 
488  // Check for warnings
489 
490  if( !std::isfinite( m_parameters[Z0_PRM] ) || ( m_parameters[Z0_PRM] < 0 ) )
492 
493  if( !std::isfinite( m_parameters[ANG_L_PRM] ) || ( m_parameters[ANG_L_PRM] < 0 ) )
495 }
void setProperty(enum PRMS_ID aPrmId, double aValue)
Definition: transline.cpp:106
double m_parameters[EXTRA_PRMS_COUNT]
Definition: transline.h:120
#define TRANSLINE_ERROR
Definition: transline.h:32
#define TRANSLINE_WARNING
Definition: transline.h:31
void setErrorLevel(PRMS_ID, char)
@function setErrorLevel
Definition: transline.cpp:423

References ANG_L_PRM, TRANSLINE::m_parameters, PHYS_LEN_PRM, PHYS_WIDTH_PRM, TRANSLINE::setErrorLevel(), TRANSLINE::setProperty(), TRANSLINE_ERROR, TRANSLINE_WARNING, and Z0_PRM.

◆ skin_depth()

double TRANSLINE::skin_depth ( )
protectedinherited

@function skin_depth calculate skin depth

$ \frac{1}{\sqrt{ \pi \cdot f \cdot \mu \cdot \sigma }} $

Definition at line 229 of file transline.cpp.

230 {
231  double depth;
232  depth = 1.0
233  / sqrt( M_PI * m_parameters[FREQUENCY_PRM] * m_parameters[MURC_PRM] * MU0
234  * m_parameters[SIGMA_PRM] );
235  return depth;
236 }
#define MU0
Definition: units.h:61
double m_parameters[EXTRA_PRMS_COUNT]
Definition: transline.h:120

References FREQUENCY_PRM, TRANSLINE::m_parameters, MU0, MURC_PRM, and SIGMA_PRM.

Referenced by C_MICROSTRIP::attenuation(), attenuation(), STRIPLINE::calcAnalyze(), COPLANAR::calcAnalyze(), and TRANSLINE::getProperties().

◆ synth_width()

double MICROSTRIP::synth_width ( )
private

Definition at line 398 of file microstrip.cpp.

399 {
400  double e_r, a, b;
401  double w_h, width;
402 
403  e_r = m_parameters[EPSILONR_PRM];
404 
405  a = ( ( m_parameters[Z0_PRM] / ZF0 / 2 / M_PI ) * sqrt( ( e_r + 1 ) / 2. ) )
406  + ( ( e_r - 1 ) / ( e_r + 1 ) * ( 0.23 + ( 0.11 / e_r ) ) );
407  b = ZF0 / 2 * M_PI / ( m_parameters[Z0_PRM] * sqrt( e_r ) );
408 
409  if( a > 1.52 )
410  {
411  w_h = 8 * exp( a ) / ( exp( 2. * a ) - 2 );
412  }
413  else
414  {
415  w_h = ( 2. / M_PI )
416  * ( b - 1. - log( ( 2 * b ) - 1. )
417  + ( ( e_r - 1 ) / ( 2 * e_r ) ) * ( log( b - 1. ) + 0.39 - 0.61 / e_r ) );
418  }
419 
420  if( m_parameters[H_PRM] > 0.0 )
421  width = w_h * m_parameters[H_PRM];
422  else
423  width = 0;
424 
425  return width;
426 }
#define ZF0
Definition: units.h:63
double m_parameters[EXTRA_PRMS_COUNT]
Definition: transline.h:120

References EPSILONR_PRM, H_PRM, TRANSLINE::m_parameters, Z0_PRM, and ZF0.

Referenced by calcSynthesize().

◆ synthesize()

void TRANSLINE::synthesize ( )
virtualinherited

Definition at line 212 of file transline.cpp.

213 {
214  getProperties();
215  checkProperties();
216  calcSynthesize();
217  showSynthesize();
218  show_results();
219 }
virtual void calcSynthesize()
Computation for synthesis.
Definition: transline.h:104
void checkProperties(void)
@function checkProperties
Definition: transline.cpp:161
virtual void showSynthesize()
Shows analysis results and checks for errors / warnings.
Definition: transline.h:110
virtual void show_results()
Shows results.
Definition: transline.h:113
void getProperties(void)
@function getProperties
Definition: transline.cpp:144

References TRANSLINE::calcSynthesize(), TRANSLINE::checkProperties(), TRANSLINE::getProperties(), TRANSLINE::show_results(), and TRANSLINE::showSynthesize().

Referenced by PCB_CALCULATOR_FRAME::OnTranslineSynthetize().

◆ Z0_dispersion() [1/2]

double MICROSTRIP::Z0_dispersion ( )
private

Referenced by dispersion().

◆ Z0_dispersion() [2/2]

double MICROSTRIP::Z0_dispersion ( double  u,
double  e_r,
double  e_r_eff_0,
double  e_r_eff_f,
double  f_n 
)
private

Definition at line 249 of file microstrip.cpp.

251 {
252  double R_1, R_2, R_3, R_4, R_5, R_6, R_7, R_8, R_9, R_10, R_11, R_12, R_13, R_14, R_15, R_16,
253  R_17, D, tmpf;
254 
255  R_1 = 0.03891 * pow( e_r, 1.4 );
256  R_2 = 0.267 * pow( u, 7.0 );
257  R_3 = 4.766 * exp( -3.228 * pow( u, 0.641 ) );
258  R_4 = 0.016 + pow( 0.0514 * e_r, 4.524 );
259  R_5 = pow( f_n / 28.843, 12.0 );
260  R_6 = 22.2 * pow( u, 1.92 );
261  R_7 = 1.206 - 0.3144 * exp( -R_1 ) * ( 1.0 - exp( -R_2 ) );
262  R_8 = 1.0
263  + 1.275
264  * ( 1.0
265  - exp( -0.004625 * R_3 * pow( e_r, 1.674 )
266  * pow( f_n / 18.365, 2.745 ) ) );
267  tmpf = pow( e_r - 1.0, 6.0 );
268  R_9 = 5.086 * R_4 * ( R_5 / ( 0.3838 + 0.386 * R_4 ) )
269  * ( exp( -R_6 ) / ( 1.0 + 1.2992 * R_5 ) ) * ( tmpf / ( 1.0 + 10.0 * tmpf ) );
270  R_10 = 0.00044 * pow( e_r, 2.136 ) + 0.0184;
271  tmpf = pow( f_n / 19.47, 6.0 );
272  R_11 = tmpf / ( 1.0 + 0.0962 * tmpf );
273  R_12 = 1.0 / ( 1.0 + 0.00245 * u * u );
274  R_13 = 0.9408 * pow( e_r_eff_f, R_8 ) - 0.9603;
275  R_14 = ( 0.9408 - R_9 ) * pow( e_r_eff_0, R_8 ) - 0.9603;
276  R_15 = 0.707 * R_10 * pow( f_n / 12.3, 1.097 );
277  R_16 = 1.0 + 0.0503 * e_r * e_r * R_11 * ( 1.0 - exp( -pow( u / 15.0, 6.0 ) ) );
278  R_17 = R_7 * ( 1.0 - 1.1241 * ( R_12 / R_16 ) * exp( -0.026 * pow( f_n, 1.15656 ) - R_15 ) );
279 
280  D = pow( R_13 / R_14, R_17 );
281 
282  return D;
283 }
#define D(x)
Definition: ptree.cpp:41

References D.

◆ Z0_homogeneous()

double MICROSTRIP::Z0_homogeneous ( double  u)
private

Definition at line 70 of file microstrip.cpp.

71 {
72  double freq, Z0_value;
73 
74  freq = 6.0 + ( 2.0 * M_PI - 6.0 ) * exp( -pow( 30.666 / u, 0.7528 ) );
75  Z0_value = ( ZF0 / ( 2.0 * M_PI ) ) * log( freq / u + sqrt( 1.0 + 4.0 / ( u * u ) ) );
76  return Z0_value;
77 }
#define ZF0
Definition: units.h:63

References ZF0.

Referenced by microstrip_Z0().

Friends And Related Function Documentation

◆ C_MICROSTRIP

friend class C_MICROSTRIP
friend

Definition at line 35 of file microstrip.h.

Member Data Documentation

◆ ang_l

double MICROSTRIP::ang_l
private

Definition at line 47 of file microstrip.h.

◆ atten_cond

double MICROSTRIP::atten_cond
private

Definition at line 53 of file microstrip.h.

Referenced by attenuation(), and show_results().

◆ atten_dielectric

double MICROSTRIP::atten_dielectric
private

Definition at line 52 of file microstrip.h.

Referenced by attenuation(), and show_results().

◆ er_eff

double MICROSTRIP::er_eff
private

◆ er_eff_0

◆ errCol

KIGFX::COLOR4D TRANSLINE::errCol = KIGFX::COLOR4D( 1, 0.63, 0.63, 1 )
inherited

Definition at line 115 of file transline.h.

Referenced by TRANSLINE::setErrorLevel().

◆ h

double MICROSTRIP::h
private

Definition at line 38 of file microstrip.h.

Referenced by mur_eff_ms().

◆ ht

double MICROSTRIP::ht
private

Definition at line 39 of file microstrip.h.

◆ l

double MICROSTRIP::l
private

Definition at line 44 of file microstrip.h.

◆ len

double TRANSLINE::len
protectedinherited

Definition at line 121 of file transline.h.

Referenced by TRANSLINE::TRANSLINE().

◆ m_Name

◆ m_parameters

double TRANSLINE::m_parameters[EXTRA_PRMS_COUNT]
protectedinherited

Definition at line 120 of file transline.h.

Referenced by RECTWAVEGUIDE::alphac(), COAX::alphac_coax(), RECTWAVEGUIDE::alphad(), COAX::alphad_coax(), C_MICROSTRIP::attenuation(), attenuation(), TWISTEDPAIR::calcAnalyze(), COAX::calcAnalyze(), STRIPLINE::calcAnalyze(), COPLANAR::calcAnalyze(), RECTWAVEGUIDE::calcAnalyze(), TWISTEDPAIR::calcSynthesize(), COPLANAR::calcSynthesize(), COAX::calcSynthesize(), STRIPLINE::calcSynthesize(), RECTWAVEGUIDE::calcSynthesize(), C_MICROSTRIP::calcSynthesize(), calcSynthesize(), TRANSLINE::checkProperties(), C_MICROSTRIP::compute_single_line(), conductor_losses(), C_MICROSTRIP::conductor_losses(), C_MICROSTRIP::delta_u_thickness(), dielectric_losses(), C_MICROSTRIP::dielectric_losses(), dispersion(), C_MICROSTRIP::er_eff_freq(), C_MICROSTRIP::er_eff_static(), RECTWAVEGUIDE::fc(), RECTWAVEGUIDE::get_rectwaveguide_comp(), RECTWAVEGUIDE::get_rectwaveguide_elec(), RECTWAVEGUIDE::get_rectwaveguide_phys(), RECTWAVEGUIDE::get_rectwaveguide_sub(), TRANSLINE::getProperties(), TRANSLINE::Init(), RECTWAVEGUIDE::kc_square(), RECTWAVEGUIDE::kval_square(), C_MICROSTRIP::line_angle(), line_angle(), STRIPLINE::lineImpedance(), microstrip_Z0(), TRANSLINE::minimizeZ0Error1D(), mur_eff_ms(), TWISTEDPAIR::show_results(), STRIPLINE::show_results(), COAX::show_results(), COPLANAR::show_results(), RECTWAVEGUIDE::show_results(), show_results(), C_MICROSTRIP::show_results(), TWISTEDPAIR::showAnalyze(), COAX::showAnalyze(), STRIPLINE::showAnalyze(), COPLANAR::showAnalyze(), RECTWAVEGUIDE::showAnalyze(), showAnalyze(), C_MICROSTRIP::showAnalyze(), STRIPLINE::showSynthesize(), TWISTEDPAIR::showSynthesize(), COAX::showSynthesize(), COPLANAR::showSynthesize(), RECTWAVEGUIDE::showSynthesize(), showSynthesize(), C_MICROSTRIP::showSynthesize(), TRANSLINE::skin_depth(), C_MICROSTRIP::syn_fun(), synth_width(), C_MICROSTRIP::synth_width(), TRANSLINE::TRANSLINE(), C_MICROSTRIP::Z0_dispersion(), and C_MICROSTRIP::Z0_even_odd().

◆ mur

double MICROSTRIP::mur
private

Definition at line 42 of file microstrip.h.

Referenced by mur_eff_ms().

◆ mur_eff

double MICROSTRIP::mur_eff
private

Definition at line 50 of file microstrip.h.

Referenced by calcSynthesize(), line_angle(), and mur_eff_ms().

◆ okCol

KIGFX::COLOR4D TRANSLINE::okCol = KIGFX::COLOR4D( 1, 1, 1, 1 )
inherited

Definition at line 117 of file transline.h.

Referenced by TRANSLINE::Init(), and TRANSLINE::setErrorLevel().

◆ rough

double MICROSTRIP::rough
private

Definition at line 41 of file microstrip.h.

◆ t

double MICROSTRIP::t
private

Definition at line 40 of file microstrip.h.

◆ w

double MICROSTRIP::w
private

Definition at line 43 of file microstrip.h.

Referenced by mur_eff_ms().

◆ w_eff

double MICROSTRIP::w_eff
private

Definition at line 51 of file microstrip.h.

Referenced by microstrip_Z0().

◆ warnCol

KIGFX::COLOR4D TRANSLINE::warnCol = KIGFX::COLOR4D( 1, 1, 0.57, 1 )
inherited

Definition at line 116 of file transline.h.

Referenced by TRANSLINE::setErrorLevel().

◆ Z0

double MICROSTRIP::Z0
private

Definition at line 46 of file microstrip.h.

◆ Z0_0

double MICROSTRIP::Z0_0
private

Definition at line 45 of file microstrip.h.

Referenced by dispersion(), microstrip_Z0(), and C_MICROSTRIP::Z0_even_odd().

◆ Z0_h_1

double MICROSTRIP::Z0_h_1
private

Definition at line 56 of file microstrip.h.

Referenced by conductor_losses(), and microstrip_Z0().


The documentation for this class was generated from the following files: