78 if( stripline_a >= 0.0 )
110 const Geometry g = Geometry1();
112 const Impedances z = Run( calc );
114 BOOST_TEST( z.z0e == 55.34, boost::test_tools::tolerance( 0.05 ) );
115 BOOST_TEST( z.z0o == 43.59, boost::test_tools::tolerance( 0.05 ) );
116 BOOST_TEST( z.zdiff == 87.18, boost::test_tools::tolerance( 0.05 ) );
117 BOOST_TEST( z.zdiff == 2.0 * z.z0o, boost::test_tools::tolerance( 1e-12 ) );
125 const Geometry g = Geometry1();
128 const Impedances zBaseline = Run( baseline );
131 const Impedances zExplicit = Run( explicitCenter );
133 BOOST_TEST( zExplicit.z0e == zBaseline.z0e, boost::test_tools::tolerance( 1e-6 ) );
134 BOOST_TEST( zExplicit.z0o == zBaseline.z0o, boost::test_tools::tolerance( 1e-6 ) );
135 BOOST_TEST( zExplicit.zdiff == zBaseline.zdiff, boost::test_tools::tolerance( 1e-6 ) );
146 const Geometry g = Geometry1();
148 const Impedances z = Run( calc );
150 BOOST_TEST( z.z0e == 50.0, boost::test_tools::tolerance( 0.08 ) );
151 BOOST_TEST( z.z0o == 41.5, boost::test_tools::tolerance( 0.08 ) );
152 BOOST_TEST( z.zdiff == 83.0, boost::test_tools::tolerance( 0.08 ) );
155 const Impedances zCentered = Run( centered );
160 const double dropE = zCentered.z0e - z.z0e;
161 const double dropO = zCentered.z0o - z.z0o;
173 const Geometry g = Geometry1();
176 const Impedances zCentered = Run( centered );
179 const Impedances zOffset = Run( offsetCentered );
181 BOOST_TEST( zOffset.z0e == zCentered.z0e, boost::test_tools::tolerance( 1e-6 ) );
182 BOOST_TEST( zOffset.z0o == zCentered.z0o, boost::test_tools::tolerance( 1e-6 ) );
190 const Geometry g = Geometry1();
195 double prevZ0e = std::numeric_limits<double>::infinity();
197 for(
double a : aValues )
200 const Impedances z = Run( calc );
213 const Geometry g = Geometry1();
222 BOOST_TEST( zcomm == 0.5 * z0e, boost::test_tools::tolerance( 1e-12 ) );
223 BOOST_TEST( kc == ( z0e - z0o ) / ( z0e + z0o ), boost::test_tools::tolerance( 1e-12 ) );
228 <<
" Zcomm=" << zcomm <<
" k_c=" << kc );
236 const Geometry g = Geometry1();
239 const double zdiffTarget = 87.18;
247 BOOST_TEST( zdiff == zdiffTarget, boost::test_tools::tolerance( 0.01 ) );
257 const Geometry g = Geometry1();
277 const Geometry g = Geometry1();
280 const double zdiffTarget = 92.0;
281 const double zcommTarget = 34.0;
291 BOOST_TEST( zdiff == zdiffTarget, boost::test_tools::tolerance( 0.01 ) );
292 BOOST_TEST( zcomm == zcommTarget, boost::test_tools::tolerance( 0.01 ) );
301 const Geometry g = Geometry1();
309 const double z0oTarget = 43.59;
316 BOOST_TEST( z0o == z0oTarget, boost::test_tools::tolerance( 0.01 ) );
325 const Geometry g = Geometry1();
335 const double z0eTarget = 70.0;
336 const double z0oTarget = 35.0;
347 BOOST_TEST( z0e == z0eTarget, boost::test_tools::tolerance( 0.02 ) );
348 BOOST_TEST( z0o == z0oTarget, boost::test_tools::tolerance( 0.02 ) );
360Impedances AnalyseStack(
double topDielectric,
double signal,
double bottomDielectric )
362 Geometry g = Geometry1();
363 g.b = topDielectric + signal + bottomDielectric;
366 const double striplineA = topDielectric + 0.5 * signal;
384 const Impedances zStack = AnalyseStack( dielectric, signal, dielectric );
386 Geometry g = Geometry1();
387 g.b = 2.0 * dielectric + signal;
390 const Impedances zCentered = Run( centered );
392 BOOST_TEST( zStack.z0e == zCentered.z0e, boost::test_tools::tolerance( 1e-9 ) );
393 BOOST_TEST( zStack.z0o == zCentered.z0o, boost::test_tools::tolerance( 1e-9 ) );
394 BOOST_TEST( zStack.zdiff == zCentered.zdiff, boost::test_tools::tolerance( 1e-9 ) );
409 const Impedances zOriginal = AnalyseStack(
top, signal, bottom );
410 const Impedances zSwapped = AnalyseStack( bottom, signal,
top );
412 BOOST_TEST( zOriginal.z0e == zSwapped.z0e, boost::test_tools::tolerance( 1e-9 ) );
413 BOOST_TEST( zOriginal.z0o == zSwapped.z0o, boost::test_tools::tolerance( 1e-9 ) );
414 BOOST_TEST( zOriginal.zdiff == zSwapped.zdiff, boost::test_tools::tolerance( 1e-9 ) );
426 Geometry g = Geometry1();
431 const Impedances zMidplane = Run( calcMidplane );
434 const Impedances zTop = Run( calcTop );
436 BOOST_TEST( zMidplane.z0e == zTop.z0e, boost::test_tools::tolerance( 1e-12 ) );
437 BOOST_TEST( zMidplane.z0o == zTop.z0o, boost::test_tools::tolerance( 1e-12 ) );
void Analyse() override
Analyse track geometry parameters to output Z0 and Ang_L.
bool Synthesize(SYNTHESIZE_OPTS aOpts) override
Synthesis track geometry parameters to match given Z0.
double GetParameter(const TRANSLINE_PARAMETERS aParam) const
Gets the given calculation property.
void SetParameter(const TRANSLINE_PARAMETERS aParam, const double aValue)
Sets the given calculation property.
std::unordered_map< TRANSLINE_PARAMETERS, std::pair< double, TRANSLINE_STATUS > > & GetAnalysisResults()
Gets the output parameters following analysis.
constexpr double UNIT_MIL
BOOST_AUTO_TEST_CASE(HorizontalAlignment)
BOOST_AUTO_TEST_SUITE(CadstarPartParser)
BOOST_AUTO_TEST_CASE(CenteredSymmetric)
BOOST_TEST(contains==c.ExpectedContains)
BOOST_REQUIRE(intersection.has_value()==c.ExpectedIntersection.has_value())
BOOST_AUTO_TEST_SUITE_END()
KIBIS top(path, &reporter)
BOOST_TEST_MESSAGE("\n=== Real-World Polygon PIP Benchmark ===\n"<< formatTable(table))
TRANSLINE_PARAMETERS
All possible parameters used (as inputs or outputs) by the transmission line calculations.