22#include <fmt/format.h>
29 std::string r=
"0", l=
"0", g=
"0", c=
"0", len=
"1";
33 case SIM_MODEL::TYPE::TLINE_Z0:
38 if( std::isnan( z0 ) || std::isnan( td ) )
39 return fmt::format(
".model {} LTRA()\n", aItem.
modelName );
41 l = fmt::format(
"{:g}", td * z0 );
42 c = fmt::format(
"{:g}", td / z0 );
45 case SIM_MODEL::TYPE::TLINE_RLGC:
55 if(
m_model.FindParam(
"len" ) )
60 wxFAIL_MSG(
"Unhandled SIM_MODEL type in SIM_MODEL_TLINE" );
64 return fmt::format(
".model {} LTRA( r={} l={} g={} c={} len={} )\n",
82 case TYPE::TLINE_RLGC:
88 wxFAIL_MSG(
"Unhandled SIM_MODEL type in SIM_MODEL_TLINE" );
96 std::vector<SIMPARAM::INFO> paramInfos;
99 paramInfo.
name =
"z0";
101 paramInfo.
unit =
"Ω";
104 paramInfo.
description =
"Characteristic impedance";
107 paramInfos.push_back( paramInfo );
109 paramInfo.
name =
"td";
111 paramInfo.
unit =
"s";
117 paramInfos.push_back( paramInfo );
125 std::vector<SIMPARAM::INFO> paramInfos;
128 paramInfo.
name =
"len";
130 paramInfo.
unit =
"m";
136 paramInfos.push_back( paramInfo );
138 paramInfo.
name =
"r";
140 paramInfo.
unit =
"Ω/m";
146 paramInfos.push_back( paramInfo );
148 paramInfo.
name =
"l";
150 paramInfo.
unit =
"H/m";
156 paramInfos.push_back( paramInfo );
158 paramInfo.
name =
"g";
160 paramInfo.
unit =
"1/(Ω m)";
166 paramInfos.push_back( paramInfo );
168 paramInfo.
name =
"c";
170 paramInfo.
unit =
"F/m";
176 paramInfos.push_back( paramInfo );
static std::vector< PARAM::INFO > makeRlgcParamInfos()
static std::vector< PARAM::INFO > makeZ0ParamInfos()
SIM_MODEL_TLINE(TYPE aType)
void AddParam(const PARAM::INFO &aInfo)
static double ToDouble(const std::string &aString, double aDefault=NAN)
static std::string ToSpice(const std::string &aString)
std::string ModelLine(const SPICE_ITEM &aItem) const override
const SIM_MODEL & m_model
SIM_MODEL::PARAM SIMPARAM
bool isSpiceInstanceParam