KiCad PCB EDA Suite
Loading...
Searching...
No Matches
sim_model_l_mutual.cpp
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 (C) 2022 Mikolaj Wielgus
5 * Copyright (C) 2022-2024 KiCad Developers, see AUTHORS.txt for contributors.
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 3
10 * of the License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, you may find one here:
19 * https://www.gnu.org/licenses/gpl-3.0.html
20 * or you may search the http://www.gnu.org website for the version 3 license,
21 * or you may write to the Free Software Foundation, Inc.,
22 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
23 */
24
26
27
29{
30 std::string result;
31
32 for( int ii = 0; ii < m_model.GetParamCount(); ++ii )
33 {
34 const SIM_MODEL::PARAM& param = m_model.GetParam( ii );
35
36 if( !param.info.isSpiceInstanceParam )
37 continue;
38
39 result.append( " " + SIM_VALUE::ToSpice( param.value ) );
40 }
41
42 return result;
43}
44
45
47 SIM_MODEL( SIM_MODEL::TYPE::K, std::make_unique<SPICE_GENERATOR_L_MUTUAL>( *this ) )
48{
49 static std::vector<PARAM::INFO> paramInfos = makeParamInfos();
50
51 for( const PARAM::INFO& paramInfo : paramInfos )
52 AddParam( paramInfo );
53}
54
55
56const std::vector<SIM_MODEL::PARAM::INFO> SIM_MODEL_L_MUTUAL::makeParamInfos()
57{
58 std::vector<PARAM::INFO> paramInfos;
59 PARAM::INFO paramInfo;
60
61 paramInfo.name = "l1";
62 paramInfo.type = SIM_VALUE::TYPE_STRING;
63 paramInfo.unit = "(Reference)";
65 paramInfo.defaultValue = "";
66 paramInfo.description = "Inductor 1";
67 paramInfo.isSpiceInstanceParam = true;
68 paramInfos.push_back( paramInfo );
69
70 paramInfo.name = "l2";
71 paramInfo.type = SIM_VALUE::TYPE_STRING;
72 paramInfo.unit = "(Reference)";
74 paramInfo.defaultValue = "";
75 paramInfo.description = "Inductor 2";
76 paramInfo.isSpiceInstanceParam = true;
77 paramInfos.push_back( paramInfo );
78
79 paramInfo.name = "k";
80 paramInfo.type = SIM_VALUE::TYPE_FLOAT;
81 paramInfo.unit = "";
83 paramInfo.defaultValue = "";
84 paramInfo.description = "Coupling coefficient";
85 paramInfo.isSpiceInstanceParam = true;
86 paramInfos.push_back( paramInfo );
87
88 return paramInfos;
89}
static const std::vector< PARAM::INFO > makeParamInfos()
void AddParam(const PARAM::INFO &aInfo)
Definition: sim_model.cpp:729
virtual const PARAM & GetParam(unsigned aParamIndex) const
Definition: sim_model.cpp:789
int GetParamCount() const
Definition: sim_model.h:481
@ TYPE_FLOAT
Definition: sim_value.h:69
@ TYPE_STRING
Definition: sim_value.h:71
static std::string ToSpice(const std::string &aString)
Definition: sim_value.cpp:419
std::string ItemParams() const override
const SIM_MODEL & m_model
STL namespace.
SIM_MODEL::TYPE TYPE
Definition: sim_model.cpp:57
SIM_VALUE::TYPE type
Definition: sim_model.h:379
std::string defaultValue
Definition: sim_model.h:382
std::string description
Definition: sim_model.h:383
std::string value
Definition: sim_model.h:400
const INFO & info
Definition: sim_model.h:401