Skip to main content

ZOS-API- How to use sequential ray tracing tools?

  • September 30, 2019
  • 1 reply
  • 529 views

Julia
Fully Spectral
Forum|alt.badge.img+2
  • Fully Spectral
  • 51 replies


to_surf = TheSystem.LDE.NumberOfSurfaces-1;
Ex=0;Ey=1;phaX=0;phaY=90;waveNumber=2;Hx=0;Hy=0;Px=0;Py=1;
raytrace = TheSystem.Tools.OpenBatchRayTrace();
[success,errCode,exro,exio,eyro,eyio,ezro,ezio,intensity]=raytrace.SingleRayNormPol(ZOSAPI.Tools.RayTrace.RaysType.Real,Ex,Ey,phaX,phaY, to_surf, waveNumber,Hx,Hy,Px,Py,0,0,0,0,0,0);


  • Open the batch ray trace tool

  • Create polarized real raytracing in which a single ray with normalized pupil coordinates will be added



waveNumber=2;Hx=0;Hy=0.5;Px=0;Py=0.5;
raytrace = TheSystem.Tools.OpenBatchRayTrace();
[success,X,Y,Z,L,M,N]=raytrace.GetDirectFieldCoordinates(2,ZOSAPI.Tools.RayTrace.RaysType.Real,Hx,Hy,Px,Py)


  • Open the batch ray trace tool

  • Get direct field coordinates with input normalized field and pupil coordinates




raytrace = TheSystem.Tools.OpenBatchRayTrace();
max_rays = 4;
pwav = 0;
for a = 1:TheSystem.SystemData.Wavelengths.NumberOfWavelengths
if TheSystem.SystemData.Wavelengths.GetWavelength(a).IsPrimary == 1; pwav = a; end;
end
to_surf = TheSystem.LDE.NumberOfSurfaces;
normUnPolData = raytrace.CreateNormUnpol(11,ZOSAPI.Tools.RayTrace.RaysType.Real, (to_surf)-1);
hx=0;
px=0;
hy_ary = [0, 0.707, 1];
fprintf('%6s %8s %8s %8s %8s %12s %12s%12s %12s%12s %12s\n','ray#','hx','hy','px','py','X','Y','L','M','l2','m2')
for i=1: length(hy_ary)
normUnPolData.ClearData();

for j=0:max_rays
py(j+1)=-1+j/2;
normUnPolData.AddRay(pwav, hx, hy_ary(i), px, py(j+1), ZOSAPI. Tools.RayTrace.OPDMode.None);

end

raytrace.RunAndWaitForCompletion();
normUnPolData.StartReadingResults();
[success, rayNumber, errCode, vigCode, x, y, ~, L, M, ~, l2, m2, ~, ~, ~] = normUnPolData.ReadNextResult();
while success
if ((errCode == 0 ) && (vigCode == 0)) fprintf('%6d %8.2f %8.2f %8.2f %8.2f %12.6f %12.6f%12.6f %12.6f%12.6f %12.6f\n',rayNumber,hx, hy_ary(i), px,py(rayNumber),x,y,L,M,l2,m2)
end
[success, rayNumber, errCode, vigCode, x, y, ~, L, M, ~,l2, m2, ~, ~, ~] = normUnPolData.ReadNextResult();
end
end


In the above code:



  • Open the batch ray trace tool

  • Get primary wave number and number of surfaces

  • Create unpolarized real raytracing in which rays with normalized pupil coordinates will be added

  • Use for loop to add a batch of rays from different fields

  • Run the tool until it finished

  • Read results ray by ray if data is valid

  • Print data in command window




Did this topic help you find an answer to your question?

1 reply

Hans-Jürgen Feige

found the solution


Reply


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings