计算机光学元件的混合编程软件设计
2016-10-21王雨农
摘 要:设计计算机光学元件混合编程软件对光学领域发展具有十分重要的现实意义,本文首先对计算机光学和混合编程方法进行了简单介绍,然后对计算机光学元件混合编程设计进行了详细论述。
关键词:计算机光学元件;混合编程;软件设计
电磁波作為光学领域中最常应用的一种射线,在实际应用中,由于需要的不同往往需要对光场分布方式进行改变,以达到应用目的。这就需要有一种科学有效的方法来对电磁波光场进行改变。有关实践证明,利用计算机光学元件对电磁波场分布进行改变往往能够达到较高的效果。但由于传统计算机光学元件设计算法运算精度低,因而需要对现有计算机光学元件进行改进,以提高软件运行效率。
1 计算机光学概述
计算机诞生后,在计算机的长期应用过程中,技术研究人员与科学家们自然而然的将光学元件应用到计算机当中来制造光计算机。在此背景下,计算机光学理论形成。随着对光计算机研究的不断深入,目前已产生多种计算机光学分析方法。其中,较为有效的方法就是计算机光学元件。但计算机光学元件设计在光学领域属于一个逆向问题,设计难度极大[ 1 ]。所谓逆向问题,指的是对成像系统中已知的入射场和出射场分布形式,计算出相应元件平面上的相位浮雕高度,从而保证能够对其入射波场分布进行正确调制,并给出期望光场分布。在科技不断进步与相关理论不断成熟的推动作用下,计算机光学元件设计理论取得了实质性的进展,标量衍射理论、几何理论和矢量理论是目前较为成熟且使用较多的三种理论。在计算机光学元件混合编程软件设计过程中,依据这些理论对软件进行设计,可以为其提供相应的理论支持与依据。
2 混合编程方法
要想设计出计算机光学元件混合编程软件,就需要采用相应的方法来实现多种编程语言的混合编程。目前,混合编程的实现主要有两种方法,即利用动态连接库和目标文件。动态连接库方法,是指将FORTRAN程序构成动态连接库之后,通过VC++编程软件对其进行动态调用,从而实现两种语言的混合编程[ 2 ]。目标文件方法是指,首先在FORTRAN和VC++各自的编程环境下编写程序生成对应的目标文件,然后利用相关技术将两种语言程序的目标文件连接起来,生成在VC++环境下可执行程序,这种程序即为混合编程程序。根据计算机光学元件软件设计要求与应用场合,本文采用目标文件法来对计算机光学元件混合编程软件的混合编程部分进行设计。
3 计算机光学元件混合编程软件设计
3.1 软件开发环境与设计目标
为实现计算机光学元件混合编程软件的可视化,本文采用FORTRAN90和VC++6.0两种编程软件来开发计算机光学元件混合编程软件。在FORTRAN编译环境中,源程序文件扩展名为.f90,在VC++编译环境中,源程序文件扩展名为.cpp。混合编程用VC++软件来调用VC目标文件和FORTRAN目标文件实现。需要注意的是,要想实现两种不同编程语言的混合调用,就需要保证两种语言拥有相同的调用约定[ 3 ]。STDCALL是VC++和FORTRAN软件拥有的相同程序调用约定,因而可以采用该约定。另外,用VC调用FOR程序时,必须用extern对FOR函数进行说明,强调该函数为一个外部函数,并且extern的位置必须放在所有被调用函数之前。
为增强软件数据处理功能,采用MATLAB可视化软件为元件图样处理过程中的矩阵、数据分析以及其他数据处理提供强大的数据计算功能,以提高程序运行效率与数据计算精确性,保障软件运行具有良好的稳定性与可靠性。不仅如此,利用该可视化软件还能够促进VC与FOR软件各自优点充分发挥。
根据计算机光学元件改变光波、微波、电磁波等各种光场分布这一作用,所设计的计算机光学元件混合编程软件需要实现以下几项功能:第一,应用程序能够提供计算所需初始相位分布图样,即对任意目标图样(图像数据)元件相位分布初始值的输入,软件都能够进行相应的计算,从而为程序运行后期通过GS算法来实现对计算机光学元件的模拟设计提供所需必要数据。第二,软件应具有验证功能,即能够对计算出的光学元件设计参数模拟出的实际光束经相位补偿后得到的图样与实际光束图样进行对比。第三,采用透射式计算机光学元件对混合编程软件设计过程进行模拟,以实现任意目标图样(数据)的模拟设计,进而得出光学元件相应的设计参数和相关图样数据文件,并能够绘制出元件的相位浮雕高度图样。设计出的计算机光学元件混合编程软件操作界面应友好大方,方便用户执行各种操作,且执行效率高。此外,软件还应具备数据浏览功能,使用户可以方便快捷的浏览各种所需数据。整体而言,计算机光学元件混合编程软件设计应能够较好的满足实际应用中用户所需各项基本功能。
3.2 计算机光学软件混合编程设计流程
首先,由用户选择预期的数据文件,即光学图样,并输入初始参数,然后对输入的初始参数进行判断。若正确显示出入射光斑和期望图形,然后进行迭代计算,并保存产生的中间数据,经一系列计算后显示出系统模拟的元件模拟图样、相位浮雕高度图样以及迭代的次数。最后进行验证,并将验证结果图形显示出来,供用户浏览,最终完成计算机光学元件混合编程的设计。
4 总结
总而言之,计算机光学是光学领域发展的一种重要新兴科目,也是计算机技术与光学技术有效融合的一个重要纽带。设计并实现高集成化、高衍射效率、高运算精度、自由灵活、轻巧小型的计算机光学元件混合编程软件,对推动光学技术与光计算机进一步发展具有重要的意义和影响。设计人员应对现有软件算法进行不断优化,不断提高软件整体工作性能,努力克服计算机光学元件设计中的各种难题。
参考文献:
[1] 方恒楚.遗传模拟退火算法在光学系统计算机辅助装调中的应用[D].北京交通大学,2009.
[2] 姜瞳.基于飞秒激光直写微光学元件的制备及性能表征[D].吉林大学,2014.
[3] 杜源.基于VB及MATLAB混合编程的数字实时全息再现系统[D].昆明理工大学,2011.
作者简介:王雨农(1994-),男,内蒙古包头人,专业或研究方向:计算机。