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

add ability to not distribute lumped elements #2132

Open
wants to merge 1 commit into
base: pre/2.8
Choose a base branch
from

Conversation

dmarek-flex
Copy link
Contributor

@dmarek-flex dmarek-flex commented Dec 19, 2024

At high frequencies and mostly in the case of high impedances, distributing the lumped element over multiple grid cells breaks the assumption that the electric field is uniform within the lumped element. We now offer the ability to restrict the network portion of the lumped element to one grid cell and use automatically created PEC connections to connect the network portion of the lumped element to the bounds of the lumped element. We also have the ability restrict the network portion along the voltage axis but distribute the element laterally.

These PEC connections introduce parasitic inductances and capacitances that depend on the discretization used and which effectively modify the simulated network. In some cases, it will be possible to account for these, so we offer estimates for the values of these inductances and capacitances.

Example usage has been added to the associated notebook tutorial.

@dmarek-flex dmarek-flex changed the title add ability to **not** distribute lumped elements add ability to not distribute lumped elements Dec 19, 2024
@dmarek-flex dmarek-flex force-pushed the dmarek/lumped_elements_redux branch from 32f70e7 to b779f78 Compare December 20, 2024 20:26
@dmarek-flex
Copy link
Contributor Author

Here are some pictures of the different strategies we have for distributing lumped elements at the moment:

DistributeSpec.Off and lateral size 0 gives wire type connections (high parasitic inductance)
image

DistributeSpec.Off and lateral size !=0 gives sheet type connections (lower inductance, higher capacitance)
image

DistributeSpec.LaterallyOnly and lateral size !=0 gives sheet type connections and distributes network portion (slightly less parasitic inductance)
image

DistributeSpec.On this is the default approach and has the lowest parasitic inductance and capacitance
image

Overall DistributeSpec.On seems to be the best approach in most cases. The exception is when you would like to model a network with a high inductance at high frequencies, then the parasitic inductance can be accounted for in the network model and its effect minimized.

@dmarek-flex
Copy link
Contributor Author

Let's start with an RF team round of reviews.

@dmarek-flex
Copy link
Contributor Author

And here is a circuit model for the parasitic effects that the connections add:

image

$Y(s)$ is the network that you would like to model in the lumped element.

Copy link
Collaborator

@weiliangjin2021 weiliangjin2021 left a comment

Choose a reason for hiding this comment

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

First pass through lumped_element. All look quite clear! Will take another look after break

tidy3d/components/lumped_element.py Outdated Show resolved Hide resolved
tidy3d/components/lumped_element.py Show resolved Hide resolved
tidy3d/components/lumped_element.py Outdated Show resolved Hide resolved
tidy3d/components/lumped_element.py Outdated Show resolved Hide resolved
tidy3d/components/lumped_element.py Show resolved Hide resolved
@QimingFlex
Copy link
Contributor

Looks great, @dmarek-flex! I have a few questions, which I’ll address as I finish reviewing the code.

@dmarek-flex dmarek-flex force-pushed the dmarek/lumped_elements_redux branch from bacfae4 to d9c1af7 Compare January 13, 2025 20:29
tidy3d/components/simulation.py Outdated Show resolved Hide resolved
@dmarek-flex dmarek-flex force-pushed the dmarek/lumped_elements_redux branch from d9c1af7 to 2321ba3 Compare January 14, 2025 20:50
…allow for restricting the network portion

of the lumped element. PEC connections are used to connect to the bounds of the element.

adding test coverage and fixing some corner cases

fixed small possible bug when performing subdivision
@dmarek-flex dmarek-flex force-pushed the dmarek/lumped_elements_redux branch from 2321ba3 to a283bf7 Compare January 14, 2025 21:24
@dmarek-flex
Copy link
Contributor Author

dmarek-flex commented Jan 20, 2025

Got a basic structure question for @daquinteroflex @tylerflex @yaugenst-flex . You will notice in this PR I added a tools/microwave directory where I plan on adding small standalone type calculations for microwave specific applications.

For example, I plan on moving things like the path integrals from the microwave plugin to this folder in the future. The reason being is that I find that I will need to use these calculations when adding basic components like Voltage or Current monitors, so making those tools a part of a plugin doesn't really make sense to me.

@daquinteroflex
Copy link
Collaborator

daquinteroflex commented Jan 20, 2025

So I can't actually respond to this publicly so I've tagged the private issue to discuss this

One approach is simply stick it in the plugins (for now) till we begin this migration effort. This is my preference actually @dmarek-flex if that sounds ok. We can do the migration effort together in another PR when the new structure is more defined if that sounds ok? What's your timeline and we can plan to do it for this since Charge is wrapping up?

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.

5 participants