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

High Fluxoid Error with No Screening #66

Closed
Kyroba opened this issue Nov 7, 2023 · 6 comments
Closed

High Fluxoid Error with No Screening #66

Kyroba opened this issue Nov 7, 2023 · 6 comments
Labels
resolved Issue has been resolved; keeping it open for reference

Comments

@Kyroba
Copy link

Kyroba commented Nov 7, 2023

For a large geometry (1um square with 3nm coherence length, 6nm hole pattern), the hole fluxoid error is high - suggesting that screening is necessary. I chose parameters such that effective magnetic screening length = 90 microns.
image

Is this an issue with how I am calculating the fluxoid or do I really need screening for these simulations. Below are images of the device and order parameter at a specific time (with bias).
device3
100uAbiaspsi3_25

@loganbvh
Copy link
Owner

loganbvh commented Nov 7, 2023

Given the long magnetic screening length, I don't think this is due to neglecting screening. I'm pretty sure this is just discretization/interpolation error. When vortices are so densely packed, the interpolation required for the fluxoid calculation may introduce large errors.

If you just want to figure out how many flux quanta are in each hole, you can use solution.boundary_phases() to evaluate the phase of the order parameter along the film and hole boundaries.

@loganbvh
Copy link
Owner

loganbvh commented Nov 7, 2023

e.g.

boundary_phases = solution.boundary_phases(delta=True)
hole_phase_difference = boundary_phases["antidot12"].phases[-1]
fluxoid = hole_phase_difference / (2 * np.pi)

From the quickstart notebook:

image

@Kyroba
Copy link
Author

Kyroba commented Nov 7, 2023

Thanks Logan, it is taking a long time just to calculate the fluxoid for 1 antidot but I will post the result here when it is done.

@loganbvh
Copy link
Owner

loganbvh commented Nov 7, 2023

That function calculates the boundary phases for all holes, so it will take a long time if there are many holes in a big mesh. You can just copy the code in the function to apply it to one hole at a time if you'd like.

@loganbvh
Copy link
Owner

loganbvh commented Nov 7, 2023

def get_polygon_boundary_phases(solution: tdgl.Solution, polygon_name: str, delta: bool = False) -> np.ndarray:
    device = solution.device
    boundary_indices = device.boundary_sites()
    psi = solution.tdgl_data.psi
    theta = np.angle(psi)
    indices = boundary_indices[polygon_name]
    phases = np.unwrap(theta[indices])
    if delta:
        phases -= phases[0]
    return phases

@Kyroba
Copy link
Author

Kyroba commented Nov 7, 2023

image
Seems like it worked (took 10min), and using the function you provided:
image

@loganbvh loganbvh added the resolved Issue has been resolved; keeping it open for reference label Jan 26, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
resolved Issue has been resolved; keeping it open for reference
Projects
None yet
Development

No branches or pull requests

2 participants