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 33 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 22 commits
Commits
Show all changes
33 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
0a98ed1
Update src/ansys/aedt/core/modeler/circuits/primitives_circuit.py
DaveTwyman Nov 5, 2024
a4dd34f
Update src/ansys/aedt/core/modeler/circuits/primitives_circuit.py
DaveTwyman Nov 5, 2024
7aa718d
Update src/ansys/aedt/core/modeler/circuits/primitives_circuit.py
DaveTwyman Nov 5, 2024
bd322c4
Update src/ansys/aedt/core/modeler/circuits/primitives_circuit.py
DaveTwyman Nov 5, 2024
44827f3
Update src/ansys/aedt/core/modeler/circuits/primitives_circuit.py
DaveTwyman Nov 5, 2024
29eeb97
-Moved create_page and get_num_pages into maxwellcircuit.py, they sho…
DaveTwyman Nov 12, 2024
3f56946
Merge branch 'main' of https://github.com/ansys/pyaedt into 5282-Add-…
DaveTwyman Nov 12, 2024
e053aab
Merge branch 'main' into 5282-Add-Missing-Circuit-Elements
DaveTwyman Nov 12, 2024
8cefb93
CHORE: Auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Nov 12, 2024
44c9258
Merge branch 'main' into 5282-Add-Missing-Circuit-Elements
DaveTwyman Nov 12, 2024
8b94bd1
Merge branch 'main' into 5282-Add-Missing-Circuit-Elements
DaveTwyman Nov 12, 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
DaveTwyman marked this conversation as resolved.
Show resolved Hide resolved

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)
DaveTwyman marked this conversation as resolved.
Show resolved Hide resolved
assert id.parameters["Va"] == "3.14"
DaveTwyman marked this conversation as resolved.
Show resolved Hide resolved

def test_10_create_current_source(self):
id = self.aedtapp.modeler.schematic.create_isin(name="current_source", value=2.72, angle=90)
DaveTwyman marked this conversation as resolved.
Show resolved Hide resolved
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
DaveTwyman marked this conversation as resolved.
Show resolved Hide resolved
-------
bool
``True`` when successful, ``False`` when failed.
References
DaveTwyman marked this conversation as resolved.
Show resolved Hide resolved
----------
>>> oeditor.CreatePage ()
Examples
DaveTwyman marked this conversation as resolved.
Show resolved Hide resolved
--------
>>>from ansys.aedt.core import MaxwellCircuit
>>>app=MaxwellCircuit ()
>>>schematic=app.modeler.schematic
>>>schematic.create_page (name="NewPageName")
DaveTwyman marked this conversation as resolved.
Show resolved Hide resolved

"""
if not isinstance(name, (str, int, float)):
self.logger.error("Argument 'name' to 'create_page' is not of data type String, Integer or Float.")
DaveTwyman marked this conversation as resolved.
Show resolved Hide resolved
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):
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it would be better to add nb_pages as a property instead of adding this feature as a method.

"""Gets the number of circuit schematic pages.

Returns
DaveTwyman marked this conversation as resolved.
Show resolved Hide resolved
-------
int
The number of pages in the circuit schematic.
References
----------
>>> oeditor.GetNumPages ()
Examples
--------
>>>from ansys.aedt.core import MaxwellCircuit
>>>app=MaxwellCircuit ()
DaveTwyman marked this conversation as resolved.
Show resolved Hide resolved
>>>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.
DaveTwyman marked this conversation as resolved.
Show resolved Hide resolved
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)
DaveTwyman marked this conversation as resolved.
Show resolved Hide resolved
if isinstance(name, (str, int, float)):
DaveTwyman marked this conversation as resolved.
Show resolved Hide resolved
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)
DaveTwyman marked this conversation as resolved.
Show resolved Hide resolved
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)
DaveTwyman marked this conversation as resolved.
Show resolved Hide resolved
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)):
DaveTwyman marked this conversation as resolved.
Show resolved Hide resolved
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)):
DaveTwyman marked this conversation as resolved.
Show resolved Hide resolved
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)
DaveTwyman marked this conversation as resolved.
Show resolved Hide resolved
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)
DaveTwyman marked this conversation as resolved.
Show resolved Hide resolved
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