KiCad PCB EDA Suite
Loading...
Searching...
No Matches
dielectric_djordjevic_sarkar.h
Go to the documentation of this file.
1/*
2 * This program source code file is part of KiCad, a free EDA CAD application.
3 *
4 * Copyright The KiCad Developers, see AUTHORS.TXT for contributors.
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2
9 * of the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, you may find one here:
18 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
19 * or you may search the http://www.gnu.org website for the version 2 license,
20 * or you may write to the Free Software Foundation, Inc.,
21 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
22 */
23
24#ifndef TRANSLINE_CALCULATIONS_DIELECTRIC_DJORDJEVIC_SARKAR_H
25#define TRANSLINE_CALCULATIONS_DIELECTRIC_DJORDJEVIC_SARKAR_H
26
27#include <complex>
28
29
43{
44public:
52 void Fit( double aEpsRSpec, double aTanDSpec, double aFSpec, double aF1 = 1.0e3,
53 double aF2 = 1.0e12 );
54
56 std::complex<double> ComplexEpsilonAt( double aF ) const;
57
59 double EpsilonRealAt( double aF ) const;
60
62 double TanDeltaAt( double aF ) const;
63
64 double GetEpsilonInf() const { return m_epsInf; }
65 double GetM() const { return m_m; }
66 bool IsLossless() const { return m_lossless; }
67
68private:
69 double m_epsInf = 1.0;
70 double m_m = 0.0;
71 double m_f1 = 1.0e3;
72 double m_f2 = 1.0e12;
73
74 // Avoids a complex-log evaluation on every query when tan delta is zero.
75 bool m_lossless = true;
76};
77
78#endif
Kramers-Kronig-consistent wideband dielectric model after Djordjevic et al.
std::complex< double > ComplexEpsilonAt(double aF) const
Complex relative permittivity at aF. Imag part is non-positive (loss).
double TanDeltaAt(double aF) const
Loss tangent tan delta = -Im(eps) / Re(eps) at aF.
double EpsilonRealAt(double aF) const
Real part of relative permittivity at aF.
void Fit(double aEpsRSpec, double aTanDSpec, double aFSpec, double aF1=1.0e3, double aF2=1.0e12)
Fit the model from a single (epsR, tan delta) datapoint at f_spec.