TAGGED: electricfield, Lumerical-CHARGE, mesh, spike
-
-
November 9, 2025 at 4:16 pm
-
November 27, 2025 at 7:24 am
Dong Sub Shin
Ansys Employee안녕하세요,
위의 문제를 확인하기 위하여 시뮬레이션 파일 및 작성하신 코드에 대한 검토가 필요하지만 파일 공유가 불가 하여 Traveling Wave Mach-Zehnder Modulator – Ansys Optics 의 예제를 통해서 결과를 보여드리고자 합니다. 최종적으로 아래 알려드릴 코드를 참고 부탁 드립니다.
먼저 결과를 보여드리면 E의 원본 데이터(왼쪽)가 원하시느 것 처럼 x,z 좌표에 대해서 결과가 나온것을 확인 하실 수 있습니다.
예제의 압축 파일을 풀어보시면 tw_modulator_DEVICE.ldev라는 파일을 확인 하실수 있고 먼저 시뮬레이션이 완료가 되어 프로젝트 파일안에 결과가 있어야 합니다.
위 그림의 왼쪽 결과의 경우 아래 트리를 이용해서 확인을 하실 수 있습니다.
위의 데이터를 원하시는 직교 좌표에 대한 결과를 얻기 위하여 아래 script가 사용이 되었습니다.
# 데이터 추출
data = getresult('CHARGE','electrostatics');
E_ori = data.E;
E = pinch(pinch(E_ori,3,1));
# 좌표 데이터 추출
vtx_x = data.x;
vtx_y = data.y;
vtx_z = data.z;
# 전기장 벡터 성분 추출
Ex = E(:,1);
Ey = E(:,2);
Ez = E(:,3);
# 전기장 크기 계산
E_magnitude = sqrt(Ex^2 + Ey^2 + Ez^2);
# 데이터 차원 확인
?"vtx_x size: " + num2str(length(vtx_x));
?"vtx_z size: " + num2str(length(vtx_z));
?"E_magnitude size: " + num2str(length(E_magnitude));
# 삼각 메쉬를 직교 그리드로 보간
tri = data.elements;
vtx = [vtx_x, vtx_z];
# 직교 그리드 생성
nx = 200; # x 방향 포인트 수
nz = 200; # z 방향 포인트 수
x = linspace(min(vtx_x), max(vtx_x), nx);
z = linspace(min(vtx_z), max(vtx_z), nz);
# 삼각 메쉬에서 직교 그리드로 보간
E_mag_grid = interptri(tri, vtx, E_magnitude, x, z);
# 시각화
image(x*1e6, z*1e6, E_mag_grid, "x (um)", "z (um)", "E-field Magnitude (V/m)");
감사합니다.
-
- You must be logged in to reply to this topic.
-
4592
-
1494
-
1386
-
1209
-
1021
© 2025 Copyright ANSYS, Inc. All rights reserved.



