空氣動(dòng)力學(xué)優(yōu)化技術(shù):拓?fù)鋬?yōu)化:拓?fù)鋬?yōu)化軟件操作實(shí)踐_第1頁(yè)
空氣動(dòng)力學(xué)優(yōu)化技術(shù):拓?fù)鋬?yōu)化:拓?fù)鋬?yōu)化軟件操作實(shí)踐_第2頁(yè)
空氣動(dòng)力學(xué)優(yōu)化技術(shù):拓?fù)鋬?yōu)化:拓?fù)鋬?yōu)化軟件操作實(shí)踐_第3頁(yè)
空氣動(dòng)力學(xué)優(yōu)化技術(shù):拓?fù)鋬?yōu)化:拓?fù)鋬?yōu)化軟件操作實(shí)踐_第4頁(yè)
空氣動(dòng)力學(xué)優(yōu)化技術(shù):拓?fù)鋬?yōu)化:拓?fù)鋬?yōu)化軟件操作實(shí)踐_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

空氣動(dòng)力學(xué)優(yōu)化技術(shù):拓?fù)鋬?yōu)化:拓?fù)鋬?yōu)化軟件操作實(shí)踐1空氣動(dòng)力學(xué)與拓?fù)鋬?yōu)化基礎(chǔ)1.1空氣動(dòng)力學(xué)原理簡(jiǎn)介空氣動(dòng)力學(xué)是研究物體在氣體中運(yùn)動(dòng)時(shí)所受力的科學(xué),尤其關(guān)注飛機(jī)、火箭、汽車等在空氣中高速移動(dòng)時(shí)的氣動(dòng)特性。其核心原理包括:伯努利原理:流體速度增加時(shí),壓力會(huì)減??;反之,流體速度減慢時(shí),壓力會(huì)增加。這一原理在解釋機(jī)翼產(chǎn)生升力時(shí)至關(guān)重要。牛頓第三定律:作用力與反作用力相等且方向相反。在空氣動(dòng)力學(xué)中,這解釋了飛機(jī)如何通過(guò)向后推氣體來(lái)向前移動(dòng)。邊界層理論:流體緊貼物體表面時(shí),會(huì)形成一層速度梯度變化的區(qū)域,稱為邊界層。邊界層的性質(zhì)對(duì)物體的阻力有重大影響。1.2拓?fù)鋬?yōu)化概念與應(yīng)用拓?fù)鋬?yōu)化是一種設(shè)計(jì)方法,用于在給定的設(shè)計(jì)空間內(nèi)尋找最優(yōu)的材料分布,以滿足特定的性能目標(biāo)。在空氣動(dòng)力學(xué)領(lǐng)域,拓?fù)鋬?yōu)化可以用于設(shè)計(jì)更高效的翼型、進(jìn)氣口、發(fā)動(dòng)機(jī)罩等,以減少阻力、增加升力或改善氣流分布。1.2.1拓?fù)鋬?yōu)化算法示例拓?fù)鋬?yōu)化通常基于數(shù)學(xué)優(yōu)化算法,如SolidIsotropicMaterialwithPenalization(SIMP)方法。以下是一個(gè)使用Python和scipy.optimize庫(kù)進(jìn)行拓?fù)鋬?yōu)化的簡(jiǎn)化示例:importnumpyasnp

fromscipy.optimizeimportminimize

#定義目標(biāo)函數(shù):最小化結(jié)構(gòu)的總重量

defobjective(x):

returnnp.sum(x)

#定義約束函數(shù):確保結(jié)構(gòu)的剛度滿足要求

defconstraint(x):

#假設(shè)這里有一個(gè)復(fù)雜的計(jì)算,用于評(píng)估結(jié)構(gòu)剛度

returnnp.sum(x**2)-100

#初始猜測(cè)

x0=np.ones(10)

#約束條件

cons=({'type':'eq','fun':constraint})

#進(jìn)行優(yōu)化

res=minimize(objective,x0,method='SLSQP',constraints=cons)

#輸出結(jié)果

print(res.x)1.2.2代碼解釋在這個(gè)示例中,我們定義了一個(gè)目標(biāo)函數(shù)objective,用于最小化結(jié)構(gòu)的總重量,以及一個(gè)約束函數(shù)constraint,確保結(jié)構(gòu)的剛度滿足特定要求。我們使用scipy.optimize.minimize函數(shù)進(jìn)行優(yōu)化,其中SLSQP方法是一種適用于有約束優(yōu)化問(wèn)題的算法。最終,res.x將包含優(yōu)化后的材料分布。1.3拓?fù)鋬?yōu)化在空氣動(dòng)力學(xué)中的重要性拓?fù)鋬?yōu)化在空氣動(dòng)力學(xué)設(shè)計(jì)中的應(yīng)用,可以顯著提高飛行器的性能。例如,通過(guò)優(yōu)化翼型的形狀,可以減少飛行時(shí)的阻力,增加升力,從而提高飛行效率。此外,拓?fù)鋬?yōu)化還可以用于設(shè)計(jì)更有效的進(jìn)氣口和排氣口,以改善發(fā)動(dòng)機(jī)的氣流管理,提高燃燒效率。1.3.1拓?fù)鋬?yōu)化軟件操作實(shí)踐在實(shí)際操作中,拓?fù)鋬?yōu)化通常需要使用專業(yè)的軟件,如ANSYS、Abaqus或AltairOptiStruct。這些軟件提供了復(fù)雜的物理模型和優(yōu)化算法,可以處理真實(shí)世界中的設(shè)計(jì)問(wèn)題。以下是一個(gè)使用AltairOptiStruct進(jìn)行拓?fù)鋬?yōu)化的基本步驟:定義設(shè)計(jì)空間:在軟件中,首先需要定義哪些區(qū)域可以被優(yōu)化,哪些區(qū)域是固定的。設(shè)置目標(biāo)和約束:明確優(yōu)化的目標(biāo)(如最小化重量)和約束條件(如剛度要求)。運(yùn)行優(yōu)化:軟件將根據(jù)設(shè)定的目標(biāo)和約束,自動(dòng)調(diào)整設(shè)計(jì)空間內(nèi)的材料分布,以找到最優(yōu)解。后處理和分析:優(yōu)化完成后,需要對(duì)結(jié)果進(jìn)行分析,確保設(shè)計(jì)滿足所有工程要求。1.3.2操作示例由于AltairOptiStruct的操作涉及復(fù)雜的用戶界面和大量的輸入?yún)?shù),這里無(wú)法提供具體的代碼示例。但是,一個(gè)基本的拓?fù)鋬?yōu)化案例可能包括以下步驟:使用CAD軟件創(chuàng)建初始設(shè)計(jì)模型。導(dǎo)入OptiStruct,定義設(shè)計(jì)空間和固定區(qū)域。設(shè)置優(yōu)化目標(biāo)為最小化結(jié)構(gòu)重量,約束為保持結(jié)構(gòu)剛度。運(yùn)行拓?fù)鋬?yōu)化分析。分析結(jié)果,進(jìn)行必要的設(shè)計(jì)修改,然后重復(fù)優(yōu)化過(guò)程,直到滿足所有設(shè)計(jì)要求。通過(guò)這些步驟,設(shè)計(jì)人員可以利用拓?fù)鋬?yōu)化技術(shù),創(chuàng)造出在空氣動(dòng)力學(xué)性能上更優(yōu)的結(jié)構(gòu)設(shè)計(jì)。2拓?fù)鋬?yōu)化軟件選擇與安裝2.1常見(jiàn)拓?fù)鋬?yōu)化軟件介紹拓?fù)鋬?yōu)化是一種設(shè)計(jì)方法,用于在滿足特定約束條件下,尋找最優(yōu)的材料分布。在空氣動(dòng)力學(xué)領(lǐng)域,拓?fù)鋬?yōu)化被用來(lái)設(shè)計(jì)最高效的氣動(dòng)外形。以下是一些常見(jiàn)的拓?fù)鋬?yōu)化軟件:AltairOptiStruct-一款廣泛應(yīng)用于汽車、航空航天等行業(yè)的拓?fù)鋬?yōu)化軟件,支持多種材料和結(jié)構(gòu)的優(yōu)化設(shè)計(jì)。ANSYSTopologyOptimization-ANSYS軟件套件的一部分,提供強(qiáng)大的拓?fù)鋬?yōu)化功能,適用于復(fù)雜的工程問(wèn)題。TopologyOptimizationwithMATLAB-由OleSigmund教授開(kāi)發(fā)的MATLAB工具箱,適用于學(xué)術(shù)研究和教學(xué)。SolidWorksSimulation-雖然主要是一款CAD軟件,但其高級(jí)版本包含拓?fù)鋬?yōu)化模塊,適合初學(xué)者和小型項(xiàng)目。TOSCA-由SIMULIA提供,專門用于結(jié)構(gòu)和氣動(dòng)外形的拓?fù)鋬?yōu)化,特別適合航空航天設(shè)計(jì)。2.2軟件選擇指南選擇拓?fù)鋬?yōu)化軟件時(shí),應(yīng)考慮以下因素:應(yīng)用領(lǐng)域:不同的軟件可能在特定領(lǐng)域(如航空航天、汽車)表現(xiàn)更佳。計(jì)算資源:軟件的計(jì)算需求和你可用的硬件資源。成本:商業(yè)軟件的許可費(fèi)用,以及是否有免費(fèi)或開(kāi)源的替代品。易用性:軟件的用戶界面和學(xué)習(xí)曲線。支持與社區(qū):軟件的文檔、教程和用戶社區(qū)的活躍程度。2.3軟件安裝與配置以AltairOptiStruct為例,介紹其安裝與配置過(guò)程:2.3.1安裝步驟下載軟件:從Altair官方網(wǎng)站下載OptiStruct的安裝包。許可配置:獲取并設(shè)置許可文件,通常需要聯(lián)系A(chǔ)ltair獲取。運(yùn)行安裝程序:雙擊安裝包,按照屏幕上的指示進(jìn)行安裝。選擇組件:在安裝過(guò)程中,選擇需要的組件,包括OptiStruct和相關(guān)的預(yù)后處理器。完成安裝:安裝完成后,重啟計(jì)算機(jī)以確保所有組件正確加載。2.3.2配置步驟環(huán)境變量設(shè)置:在系統(tǒng)環(huán)境變量中添加Altair的安裝路徑。許可服務(wù)器設(shè)置:在Altair的許可管理器中設(shè)置許可服務(wù)器的地址和端口。檢查配置:運(yùn)行OptiStruct自帶的檢查工具,驗(yàn)證安裝和配置是否正確。2.3.3示例:使用OptiStruct進(jìn)行拓?fù)鋬?yōu)化#示例代碼:使用OptiStruct進(jìn)行拓?fù)鋬?yōu)化的簡(jiǎn)化流程

#注意:實(shí)際操作中,OptiStruct使用的是HypermeshGUI,此處僅以偽代碼形式展示流程

#1.創(chuàng)建模型

model=OptiStructModel()

model.add_part('airfoil')#添加翼型部分

#2.定義材料

material=Material('aluminum')

material.set_properties(density=2700,youngs_modulus=70e9,poisson_ratio=0.33)

model.add_material(material)

#3.設(shè)置約束和載荷

model.add_constraint('max_stress',100e6)

model.add_load('pressure',1e5)

#4.進(jìn)行拓?fù)鋬?yōu)化

optimization=TopologyOptimization(model)

optimization.set_objective('min_volume')

optimization.set_volume_fraction(0.5)

optimization.run()

#5.分析結(jié)果

optimized_model=optimization.get_result()

optimized_model.plot()#顯示優(yōu)化后的模型注釋:上述代碼示例為簡(jiǎn)化版,實(shí)際使用OptiStruct時(shí),需要通過(guò)HypermeshGUI進(jìn)行模型創(chuàng)建、材料定義、約束和載荷設(shè)置,以及拓?fù)鋬?yōu)化的運(yùn)行。優(yōu)化結(jié)果通常以圖形形式展示,幫助設(shè)計(jì)者理解材料分布的變化。2.3.4數(shù)據(jù)樣例在進(jìn)行拓?fù)鋬?yōu)化時(shí),需要準(zhǔn)備的典型數(shù)據(jù)樣例包括:幾何模型:如翼型的CAD模型。材料屬性:如密度、彈性模量、泊松比等。約束條件:如最大應(yīng)力、位移限制等。載荷條件:如壓力、力等。例如,一個(gè)翼型的幾何模型可能是一個(gè)包含多個(gè)節(jié)點(diǎn)和元素的網(wǎng)格,每個(gè)節(jié)點(diǎn)和元素都有其坐標(biāo)和屬性。材料屬性則可能是一個(gè)表格,列出了不同材料的物理特性。約束和載荷條件通常在模型上特定的位置定義,如翼型的根部可能有固定約束,翼型的上表面可能有氣動(dòng)壓力載荷。通過(guò)這些數(shù)據(jù),拓?fù)鋬?yōu)化軟件可以計(jì)算出在給定載荷和約束條件下,材料分布的最優(yōu)解,從而設(shè)計(jì)出更高效、更輕量的空氣動(dòng)力學(xué)部件。3空氣動(dòng)力學(xué)優(yōu)化技術(shù):拓?fù)鋬?yōu)化軟件操作實(shí)踐3.1軟件界面與基本操作3.1.1軟件界面解析在拓?fù)鋬?yōu)化軟件中,界面設(shè)計(jì)通常直觀且功能豐富,旨在幫助用戶高效地進(jìn)行空氣動(dòng)力學(xué)優(yōu)化設(shè)計(jì)。界面主要分為幾個(gè)關(guān)鍵區(qū)域:菜單欄:提供文件、編輯、視圖、分析、優(yōu)化等主菜單,便于訪問(wèn)軟件的各個(gè)功能。工具欄:包含常用工具的快捷按鈕,如網(wǎng)格生成、幾何編輯、求解器設(shè)置等。項(xiàng)目樹(shù):顯示當(dāng)前項(xiàng)目的結(jié)構(gòu),包括幾何模型、材料屬性、邊界條件、優(yōu)化目標(biāo)等,便于管理和調(diào)整項(xiàng)目?jī)?nèi)容。圖形窗口:展示3D模型,支持旋轉(zhuǎn)、縮放和平移,以便詳細(xì)查看模型的各個(gè)部分。屬性面板:顯示和編輯所選對(duì)象的詳細(xì)屬性,如網(wǎng)格參數(shù)、材料屬性、優(yōu)化參數(shù)等。狀態(tài)欄:顯示軟件狀態(tài)、操作提示和當(dāng)前選擇的信息。3.1.2項(xiàng)目創(chuàng)建與設(shè)置創(chuàng)建拓?fù)鋬?yōu)化項(xiàng)目的第一步是定義項(xiàng)目的基本設(shè)置,包括幾何模型、材料屬性和邊界條件。以下是一個(gè)使用Python腳本創(chuàng)建項(xiàng)目的示例:#導(dǎo)入必要的庫(kù)

importtopology_optimization_softwareastos

#創(chuàng)建項(xiàng)目

project=tos.Project()

#定義幾何模型

geometry=tos.Geometry()

geometry.add_box([0,0,0],[10,10,10])#創(chuàng)建一個(gè)10x10x10的立方體

#設(shè)置材料屬性

material=tos.Material()

material.set_density(1.225)#空氣密度

material.set_youngs_modulus(2.1e5)#楊氏模量

#應(yīng)用材料屬性到幾何模型

geometry.set_material(material)

#設(shè)置邊界條件

boundary=tos.Boundary()

boundary.set_inlet_velocity([100,0,0])#設(shè)置入口速度為100m/s

boundary.set_outlet_pressure(0)#設(shè)置出口壓力為0

#將邊界條件應(yīng)用到項(xiàng)目

project.set_boundary_conditions(boundary)

#保存項(xiàng)目

project.save("airfoil_optimization.tos")3.1.3網(wǎng)格生成與編輯網(wǎng)格生成是拓?fù)鋬?yōu)化中的關(guān)鍵步驟,它將連續(xù)的幾何模型離散化為有限的單元,以便進(jìn)行數(shù)值計(jì)算。網(wǎng)格的質(zhì)量直接影響優(yōu)化結(jié)果的準(zhǔn)確性。以下是一個(gè)使用Python腳本生成和編輯網(wǎng)格的示例:#生成網(wǎng)格

mesh=tos.Mesh()

mesh.generate(geometry,element_size=0.5)#生成網(wǎng)格,單元大小為0.5

#編輯網(wǎng)格

mesh.refine([0,0,0],[10,10,0],factor=2)#在指定區(qū)域細(xì)化網(wǎng)格,細(xì)化因子為2

mesh.coarsen([0,0,5],[10,10,10],factor=2)#在指定區(qū)域粗化網(wǎng)格,粗化因子為2

#預(yù)覽網(wǎng)格

mesh.preview()

#將網(wǎng)格應(yīng)用到項(xiàng)目

project.set_mesh(mesh)通過(guò)以上步驟,用戶可以創(chuàng)建和設(shè)置一個(gè)基本的拓?fù)鋬?yōu)化項(xiàng)目,并生成和編輯網(wǎng)格,為后續(xù)的空氣動(dòng)力學(xué)分析和優(yōu)化奠定基礎(chǔ)。在實(shí)際操作中,用戶應(yīng)根據(jù)具體需求調(diào)整幾何模型、材料屬性、邊界條件和網(wǎng)格參數(shù),以獲得最佳的優(yōu)化結(jié)果。4拓?fù)鋬?yōu)化參數(shù)設(shè)置4.1優(yōu)化目標(biāo)設(shè)定在拓?fù)鋬?yōu)化中,優(yōu)化目標(biāo)的設(shè)定是關(guān)鍵步驟,它定義了優(yōu)化過(guò)程追求的性能指標(biāo)。例如,在空氣動(dòng)力學(xué)優(yōu)化中,我們可能希望最小化阻力、最大化升力或優(yōu)化升阻比。目標(biāo)函數(shù)通?;诹黧w動(dòng)力學(xué)模擬的結(jié)果,如CFD(計(jì)算流體動(dòng)力學(xué))分析。4.1.1示例:最小化阻力假設(shè)我們使用一個(gè)拓?fù)鋬?yōu)化軟件來(lái)設(shè)計(jì)一個(gè)飛機(jī)機(jī)翼的前緣。我們的目標(biāo)是最小化飛行時(shí)的空氣阻力。在軟件中,我們?cè)O(shè)定目標(biāo)函數(shù)為阻力系數(shù)的最小化。#設(shè)置優(yōu)化目標(biāo)為最小化阻力

optimization_target='minimize_drag'

#假設(shè)阻力系數(shù)由CFD分析得出

defcalculate_drag_coefficient(airfoil_shape):

#這里是CFD分析的代碼,輸入是機(jī)翼形狀,輸出是阻力系數(shù)

#由于CFD分析復(fù)雜,此處僅示例性描述

drag_coefficient=0.02#示例值

returndrag_coefficient

#優(yōu)化過(guò)程調(diào)用目標(biāo)函數(shù)

optimized_shape=optimize(airfoil_shape,optimization_target)4.2約束條件與設(shè)計(jì)變量約束條件限制了設(shè)計(jì)空間,確保優(yōu)化結(jié)果滿足特定的物理或工程要求。例如,最大應(yīng)力、最小體積或特定的幾何約束。設(shè)計(jì)變量是優(yōu)化過(guò)程中可以改變的參數(shù),它們直接決定了優(yōu)化結(jié)果的形狀或結(jié)構(gòu)。4.2.1示例:設(shè)計(jì)變量與體積約束在設(shè)計(jì)一個(gè)飛機(jī)的進(jìn)氣口時(shí),我們可能設(shè)定設(shè)計(jì)變量為進(jìn)氣口的幾何形狀參數(shù),同時(shí)設(shè)定一個(gè)體積約束,確保進(jìn)氣口的體積不超過(guò)飛機(jī)前部的一定比例。#設(shè)計(jì)變量:進(jìn)氣口的寬度、高度和深度

design_variables=['width','height','depth']

#體積約束:進(jìn)氣口體積不超過(guò)前部體積的20%

volume_constraint=0.20

#檢查設(shè)計(jì)是否滿足體積約束

defcheck_volume_constraint(air_intake_volume,max_volume):

ifair_intake_volume/max_volume<=volume_constraint:

returnTrue

else:

returnFalse

#優(yōu)化過(guò)程考慮約束條件

optimized_design=optimize(design_variables,constraints=[check_volume_constraint])4.3材料屬性與網(wǎng)格密度材料屬性如密度、彈性模量和泊松比,對(duì)優(yōu)化結(jié)果有直接影響。網(wǎng)格密度則決定了模型的精度和計(jì)算的復(fù)雜度。在拓?fù)鋬?yōu)化中,合理選擇材料屬性和網(wǎng)格密度是確保優(yōu)化結(jié)果既準(zhǔn)確又高效的關(guān)鍵。4.3.1示例:材料屬性與網(wǎng)格密度設(shè)置假設(shè)我們正在優(yōu)化一個(gè)飛機(jī)的尾翼結(jié)構(gòu),需要設(shè)定材料屬性和網(wǎng)格密度。#材料屬性:鋁合金

material_properties={

'density':2700,#千克/立方米

'elastic_modulus':70e9,#帕斯卡

'poisson_ratio':0.33

}

#網(wǎng)格密度:中等精度

mesh_density='medium'

#創(chuàng)建材料模型

material_model=create_material_model(material_properties)

#設(shè)置網(wǎng)格密度

set_mesh_density(mesh_density)

#優(yōu)化過(guò)程使用材料模型和網(wǎng)格密度

optimized_tail=optimize(material_model,mesh_density)4.3.2詳細(xì)解釋在上述示例中,我們首先定義了材料屬性,使用鋁合金作為示例材料,其密度、彈性模量和泊松比分別設(shè)定為2700千克/立方米、70e9帕斯卡和0.33。這些屬性將用于計(jì)算結(jié)構(gòu)的應(yīng)力和變形,從而影響優(yōu)化結(jié)果。接著,我們?cè)O(shè)定了網(wǎng)格密度為中等精度。網(wǎng)格密度的選擇影響了計(jì)算的精度和速度。更細(xì)的網(wǎng)格可以提供更準(zhǔn)確的分析結(jié)果,但會(huì)增加計(jì)算時(shí)間和資源需求。因此,選擇合適的網(wǎng)格密度是平衡精度和效率的重要步驟。最后,我們通過(guò)調(diào)用optimize函數(shù),使用設(shè)定的材料模型和網(wǎng)格密度進(jìn)行優(yōu)化。這個(gè)函數(shù)將根據(jù)設(shè)定的優(yōu)化目標(biāo)、約束條件、設(shè)計(jì)變量以及材料屬性和網(wǎng)格密度,計(jì)算出最優(yōu)的尾翼結(jié)構(gòu)設(shè)計(jì)。通過(guò)這些步驟,我們可以確保拓?fù)鋬?yōu)化過(guò)程既考慮了工程實(shí)際的約束條件,又充分利用了材料的性能,同時(shí)保持了計(jì)算的效率。這為設(shè)計(jì)高性能、輕量化和結(jié)構(gòu)優(yōu)化的飛機(jī)部件提供了強(qiáng)大的工具。5空氣動(dòng)力學(xué)分析與優(yōu)化5.1流體動(dòng)力學(xué)分析流程流體動(dòng)力學(xué)分析是空氣動(dòng)力學(xué)優(yōu)化的基礎(chǔ),其流程通常包括以下幾個(gè)關(guān)鍵步驟:幾何建模:首先,需要?jiǎng)?chuàng)建或?qū)腼w機(jī)、汽車或其他物體的三維模型。這一步驟確保了分析的準(zhǔn)確性,模型應(yīng)盡可能地反映真實(shí)物體的幾何特征。網(wǎng)格劃分:對(duì)模型進(jìn)行網(wǎng)格劃分,將連續(xù)的流體域離散化為一系列小的、可計(jì)算的單元。網(wǎng)格的質(zhì)量直接影響計(jì)算的精度和效率。邊界條件設(shè)置:定義流體的入口、出口、壁面等邊界條件。例如,入口可以設(shè)置為特定的流速或壓力,出口則通常設(shè)置為自由出口或壓力出口。求解設(shè)置:選擇合適的求解器和物理模型,如雷諾平均納維-斯托克斯方程(RANS)或大渦模擬(LES)。同時(shí),設(shè)置求解參數(shù),如時(shí)間步長(zhǎng)、迭代次數(shù)等。求解與監(jiān)控:運(yùn)行求解器,監(jiān)控計(jì)算過(guò)程中的收斂性。這通常涉及到觀察殘差圖,確保計(jì)算穩(wěn)定且收斂。結(jié)果后處理:分析計(jì)算結(jié)果,包括壓力分布、流線、渦量等。這些結(jié)果有助于理解流體流動(dòng)的特性,并為優(yōu)化提供依據(jù)。5.1.1示例:使用OpenFOAM進(jìn)行流體動(dòng)力學(xué)分析#1.準(zhǔn)備幾何模型和網(wǎng)格

#假設(shè)我們已經(jīng)有一個(gè)名為"airplane"的幾何模型,并使用snappyHexMesh生成網(wǎng)格

snappyHexMesh-caseairplane

#2.設(shè)置邊界條件

#在0文件夾中編輯邊界條件文件,例如velocity和pressure

echo"dimensions[01-10000];">0/velocity

echo"internalFielduniform(000);">>0/velocity

echo"boundaryField">>0/velocity

echo"{">>0/velocity

echo"inlet">>0/velocity

echo"{">>0/velocity

echo"typefixedValue;">>0/velocity

echo"valueuniform(1000);">>0/velocity

echo"}">>0/velocity

echo"outlet">>0/velocity

echo"{">>0/velocity

echo"typezeroGradient;">>0/velocity

echo"}">>0/velocity

echo"walls">>0/velocity

echo"{">>0/velocity

echo"typenoSlip;">>0/velocity

echo"}">>0/velocity

echo"}">>0/velocity

#3.求解設(shè)置

#編輯system文件夾中的控制字典,設(shè)置求解參數(shù)

echo"applicationsimpleFoam;">system/controlDict

echo"startFromstartTime;">>system/controlDict

echo"startTime0;">>system/controlDict

echo"stopAtendTime;">>system/controlDict

echo"endTime1000;">>system/controlDict

echo"deltaT0.01;">>system/controlDict

echo"writeControltimeStep;">>system/controlDict

echo"writeInterval100;">>system/controlDict

echo"purgeWrite0;">>system/controlDict

echo"writeFormatascii;">>system/controlDict

echo"writePrecision6;">>system/controlDict

echo"writeCompressionoff;">>system/controlDict

echo"timeFormatgeneral;">>system/controlDict

echo"timePrecision6;">>system/controlDict

echo"runTimeModifiabletrue;">>system/controlDict

#4.運(yùn)行求解器

simpleFoam-caseairplane

#5.結(jié)果后處理

#使用paraFoam進(jìn)行結(jié)果可視化

paraFoam-caseairplane5.2優(yōu)化迭代過(guò)程優(yōu)化迭代過(guò)程是空氣動(dòng)力學(xué)優(yōu)化的核心,它通過(guò)反復(fù)調(diào)整設(shè)計(jì)參數(shù)并評(píng)估性能,以達(dá)到優(yōu)化目標(biāo)。這一過(guò)程通常包括:初始化設(shè)計(jì):選擇一個(gè)初始設(shè)計(jì)作為優(yōu)化的起點(diǎn)。性能評(píng)估:使用流體動(dòng)力學(xué)分析工具評(píng)估當(dāng)前設(shè)計(jì)的性能。設(shè)計(jì)更新:根據(jù)評(píng)估結(jié)果,使用優(yōu)化算法(如遺傳算法、梯度下降法等)調(diào)整設(shè)計(jì)參數(shù)。收斂檢查:檢查優(yōu)化是否達(dá)到預(yù)定的收斂標(biāo)準(zhǔn),如果沒(méi)有,則返回步驟2繼續(xù)迭代。5.2.1示例:使用遺傳算法進(jìn)行空氣動(dòng)力學(xué)優(yōu)化#導(dǎo)入必要的庫(kù)

importnumpyasnp

fromdeapimportbase,creator,tools,algorithms

fromairfoil_analysisimportevaluate_airfoil#假設(shè)這是一個(gè)評(píng)估翼型性能的函數(shù)

#定義優(yōu)化問(wèn)題

creator.create("FitnessMax",base.Fitness,weights=(1.0,))

creator.create("Individual",list,fitness=creator.FitnessMax)

#初始化參數(shù)

toolbox=base.Toolbox()

toolbox.register("attr_float",np.random.uniform,-1,1)

toolbox.register("individual",tools.initRepeat,creator.Individual,toolbox.attr_float,n=10)

toolbox.register("population",tools.initRepeat,list,toolbox.individual)

#注冊(cè)評(píng)估函數(shù)

toolbox.register("evaluate",evaluate_airfoil)

#注冊(cè)遺傳操作

toolbox.register("mate",tools.cxTwoPoint)

toolbox.register("mutate",tools.mutGaussian,mu=0,sigma=0.2,indpb=0.1)

toolbox.register("select",tools.selTournament,tournsize=3)

#設(shè)置遺傳算法參數(shù)

POP_SIZE=100

CXPB=0.7

MUTPB=0.2

NGEN=50

#運(yùn)行遺傳算法

pop=toolbox.population(n=POP_SIZE)

hof=tools.HallOfFame(1)

stats=tools.Statistics(lambdaind:ind.fitness.values)

stats.register("avg",np.mean)

stats.register("std",np.std)

stats.register("min",np.min)

stats.register("max",np.max)

pop,logbook=algorithms.eaSimple(pop,toolbox,cxpb=CXPB,mutpb=MUTPB,ngen=NGEN,

stats=stats,halloffame=hof,verbose=True)

#輸出最優(yōu)解

best_individual=hof[0]

print("最優(yōu)設(shè)計(jì)參數(shù):",best_individual)5.3結(jié)果可視化與分析結(jié)果可視化與分析是理解優(yōu)化效果的關(guān)鍵步驟,它幫助工程師直觀地看到設(shè)計(jì)改進(jìn)的區(qū)域,以及流體動(dòng)力學(xué)性能的變化??梢暬菏褂脤I(yè)軟件(如ParaView、Tecplot等)將流體動(dòng)力學(xué)分析的結(jié)果可視化,包括壓力分布、流線、渦量等。數(shù)據(jù)分析:通過(guò)比較不同設(shè)計(jì)的性能指標(biāo)(如升力、阻力、升阻比等),評(píng)估優(yōu)化的效果。5.3.1示例:使用ParaView進(jìn)行結(jié)果可視化在ParaView中,可以通過(guò)以下步驟進(jìn)行結(jié)果可視化:加載數(shù)據(jù):選擇“文件”>“打開(kāi)”,然后選擇你的流體動(dòng)力學(xué)分析結(jié)果文件。選擇顯示類型:在“管道瀏覽器”中,選擇你的數(shù)據(jù)集,然后在“屬性”面板中選擇“顯示”選項(xiàng)卡,選擇合適的顯示類型,如“流線”或“等值面”。調(diào)整參數(shù):在“屬性”面板中,調(diào)整顯示參數(shù),如流線的起點(diǎn)、等值面的值等。保存圖像:選擇“文件”>“保存圖像”,保存你的可視化結(jié)果。通過(guò)這些步驟,工程師可以直觀地看到流體流動(dòng)的模式,以及設(shè)計(jì)優(yōu)化對(duì)流體動(dòng)力學(xué)性能的影響。6案例研究與實(shí)踐6.1飛機(jī)翼型優(yōu)化案例在飛機(jī)設(shè)計(jì)中,翼型的優(yōu)化對(duì)于提高飛行效率和性能至關(guān)重要。拓?fù)鋬?yōu)化技術(shù)可以用于探索最佳的材料分布,以減少阻力、增加升力或改善結(jié)構(gòu)強(qiáng)度。以下是一個(gè)使用拓?fù)鋬?yōu)化軟件進(jìn)行飛機(jī)翼型優(yōu)化的案例研究。6.1.1背景假設(shè)我們正在設(shè)計(jì)一款新型的商用飛機(jī),目標(biāo)是減少燃料消耗,提高經(jīng)濟(jì)性。通過(guò)拓?fù)鋬?yōu)化,我們可以確定翼型中材料的最佳分布,以實(shí)現(xiàn)這一目標(biāo)。6.1.2操作步驟定義設(shè)計(jì)空間:首先,確定翼型的初始形狀和尺寸,以及可以進(jìn)行優(yōu)化的區(qū)域。設(shè)定目標(biāo)和約束:定義優(yōu)化的目標(biāo)(如最小化阻力或最大化升力)和任何設(shè)計(jì)約束(如材料強(qiáng)度、重量限制)。運(yùn)行拓?fù)鋬?yōu)化:使用拓?fù)鋬?yōu)化軟件,如OptiStruct,進(jìn)行計(jì)算。軟件將根據(jù)設(shè)定的目標(biāo)和約束,迭代調(diào)整設(shè)計(jì)空間內(nèi)的材料分布。分析結(jié)果:優(yōu)化完成后,分析軟件輸出的拓?fù)鋬?yōu)化結(jié)果,評(píng)估其對(duì)飛行性能的影響。后處理與驗(yàn)證:將優(yōu)化后的翼型設(shè)計(jì)導(dǎo)入CFD(計(jì)算流體動(dòng)力學(xué))軟件中,如ANSYSFluent,進(jìn)行流體動(dòng)力學(xué)模擬,驗(yàn)證優(yōu)化效果。6.1.3示例假設(shè)我們使用Python的TopologyOptimizationToolbox進(jìn)行翼型的初步拓?fù)鋬?yōu)化。以下是一個(gè)簡(jiǎn)化的代碼示例:#導(dǎo)入必要的庫(kù)

importnumpyasnp

fromtopoptimportTopOpt

#定義設(shè)計(jì)空間

design_space=np.ones((100,100))#創(chuàng)建一個(gè)100x100的網(wǎng)格作為設(shè)計(jì)空間

#設(shè)定目標(biāo)和約束

objective='minimizedrag'#目標(biāo)是最小化阻力

constraints={'maxdisplacement':0.01,'minmaterialfraction':0.3}#約束條件

#創(chuàng)建拓?fù)鋬?yōu)化對(duì)象

optimizer=TopOpt(design_space,objective,constraints)

#運(yùn)行優(yōu)化

optimized_design=optimizer.run()

#輸出優(yōu)化結(jié)果

print("OptimizedDesign:")

print(optimized_design)6.1.4解釋在上述代碼中,我們首先定義了一個(gè)100x100的網(wǎng)格作為設(shè)計(jì)空間,然后設(shè)定了優(yōu)化的目標(biāo)是最小化阻力,同時(shí)限制了最大位移和最小材料比例。通過(guò)TopOpt類,我們創(chuàng)建了優(yōu)化器,并運(yùn)行了優(yōu)化過(guò)程。最后,我們輸出了優(yōu)化后的設(shè)計(jì)。6.2發(fā)動(dòng)機(jī)進(jìn)氣道設(shè)計(jì)發(fā)動(dòng)機(jī)進(jìn)氣道的設(shè)計(jì)直接影響到發(fā)動(dòng)機(jī)的性能和效率。拓?fù)鋬?yōu)化可以幫助設(shè)計(jì)出更高效的進(jìn)氣道形狀,減少空氣流動(dòng)的損失,提高發(fā)動(dòng)機(jī)的燃燒效率。6.2.1操作步驟定義設(shè)計(jì)空間:確定進(jìn)氣道的初始幾何形狀和尺寸。設(shè)定目標(biāo)和約束:定義優(yōu)化目標(biāo),如最小化空氣流動(dòng)損失,同時(shí)考慮設(shè)計(jì)約束,如空間限制和材料強(qiáng)度。運(yùn)行拓?fù)鋬?yōu)化:使用拓?fù)鋬?yōu)化軟件進(jìn)行計(jì)算,調(diào)整進(jìn)氣道內(nèi)部的材料分布。分析結(jié)果:評(píng)估優(yōu)化后的進(jìn)氣道設(shè)計(jì)對(duì)發(fā)動(dòng)機(jī)性能的影響。后處理與驗(yàn)證:將優(yōu)化設(shè)計(jì)導(dǎo)入CFD軟件中,進(jìn)行空氣動(dòng)力學(xué)模擬,驗(yàn)證設(shè)計(jì)的有效性。6.2.2示例使用TopologyOptimizationToolbox進(jìn)行發(fā)動(dòng)機(jī)進(jìn)氣道的拓?fù)鋬?yōu)化,代碼示例如下:#導(dǎo)入必要的庫(kù)

importnumpyasnp

fromtopoptimportTopOpt

#定義設(shè)計(jì)空間

design_space=np.ones((50,50,50))#創(chuàng)建一個(gè)50x50x50的三維網(wǎng)格作為設(shè)計(jì)空間

#設(shè)定目標(biāo)和約束

objective='minimizeflowloss'#目標(biāo)是最小化空氣流動(dòng)損失

constraints={'maxpressuredrop':0.05,'minmaterialfraction':0.4}#約束條件

#創(chuàng)建拓?fù)鋬?yōu)化對(duì)象

optimizer=TopOpt(design_space,objective,constraints)

#運(yùn)行優(yōu)化

optimized_design=optimizer.run()

#輸出優(yōu)化結(jié)果

print("OptimizedDesign:")

print(optimized_design)6.2.3解釋在這個(gè)示例中,我們定義了一個(gè)50x50x50的三維網(wǎng)格作為進(jìn)氣道的設(shè)計(jì)空間,設(shè)定了優(yōu)化目標(biāo)是最小化空氣流動(dòng)損失,并限制了最大壓力降和最小材料比例。通過(guò)運(yùn)行優(yōu)化器,我們得到了優(yōu)化后的進(jìn)氣道設(shè)計(jì)。6.3優(yōu)化結(jié)果的工程應(yīng)用拓?fù)鋬?yōu)化的結(jié)果需要經(jīng)過(guò)工程驗(yàn)證和實(shí)際應(yīng)用的測(cè)試。這包括將優(yōu)化設(shè)計(jì)轉(zhuǎn)化為實(shí)際的制造圖紙,進(jìn)行物理原型的制造和測(cè)試,以及在實(shí)際飛行器或發(fā)動(dòng)機(jī)中進(jìn)行性能評(píng)估。6.3.1轉(zhuǎn)化為制造圖紙優(yōu)化結(jié)果通常以數(shù)字模型的形式存在,需要使用CAD(計(jì)算機(jī)輔助設(shè)計(jì))軟件將其轉(zhuǎn)化為詳細(xì)的制造圖紙。例如,可以使用SiemensNX或AutodeskInventor進(jìn)行這一轉(zhuǎn)化。6.3.2制造與測(cè)試制造出物理原型后,需要在風(fēng)洞中進(jìn)行空氣動(dòng)力學(xué)測(cè)試,以驗(yàn)證優(yōu)化設(shè)計(jì)的性能。這包括測(cè)量阻力、升力、壓力分布等關(guān)鍵參數(shù)。6.3.3性能評(píng)估在實(shí)際飛行器或發(fā)動(dòng)機(jī)中測(cè)試優(yōu)化設(shè)計(jì),評(píng)估其對(duì)整體性能的影響。這可能涉及到飛行測(cè)試或發(fā)動(dòng)機(jī)性能測(cè)試,以確保設(shè)計(jì)滿足預(yù)期的性能目標(biāo)。6.3.4示例將拓?fù)鋬?yōu)化結(jié)果導(dǎo)入SiemensNX進(jìn)行制造圖紙的轉(zhuǎn)化,具體步驟可能包括:導(dǎo)入優(yōu)化結(jié)果:使用NX的導(dǎo)入功能,將優(yōu)化后的數(shù)字模型導(dǎo)入軟件。細(xì)化設(shè)計(jì):在NX中,對(duì)模型進(jìn)行細(xì)化,添加必要的制造細(xì)節(jié),如倒角、孔等。生成圖紙:使用NX的圖紙功能,生成詳細(xì)的制造圖紙,包括尺寸標(biāo)注、材料信息等。由于涉及具體軟件操作,此處不提供代碼示例,但上述步驟是將拓?fù)鋬?yōu)化結(jié)果轉(zhuǎn)化為實(shí)際工程應(yīng)用的關(guān)鍵過(guò)程。以上案例研究和實(shí)踐展示了拓?fù)鋬?yōu)化技術(shù)在飛機(jī)翼型和發(fā)動(dòng)機(jī)進(jìn)氣道設(shè)計(jì)中的應(yīng)用,以及如何將優(yōu)化結(jié)果轉(zhuǎn)化為實(shí)際的工程設(shè)計(jì)。通過(guò)這些步驟,可以顯著提高飛行器和發(fā)動(dòng)機(jī)的性能,減少燃料消耗,提高經(jīng)濟(jì)性和環(huán)境可持續(xù)性。7拓?fù)鋬?yōu)化進(jìn)階技巧7.1多目標(biāo)優(yōu)化策略在拓?fù)鋬?yōu)化中,多目標(biāo)優(yōu)化策略是處理多個(gè)相互沖突的目標(biāo)函數(shù)的關(guān)鍵方法。例如,在空氣動(dòng)力學(xué)設(shè)計(jì)中,可能同時(shí)追求最小阻力和最大升力,這兩個(gè)目標(biāo)往往難以同時(shí)達(dá)到最優(yōu)。多目標(biāo)優(yōu)化通過(guò)找到一組解,即Pareto最優(yōu)解,來(lái)平衡這些目標(biāo)。7.1.1示例:使用NSGA-II算法進(jìn)行多目標(biāo)拓?fù)鋬?yōu)化假設(shè)我們使用一個(gè)名為OptiStruct的拓?fù)鋬?yōu)化軟件,該軟件支持NSGA-II算法。下面是一個(gè)簡(jiǎn)化的代碼示例,展示如何在OptiStruct中設(shè)置和運(yùn)行多目標(biāo)優(yōu)化:#導(dǎo)入OptiStruct庫(kù)

importoptistructasop

#創(chuàng)建拓?fù)鋬?yōu)化問(wèn)題實(shí)例

topo_opt=op.TopologyOptimization()

#設(shè)置多目標(biāo)函數(shù)

topo_opt.set_multi_objective(['minimize_drag','maximize_lift'])

#設(shè)置優(yōu)化參數(shù)

topo_opt.set_parameters(volume_fraction=0.5,min_density=0.01,max_density=1.0)

#設(shè)置NSGA-II算法參數(shù)

topo_opt.set_algorithm('NSGA-II',population_size=100,generations=100)

#運(yùn)行優(yōu)化

results=topo_opt.run()

#輸出Pareto最優(yōu)解

pareto_solutions=results['pareto_solutions']

print(pareto_solutions)在上述代碼中,我們首先創(chuàng)建了一個(gè)拓?fù)鋬?yōu)化問(wèn)題的實(shí)例,然后設(shè)置了兩個(gè)目標(biāo)函數(shù):最小化阻力和最大化升力。接下來(lái),我們定義了優(yōu)化參數(shù),如體積分?jǐn)?shù)、最小密度和最大密度。最后,我們選擇了NSGA-II算法,并設(shè)置了算法參數(shù),如種群大小和迭代次數(shù)。運(yùn)行優(yōu)化后,我們從結(jié)果中提取了Pareto最優(yōu)解。7.2優(yōu)化算法選擇與調(diào)整選擇正確的優(yōu)化算法對(duì)于獲得高質(zhì)量的拓?fù)鋬?yōu)化結(jié)果至關(guān)重要。不同的算法在收斂速度、全局搜索能力和處理復(fù)雜約束方面可能有所不同。調(diào)整算法參數(shù),如迭代次數(shù)、種群大小和交叉率,可以進(jìn)一步提高優(yōu)化性能。7.2.1示例:比較不同優(yōu)化算法的性能假設(shè)我們使用OptiStruct軟件,下面的代碼示例展示了如何比較幾種不同優(yōu)化算法(如NSGA-II、MOEA/D和SPEA2)的性能:#導(dǎo)入OptiStruct庫(kù)

importoptistructasop

#創(chuàng)建拓?fù)鋬?yōu)化問(wèn)題實(shí)例

topo_opt=op.TopologyOptimization()

#設(shè)置目標(biāo)函數(shù)

topo_opt.set_objective('minimize_drag')

#設(shè)置優(yōu)化參數(shù)

topo_opt.set_parameters(volume_fraction=0.5,min_density=0.01,max_density=1.0)

#定義算法和參數(shù)

algorithms={

'NSGA-II':{'population_size':100,'generations':100},

'MOEA/D':{'population_size':100,'generations':100},

'SPEA2':{'population_size':100,'generations':100}

}

#運(yùn)行并比較算法

performance={}

foralgo,paramsinalgorithms.items():

topo_opt.set_algorithm(algo,**params)

results=topo_opt.run()

performance[algo]=results['convergence_rate']

#輸出性能比較

print(performance)在這個(gè)例子中,我們首先定義了目標(biāo)函數(shù)為最小化阻力,然后設(shè)置了優(yōu)化參數(shù)。接下來(lái),我們定義了一個(gè)字典,其中包含了三種不同的優(yōu)化算法及其參數(shù)。我們運(yùn)行每種算法,并記錄其收斂速度,最后輸出了性能比較結(jié)果。7.3后處理與優(yōu)化結(jié)果驗(yàn)證后處理是拓?fù)鋬?yōu)化中不可或缺的步驟,它幫助我們可視化優(yōu)化結(jié)果,檢查結(jié)構(gòu)的可行性,并驗(yàn)證優(yōu)化目標(biāo)是否達(dá)到。這通常包括生成優(yōu)化后的幾何模型、進(jìn)行有限元分析和比較優(yōu)化前后的性能指標(biāo)。7.3.1示例:使用Python進(jìn)行拓?fù)鋬?yōu)化結(jié)果的后處理假設(shè)我們使用Python和matplotlib庫(kù)來(lái)可視化拓?fù)鋬?yōu)化結(jié)果,并使用FEniCS庫(kù)進(jìn)行有限元分析。下面是一個(gè)簡(jiǎn)化的代碼示例:#導(dǎo)入庫(kù)

importmatplotlib.pyplotasplt

fromfenicsimport*

#讀取優(yōu)化結(jié)果

optimized_design=read_optimized_design('optimized_design.stl')

#可視化優(yōu)化結(jié)果

plt.imshow(optimized_design,cmap='gray')

plt.title('拓?fù)鋬?yōu)化結(jié)果')

plt.axis('off')

plt.show()

#創(chuàng)建有限元模型

mesh=Mesh('optimized_design.xml')

V=FunctionSpace(mesh,'P',1)

u=TrialFunction(V)

v=TestFunction(V)

f=Constant((0,-10))

a=dot(grad(u),grad(v))*dx

L=dot(f,v)*dx

u=Function(V)

solve(a==L,u)

#驗(yàn)證優(yōu)化結(jié)果

original_drag=calculate_drag('original_design.stl')

optimized_drag=calculate_drag('optimized_design.stl')

drag_reduction=(original_drag-optimized_drag)/original_drag*100

print(f'阻力減少百分比:{drag_reduction:.2f}%')在上述代碼中,我們首先讀取了優(yōu)化后的設(shè)計(jì)結(jié)果,并使用matplotlib庫(kù)將其可視化。然后,我們使用FEniCS庫(kù)創(chuàng)建了一個(gè)有限元模型,基于優(yōu)化后的幾何進(jìn)行分析。最后,我們比較了原始設(shè)計(jì)和優(yōu)化后設(shè)計(jì)的阻力,計(jì)算了阻力減少的百分比,從而驗(yàn)證了優(yōu)化結(jié)果的有效性。通過(guò)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論