下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、ANSYS基于VC+6.0的二次開發(fā)方法ANSYS基于VC+6.0的二次開發(fā)方法ANSYS基于VC+6.0的二次開發(fā)與相互作用分析在ANSYS中的實現(xiàn)1 概述ANSYS是一套功能十分強大的有限元分析軟件,能實現(xiàn)多場及多場耦合分析;是實現(xiàn)前后處理、求解及多場分析統(tǒng)一數(shù)據(jù)庫的一體化大型FEA軟件;支持異種、異構(gòu)平臺的網(wǎng)絡(luò)浮動,在異種、異構(gòu)平臺上用戶界面統(tǒng)一、數(shù)據(jù)文件全部兼容,強大的并行計算功能支持分布式并行及共享內(nèi)存式并行。該軟件具有如下特點:(1) 完備的前處理功能ANSYS不僅提供了強大的實體建模及網(wǎng)格劃分工具,可以方便地構(gòu)造數(shù)學(xué)模型,而且還專門設(shè)有用戶所熟悉的一些大型通用有限元軟件的數(shù)據(jù)接口
2、(如MSCNSSTRAN,ALGOR,ABAQUS等),并允許從這些程序中讀取有限元模型數(shù)據(jù),甚至材料特性和邊界條件,完成ANSYS中的初步建模工作。此外,ANSYS還具有近200種單元類型,這些豐富的單元特性能使用戶方便而準確地構(gòu)建出反映實際結(jié)構(gòu)的仿真計算模型。(2) 強大的求解器ANSYS提供了對各種物理場量的分析,是目前唯一能融結(jié)構(gòu)、熱、電磁、流體、聲學(xué)等為一體的有限元軟件。除了常規(guī)的線性、非線性結(jié)構(gòu)靜力、動力分析外,還可以解決高度非線性結(jié)構(gòu)的動力分析、結(jié)構(gòu)非線性及非線性屈曲分析。提供的多種求解器分別適用于不同的問題及不同的硬件配置。(3) 方便的后處理器ANSYS的后處理分為通用后處理
3、模塊(POST1)和時間歷程后處理模塊(POST26)兩部分。后處理結(jié)果可能包括位移、溫度、應(yīng)力、應(yīng)變、速度以及熱流等,輸出形式可以有圖形顯示和數(shù)據(jù)列表兩種。(4) 多種實用的二次開發(fā)工具ANSYS除了具有較為完善的分析功能外,同時還為用戶進行二次開發(fā)提供了多種實用工具。如宏(Marco)、參數(shù)設(shè)計語言(APDL)、用戶界面設(shè)計語言(UIDL)及用戶編程特性(UPFs),其中APDL(ANSYS Parametric Design Language)是一種非常類似于Fortran77的參數(shù)化設(shè)計解釋性語言,其核心內(nèi)容為宏、參數(shù)、循環(huán)命令和條件語句,可以通過建立參數(shù)化模型來自動完成一些通用性強的
4、任務(wù);UIDL(User Interface Design Language)是ANSYS為用戶提供專門進行程序界面設(shè)計的語言,允許用戶改變ANSYS的圖形用戶界面(GUI)中的一些組項,提供了一種允許用戶靈活使用、按個人喜好來組織設(shè)計ANSYS圖形用戶界面的強有力工具;UPFs(User Programmable Features)提供了一套Fortran77函數(shù)和例程以擴展或修改程序的功能,該項技術(shù)充分顯示了ANSYS的開放體系,用戶不僅可以采用它將ANSYS程序剪裁成符合自己所需的任何組織形式(如可以定義一種新的材料,一個新的單元或者給出一種新的屈服準則),而且還可以編寫自己的優(yōu)化算法,
5、通過將整個ANSYS作為一個子程序調(diào)用的方式實現(xiàn)。鑒于上述特點,近幾年來,ANSYS軟件在國內(nèi)外工程建設(shè)和科學(xué)研究中得到了廣泛的應(yīng)用。但這些應(yīng)用大多局限于直接運用ANSYS軟件進行實際工程分析,對利用ANSYS提供的二次開發(fā)工具進行有限元軟件設(shè)計卻很少涉及。本文首次利用ANSYS軟件的二次開發(fā)功能,以VC+6.0為工具,運用APDL語言,對ANSYS 進行二次開發(fā),編制框筒結(jié)構(gòu)樁筏基礎(chǔ)土相互作用體系與地震反應(yīng)分析程序。2 程序設(shè)計目標針對某一實際工程問題,ANSYS所提供的APDL語言可對ANSYS軟件進行封裝。APDL語言即ANSYS軟件提供的參數(shù)化設(shè)計語言,它的全稱是ANSYS Param
6、etric Design Language。使用APDL語言可以更加有效地進行分析計算,可以輕松地進行自動化工作(循環(huán)、分支、宏等結(jié)構(gòu)),而且,它是一種高效的參數(shù)化建模手段。使用APDL語言進行封裝的系統(tǒng)可以只要求操作人員輸入前處理參數(shù),然后自動運行ANSYS進行求解。但完全用APDL編寫的宏還存在弱點。比如用APDL語言較難控制程序的進程,雖然它提供了循環(huán)語句和條件判斷語句,但總的來說還是難以用來編寫結(jié)構(gòu)清晰的程序。它雖然提供了參數(shù)的界面輸入,但功能還不是太強,交互性不夠流暢。針對這種情況,本文用VC+6.0開發(fā)框筒結(jié)構(gòu)樁筏基礎(chǔ)土相互作用有限元分析程序(簡稱LWS程序)。本程序設(shè)計目標是利用
7、VC+6.0對ANSYS進行封裝。用VC+6.0對ANSYS模擬框筒結(jié)構(gòu)樁筏基礎(chǔ)土相互作用進行二次開發(fā),用戶只需輸入諸如地震波、計算時間步長、阻尼比等物理性能參數(shù)等,系統(tǒng)就能自動調(diào)用ANSYS計算程序,自動進行網(wǎng)格劃分、地震動加載以及自動求解。該系統(tǒng)由于前臺開發(fā)友好、方便、易用的人機交互界面,對復(fù)雜的、難于理解和掌握的ANSYS命令流進行后臺封裝,因此,程序設(shè)計可讓即使從未認真學(xué)習(xí)過ANSYS軟件的工程設(shè)計人員也能很好地借助本系統(tǒng)進行結(jié)構(gòu)抗震性能有限元分析,具有較強的處理實際問題能力。用戶輸入計算參數(shù),即可調(diào)用后臺的ANSYS命令進行計算,ANSYS把計算結(jié)果返回給用戶,進行后處理。程序設(shè)計的
8、主要原則和功能如下:(1)方便原則,即程序模塊應(yīng)具有良好的用戶界面和易用性。程序前臺設(shè)計采用Windows提供的標準圖形用戶界面(GUI),用戶無須接受專門訓(xùn)練即可使用。同時,程序應(yīng)具有良好的容錯和糾錯能力,避免用戶操作不當造成損失。(2)程序系統(tǒng)能夠提供用戶以下功能:允許用戶可以根據(jù)實際計算工況,輸入特定的計算參數(shù),包括地震波選擇、計算時間步長、地震波調(diào)幅與否等。用戶在輸入各種參數(shù)以后、進行計算之前可以對輸入的數(shù)據(jù)進行修改、添加和刪除操作,以保證輸入正確的參數(shù)。用戶通過界面調(diào)用后臺的ANSYS命令流進行計算,能夠得到最后的計算結(jié)果文件,供用戶進行后處理和結(jié)果分析。用戶可以添加新的功能或新的二
9、次開發(fā)以實現(xiàn)程序升級。(3)程序應(yīng)具有良好的可移植性,不依賴于特定的硬件設(shè)備,只要能安裝ANSYS和VC6.0的硬件環(huán)境都能使用本系統(tǒng),保證程序使用的廣泛性。(4)程序代碼應(yīng)具有開放性和可重用性。這樣,在進一步的設(shè)計中,能保證設(shè)計者可以方便地對代碼進行修改擴充;同時,提供一定的設(shè)計接口,新的設(shè)計者可以根據(jù)接口,無須對程序進行大幅度的修改,就可以進行新的開發(fā),以適應(yīng)新的特殊要求。程序的開發(fā)平臺是Microsoft VC+6.0、ANSYS6.1,基于WindowsXP編程。程序?qū)崿F(xiàn)是利用微軟提供的Windows編程接口MFC和ANSYS公司的ANSYS/Multiphysics產(chǎn)品,采用面向?qū)ο?/p>
10、的程序設(shè)計方法。3程序的主要模塊和設(shè)計如圖3-2所示,程序的主要模塊有:用戶界面模塊、ANSYS計算模塊、VC調(diào)用接口模塊和VC后處理模塊,分別論述如下:3.1 ANSYS模塊ANSYS為了滿足用戶的特殊需求,建立了開放的體系結(jié)構(gòu),提供了二次開發(fā)接口APDL、UIDL和UPFs(User Programming Features,用戶編程特性)等。其中,ANSYS接口允許用戶將自己的VC代碼連到ANSYS中去,或?qū)NSYS作為子程序調(diào)用,從而使ANSYS具備特殊的功能。本文的ANSYS模塊是使用APDL語言進行二次開發(fā)的。在上面的二次開發(fā)中用到了參數(shù)化設(shè)計方法。參數(shù)是APDL的變量(它們更象
11、FORTRAN變量,而不像FORTRAN參數(shù)),不必明確聲明參數(shù)類型,所有數(shù)值變量都以雙精度數(shù)存儲。被使用但未聲明的參數(shù)都被賦予接近0的“極小值”。在二次開發(fā)中使用參數(shù)化設(shè)計方法,增強了程序的易讀性和可移植性。用戶無須了解程序的具體結(jié)構(gòu)只需改變參數(shù)值就可自動調(diào)用ANSYS模塊。3.2 VC調(diào)用模塊VC調(diào)用模塊在該系統(tǒng)中起著接受用戶界面的輸入、創(chuàng)建進程調(diào)用ANSYS模塊進行計算的重要作用。有兩項工作是在實現(xiàn)在VC程序中調(diào)用ANSYS必須做的,一是要使接口程序能夠修改ANSYSB的命令流文件路徑及文件名稱,這可通過注冊表編程實現(xiàn);二是要能在接口程序中運行ANSYSB應(yīng)用程序,這涉及到創(chuàng)建進程的編程
12、,下面分別介紹它們的具體實現(xiàn)。1. 注冊表編程在Windows(98/NT/2000/XP)系統(tǒng)上運行ANSYS安裝程序后,便在Windows系統(tǒng)的注冊表里記錄了一些信息,如初始工作路徑,文件名等。利用VC平臺調(diào)用ANSYS計算模塊的程序必須指定ANSYS軟件的運行目錄以及用APDL語言開發(fā)的ANSYS模塊程序路徑,這樣,ANSYS軟件的批處理程序才能從給定的路徑下讀取命令流文件。在接口程序中修改這些注冊表信息,可以使用Windows提供的注冊表編輯API(Application Programming Interface)函數(shù)30,31,具體實現(xiàn)如下:HKEY hSubKey; / 定義子鍵
13、LONG lRet;char RegPath200=SoftWareANSYS, Inc.ANSYSANSYS 6.10;lRet=RegOpenKeyEx(HKEY_CURRENT_USER,RegPath,0,KEY_ALL_ACCESS,&hSubKey); / 打開子鍵if(lRet!=ERROR_SUCCESS)return;lRet=RegSetValueEx(hSubKey,Extension,0,REG_SZ,(LPBYTE)txt,3); /設(shè)置ANSYS批處理程序讀取的文件擴展名if(lRet!=ERROR_SUCCESS)return;lRet=RegSetValueEx
14、(hSubKey,Jobname,0,REG_SZ,(LPBYTE)ZHY);/指定ANSYS模塊文件名if(lRet!=ERROR_SUCCESS)return;lRet=RegSetValueEx(hSubKey,WorkingDirectory,0,REG_SZ,(LPBYTE)E:LWSWorkspace ,16);if(lRet!=ERROR_SUCCESS)return; / 鍵值出錯返回RegCloseKey(hSubKey); / 關(guān)閉子鍵通過以上的設(shè)置后運行ANSYS批處理程序,界面變成如圖3-3所示。從圖中可看出ANSYS模塊工作路徑E:LWSWorkspace、初始文件名
15、ZHY、ANSYS程序文件名ZHY.txt文件、計算結(jié)果輸出文件名ZHY.out都已經(jīng)自動出現(xiàn)在ANSYS批處理程序的輸入框,往下ANSYS就可以自動從ZHY.txt讀取命令流進行計算并將結(jié)果輸出到ZHY.out文件中。若想改ANSYS模塊路徑或文件名只需對上面程序稍加修改即可。2. 多進程編程本文在VC平臺上對ANSYS進行封裝,希望前臺處理系統(tǒng)和用戶的交互,而后臺進行ANSYS的計算。這就要求系統(tǒng)具有并發(fā)性,為此,引入多進程編程機制。進程是一個正在運行程序的實例,它具有動態(tài)性、并發(fā)性、獨立性、異步性和結(jié)構(gòu)性等特點。系統(tǒng)中的進程動態(tài)產(chǎn)生與消亡,多個進程并發(fā)運行,分別執(zhí)行各自對應(yīng)的程序段,為各
16、自的目標而工作。一個程序可以包含多個進程。圖3-3 ANSYS批處理運行界面在VC6.0中可以利用CreateProcess函數(shù)來創(chuàng)建一個進程去執(zhí)行其他程序,而且可以設(shè)置該進程的優(yōu)先級。CreateProcess函數(shù)的原型是:BOOL CreateProcess(LPCTSTR lpAppliciatonNameLPTSTR lpCommandLineLPSECURITY_ATTRIBUTES lpProcessAttributesLPSECURITY_ATTRIBUTES lpThreadAttributesBOOL bInheritHandlesDWORD dwCreationFlagsL
17、PVOID lpEnvironmentLPCTSTR lpCurrentDirectoryLPSTARTUPINFO lpStartupInfoLPPROCESS_INFORMATION lpProcessInformation);當系統(tǒng)調(diào)用CreateProcess時,會創(chuàng)建一個進程內(nèi)核對象,其初始使用計數(shù)是1。該進程內(nèi)核對象不是進程本身,而是操作系統(tǒng)管理進程時使用的一個較小的數(shù)據(jù)結(jié)構(gòu)。然后,系統(tǒng)為新進程創(chuàng)建一個虛擬地址空間,并將可執(zhí)行文件或任何必要的DLL文件的代碼和數(shù)據(jù)加載到該進程的地址空間中。接著,系統(tǒng)為新進程的主線程創(chuàng)建一個線程內(nèi)核對象(其使用計數(shù)為1)。與進程內(nèi)核對象一樣,線程內(nèi)核
18、對象也是操作系統(tǒng)用來管理線程的小型數(shù)據(jù)結(jié)構(gòu)。通過執(zhí)行C/C+運行期啟動代碼,該主線程便開始運行,它最終調(diào)用WinMain、wWinMain、main或wmain函數(shù)。如果系統(tǒng)成功創(chuàng)建了新進程和主線程,CreateProcess便返回True。PszApplicationName和pszCommandLine參數(shù)分別用于設(shè)定新進程將要使用的可執(zhí)行文件的名字和傳遞給新進程的命令行字符串。PszApplicationName的參數(shù)可以是NULL,表示系統(tǒng)將使用全路徑來查看可執(zhí)行文件,并且不再搜索這些目錄;如果參數(shù)不是NULL可以將地址傳遞給pszApplicationName參數(shù)中包含可運行的文件的
19、名字字符串。當系統(tǒng)找到了可執(zhí)行文件后,就創(chuàng)建一個新進程,并將可執(zhí)行文件的代碼和數(shù)據(jù)映射到新進程的地址空間中。PsaProcess和psaThread參數(shù)分別設(shè)定進程對象和線程對象需要的安全性??梢詾檫@些參數(shù)傳遞NULL,這種情況下,系統(tǒng)為這些對象賦予默認安全性描述符;也可以指定兩個SECURITY_ATTRIBUTES結(jié)構(gòu),并對它們進行初始化,以便創(chuàng)建自己的安全性權(quán)限,并將它們賦予進程對象和線程對象。將SECRURITY_ATTRIBUTES 結(jié)構(gòu)用于psaProcess和psaThread參數(shù)的另一個原因是,父進程將來生成的任何子進程都可以繼承這兩個對象句柄中的任何一個。本程序除了創(chuàng)鍵調(diào)用A
20、NSYS計算模塊的進程外,無需再創(chuàng)建其它進程,因而,psaProcess和psaThread參數(shù)都為NULL。同理,binheritHandles參數(shù)為FALSE。fdwCreate參數(shù)用于標識標志,以便用于規(guī)定如何來創(chuàng)建新進程,fdwCreate參數(shù)也可以用來設(shè)定優(yōu)先級類,不過對于大多數(shù)應(yīng)用程序來說不應(yīng)該這樣做,因為系統(tǒng)會為新進程賦予一個默認優(yōu)先級。PszCurDir參數(shù)允許父進程設(shè)置子進程的當前驅(qū)動器和目錄。如果本參數(shù)為NULL,則新進程的工作目錄將與生成新進程的應(yīng)用程序的目錄相同;若不為空,則必須指向包含需要的工作驅(qū)動器和工作目錄的以0結(jié)尾的字符串。課題中該參數(shù)選擇為NULL就可以了。P
21、siStartInfo參數(shù)用于指向一個STARTUPINFO結(jié)構(gòu)。當Windows創(chuàng)建新進程時,它將使用該結(jié)構(gòu)的有關(guān)成員。大多數(shù)應(yīng)用程序?qū)⒁笊傻膽?yīng)用程序僅僅使用默認值。至少應(yīng)該將該結(jié)構(gòu)中的所有成員初始化為零,然后將cb(cb為STARTUPINFO結(jié)構(gòu)成員)設(shè)置為該結(jié)構(gòu)的大小。STARTUPINFO結(jié)構(gòu)的其他具體成員參見VC+6.0幫助系統(tǒng)MSDN。PpiProcInfo參數(shù)用于指向你必須指定的PROCESS_INFORMATION結(jié)構(gòu)。CreateProcess在返回之前要對該結(jié)構(gòu)的成員進行初始化。該結(jié)構(gòu)的形式如下面所示:Typedef struct _PROCESS_INFORMATI
22、ONHANDLE hProcess;HANDLE hThread;DWORD dwProcessId;DWORD dwThreadId;PROCESS_INFORMATION;CreateProcess在返回之前打開進程對象和線程對象,并將每個對象的與進程相關(guān)的句柄放入PROCESS_INFORMATION結(jié)構(gòu)的hProcess和hThread成員中。綜上所述,課題創(chuàng)建進程的關(guān)鍵程序如下:STARTUPINFO StartupInfo;PROCESS_INFORMATION ProcessInfo;memset(&StartupInfo,0,sizeof(STARTUPINFO); /分配內(nèi)存
23、StartupInfo.cb=sizeof(STARTUPINFO); / 初始化StartupInfo.dwFlags=STARTF_USESHOWWINDOW;StartupInfo.wShowWindow=SW_SHOWMAXIMIZED;if(!:CreateProcess(NULL,d:ProgramFilesAnsysIncANSYS61binintelAnsysB”,NULL,NULL,FALS E,0,NULL,NULL,&StartupInfo,&ProcessInfo)AfxMessageBox(error!);GetLastError(); / 創(chuàng)建進程3. 進程的終止要
24、終止進程的運行可以使用如下四種方法:主線程的進入點函數(shù)返回;進程中的一個線程調(diào)用ExitProcess函數(shù);另一個進程中的線程調(diào)用TerminateProcess函數(shù);所有進程中的線程自動終止運行(這種情況一般不會發(fā)生)。本文采用第一種方法終止所創(chuàng)建的進程,即當ANSYS計算結(jié)束時通過函數(shù)返回。在WindowsXP系統(tǒng)中,如果ANSYS批處理程序運行完后,窗口標題會顯示“ANSYS已完成”。本文程序開發(fā)便可通過這一特點來終止系統(tǒng)所創(chuàng)建的進程。當ANSYS計算模塊運行完畢后,系統(tǒng)會彈出一個消息框提示ANSYS已計算完畢,可以進行后處理了。3.3.3 用戶界面接口模塊用戶界面模塊主要完成系統(tǒng)和用戶的交互。用戶界面模塊包括計算參數(shù)輸入和程序調(diào)用兩部分。計算參數(shù)輸入部分的主要功能是負責輸入諸如地震波數(shù)據(jù)、是否調(diào)幅、時間步長等。計算輸入是由對話框構(gòu)成。計算參數(shù)輸入對話框界面如下:圖3-4 計算參數(shù)輸入界面程序?qū)Ω鲄?shù)的輸入范圍都進行了設(shè)定,如果用戶輸入的參數(shù)超過了這一設(shè)定,系統(tǒng)就會彈出對話框以提醒用戶輸入錯誤,需要重新輸入。ANSYS程序調(diào)用通過菜單方式進行。該菜單首先不處于激活狀態(tài),而是當三維數(shù)值模擬所需參數(shù)輸入完成后才得到消息激活菜單。這樣設(shè)計的優(yōu)點:能夠提醒用戶輸入
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 包頭鋼鐵職業(yè)技術(shù)學(xué)院《工程優(yōu)化與Matab設(shè)計》2023-2024學(xué)年第一學(xué)期期末試卷
- 蚌埠學(xué)院《英美文學(xué)史》2023-2024學(xué)年第一學(xué)期期末試卷
- 蚌埠經(jīng)濟技術(shù)職業(yè)學(xué)院《生命科學(xué)史與新進展》2023-2024學(xué)年第一學(xué)期期末試卷
- 蚌埠工商學(xué)院《食品工程制圖》2023-2024學(xué)年第一學(xué)期期末試卷
- 白城職業(yè)技術(shù)學(xué)院《小學(xué)數(shù)學(xué)教學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年版:汽車銷售代理合同(代理區(qū)域、銷售指標及傭金計算)
- 2025年口罩安全認證檢測合同3篇
- 鞍山師范學(xué)院《橋梁結(jié)構(gòu)動力學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年綠城物業(yè)綠化維護合同
- 2025年度班組工人勞務(wù)合同簽訂規(guī)范范本3篇
- 《外傷性顱內(nèi)積氣》課件
- 2024-2025學(xué)年人教版八年級上冊地理期末測試卷(一)(含答案)
- 統(tǒng)編版(2024新版)七年級上冊道德與法治第四單元綜合測試卷(含答案)
- 滬教版英語小學(xué)六年級上學(xué)期期末試題與參考答案(2024-2025學(xué)年)
- 北京市海淀區(qū)2023-2024學(xué)年四年級上學(xué)期語文期末試卷
- 南京審計大學(xué)《中級財務(wù)會計》2023-2024學(xué)年第一學(xué)期期末試卷
- 【MOOC】電工電子學(xué)-浙江大學(xué) 中國大學(xué)慕課MOOC答案
- 2024道路設(shè)計計算書
- 人教版八年級上冊數(shù)學(xué)期末考試試題有答案
- 低空經(jīng)濟產(chǎn)業(yè)的市場化運營路徑
- 混凝土企業(yè)安全培訓(xùn)
評論
0/150
提交評論