77 const double theta_rad = std::atan( twist *
M_PI * Dout );
78 const double theta_deg = theta_rad * ( 180.0 /
M_PI );
80 const double epsEff = epsrEnv + ( 0.25 + 0.0007 * theta_deg * theta_deg ) * ( epsr - epsrEnv );
83 const double z0 = (
TC::ZF0 /
M_PI / std::sqrt( epsEff ) ) * std::acosh( Dout / Din );
93 / ( Din - skinDepth ) );
130 const bool Z0_invalid = !std::isfinite(
Z0 ) ||
Z0 < 0;
131 const bool angL_invalid = !std::isfinite( angL ) || angL < 0;
132 const bool len_invalid = !std::isfinite( len ) || len < 0;
133 const bool Din_invalid = !std::isfinite( Din ) || Din <= 0.0;
134 const bool Dout_invalid = !std::isfinite( Dout ) || Dout <= 0.0;
135 const bool geometry_invalid = Din > Dout;
160 const bool Z0_invalid = !std::isfinite(
Z0 ) ||
Z0 < 0;
161 const bool angL_invalid = !std::isfinite( angL ) || angL < 0;
162 const bool len_invalid = !std::isfinite( len ) || len < 0;
163 const bool Din_invalid = !std::isfinite( Din ) || Din <= 0.0;
164 const bool Dout_invalid = !std::isfinite( Dout ) || Dout <= 0.0;
165 const bool geometry_invalid = Din > Dout;
double GetDispersedEpsilonR(double aF) const
Dispersed permittivity at aF. Returns raw EPSILONR when the model is inactive.
TRANSLINE_PARAMETERS m_synthesizeTarget
Which geometry parameter is the unknown during synthesis (set by the UI)
double GetDispersedTanDelta(double aF) const
Dispersed loss tangent at aF. Returns raw TAND when the model is inactive.
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.
void SetSynthesisResult(TRANSLINE_PARAMETERS aParam, const double aValue, const TRANSLINE_STATUS aStatus=TRANSLINE_STATUS::OK)
Sets a synthesis result.
void UpdateDielectricModel()
Refit the Djordjevic-Sarkar model from the current parameter map.
double SkinDepth() const
Calculate skin depth.
bool MinimiseZ0Error1D(TRANSLINE_PARAMETERS aOptimise, TRANSLINE_PARAMETERS aMeasure, bool aRecalculateLength=false)
minimizeZ0Error1D
void SetAnalysisResult(TRANSLINE_PARAMETERS aParam, const double aValue, const TRANSLINE_STATUS aStatus=TRANSLINE_STATUS::OK)
Sets an analysis result.
static double UnitPropagationDelay(double aEpsilonEff)
Calculates the unit propagation delay (ps/cm) for the given effective permittivity.
bool Synthesize(SYNTHESIZE_OPTS aOpts) override
Synthesize Din or Dout to hit the target Z0. Length is recomputed from ANG_L.
void Analyse() override
Analyse pair geometry to output Z0, electrical length, losses, skin depth, εeff.
void SetSynthesisResults() override
Sets the output values and status following synthesis.
void SetAnalysisResults() override
Sets the output values and status following analysis.
SYNTHESIZE_OPTS
Options for specifying synthesis inputs, targets, or strategies.
TRANSLINE_STATUS
Parameter status values.
TRANSLINE_PARAMETERS
All possible parameters used (as inputs or outputs) by the transmission line calculations.
@ TWISTEDPAIR_EPSILONR_ENV