Optimizing for a Target Spatial Distribution

Introduction

This knowledge base article will demonstrate how to use FRED Optimum’s optimization capability to modify a system and achieve a desired irradiance distribution. The system being modified is a PMMA light pipe. Six variables control the shape of the light pipe and the optimization merit function aberration is the RMS difference between the current light distribution and the ideal light distribution. The optimization merit function aberration is a user-defined script.

This example uses a source to define the target irradiance - an extension of this article explains how to use a bitmap to define a target and is available here.

System Layout

The rear and profile views of the light pipe geometry are shown in the figure below.

As shown below, two surfaces in the light pipe are surfaces of revolution formed from two 2nd degree NURB curves. The optimization process uses the positions and weights of some of the control points as variables in the optimization process to deform the shapes of the light pipe surfaces. Shown schematically, the green dots are the control points that will be manipulated during the optimization.

A random plane emitter is embedded in the cylindrical tube portion of the light pipe. In the starting configuration, the irradiance distribution at the analysis surface is shown below.

The desired distribution to be achieved after optimization is shown below.

Notice in the FRED file that there is a second source called IdealDistribution with an associated analysis plane called IdealAnalysis. In the FRED model, this source represents the ideal distribution to be achieved at the end of the optimization.

Optimization Variables

As mentioned previously, the variables in the optimization will be the positions and weights of several control points in the base curves defining the surfaces of revolution in the light pipe. The variables are listed below and can be accessed within the FRED file itself by navigating to Menu > Optimize > Define/Edit. 

Variable Lower Limit Upper Limit Fraction Step
Geometry.Shell.Curve1
CP0 Z-Position -4 1 0.5
CP1 Y-Position 0 10 0.5
CP1 Weight 0 2 0.5
Geometry.TIRSurf.Curve 2
CP1 Y-Position 0 4 0.5
CP1 Z-Position -4 0 0.5
CP1 Weight 0 2 0.5
CP2 Z-Position -4 0 0.5

Optimization Aberration

The merit function aberration being used is a User-defined script, since there currently exists no default method for importing a target distribution into the optimizer. The script used to implement the aberration to target a distribution is provided below with comments.

<span style="font-weight: normal;"></span>Sub EvalMzrAber( ByVal g_ana&, ByRef g_aber#, ByRef g_success As Boolean )

    Dim arnStats As T_ARN_2D_CELL_STATS
    Dim anaIdeal As Long
    Dim rndArn As Long, idealArn As Long, count As Long, ii As Long, jj As Long
    Dim data() As Double, totDiffPower As Double, totRndPower As Double, totIdealPower As Double
    Dim dAdirX As Double, dAdirY As Double, dAdirZ As Double
    Dim dBdirX As Double, dBdirY As Double, dBdirZ As Double
    Dim success As Boolean

    'find node number of the ideal source analysis plane
    anaIdeal = FindFullName( "Analysis Surface(s).IdealAnalysis" )

    'store the ideal irradiance distribution in an ARN and normalize the power
    count = IrradianceToARN( anaIdeal, "idealARN", idealArn )
    totIdealPower = ARNComputeTotalPower( idealArn )
    ARNGetDataAsDoubleArray idealArn, data()
    For ii = 0 To UBound(data,1)
        For jj = 0 To UBound(data,2)
            data(ii,jj) = data(ii,jj)/totIdealPower
        Next jj
    Next ii
    ARNSetDataAsDoubleArray idealArn, data()

    'store the traced irradiance distribution in an ARN and renormalize the power
    count = IrradianceToARN( g_ana, "randomARN", rndArn )
    totRndPower = ARNComputeTotalPower( rndArn )
    ARNGetDataAsDoubleArray rndArn, data()
    For ii = 0 To UBound(data,1)
        For jj = 0 To UBound(data,2)
            data(ii,jj) = data(ii,jj)/totRndPower
        Next jj
    Next ii
    ARNSetDataAsDoubleArray rndArn, data()

    'difference the two ARN. Results are stored in idealArn node.
    ARNLinearCombination( -1, idealArn, 1, rndArn )
    ARNGetDataAsDoubleArray idealArn, data()
    For ii = 0 To UBound(data,1)
        For jj = 0 To UBound(data,2)
            data(ii,jj) = Abs( data(ii,jj) )
        Next jj
    Next ii
    ARNSetDataAsDoubleArray idealArn, data()

    'get statistics and set aberration value
    ARNCompute2DCellStatistics idealArn, arnStats
    g_aber = Sqr(arnStats.AvgSqNonZeroCellVal)

    'delete the ARN nodes (memory management)
    success = ARNDelete( idealArn )
    success = ARNDelete( rndArn )

    g_success = totRndPower > 0

End Sub

Optimization Results

The comparison between the light pipe exit distribution and the target distribution are shown below for three optimization sets of 20 iterations each using all variables.  The top image is the resulting distribution for the lightpipe after optimization and the bottom distribution is the ideal result that was being targeted.

Example FRED File: targetedDistributionOptimization.frd

Still need help? Contact Us Contact Us