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

Support loss tangents for different interfaces (surfaces) in do_EPR_analysis #144

Merged

Conversation

nikosavola
Copy link
Contributor

@nikosavola nikosavola commented Oct 13, 2022

This PR would add support for different dielectric properties for different surfaces. get_Qsurface is modified to accept material_properties. When this is not specified, behaviour is reverted to the main config values as before.

In effect, one would need to specify the surfaces separately in a dictionary structure as follows and the rest is taken into account in the main epr analysis routine upon calling get_Qsurface:

pinfo.dissipative['dielectric_surfaces'] = {
	'trace': {  # metal–vacuum
		'tan_delta_surf': 0.001,  # loss tangent
		'th': 5e-9,  # thickness
		'eps_r': 10  # relative permittivity
	},
	'gaps': { # substrate-vacuum
		'tan_delta_surf': 0.001,
		'th': 2e-9,
		'eps_r': 10
	}
}

When Ansys contains the trace and gap objects.

Closes #143

@nikosavola nikosavola force-pushed the 143-separate-loss-tangents branch from 26fa1be to d58388b Compare November 2, 2022 09:25
@nikosavola nikosavola marked this pull request as ready for review November 2, 2022 09:25
@nikosavola
Copy link
Contributor Author

@zlatko-minev, this is now ready for review 😄

@zlatko-minev
Copy link
Owner

Thanks, let me take a look

@zlatko-minev
Copy link
Owner

It doesn't break backward compatibility right?

@nikosavola
Copy link
Contributor Author

It doesn't break backward compatibility right?

Yes, this should be backwards-compatible

@zlatko-minev
Copy link
Owner

sweet thanks

@zlatko-minev zlatko-minev merged commit f2ff1c9 into zlatko-minev:master Nov 8, 2022
zlatko-minev added a commit that referenced this pull request Nov 9, 2023
* Update README.md

* Update README.md

* fix typo

* update information on conda forge install

* add conda badge to readme

* add information on pypi install and name

* fix typo

* add info on pypi install and note on package name

* add pypi badge to readme via fury.io

* Merge remote-tracking branch 'upstream/master' into Asaf_branch

* Update core_quantum_analysis.py

allows to print result and print variation to be used togther where the variation to be printed is give by an integer

* Update core_quantum_analysis.py

* Update core_quantum_analysis.py

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update about.rst

* Update about.rst

* Update about.rst

* Update installation.rst

* Update README.md

* Update README.md

* Sorted Qs and freqs 

Instead of having the sorting of the dataframe as string indices (e.g. '0', '1', '10', '2'...) it is now sorted as integers ('0', '1', '2', ... , '10').
Only relevant for >10 variations.

* Update README.md

* Make package name in setup.py match name on PyPI

* Remove old conda recipe

See https://github.com/conda-forge/pyepr-quantum-feedstock for conda
recipe

* Version 0.8.4

* Create greetings.yml

* Create manual.yml

* Create Q3D setup within HfssDesign

* Create publish-to-pypi

* Rename publish-to-pypi to publish-to-pypi.yml

* Update README.md

* Update version from 0.8.4 to 0.8.4.2

* Fixed bug with port impedance in ansys.py

* Modify how to connect to Ansys

* Update config_user.py

* Edit yml file

* Update publish-to-pypi.yml

* Updated version number

* If a project or design is missing in Ansys app, then return None and … (#68)

* If a project or design is missing in Ansys app, then return None and give a warning.

* Update warnings to be more accurate.

* Revert accidental change.

* typo and logger add for no active design

* Add method to allow user to add a new Q3d to project referenced in ProjectInfo

* Updated version number

* Fix get_setup method

* correction to enable q3d design setup default + removing error in get_objects_in_group() (#70)

* correction to enable q3d design setup default
* prevent unnecessary error when modeler is not defined in get_objects_in_group

* 209 if design exists add it (#71)

* Save before switching branches.
* Add changes which were part of merge.
* Update where the flag needs to be passed.
* Need method instead of getting a list of designs.
* Remove the previous solution, Decide with different solution.
* Change to version 0.8.4.5  .
* Remove reference to yapf.

* Ansys version update for Z matrices

* Update ansys.py for Ansys 2020

* get_setup fixed to use the passed setup name + typos

* up-rev

* Create pyEPR.bib

* Update pyEPR.bib

* Update README.md

* Update README.md

* Update README.md

* Added ansys calculator functions

Two functions that return vectors tangent and normal to a surface.
I used it to calculate surface participation ratios, e.g.:
    p_metal = t* (E_surface_metal / UE)
    print(f'Metal-Air/Metal-Substrate participation ratio, p_MA = p_MS = {p_metal:.3}')

    #SA participation ratio
    vecE_normal = vecE.normal2surface('chip_holder1').__div__(epsilon_r) #Complex Vector
    vecE_tangent = vecE.tangent2surface('chip_holder1').__mul__(epsilon_r) #Complex Vector
    vec_E_total = vecE_normal.__add__(vecE_tangent)
    E_squared = vec_E_total.dot(vecE).__abs__().real().__pow__(2)
    E_surface = E_squared.integrate_surf(name='chip_holder1').evaluate()
    E_surface -= E_surface_metal

    p_SA = t* (E_surface / UE)
    print(f'Air-Substrate participation ratio, p_SA = {p_SA:.3}')

* Typos mainly

Also one change where an error is raised when `pint` is not properly imported.

* Update ansys.py

* Update ansys.py

* Update README.md

* Update pyEPR.bib

* Update pyEPR.bib

* Update pyEPR.bib

* Update core_quantum_analysis.py

Get numeric frequencies results should retrieve f_ND, not f_1.
Some typos.

* Updates linguist's calculation for pyEPR

* Typos

* Mostly typos, some corrections

In core_quantum_analysis:
Rows 671-674: update to modes that are not the first.
Row 917: trying to get pandas to plot with the right label. Unsuccessfully.

* clean_up_solutions functions and some typos

clean_up_solutions function for an Ansys design (to avoid analysis of all variations).
Also removed index name for frequencies and typos

* Update core_quantum_analysis.py

Fixed  #83

* Tutorial2: Correct import of CalcObject to pyEPR.ansys

* Indentation after  was wrong and variable swp_var was never defined

* fixed mode number error in QuantumAnalysis

fixed KeyError when '0' is not in variations for QuantumAnalysis.
updated type hint for QuantumAnalysis.analyze_variation

fix mode number error in QuantumAnalysis

* Update back_box_numeric.py

* fix log plot bug if q__coupling isnot there

* Update core_quantum_analysis.py

* Update the init and setup files before creating a tag.

* Update back_box_numeric.py

Fix typo

* Add pylint CI check

* Fix old keyword argument name in first tutorial

* Check for infinite values in the Quality Factors.

* Change syntax to pass pylint.  In particular, separate numpy from pandas.

* Add int cast to pass pylint.

* Change syntax to pass pylint.

* Disable the pylint warning.

* Use updated tag to include fix for issue #96.

* Systematically fix typos in code and documentation (#99)

* Test compiling docs in CI (#104)

* Add dissipative elements as arguments to `ProjectInfo` (#103)

* Fix docstrings formatting (#101)

* https://securitylab.github.com/research/github-actions-preventing-pwn-requests/ is the reason to update. This allows first time users that have forked the repository to make a pull request. (#110)

* Replace attrdict to addict for python 3.10 compatibility (#108)

* Replace Attrdict to addict.Dict for python>=3.10 compatibility

* Add one line for filtering addict.Dict from obj's attributes.

* replace attrdict to addict

* add python 3.10 to classifiers

* Add python 3.9 in setup.py

* Prepare for new tag for pyepr for pypi. (#112)

* Update the README to reflect addict vs attrdict in both files.

* Make the type hint more accurate.

* Current code expects None values, as opposed to empty list.

* Prepare to use next tag for Metal.

* Add variation labels to plots in `hfss_report_full_convergence` (#119)

* Improve assorted docstrings

* Add variation labels to HFSS convergence report

* Add other parametric sweep options (#117)

* fix keyboard mash?

* Implemented all available options for parametric sweep definitions and parametric sweep from file.

* Addition of demo tutorial and associated csv file

* Add DrivenTerminal support (#121)

* Add single surface `DistributedAnalysis.get_Qsurface` (#123)

* Fix EPR sign bug that caused EPR to always be positive (#125)

* Update README.md

* Update version to 0.8.5.6 for EPR sign bug fix (#126)

* Fix EPR bug and bump to version 0.8.5.7

* Pass lv=lv to evaluate

* Update version to 0.8.5.7 in __init__.py

* Variation support to `calc_p_electric_volume` (#132)

* Support synchronised variables in `Optimetrics.create_setup` (#130)

* Fix code block formattings

* Implement synchronised sweep support in Optimetrics

* Don't extend `hfss_report_full_convergence` vertically (#135)

* Support loss tangents for different surfaces in `do_EPR_analysis` (#144)

* Fix #145 .gitignore (#146)

* Add dtype to empty Pandas Series (#139)

* Refactor `DataFrame.append` to `pd.concat` (#138)

* Replace usage of np.float with float (#147) (#150)

The epr_numerical_diagonalization function uses np.float which has been
deprecated in Numpy.

Refer https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations

The continued usage of np.float yields the following error in the
epr_numerical_diaganolization function when later versions of Numpy is used.

"AttributeError: module 'numpy' has no attribute 'float'."

This commit replace np.float with float to solve this error.

* Correctly select a few modes in analyze_variation (#149)

* Fix mode selection in analyze_variation

Addressing issue #148: analyze_variation incorrectly chooses Pj, Sj, Om, PHI_zpf when passed a subset of modes

* Remove redundant frequency selection

The frequencies are already correctly selected outside of this if-statement, so this is not necessary

* Update setup.py

* Update __init__.py

* Update core_distributed_analysis.py (#152)

out-commenting a property not supported in latest version. Only visual impact

---------

Co-authored-by: Zlatko Minev <zminev@gmail.com>
Co-authored-by: Nathan Shammah <nathan.shammah@gmail.com>
Co-authored-by: SQClab <69586246+SQClab@users.noreply.github.com>
Co-authored-by: Barkay Guttel <51173082+bguttel@users.noreply.github.com>
Co-authored-by: willsALMANJ <wsha.code@gmail.com>
Co-authored-by: Will Shanks <willshanks@us.ibm.com>
Co-authored-by: Dennis Wang <Dennis.Wang@ibm.com>
Co-authored-by: Priti Ashvin Shah <74020801+priti-ashvin-shah-ibm@users.noreply.github.com>
Co-authored-by: Marco Facchini <marco.facchini2@ibm.com>
Co-authored-by: Ashish Panigrahi <ashish.panigrahi@protonmail.com>
Co-authored-by: Xinyu <xinyu.si@epfl.ch>
Co-authored-by: CHAO ZHOU <44282719+hatlabcz@users.noreply.github.com>
Co-authored-by: Priti A Shah <Priti.Ashvin.Shah@ibm.com>
Co-authored-by: Niko Savola <niko.savola@aalto.fi>
Co-authored-by: Niko Savola <niko@meetiqm.com>
Co-authored-by: GyeonghunKim <34947229+GyeonghunKim@users.noreply.github.com>
Co-authored-by: Thomas G McConkey <53087709+ThomasGM4@users.noreply.github.com>
Co-authored-by: Zach Parrott <51793790+zachparrott@users.noreply.github.com>
Co-authored-by: Patrick J. O'Brien <obrienpja@gmail.com>
Co-authored-by: Jagatheesan Jack <jagandecapri@gmail.com>
Co-authored-by: Clara Fontaine <42681983+clarayfontaine@users.noreply.github.com>
Co-authored-by: Christian Kraglund Andersen <80969364+AndersenQubitLab@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Support loss tangents for different interfaces (surfaces) in do_EPR_analysis
2 participants