Hi Johann,
Right now OpticStudio scripts do not have a way to make perturbations to index and dispersion data.
However, if you can use the tolerance data editor, the operands TIND and TABB can be used to include index and Abbe number in the tolerancing process. The wizard can even include them for you if you check the boxes in Index Tolerances. If you want to only include specific elements/surfaces, you can just insert the operands yourself. They just need the surface number, and the nominal, min, and max values/ranges.
Best regards,
Kevin
Hi Kevin,
thank you for your answer. The reason why I was asking is the following: I'm doing a melt fit based on the measured dispersion with a measurement precision of lets say +/-0.02%. Additionally the glass dispersion has a tolerance interval of +/-0.3%. For that reason my plan was to simulate in a first step the drop in imaging performance after the melt fit and in a second step I wanted to investigate the drop in imaging performance caused by the measurement error of the dispersion.
Best regards,
Johann
Hello Johann
As Kevin said, there is no direct way to access the index with the PERTURB keyword.
The PERTURB keyword can however work on multi-configuration operands:
Syntax:
PERTURB type int1 int2 int3 stat nstd min max
Type = 3, multi-configuration data: int1 is the configuration number, int2 is the operand number, int3 must be set to zero.
I have tried to set a O solve next to the material but unfortunately you can't read the value of the offset solve.
One way to read them is to define a model index. Then you can use MIND and MABB to read the index and abbe number.
Would you that be a solution for you?
Let us know.
Thank you.
Sandrine
Hello Sandrine,
modelling the glass is a good option. Even if the nominal system performance changes slightly it is possible to estimate the changes in performance. Thank you.
But in principle I'm dealing with an additional problem: when the dispersion tolerances are perturbed once, a melt fit is done. Then, in the second step glass dispersion and indices should be perturbed again in order to simulate the tight tolerance interval for the measurement accuracy: But in this case the dispersion tolerance interval should not be applied to the nominal dispersion value, but to the actual existing dispersion from the first perturbation.
Is it possible to do a tolerance simulation according to such a procedure?
Thank you very much for your support.
Johann
Hi Johann,
Thanks for your follow-up here!
If I'm understanding you correctly, you want to apply two subsequent tolerance intervals. I think one approach you could take here is to use two PERTURB commands in sequence with each other. What will happen is that the first PERTURB command will adjust your nominal index/dispersion value, and the second PERTURB would be a further perturbation on top of that:
! Test to Perturb the index twice
! Clears compensators
CLEARCOMP
! Loads in INDX merit function
LOADMERIT INDX_Test.MF
! Now perturb CT
PERTURB 3 1 1 0 0 3 0.1 0.2
UPDATE
! evaluate merit function
GETMERIT
! Report INDX Value
REPORT '1st Perturb Index is ' 2
! Perturb again
PERTURB 3 1 1 0 0 3 0.4 0.5
UPDATE
! evaluate merit function
GETMERIT
! Report INDX Value again
REPORT '2nd Perturb Index is ' 2
From the above code, I've intentionally made the first PERTURB modify the index by significantly less than the second PERTURB command. If we run this .TSC script on this model, we can see that resulting REPORT lines show the index changing twice:
The index values are a little extreme just to illustrate the difference in the two PERTURB commands :)
Is this something that you think you could work with? Am I misunderstanding your needs in any way? Let us know if so, and we'll be happy to continue the conversation here further.
~ Angel
Hi Angel,
this is excactly what I need. Thank you all for the great support.
Asking you for help saved a lot of time. Figuring it out by myself was much slower.
Best regards,
Johann