
發布
注冊
/
登錄ansys用戶自定義的案例
Ansys Zemax | 如何使用 ZPL 創建用戶自定義求解
附件下載
聯系工作人員獲取附件
概述
本文使用兩個示例演示了如何使用 ZPL 創建用戶自定義解。第一個示例介紹了如何創建 ZPL 解以確保序列文件中像面的曲率半徑等于系統的 Petzval 曲率。第二個示例介紹了如何在非序列元件編輯器(Non-Sequential Component Editor)中基于其他物體的參數來約束的物體位置。
簡介
求解 ( Solve ) 是可以在諸如鏡頭數據編輯器或非序列元件編輯器之類的編輯器中主動調整特定值的功能。例如,可以在曲率半徑,圓錐系數或 TCE 上指定求解類型,并通過單擊要放置的求解單元的求解框進行設置。盡管 OpticStudio 提供了許多默認的求解類型,但用戶有可能希望自定義求解類型,這可以通過使用Zemax 編程語言( Zemax Programming Language ,ZPL)來實現。
ZPL 宏求解可用于任何編輯器中的幾乎所有單元(曲率半徑,厚度,參數,多重結構等)。可以像任何其他求解類型一樣,通過在編輯器中單擊參數單元格右側的小框來設置 ZPL 宏求解。
ZPL 宏求解通過執行 ZPL 宏來確定解的值,并使用 SOLVERETURN 關鍵字將其返回給編輯器。一旦創建了用于求解的宏,并將其放置在 <Documents>\Zemax\Macros 目錄中,即可在求解窗口的“宏:( Macro: )”中輸入該宏的名稱:
請注意,在求解框中輸入的宏名稱不區分大小寫,并且不需要其擴展名(.ZPL)。為確保宏求解按照預期的方式工作,需要遵循一些規則,請參閱“技巧和陷阱”部分以獲取更多信息。
Petzval 曲率求解示例
假設我們想要能夠自動將像面的曲率半徑設置為等于 Petzval 曲率的解。
展開 Ansys Zemax光學設計軟件技術教程:如何使用ZPL創建用戶自定義求解
本文使用兩個示例演示了如何使用ZPL創建用戶自定義解。 第一個示例介紹了如何創建ZPL解以確保序列文件中像面的曲率半徑等于系統的Petzval曲率。第二個示例介紹了如何在非序列元件編輯器 ( Non-Sequential Component Editor ) 中基于其他物體的參數來約束的物體位置。作者 Nam-Hyong Kim, updated by Alessandra Croce下載文章附件簡介求解 ( Solve ) 是可以在諸如鏡頭數據編輯器或非序列元件編輯器之類的編輯器中主動調整特定值的功能。例如,可以在曲率半徑,圓錐系數或TCE上指定求解類型,并通過單擊要放置的求解單元的求解框進行設置。盡管OpticStudio提供了許多默認的求解類型,但用戶有可能希望自定義求解類型,這可以通過使用Zemax編程語言( Zemax Programming Language ,ZPL)來實現。ZPL宏求解可用于任何編輯器中的幾乎所有單元(曲率半徑,厚度,參數,多重結構等)。可以像任何其他求解類型一樣,通過在編輯器中單擊參數單元格右側的小框來設置ZPL宏求解。ZPL宏求解通過執行ZPL宏來確定解的值,并使用 SOLVERETURN 關鍵字將其返回給編輯器。一旦創建了用于求解的宏,并將其放置在 <Documents>\Zemax\Macros 目錄中,即可在求解窗口的“宏:( Macro: )”中輸入該宏的名稱:請注意,在求解框中輸入的宏名稱不區分大小寫,并且不需要其擴展名(.ZPL)。
為確保宏求解按照預期的方式工作,需要遵循一些規則,請參閱“技巧和陷阱”部分以獲取更多信息。Petzval 曲率求解示例假設我們想要能夠自動將像面的曲率半徑設置為等于Petzval曲率的解。當然,在編寫宏之前,請始終先檢查一下仍不支持的解!
展開 Ansys Zemax | 用戶自定義表面真實建模衍射式人工晶狀體透鏡
使用 UDS DLL 的衍射表面模型
為了利用上述區域分解方法,我們實現了一個新的用戶定義表面DLL,其中可以通過分析描述浮雕型衍射表面的矢高輪廓。除了精確分析衍射光學元件(DOEs)的性能外,使用UDS DLL的參數化形狀表示還可以對這些衍射表面進行優化和公差分析。有關如何使用自定義 DLL 擴展 OpticStudio 的功能以及如何編譯新解決方案的更多詳細信息,請聯系工作人員了解。
在使用序列表面 DLL 時,OpticStudio 有 10 種不同的方式與 DLL 交互和交換數據。這些方案表示常規信息、參數名稱和安全數據傳輸,以及布局圖、近軸和實際光線追蹤計算。不同的功能是在DLL的不同情況下定義的。
在這個模型中,我們應用了一個簡單的旋轉對稱衍射結構,具有統一的浮雕臺階高度,添加在代表基底面的標準表面之上。為了能夠與內置的OpticStudio解決方案進行模擬比較,我們用偶數非球面多項式描述了浮雕形狀。因此,表面矢高由以下公式給出:
在上式中,mod表示取模運算,c是曲率,即半徑的倒數,k是圓錐常數,r是徑向坐標,h是統一的浮雕臺階高度。
ai為偶次非球面系數、h為步高。首先在DLL的Case 1中定義傳播算法,參數列標題名稱。然后,Case 3描述基于上述公式的表面矢高,以便在布局圖中繪制。Case 4 考慮近軸光線追蹤結果,但由于區域分解方法需要在光線追跡之上進行衍射分析,該方法僅適用于實際光線追蹤,因此我們忽略了這一步。這意味著在近軸近似中,我們的模型表現為標準曲面。最后,Case 5,計算實際光線追跡結果。
展開 ZEMAX | 如何編寫用戶自定義表面
概念
這篇文章介紹了:
■ 什么是用戶自定義表面 (User-Defined Surfaces)
■ 如何使用Microsoft Visual Studio 2017 (VS2017) 編寫用戶自定義表面
■ 如何使用其他編譯器
您可以前往以下鏈接查看并下載VS2017
鏈接: https://visualstudio.microsoft.com/zh-hans/vs/community/
用戶自定義表面
表面用來定義不同光學介質之間的界面。表面可以定義為透射、反射或是衍射的。OpticStudio 18.9版本支持78種表面類型,其中包括非常通用的表面類型,例如多項式表面 (Polynomial surface) 和雙錐Zernike (Biconic Zernikes) 表面等。
但有些時候,用戶會需要滿足特定要求的表面類型,這也是用戶自定義表面類型發揮作用的時候。您可以隨時將您對新表面的需求發送給support@zemax.com,但OpticStudio也為您提供了自己實現新表面設置的途徑。
用戶自定義表面是一個編譯好的函數(嚴格意義上是Windows的DLL),它可以根據您的需要實現任意表面形狀、相位、透過率函數、梯度折射率或這幾種類型的組合。在定義用戶自定義表面時,您可以自行輸入表面參數,或根據已有的數據庫進行定義。
本文以OpticStudio中自帶的示例文件為基礎,介紹了編譯用戶自定義表面的基本步驟。本文不涉及構建特定表面的方法,這將在其他文章中介紹。
如果您已經擁有基礎的編程經驗并且對想要構建的表面已經有了清晰的數學描述規范,那么定義用戶自定義表面是非常容易的。通過示例文件,本文將帶您快速了解如何定義用戶自定義表面,但是確定所需要的數學函數往往是最難的部分。
我們要做的第一步就是確定表面的定義規范。
展開 
ZEMAX OpticStudio 如何編譯用戶自定義DLL
如何編譯用戶自定義DLL
概述
本文將介紹什么是用戶自定義DLL以及如何在Visual Studio中編譯用戶自定義DLL。本教程是基于Visual Studio Community 2017 version 15.9而創建的,但這些步驟在更早的版本中也適用,版本間變化指出均有記載。本文也會討論其他的編譯器。請注意本文不涉及如何編寫DLL。
OpticStudio專業版和旗艦版允許用戶使用C或C++程序建立他們自己的組件。有很多編譯器可以編譯C/C++代碼,其中很常用的是Visual Studio。本文將提供一步步的編譯DLL的指南。
什么是用戶自定義DLL?
空間頻率分為不同的頻域:
■ 在序列模式中,表面定義了光學材料的界面。表面類型可以是折射、反射、衍射或者漸變折射率。OpticStudio支持超過65種不同的表面類型,包括非常普適的面型包括多項式面型和雙錐Zernike。
然而,很多時候用戶依舊希望可以根據他們的具體需求訂制一些功能。這就是用戶自定義面型有用且強大的地方了,因為OpticStudio包含使用它的界面。
■ 在非序列模式中,物體定義了光學材料的界面。物體擁有帶有材料屬性的幾何形狀,且可以有面(face)來折射或者散射光線。材料也可以散射光線。物體也可以是個光源。
OpticStudio有針對上述所有類型的內建的物體和屬性。在非序列模式中。所有的這些都可以通過以下的DLL來訂制:用戶自定義物體、GRIN檔案、衍射算法、體散射算法、用戶自定義光源。
64位系統要求
過去,OpticStudio曾發布過32位和64位程序,這意味著根據不同的OpticStudio,32位和64位的DLL都可能存在。
展開 ABAQUS用戶自定義單元UEL學習資料 ¥49
ABAQUS子程序UEL
ZEMAX | 如何使用 ZPL 創建用戶自定義求解
本文使用兩個示例演示了如何使用 ZPL 創建用戶自定義解。第一個示例介紹了如何創建 ZPL 解以確保序列文件中像面的曲率半徑等于系統的 Petzval 曲率。第二個示例介紹了如何在非序列元件編輯器 ( Non-Sequential Component Editor ) 中基于其他物體的參數來約束的物體位置。【請聯系我們領取文章的附件】
簡介
求解 ( Solve )
是可以在諸如鏡頭數據編輯器或非序列元件編輯器之類的編輯器中主動調整特定值的功能。例如,可以在曲率半徑,圓錐系數或 TCE 上指定求解類型,并通過單擊要放置的求解單元的求解框進行設置。盡管 OpticStudio 提供了許多默認的求解類型,但用戶有可能希望自定義求解類型,這可以通過使用Zemax 編程語言( Zemax Programming Language ,ZPL)來實現。
ZPL 宏求解可用于任何編輯器中的幾乎所有單元(曲率半徑,厚度,參數,多重結構等)??梢韵袢魏纹渌蠼忸愋鸵粯?,通過在編輯器中單擊參數單元格右側的小框來設置 ZPL 宏求解。
ZPL 宏求解通過執行 ZPL 宏來確定解的值,并使用
SOLVERETURN
關鍵字將其返回給編輯器。一旦創建了用于求解的宏,并將其放置在 <Documents>\Zemax\Macros 目錄中,即可在求解窗口的“宏:( Macro: )”中輸入該宏的名稱:
請注意,在求解框中輸入的宏名稱不區分大小寫,并且不需要其擴展名(.ZPL)。
為確保宏求解按照預期的方式工作,需要遵循一些規則,請參閱“技巧和陷阱”部分以獲取更多信息。
Petzval 曲率求解示例
假設我們想要能夠自動將像面的曲率半徑設置為等于 Petzval 曲率的解。
展開 七、Fluent用戶自定義函數(UDF)基礎(1)
圖1.UDF用戶手冊
UDF介紹: 所謂UDF-用戶自定義函數(User-defined functions),學習過編程語言的同學對此應該并不陌生,無論是C語言、JAVA還是Python,自定義函數被廣泛的應用著,它能夠使語言邏輯和代碼的簡潔性大幅度提高。Fluent的UDF有著同樣的功能,但是又不完全相同。
在Fluent中,UDF使用C語言來編寫,因此需要大家有一定的C語言基礎,但是不必過于深入,大家只需要了解基本的格式和語法結構即可,同時需要對指針有一點了解。建議有其他語言基礎的同學花一周的時間學習一下C語言---一周的時間已經足夠了。
UDF特殊性: 接下來我們說一下Fluent UDF的特殊性,實際上即便C語言功底很厲害的高手并不一定能夠寫好UDF,為什么呢?因為Fluent UDF和C語言的自定義函數完全就是兩碼事。它是Fluent封裝好的可以傳遞給求解器的函數,主要由各種宏組成,每個宏有各自的作用。說的通俗易懂一點,其實UDF就是Fluent已經給用戶起好了自定義函數的名字了,用戶達到什么樣的目的,使用相對應的宏就行。類似于我乘坐地鐵去電影院,為了達到去電影院的目的,我使用了名叫地鐵的工具,這里的名字“地鐵”就相當于Fluent中的宏;如果放到C語言中,你可以給“地鐵”起任意名字如“自行車”,這樣會帶來混亂,導致Fluent求解器識別不了你的目的。比如用戶想讓進口流體的速度正弦變化,那么就需要找到能夠修改邊界條件的宏-DEFINE_PROFILE(name, t, i),然后在里面指定速度函數即可。
圖2.C語言自定義函數
圖3.Fluent UDF
UDF功能: 對于Fluent而言,UDF可以顯著增強其功能,使用UDF你可以做如下的事情:
1.
展開 九、Fluent用戶自定義函數(UDF)基礎(2)-DEFINE_PROFILE
簡介</strong></p><p class="ql-align-center"><br></p><p> 今天我們接著說Fluent UDF功能,我們經常使用的UDF宏主要有以下幾種:</p><p>DEFINE_PROFILE: 定義模型邊界</p><p>DEFINE_ADJUST: 用于協調計算過程中物理量</p><p>DEFINE_INIT: 初始化宏,用于自定義初始化</p><p>DEFINE_PROPERTY: 定義材料物性</p><p> 上述的幾種宏基本上無論使用什么物理模型都會用到,還有部分宏是在特定的模型下才會使用,如使用DPM模型時用DEFINE_DPM_SOURCE宏來定義DPM源項,而普通的物理模型下源項通過DEFINE_SOURCE宏定義即可。</p><p> </p><p> 今天我們主要了解DEFINE_PROFILE宏的使用,DEFINE_PROFILE宏可以用來定義邊界條件,當邊界條件比較復雜時,如定義壁面溫度<em>T</em><sub>w</sub>=f(y),即壁面溫度是y的函數可以使用DEFINE_PROFILE宏進行定義。
展開 Abaqus用戶自定義幅值UAMP子程序案例講解
[圖片]
在DYNA3D中應用用戶自定義材料---白金澤
在DYNA3D中應用用戶自定義材料 www.simwe.com|1XG8{b-vS|
白金澤 仿真分析,有限元,模擬,計算,力學,航空,航天,ANSYS,MSC,ABAQUS,ALGOR,Adina,COMSOL,FEMLAB,Matlab,Fluent!C7h.P;n7[aa
(中科院力學所,100080) SimWe仿真論壇G&a&xS+u R6z
1、 概述
在DYNA3D中定義用戶材料是一件容易的事情。用戶在計算輸入文件中填入相應的材料屬性卡,同時編寫用戶材料子并與DYNA編譯連接,生成新的可執行文件,即可進行用戶材料的計算。本文詳細介紹了用戶材料的使用方法,并給出了3個用戶程序示例。 仿真分析,有限元,模擬,計算,力學,航空,航天,ANSYS,MSC,ABAQUS,ALGOR,Adina,COMSOL,FEMLAB,Matlab,Fluent8NrB7mR'lwq-Ux
2、 輸入文件中用戶材料的定義方法 仿真分析,有限元,模擬,計算,力學,航空,航天,ANSYS,MSC,ABAQUS,ALGOR,Adina,COMSOL,FEMLAB,Matlab,Fluente"]t
`F7B3y)N
在DYNA3D中,關鍵字:MAT_USER_DEFINED_MATERIAL_MODELS用來定義用戶材料。在輸入文件*.K中,材料編號41-50是用戶自定義材料模型,用戶可以提供自己的子程序。這個關鍵字輸入可以處理具有破壞判斷的各向同性和各向異性材料。
展開 
ZEMAX | 如何用 ZOS-API 創建用戶自定義分析
本文展示了如何使用ZOS-API創建定制的用戶分析。
作者 Thomas Pickering
附件下載
聯系工作人員獲取附件
簡介
ZOS-API是一個基于COM,來源于.NET庫的接口,為用戶提供了用多種語言編程的能力,包括C++、Python和Matlab。
在本文中,我們將重點討論有限訪問類型的自定義分析模式。此模式鏈接到單個分析窗口,并用于填充自定義分析所需的數據。數據將被顯示在OpticStudio圖形窗口中。與自定義操作數模式類似,該模式只允許更改當前系統的副本。用戶分析可以使用C++ (COM) 或 C# (.NET)編寫——這取決于用戶使用這兩種語言的偏好。
新建樣本模板
為了用 C# 編寫自定義分析,我們需要選擇 編程 (Programming) ... C# ...自定義分析 (User Analysis) 。
Windows資源管理器會打開文件夾 {Zemax}\ZOS-API Projects\CSharpUserAnalysisApplication1。您的默認 C# 開發程序也將打開,該程序包含一個樣板代碼,可以作為任何用戶自定義分析的基礎。
修改鏡頭數據編輯器
我們將為位于 {Zemax}\Samples\Sequential\Objectives\Double Gauss 28 degree field.zmx 的示例文件創建此用戶分析。
計劃以每次增加 10 um 的步驟變化表面 6 的表面厚度+/- 1mm,并研究在30、40和 50 cycles/mm 時調制傳遞函數 (MTF) 的改變。
首先,在代碼的頂部添加3行。我們需要設置名稱空間,然后在不指定完整路徑的情況下使用內部接口。
展開 Workbench用戶自定義控件界面顯示類型
Workbench用戶自定義控件界面顯示類型
上一期我們演示了APDL命令封裝為Mechanical用戶自定義插件,在插件中,我們只能選擇模型,設置float類型的數據。在實際使用中遇到情況會更復雜,比如通過下拉列表選擇加載形式、選擇載荷坐標系,選擇文件等情況,本期我將介紹常見的界面定義方式,實現以下功能。
元素
<PropertyGroup> 將多個屬性封裝為一組屬性
<propertygroup name="Group1" caption="Simple group with caption" display="caption">
<property name="Prop1" caption="Prop1" control="text" />
<property name="Prop2" caption="Prop2" control="text" />
<property name="Prop3" caption="Prop3" control="text" />
</propertygroup>
元素propertygroup 有一個特殊的屬性display。當display設置為caption,表示所有子屬性都顯示在標題下。如果省略caption,display默認為hidden,表示屬性組隱藏.
2. 通過Group Select屬性選擇,確定屬性的顯示與隱藏。
展開 梁單元截面偏置(用戶自定義位置)計算方法
截面定義
sectype,1,beam,rect
secdata,600,250
secoffset,user,-300,-125
.
.
.
!================
!結構幾何建模
blc4,,,3600,3600
k,5,0,0,-3600
l,5,1
lsel,s,,,5
lgen,2,all,,,3600
lgen,2,all,,,,3600
nummrg,all
!================
!截面屬性賦值
lsel,s,,,1
latt,1,,1,,,4,1
.
.
.
!================
!劃分單元及截面顯示
allsel,all
lesize,all,,,3
lmesh,all
allsel,all
/eshape,1
展開 LMS Virtual.Lab Motion_教程8之用戶自定義力
這次帶來的是用戶自定義力的使用,讓使用者明白怎么使用用戶自定義程序,以及開發自己所需的力菜單。這里使用命令行的方法進行菜單的開發,希望對大家有用。
LMS Virtual.Lab Motion教程之用戶自定義力.pdf
Models.rar