Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FEAT: VSin, ISin Sources added to Maxwell Circuit Primitives #5283

Open
wants to merge 22 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
5aac760
VSin, ISin Sources added to Maxwell Circuit Primitives
DaveTwyman Oct 11, 2024
f8699a5
Merge branch 'main' into 5282-Add-Missing-Circuit-Elements
DaveTwyman Oct 11, 2024
8552947
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 11, 2024
93375bd
VSin, ISin Sources added to Maxwell Circuit Primitives
DaveTwyman Oct 11, 2024
955bcf7
Merge remote-tracking branch 'origin/5282-Add-Missing-Circuit-Element…
DaveTwyman Oct 11, 2024
cf6153e
VSin, ISin Sources added to Maxwell Circuit Primitives
DaveTwyman Oct 11, 2024
eb4c79e
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 11, 2024
a07645f
vsin, isin Sources added to Maxwell Circuit Primitives
DaveTwyman Oct 14, 2024
84e4f7a
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 14, 2024
d7945da
Merge branch 'main' into 5282-Add-Missing-Circuit-Elements
DaveTwyman Oct 14, 2024
a3a2340
Merge branch 'main' into 5282-Add-Missing-Circuit-Elements
DaveTwyman Oct 14, 2024
46152e2
Merge branch 'main' into 5282-Add-Missing-Circuit-Elements
DaveTwyman Oct 15, 2024
bf84832
Merge branch 'main' into 5282-Add-Missing-Circuit-Elements
DaveTwyman Oct 16, 2024
0c4d246
Merge branch 'main' into 5282-Add-Missing-Circuit-Elements
SMoraisAnsys Oct 17, 2024
d180ad8
Unit Tests added for vsin and isin
DaveTwyman Oct 17, 2024
5a95e4e
Replaced id with comp_name
DaveTwyman Oct 18, 2024
4b7d09f
Delete unused function handler from create_page
DaveTwyman Oct 18, 2024
f00f682
Use component instead of comp_name
DaveTwyman Oct 18, 2024
359f752
Added support for Name=None case which previously created error messa…
DaveTwyman Oct 18, 2024
fdf3786
Merge branch 'main' into 5282-Add-Missing-Circuit-Elements
DaveTwyman Oct 18, 2024
4ef9e9f
Added method 'get_num_pages' as well as unit tests 52_create_page and…
DaveTwyman Oct 30, 2024
d44fd5d
Merge branch 'main' into 5282-Add-Missing-Circuit-Elements
DaveTwyman Oct 30, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions _unittest/test_21_Circuit.py
Original file line number Diff line number Diff line change
Expand Up @@ -985,3 +985,10 @@ def test_51_import_asc(self):
self.aedtapp.insert_design("ASC")
asc_file = os.path.join(local_path, "example_models", test_subfolder, "butter.asc")
assert self.aedtapp.create_schematic_from_asc_file(asc_file)

def test_52_create_page(self):
self.aedtapp.create_page()
assert self.aedtapp.GetNumPages() == 2

def test_53_get_num_pages(self):
assert type(self.aedtapp.GetNumPages()) == int
8 changes: 8 additions & 0 deletions _unittest/test_35_MaxwellCircuit.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,3 +114,11 @@ 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)

def test_09_create_voltage_source(self):
id = self.aedtapp.modeler.schematic.create_vsin(name="voltage_source", value=3.14, angle=90)
assert id.parameters["Va"] == "3.14"

def test_10_create_current_source(self):
id = self.aedtapp.modeler.schematic.create_isin(name="current_source", value=2.72, angle=90)
assert id.parameters["Ia"] == "2.72"
49 changes: 49 additions & 0 deletions src/ansys/aedt/core/modeler/circuits/primitives_circuit.py
Original file line number Diff line number Diff line change
Expand Up @@ -1262,6 +1262,55 @@
except Exception:
return False

def create_page(self, name):
"""Add a new circuit schematic page.

Parameters
----------
name : str, int or float
Name to be used when creating the new circuit schematic.
Returns
-------
bool
``True`` when successful, ``False`` when failed.
References
----------
>>> oeditor.CreatePage ()
Examples
--------
>>>from ansys.aedt.core import MaxwellCircuit
>>>app=MaxwellCircuit ()
>>>schematic=app.modeler.schematic
>>>schematic.create_page (name="NewPageName")

"""
if not isinstance(name, (str, int, float)):
self.logger.error("Argument 'name' to 'create_page' is not of data type String, Integer or Float.")
return False
self.oeditor.CreatePage(name)
return True

Check warning on line 1291 in src/ansys/aedt/core/modeler/circuits/primitives_circuit.py

View check run for this annotation

Codecov / codecov/patch

src/ansys/aedt/core/modeler/circuits/primitives_circuit.py#L1287-L1291

Added lines #L1287 - L1291 were not covered by tests

def get_num_pages(self):
"""Gets the number of circuit schematic pages.

Returns
-------
int
The number of pages in the circuit schematic.
References
----------
>>> oeditor.GetNumPages ()
Examples
--------
>>>from ansys.aedt.core import MaxwellCircuit
>>>app=MaxwellCircuit ()
>>>schematic=app.modeler.schematic
>>>schematic.get_num_pages ()

"""
pages = self.oeditor.GetNumPages()
return pages

Check warning on line 1312 in src/ansys/aedt/core/modeler/circuits/primitives_circuit.py

View check run for this annotation

Codecov / codecov/patch

src/ansys/aedt/core/modeler/circuits/primitives_circuit.py#L1311-L1312

Added lines #L1311 - L1312 were not covered by tests


class ComponentInfo(object):
"""Manages Circuit Catalog info."""
Expand Down
146 changes: 117 additions & 29 deletions src/ansys/aedt/core/modeler/circuits/primitives_maxwell_circuit.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,8 +85,8 @@

Parameters
----------
name : str, optional
Name of the resistor. The default is ``None``.
name : str, int, float or optional
Name of the resistor. The default is ``None`` which adds a resistor without a name.
value : float, optional
Value for the resistor. The default is ``50``.
location : list of float, optional
Expand All @@ -109,27 +109,27 @@
if location == None:
location = []

id = self.create_component(
component = self.create_component(

Check warning on line 112 in src/ansys/aedt/core/modeler/circuits/primitives_maxwell_circuit.py

View check run for this annotation

Codecov / codecov/patch

src/ansys/aedt/core/modeler/circuits/primitives_maxwell_circuit.py#L112

Added line #L112 was not covered by tests
name,
component_library="Passive Elements",
component_name="Res",
location=location,
angle=angle,
use_instance_id_netlist=use_instance_id_netlist,
)

id.set_property("R", value)
id.set_property("Name", name)
return id
component.set_property("R", value)
if isinstance(name, (str, int, float)):
component.set_property("Name", name)
return component

Check warning on line 123 in src/ansys/aedt/core/modeler/circuits/primitives_maxwell_circuit.py

View check run for this annotation

Codecov / codecov/patch

src/ansys/aedt/core/modeler/circuits/primitives_maxwell_circuit.py#L120-L123

Added lines #L120 - L123 were not covered by tests

@pyaedt_function_handler(compname="name")
def create_inductor(self, name=None, value=50, location=None, angle=0, use_instance_id_netlist=False):
"""Create an inductor.

Parameters
----------
name : str, optional
Name of the inductor. The default is ``None``.
name : str, int, float or optional
Name of the inductor. The default is ``None`` which adds an inductor without a name.
value : float, optional
Value for the inductor. The default is ``50``.
location : list of float, optional
Expand All @@ -152,7 +152,7 @@
if location == None:
location = []

id = self.create_component(
component = self.create_component(

Check warning on line 155 in src/ansys/aedt/core/modeler/circuits/primitives_maxwell_circuit.py

View check run for this annotation

Codecov / codecov/patch

src/ansys/aedt/core/modeler/circuits/primitives_maxwell_circuit.py#L155

Added line #L155 was not covered by tests
name,
component_library="Passive Elements",
component_name="Ind",
Expand All @@ -161,18 +161,19 @@
use_instance_id_netlist=use_instance_id_netlist,
)

id.set_property("L", value)
id.set_property("Name", name)
return id
component.set_property("L", value)
if isinstance(name, (str, int, float)):
component.set_property("Name", name)
return component

Check warning on line 167 in src/ansys/aedt/core/modeler/circuits/primitives_maxwell_circuit.py

View check run for this annotation

Codecov / codecov/patch

src/ansys/aedt/core/modeler/circuits/primitives_maxwell_circuit.py#L164-L167

Added lines #L164 - L167 were not covered by tests

@pyaedt_function_handler(compname="name")
def create_capacitor(self, name=None, value=50, location=None, angle=0, use_instance_id_netlist=False):
"""Create a capacitor.

Parameters
----------
name : str, optional
Name of the capacitor. The default is ``None``.
name : str, int, float or optional
Name of the capacitor. The default is ``None`` which adds a capacitor without a name.
value : float, optional
Value for the capacitor. The default is ``50``.
location : list of float, optional
Expand All @@ -194,7 +195,7 @@
"""
if location is None:
location = []
id = self.create_component(
component = self.create_component(

Check warning on line 198 in src/ansys/aedt/core/modeler/circuits/primitives_maxwell_circuit.py

View check run for this annotation

Codecov / codecov/patch

src/ansys/aedt/core/modeler/circuits/primitives_maxwell_circuit.py#L198

Added line #L198 was not covered by tests
name,
component_library="Passive Elements",
component_name="Cap",
Expand All @@ -203,18 +204,19 @@
use_instance_id_netlist=use_instance_id_netlist,
)

id.set_property("C", value)
id.set_property("Name", name)
return id
component.set_property("C", value)
if isinstance(name, (str, int, float)):
component.set_property("Name", name)
return component

Check warning on line 210 in src/ansys/aedt/core/modeler/circuits/primitives_maxwell_circuit.py

View check run for this annotation

Codecov / codecov/patch

src/ansys/aedt/core/modeler/circuits/primitives_maxwell_circuit.py#L207-L210

Added lines #L207 - L210 were not covered by tests

@pyaedt_function_handler(compname="name")
def create_diode(self, name=None, location=None, angle=0, use_instance_id_netlist=False):
"""Create a diode.

Parameters
----------
name : str, optional
Name of the diode. The default is ``None``.
name : str, int, float or optional
Name of the diode. The default is ``None`` which adds a diode without a name.
location : list of float, optional
Position on the X axis and Y axis. The default is ``None``.
angle : float, optional
Expand All @@ -235,7 +237,7 @@
if location is None:
location = []

id = self.create_component(
component = self.create_component(

Check warning on line 240 in src/ansys/aedt/core/modeler/circuits/primitives_maxwell_circuit.py

View check run for this annotation

Codecov / codecov/patch

src/ansys/aedt/core/modeler/circuits/primitives_maxwell_circuit.py#L240

Added line #L240 was not covered by tests
name,
component_library="Passive Elements",
component_name="DIODE",
Expand All @@ -244,17 +246,18 @@
use_instance_id_netlist=use_instance_id_netlist,
)

id.set_property("Name", name)
return id
if isinstance(name, (str, int, float)):
component.set_property("Name", name)
return component

Check warning on line 251 in src/ansys/aedt/core/modeler/circuits/primitives_maxwell_circuit.py

View check run for this annotation

Codecov / codecov/patch

src/ansys/aedt/core/modeler/circuits/primitives_maxwell_circuit.py#L249-L251

Added lines #L249 - L251 were not covered by tests

@pyaedt_function_handler(compname="name")
def create_winding(self, name=None, location=None, angle=0, use_instance_id_netlist=False):
"""Create a winding linked to a Maxwell design.

Parameters
----------
name : str, optional
Name of the winding. The default is ``None``.
name : str, int, float or optional
Name of the winding. The default is ``None`` which adds a winding without a name.
location : list of float, optional
Position on the X axis and Y axis.
angle : float, optional
Expand All @@ -274,13 +277,98 @@
"""
if location is None:
location = []
id = self.create_component(
component = self.create_component(

Check warning on line 280 in src/ansys/aedt/core/modeler/circuits/primitives_maxwell_circuit.py

View check run for this annotation

Codecov / codecov/patch

src/ansys/aedt/core/modeler/circuits/primitives_maxwell_circuit.py#L280

Added line #L280 was not covered by tests
name,
component_library="Dedicated Elements",
component_name="Winding",
location=location,
angle=angle,
use_instance_id_netlist=use_instance_id_netlist,
)
id.set_property("Name", name)
return id
if isinstance(name, (str, int, float)):
component.set_property("Name", name)
return component

Check warning on line 290 in src/ansys/aedt/core/modeler/circuits/primitives_maxwell_circuit.py

View check run for this annotation

Codecov / codecov/patch

src/ansys/aedt/core/modeler/circuits/primitives_maxwell_circuit.py#L288-L290

Added lines #L288 - L290 were not covered by tests

def create_i_sin(self, name=None, value=1, location=None, angle=0, use_instance_id_netlist=False):
"""Create a sinusoidal current source.

Parameters
----------
name : str, int, float or optional
Name of the current source. The default is ``None`` which adds a current source without a name.
value : float, optional
Value for the amplitude of current. The default is ``1``.
location : list of float, optional
Position on the X axis and Y axis.
angle : float, optional
Angle of rotation in degrees. The default is ``0``.
use_instance_id_netlist : bool, optional
Whether to use the instance ID in the net list or not. The default is ``False``.

Returns
-------
:class:`ansys.aedt.core.modeler.cad.object_3dcircuit.CircuitComponent`
Circuit Component Object.

References
----------

>>> oEditor.CreateComponent
"""
if location is None:
DaveTwyman marked this conversation as resolved.
Show resolved Hide resolved
location = []
component = self.create_component(

Check warning on line 320 in src/ansys/aedt/core/modeler/circuits/primitives_maxwell_circuit.py

View check run for this annotation

Codecov / codecov/patch

src/ansys/aedt/core/modeler/circuits/primitives_maxwell_circuit.py#L318-L320

Added lines #L318 - L320 were not covered by tests
name,
component_library="Sources",
component_name="ISin",
location=location,
angle=angle,
use_instance_id_netlist=use_instance_id_netlist,
)

component.set_property("Ia", value)
if isinstance(name, (str, int, float)):
component.set_property("Name", name)
return component

Check warning on line 332 in src/ansys/aedt/core/modeler/circuits/primitives_maxwell_circuit.py

View check run for this annotation

Codecov / codecov/patch

src/ansys/aedt/core/modeler/circuits/primitives_maxwell_circuit.py#L329-L332

Added lines #L329 - L332 were not covered by tests

def create_v_sin(self, name=None, value=1, location=None, angle=0, use_instance_id_netlist=False):
"""Create a sinusoidal voltage source.

Parameters
----------
name : str, int, float or optional
Name of the voltage source. The default is ``None`` which adds a voltage source without a name.
value : float, optional
Value for the amplitude of voltage. The default is ``1``.
location : list of float, optional
Position on the X axis and Y axis.
angle : float, optional
Angle of rotation in degrees. The default is ``0``.
use_instance_id_netlist : bool, optional
Whether to use the instance ID in the net list or not. The default is ``False``.

Returns
-------
:class:`ansys.aedt.core.modeler.cad.object_3dcircuit.CircuitComponent`
Circuit Component Object.

References
----------

>>> oEditor.CreateComponent
"""
if location is None:
location = []
component = self.create_component(

Check warning on line 362 in src/ansys/aedt/core/modeler/circuits/primitives_maxwell_circuit.py

View check run for this annotation

Codecov / codecov/patch

src/ansys/aedt/core/modeler/circuits/primitives_maxwell_circuit.py#L360-L362

Added lines #L360 - L362 were not covered by tests
name,
component_library="Sources",
component_name="VSin",
location=location,
angle=angle,
use_instance_id_netlist=use_instance_id_netlist,
)

component.set_property("Va", value)
if isinstance(name, (str, int, float)):
component.set_property("Name", name)
return component

Check warning on line 374 in src/ansys/aedt/core/modeler/circuits/primitives_maxwell_circuit.py

View check run for this annotation

Codecov / codecov/patch

src/ansys/aedt/core/modeler/circuits/primitives_maxwell_circuit.py#L371-L374

Added lines #L371 - L374 were not covered by tests
Loading