-
Notifications
You must be signed in to change notification settings - Fork 121
/
test_35_MaxwellCircuit.py
116 lines (98 loc) · 5.28 KB
/
test_35_MaxwellCircuit.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# -*- coding: utf-8 -*-
#
# Copyright (C) 2021 - 2024 ANSYS, Inc. and/or its affiliates.
# SPDX-License-Identifier: MIT
#
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
import os
from _unittest.conftest import local_path
from ansys.aedt.core import Maxwell2d
from ansys.aedt.core import MaxwellCircuit
from ansys.aedt.core.generic.constants import SOLUTIONS
import pytest
test_subfolder = "T35"
netlist1 = "netlist.sph"
@pytest.fixture(scope="class")
def aedtapp(add_app):
app = add_app(project_name="MaxwellCircuitProject", design_name="MaxwellCircuitDesign1", application=MaxwellCircuit)
app.modeler.schematic_units = "mil"
return app
@pytest.fixture(scope="class", autouse=True)
def examples(local_scratch):
netlist_file1 = os.path.join(local_path, "example_models", test_subfolder, netlist1)
return [netlist_file1]
class TestClass:
@pytest.fixture(autouse=True)
def init(self, aedtapp, local_scratch, examples):
self.aedtapp = aedtapp
self.local_scratch = local_scratch
self.netlist_file1 = examples[0]
def test_01_create_resistor(self):
id = self.aedtapp.modeler.schematic.create_resistor("Resistor1", 10, [0, 0])
assert id.parameters["R"] == "10"
def test_02_create_inductor(self):
id = self.aedtapp.modeler.schematic.create_inductor("Inductor1", 1.5, [1000, 0])
assert id.parameters["L"] == "1.5"
def test_03_create_capacitor(self):
id = self.aedtapp.modeler.schematic.create_capacitor("Capacitor1", 7.5, [2000, 0])
assert id.parameters["C"] == "7.5"
def test_04_create_diode(self):
assert self.aedtapp.modeler.schematic.create_diode("Diode1")
def test_05_create_winding(self):
assert self.aedtapp.modeler.schematic.create_winding("mywinding")
def test_06_set_variable(self):
self.aedtapp.variable_manager.set_variable("var_test", expression="123")
self.aedtapp["var_test"] = "234"
assert "var_test" in self.aedtapp.variable_manager.design_variable_names
assert self.aedtapp.variable_manager.design_variables["var_test"].expression == "234"
def test_07_export_netlist(self, add_app):
design_name = "ExportCircuitNetlist"
self.aedtapp.insert_design(design_name)
self.aedtapp.modeler.schematic_units = "mil"
ind = self.aedtapp.modeler.schematic.create_inductor("Inductor1", 1.5, [-1000, 1000])
res = self.aedtapp.modeler.schematic.create_resistor("Resistor1", 10, [1000, 1000])
gnd = self.aedtapp.modeler.schematic.create_gnd([0.0, 0.0])
v_source = self.aedtapp.modeler.schematic.create_component(
component_library="Sources", component_name="IPulse", location=[-2000, 500]
)
i_source = self.aedtapp.modeler.schematic.create_component(
component_library="Sources", component_name="VPulse", location=[2000, 500]
)
ind.pins[1].connect_to_component(res.pins[0], use_wire=True)
ind.pins[0].connect_to_component(v_source.pins[1], use_wire=True)
v_source.pins[0].connect_to_component(gnd.pins[0], use_wire=True)
gnd.pins[0].connect_to_component(i_source.pins[0], use_wire=True)
i_source.pins[1].connect_to_component(res.pins[1], use_wire=True)
netlist_file = os.path.join(self.local_scratch.path, "export_netlist.sph")
assert self.aedtapp.export_netlist_from_schematic(netlist_file) == netlist_file
assert os.path.exists(netlist_file)
netlist_file_invalid = os.path.join(self.local_scratch.path, "export_netlist.sh")
assert not self.aedtapp.export_netlist_from_schematic(netlist_file_invalid)
m2d = add_app(design_name="test", application=Maxwell2d)
m2d.solution_type = SOLUTIONS.Maxwell2d.TransientZ
m2d.modeler.create_circle([0, 0, 0], 10, name="Circle_inner")
m2d.modeler.create_circle([0, 0, 0], 30, name="Circle_outer")
m2d.assign_coil(assignment=["Circle_inner"])
m2d.assign_winding(assignment=["Circle_inner"], winding_type="External", name="Ext_Wdg")
assert m2d.edit_external_circuit(netlist_file, self.aedtapp.design_name)
def test_08_import_netlist(self):
self.aedtapp.insert_design("SchematicImport")
self.aedtapp.modeler.schematic.limits_mils = 5000
assert self.aedtapp.create_schematic_from_netlist(self.netlist_file1)