72 const std::array<std::string, 4> att_names = {
"att_pi",
"att_tee",
73 "att_bridge",
"att_splitter" };
75 for(
const auto& att_name : att_names )
77 std::string path =
"attenuators." + att_name;
78 m_Attenuators.attenuators[ att_name ] = ATTENUATOR();
79 ATTENUATOR* att = &m_Attenuators.attenuators[ att_name ];
81 m_params.emplace_back( new PARAM<double>( path +
".attenuation", &att->attenuation, 6.0 ) );
82 m_params.emplace_back( new PARAM<double>( path +
".zin", &att->zin, 50.0 ) );
83 m_params.emplace_back( new PARAM<double>( path +
".zout", &att->zout, 50.0 ) );
244 const std::array<std::string, 9> transline_names = {
"MicroStrip",
"CoPlanar",
"GrCoPlanar",
245 "RectWaveGuide",
"Coax",
"Coupled_MicroStrip",
"Coupled_Stripline",
"StripLine",
248 for(
const auto&
name : transline_names )
250 m_TransLine.param_values[ name ] = TL_PARAM_MAP();
251 m_TransLine.param_units[ name ] = TL_PARAM_UNITS_MAP();
253 std::string path =
"trans_line." + name +
".";
255 m_params.emplace_back( new PARAM_MAP<double>( path +
"values",
256 &m_TransLine.param_values.at( name ), {} ) );
264 &m_ViaSize.hole_diameter,
"0.4" ) );
266 m_params.emplace_back(
new PARAM<int>(
"via_size.hole_diameter_units",
267 &m_ViaSize.hole_diameter_units, 0 ) );
270 &m_ViaSize.thickness,
"0.035" ) );
272 m_params.emplace_back(
new PARAM<int>(
"via_size.thickness_units",
273 &m_ViaSize.thickness_units, 0 ) );
276 &m_ViaSize.length,
"1.6" ) );
278 m_params.emplace_back(
new PARAM<int>(
"via_size.length_units", &m_ViaSize.length_units, 0 ) );
281 &m_ViaSize.pad_diameter,
"0.6" ) );
283 m_params.emplace_back(
new PARAM<int>(
"via_size.pad_diameter_units",
284 &m_ViaSize.pad_diameter_units, 0 ) );
286 m_params.emplace_back(
new PARAM<wxString>(
"via_size.clearance_diameter",
287 &m_ViaSize.clearance_diameter,
"1.0" ) );
289 m_params.emplace_back(
new PARAM<int>(
"via_size.clearance_diameter_units",
290 &m_ViaSize.clearance_diameter_units, 0 ) );
292 m_params.emplace_back(
new PARAM<wxString>(
"via_size.characteristic_impedance",
293 &m_ViaSize.characteristic_impedance,
"50" ) );
295 m_params.emplace_back(
new PARAM<int>(
"via_size.characteristic_impedance_units",
296 &m_ViaSize.characteristic_impedance_units, 0 ) );
298 m_params.emplace_back(
new PARAM<wxString>(
"via_size.applied_current",
299 &m_ViaSize.applied_current,
"1" ) );
301 m_params.emplace_back(
new PARAM<wxString>(
"via_size.plating_resistivity",
302 &m_ViaSize.plating_resistivity,
"1.72e-8" ) );
305 &m_ViaSize.permittivity,
"4.5" ) );
308 &m_ViaSize.temp_rise,
"10" ) );
310 m_params.emplace_back(
new PARAM<wxString>(
"via_size.pulse_rise_time",
311 &m_ViaSize.pulse_rise_time,
"1" ) );
313 m_params.emplace_back(
new PARAM<wxString>(
"corrosion_table.threshold_voltage",
314 &m_CorrosionTable.threshold_voltage,
"0" ) );
316 m_params.emplace_back(
new PARAM<bool>(
"corrosion_table.show_symbols",
317 &m_CorrosionTable.show_symbols,
true ) );
325 ret &=
fromLegacy<int>( aCfg,
"BrdClass_selection",
"board_class_units" );
326 ret &=
fromLegacy<int>( aCfg,
"CC_selection",
"color_code_tolerance" );
332 nlohmann::json::json_pointer ptr =
335 const std::array<std::string, 4> att_names = {
"att_pi",
"att_tee",
336 "att_bridge",
"att_splitter" };
339 for(
const auto& att : att_names )
341 aCfg->SetPath(
"Attenuators/" + att );
342 ptr.push_back( att );
344 if( aCfg->Read(
"Attenuation", &val ) )
345 ( *m_internals )[ptr][
"attenuation"] = val;
347 if( aCfg->Read(
"Zin", &val ) )
348 ( *m_internals )[ptr][
"zin"] = val;
350 if( aCfg->Read(
"Zout", &val ) )
351 ( *m_internals )[ptr][
"zout"] = val;
354 aCfg->SetPath(
"../.." );
358 ret &=
fromLegacy<int>( aCfg,
"ElectSpacing_selection",
"electrical.spacing_units" );
359 ret &=
fromLegacyString( aCfg,
"ElectSpacing_voltage",
"electrical.spacing_voltage" );
366 ret &=
fromLegacyString( aCfg,
"RegulName",
"regulators.selected_regulator" );
368 ret &=
fromLegacy<int>( aCfg,
"RegulLastParam",
"regulators.last_param" );
373 ret &=
fromLegacy<int>( aCfg,
"TW_Track_Len_Unit",
"track_width.track_len_units" );
374 ret &=
fromLegacyString( aCfg,
"TW_Resistivity",
"track_width.resistivity" );
375 ret &=
fromLegacyString( aCfg,
"TW_ExtTrack_Width",
"track_width.ext_track_width" );
376 ret &=
fromLegacy<int>( aCfg,
"TW_ExtTrack_Width_Unit",
"track_width.ext_track_width_units" );
377 ret &=
fromLegacyString( aCfg,
"TW_ExtTrack_Thickness",
"track_width.ext_track_thickness" );
379 "track_width.ext_track_thickness_units" );
380 ret &=
fromLegacyString( aCfg,
"TW_IntTrack_Width",
"track_width.int_track_width" );
381 ret &=
fromLegacy<int>( aCfg,
"TW_IntTrack_Width_Unit",
"track_width.int_track_width_units" );
382 ret &=
fromLegacyString( aCfg,
"TW_IntTrack_Thickness",
"track_width.int_track_thickness" );
384 "track_width.int_track_thickness_units" );
386 ret &=
fromLegacy<int>( aCfg,
"Transline_selection",
"trans_line.selection" );
389 nlohmann::json::json_pointer ptr =
396 const std::array<std::string, 9> transline_names = {
"MicroStrip",
"CoPlanar",
"GrCoPlanar",
397 "RectWaveGuide",
"Coax",
"Coupled_MicroStrip",
"Coupled_Stripline",
"StripLine",
400 for(
const auto&
name : transline_names )
403 aCfg->SetPath(
name );
404 ptr.push_back(
name );
406 while( aCfg->GetNextEntry( key,
index ) )
410 dest.Replace(
"translineprm", wxEmptyString );
412 if( dest.EndsWith(
"unit" ) )
414 dest.Replace(
"unit", wxEmptyString );
415 aCfg->Read( key, &units );
416 ptr.push_back(
"units" );
418 ( *m_internals )[ptr].push_back( { { dest.ToStdString(), units } } );
424 aCfg->Read( key, &value );
425 ptr.push_back(
"values" );
427 ( *m_internals )[ptr].push_back( { { dest.ToStdString(), value } } );
434 aCfg->SetPath(
".." );
439 ret &=
fromLegacy<int>( aCfg,
"VS_Hole_Dia_Unit",
"via_size.hole_diameter_units" );
440 ret &=
fromLegacyString( aCfg,
"VS_Plating_Thickness",
"via_size.thickness" );
441 ret &=
fromLegacy<int>( aCfg,
"VS_Plating_Thickness_Unit",
"via_size.thickness_units" );
443 ret &=
fromLegacy<int>( aCfg,
"VS_Via_Length_Unit",
"via_size.length_units" );
445 ret &=
fromLegacy<int>( aCfg,
"VS_Pad_Dia_Unit",
"via_size.pad_diameter_units" );
446 ret &=
fromLegacyString( aCfg,
"VS_Clearance_Dia",
"via_size.clearance_diameter" );
448 "via_size.clearance_diameter_units" );
450 "via_size.characteristic_impedance" );
452 "via_size.characteristic_impedance_units" );
454 ret &=
fromLegacyString( aCfg,
"VS_Resistivity",
"via_size.plating_resistivity" );
455 ret &=
fromLegacyString( aCfg,
"VS_Permittivity",
"via_size.permittivity" );
456 ret &=
fromLegacyString( aCfg,
"VS_Temperature_Differential",
"via_size.temp_rise" );
457 ret &=
fromLegacyString( aCfg,
"VS_Pulse_Rise_Time",
"via_size.pulse_rise_time" );