-
-
July 18, 2024 at 2:02 pmjie liSubscriber
When simulating the case ("Diffuse Scattering Film for Automotive Display") in the case base, I found that some of the script commands as as follows. What is the meaning of " norm_calc = exp( -(Theta/beam_width)^2 ); "
norm_calc = exp( -(Theta/beam_width)^2 ); # Where Theta_out is the matrix of reflection angles,and Theta = meshgridx(theta_out,phi_out); beam_width=2
beam_norm = integrate(norm_calc*sin(Theta*pi/180),1:2,theta_out*pi/180,phi_out*pi/180);
beam_norm = 1/beam_norm;
BTDF(fc,1,1,:,:) = pinch(BTDF(fc,1,1,:,:)) + beam_norm*Ttotal(fc)*order_T(n,m,fc)*exp( -(ThetaDiff/beam_width)^2 );
The complete code is as follows:
theta_out = linspace(0, 90, n_theta_out);
phi_out = linspace(0, 360, n_phi_out);
monitor_nameT = "T";
monitor_nameR = "R";
f = getdata(monitor_nameT,"f");
lambda = c/f;
# Get refractive indices
dim = getdata("R", "dimension");
if ( (dim==2) & (%polarization angle% == 90) ) {
index_R = real(getdata("index_R", "index_z"));
index_T = real(getdata("index_T", "index_z"));
} else {
index_R = real(getdata("index_R", "index_x"));
index_T = real(getdata("index_T", "index_x"));
}
# calculate Theta and Phi grids
Theta = meshgridx(theta_out,phi_out);
Phi = meshgridy(theta_out,phi_out);
Ux = sin(Theta*pi/180)*cos(Phi*pi/180);
Uy = sin(Theta*pi/180)*sin(Phi*pi/180);
Uz = cos(Theta*pi/180);
norm_calc = exp( -(Theta/beam_width)^2 );
beam_norm = integrate(norm_calc*sin(Theta*pi/180),1:2,theta_out*pi/180,phi_out*pi/180);
beam_norm = 1/beam_norm;
Ttotal = abs(transmission(monitor_nameT));
if (dist>0) {
Rtotal = 1 - abs(transmission(monitor_nameR));
} else {
Rtotal = abs(transmission(monitor_nameR));
}
# T
BTDF = matrix(length(lambda),1,1,length(theta_out),length(phi_out));
Ttest = matrix(length(lambda));
order_T = grating(monitor_nameT, 1:length(f), index_T, direction);
order_T_ux = gratingu1(monitor_nameT, 1:length(f), index_T, direction);
order_T_uy = gratingu2(monitor_nameT, 1:length(f), index_T, direction);
for(fc = 1:length(f)) {
for(n=1:length(order_T_ux(:,fc))) {
for(m=1:length(order_T_uy(:,fc))) {
order_uz = sqrt( 1 - order_T_ux(n,fc)^2 - order_T_uy(m,fc)^2 );
if( (order_T(n,m,fc)!= 0) & (imag(order_uz) == 0.) ) {
Tux = cos(-phi_in*pi/180)*order_T_ux(n, fc) - sin(-phi_in*pi/180)*order_T_uy(m, fc);
Tuy = sin(-phi_in*pi/180)*order_T_ux(n, fc) + cos(-phi_in*pi/180)*order_T_uy(m, fc);
ThetaDiff = real(acos( Ux*Tux + Uy*Tuy + Uz*order_uz ) * 180/pi);
BTDF(fc,1,1,:,:) = pinch(BTDF(fc,1,1,:,:)) + beam_norm*Ttotal(fc)*order_T(n,m,fc)*exp( -(ThetaDiff/beam_width)^2 );
}
}
}
}
Ttest = real(integrate(pinch(BTDF)*sin(Theta*pi/180),1:2, theta_out*pi/180, phi_out*pi/180));
-
July 22, 2024 at 4:55 pmGreg BaethgeAnsys Employee
Hi Jie Li, thanks for posting your question. In this workflow, the BSDF is calculated using grating projection. The number of grating orders will depend on the width of the simulation region. In our initial example, this width was used to control the "resolution" of the BSDF.
For the export to Speos, the BSDF is calculated on a fixed grid. To do so, we map each grating order with a Gaussian beam of fixed width (beam_width). "beam_norm" is used as a normalisation factor to make sure power is conserved in the process.
-
- The topic ‘Some problems in the case base(“Diffuse Scattering Film for Automotive Display”)’ is closed to new replies.
- Difference between answers in version 2024 and 2017 lumerical mode solution
- Errors Running Ring Modulator Example on Cluster
- INTERCONNECT – No results unless rerun simulation until it gives any
- Import material .txt file with script
- Help for qINTERCONNECT
- Trapezoidal ring
- Issues with getting result from interconnent analysis script
- How to measure transmission coefficients on a given plane .
- Topology Optimization Error
- Edge Coupler EME Example Issue
-
1281
-
591
-
544
-
524
-
366
© 2024 Copyright ANSYS, Inc. All rights reserved.