ANSYS 优化设计-实例_第1页
ANSYS 优化设计-实例_第2页
ANSYS 优化设计-实例_第3页
ANSYS 优化设计-实例_第4页
ANSYS 优化设计-实例_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ANSYS 优化设计1.认识ANSYS优化模块1.1 什么时候我需要它的帮忙?什么是ANSYS优化?我想说明一个例子要比我在这里对你絮叨半天容易理解的多。注意过普通的水杯吗?底面圆圆的,上面加盖的哪一种。仔细观察一下,你会发现比较老式的此类水杯有一个共同特点:底面直径水杯高度。图1 水杯的简化模型为什么是这样呢?因为只有满足这个条件,才能在原料耗费最少的情况下使杯子的容积最大。在材料一定的情况下,如果水杯的底面积大,其高度必然就要小;如果高度变大了,底面积又大不了,如何调和这两者之间的矛盾?其实这恰恰就反应了一个完整的优化过程。在这里,一个水杯的材料是一定的,所要优化的变量就是杯子底面的半径r

2、和杯子的高度h,在ANSYS的优化模块里面把这些需要优化的变量叫做设计变量(DV);优化的目标是要使整个水杯的容积最大,这个目标在ANSYS的优化过程里叫目标函数(OBJ);再者,对设计变量的优化有一定的限制条件,比如说整个杯子的材料不变,这些限制条件在ANSYS的优化模块中用状态变量(SV)来控制。下面我们就来看看ANSYS中怎么通过设定DV、SV、OBJ,利用优化模块求解以上问题。首先参数化的建立一个分析文件(假设叫volu.inp),水杯初始半径为R1,高度为H1(DV),由于水杯材料直接喝水杯的表面积有关系,这里假设水杯表面积不能大于100,这样就有S2RH2R2 SOLUTION H

3、AS CONVERGED TO POSSIBLE OPTIMUM (BASED ON OBJ TOLERANCE BETWEEN BEST AND FINAL DESIGNS)可见是因为导致循环提前结束。(注:细观上图,Fj=157.20,Fb=151.62,默认公差似乎此处应该是1.5720,似乎还没有满足这个收敛准则,为什么ANSYS却认为满足了,这里就不得而知,可能ANSYS内部对默认公差里面的当前值另有解释;如果你强行规定目标函数公差为1,可以看到循环多进行一步后也会提前结束,不过这时候当前解151.65和最优解151.62倒的确相差小于公差1了)。此时,大家一定可以理解例子中为什么要

4、对公差的限制如此严谨了(0.01)。因为程序的取样,迭代都有随机性,只有这样,才能保证程序不会因为上述公差太大的缘故自动停止而得不到最优解。有兴趣的同学还可以改变一下其他参数的公差大小,甚至用opsubp命令改变默认循环的次数等,这些实验将会更加加深你对优化过程、收敛准则的理解,便于提高你都负责优化问题的驾驭能力。拓扑优化实例/clear/TITLE, A 2-D, multiple compliance minimization problem subjected to volume constraint/PREP7 BLC4,0,0,3,1! Create solid model (3 x

5、 1 rectangle)ET,1,82 ! Use 2-D solids. Type 1 is optimizedET,2,82 ! Type 2 is not optimized.MP,EX,1,118E9 ! Linear isotropic, materialMP,NUXY,1,0.3ESIZE,0.05! Use a relatively fine mesh densityTYPE,1AMESH,ALL ! Free, rectangular-element meshingNSEL,S,LOC,X,0,0.4! Select region not to be optimizedESL

6、NTYPE,2EMODIF,ALL ! Define type 2 elementsALLSEL NSEL,S,LOC,X,0D,ALL,ALL,0 ! Fixed at X = 0NSEL,S,LOC,X,3D,ALL,ALL,0 ! Fixed at X = 3FORCE = 1000! Value for applied loadNSEL,S,LOC,X,1NSEL,R,LOC,Y,1F,ALL,FY,FORCE! Define first load caseALLSELLSWRITE,1 ! Write first load caseFDEL,ALLNSEL,S,LOC,X,2NSEL

7、,R,LOC,Y,0F,ALL,FY,-FORCE ! Define second load caseALLSELLSWRITE,2 ! Write second load caseFDEL,ALLTOCOMP,MCOMP,MULTIPLE,2 ! Define multiple compliance function ! MCOMP for topological optimizationTOVAR,MCOMP,OBJ! Define MCOMP as topological objective TOVAR,VOLUME,CON,50 ! Define VOLUME as topologic

8、al constraint; 50 percent volume reductionTOTYPE,OC! Specify solution approach TODEF! Initialize topological opt. /SHOW,topo,grph! Put graphics in a file (remove if interactive)/DSCALE,OFF/CONTOUR,2TOLOOP,12,1! Perform no more than 12 iterationsFINISHTOGRAPH,OBJ! Graph final objective (compliance) h

9、istoryTOGRAPH,CON! Graph final constraint (volume) historyTOPRINT,OBJ! Print final objective (compliance) historyTOPRINT,CON! Print final constraint (volume) history*GET,TITER,TOPO,ITER! Get iteration counter*GET,OCMP,TOPO,TITER-1,TOHO ! Get final compliance value第七章 APDL综合实例7.1 问题说明本章在阐明APDL技术时本想也采

10、取实例的方式,把APDL的各个细节都用一个个详细的实例说清楚,无奈APDL细节内容比较繁复,而且不和UIDL那样各成体系,APDL的应用很多情况下都是和UIDL、UPF结合在一起应用的,它甚至渗透到基础分析中的各个环节中,可以说也是ANSYS的脚本基础。考虑到大家都不会有兴趣来聆听枯燥的数组构建法,宏函数的参元特性等罗嗦的APDL语法,这里我们打算用一个比较大的综合实例来想大家描述一部分APDL的功能,从这里你将能看到我们能用APDL干些什么。还记得UIDL实例解析二中的一个例子吧,这里我们有必要重温一下:(a)图1(b)Hr如图1(a)所示,一带孔薄板,长4000mm,宽2000mm,顶部中

11、心部分1800mm处承受42MP的压力,左右两个长圆孔中心分别距四周1000mm,长圆孔的具体形式如图1(b)所示,上下分别为半圆,中部用直线衔接。这里假设长圆长轴与水平方向夹角为。为了使得孔边缘应力集中最小,这里拟调整的大小(-/2,/2),以便在固定的H情况下达到长圆孔周围应力集中最小。在UIDL实例二的部分我们只是在GUI界面下实现了它的参数化建模,这部分工作在本章的综合实例中仍然有效,下面我们将一步步完全实现这一问题。7.2 解题思想本问题是在用户给定H的情况下求得角的最优解,使得孔边最大拉应力最小(这是因为材料抗拉性能比较弱)。这里我们的想法是:把取每一个角度时候得到的孔边最大拉应力

12、都求出,比较它们,得到孔边拉应力最小情况下对应的取值。现在的问题是,我们只能够对每一离散的值求取其孔边最大拉应力,让在0360之间连续取值不仅是无法做到的,而且在工程中也没有必要,这里我们拟每隔一定角度计算一下孔边最大拉应力,最终在这些有限的角度中求取出最佳的值。因此我们还需要用户自定义求解的精度参数,即我们每隔多少角度来计算一次(决定了结果精确到什么程度)。比方说我们定义每隔5计算一次的话,整个优化过程需要进行180/5=36次求解运算。7.3 构建步骤下面说明一下在构建过程中的一些全局参数:My_H:用户输入的H参数值My_sita: 每次计算对应的参数值My_dsita:每两次计算之间间

13、隔的角度值(用户输入的参数)My_N:总共需要分析计算的次数。My_N=180/My_dsitaMy_sita0:初始值,这里统一定义为0My_MinS1:最优化位置处的最大拉应力值。(计算完以后才是)My_smin中最大值。My_Msita: 最优化位置处对应的值。My_smin:每次分析计算得到对应特定角时的孔边最大拉应力。(一般都是孔边产生应力集中,所以也是整个板料内部的最大拉应力处)即_s1中最大值。_s1数组:对应特定时求解得到各个节点上的最大拉应力值。1. 首先我们重新构建一比较完善的参数化建模脚本,取名为Modaling.mac,该脚本针对固定的My_H和My_sita将构建整个

14、几何模型,加好载荷和约束,具体细节请参看附录。2. 构建脚本mysolve.mac:My_sita0=0My_N=180/My_dsita*do,I,0,My_N-1parsav,all,myparfinish/clear,startparres,new,myparMy_sita=My_sita0+My_dsita*IModaling !宏程序/solusolve/post1ar11=ndinqr(0,14)_s1=*dim,_s1,ar11*vget,_s1(1),node,1,s,1*vscfun,My_smin,max,_s1(1)*if,I,eq,0,then My_MinS1=My_

15、smin My_Msita=My_sita*ELSE*IF,My_smin,lt,My_MinS1,then My_MinS1=My_smin My_Msita=My_sita*ENDIF*ENDIFparsav,all,mypar*enddo下面是几点说明:程序整个框架是先根据用户输入的参数定制好一些解题环境,比方说求出需要重复计算的次数My_N,然后用APDL的*do循环结构繁复执行My_N次,每次求得对应角度的孔边最大拉应力值,不断积累出这些对应角度孔边最大拉应力值的最小结果。完成了My_N次结果后,最优结果My_MinS1和对应的角度My_Msita也就求出来了。不同次分析计算过程前必

16、须对ANSYS环境中的现有模型清零,用到/clear命令,但该命令会使用户参数同时清零,这里用到parsav和parres技术,在每次清零过程前先把当前工作区的参数保存起来,清模型结束后再调入工作区,这样就实现了只清模型、不清参数的效果。解题结束后,我们先用ndinqr(0,14)这一UPF命令求取模型中的节点总数。然后用*vget命令把所有节点上的最大拉应力都保存到_s1数组中,最后用*vscfun函数得到_s1数组中的最大值。注意每次求解完提取数据时都要重新定义_s1数组的大小(因为每次划分单元后总节点数不同),这时候每次ANSYS都回出现让你确认是否把已经存在的_s1数组结构改变的对话框

17、,这将导致自动化求解中断,这里我们采用的一个技巧是每次重新定义_s1数组前先清掉_s1数组(用_s1=命令行)。这样救避免了Ansys的询问。同样解决/clear命令的Ansys询问方法就是写全/clear命令:/clear,start。注意这里我们是必须要用start参数的,它表面我们在新建模型时读入start55.ans文件,我们必须在工作目录中构建一个我们自己的start55.ans文件,里面添加上PI参数的说明(因为modaling.mac宏文件中将利用这一参数,如果系统环境中没有这一参数的说明,将产生建模错误)。解决完一次运算,保存完数据后记得用parsav函数保存环境参数。3. 完

18、善GUI参数化界面这里我们要比上次UIDL实例二中多增加一个参数My_dsita,为此我们修改UIFUNC2.GRN函数中DoProject函数::N Fnc_DoProject:S0, 0, 0:T Command:A Optimize my Project :D Please Input Custom Information:C )*Set,My_H,150:C )*Set,My_dsita,90:H Hlp_0_ContentsInp_NoApplyCmd_)*Cset,1,2 Fld_0Typ_LabPrm_Custom the Geographic Information Fld_2

19、Prm_ Please Input the Dsita for Analysis(190)Typ_INTDef_*PAR(My_dsita) Fld_3Prm_Please Input the H for Analysis(100200)Typ_INTDef_*PAR(My_H)Cmd_)/GoCmd_)*GET,My_H,CPAR,2Cmd_)*GET,My_dsita,CPAR,1Cmd_)mysolve:E END:!这里可以看到和UIDL篇中的实例相比,多加了参数My_dsita的用户化输入。最后的命令修改成直接用文件名调用(这是因为我们把文件名后缀改为了.mac,它标志着标准的宏文件

20、)。最后的对话框显示如下:用户定制好分析精度和H值后,点击OK就开始了完整的分析过程。4. 求解结果最后求解完毕后得到了一些最优化结果:用*status命令可以看到所有参数结果(这里我用每隔5度进行一次分析求解):My_Msita=40,用该最优化建模图形为:这里由于实常数对应力集中的效应没有影响,我们就不再给出具体计算结果来了。有效的仅是在同样的载荷条件下不同角度的孔上最大拉应力的情况。7.4 几点说明APDL中的参数化建模、优化涉及是十分复杂有效的,这里我们只是给出了一个小小的例子,用来举一反三。套用同样的方法和机制,我们可以完成更加复杂的问题。这里我们仅仅用到了APDL功能中的一小部分,

21、我们完全可以想象一下UIDLAPDLUPF能够完成什么样复杂程度的功能几乎是任何功能!7.5 结束语这里结合APDL,UIDL和UPF讲述了一个比较综合的例子,在以后描述了UPF功能后,大家将更加为UPF功能的强大而神往不已。附录:modaling.mac:!This is a script whichcan create the modal with a parameter sita.!Parameter SettingPI=3.14159sita=My_sita/180*PI !角度维弧度r=0.2H=My_H/1000!Customize the Environmentkeyw,pr_s

22、truc,1/prep7et,1,shell63r,1,0.12,0.12,0.12,0.12uimp,1,ex,dens,nuxy,2.1e9,1.2,0.375!Modeling!Createplatek,1,0,0k,2,2,0k,3,2,2k,4,0,2k,5,0.9,2k,6,1,1l,1,2l,2,3l,3,5l,5,4l,4,1al,1,2,3,4,5!Createhole!Createmy coordinatek,7,1+H*cos(sita),1+H*sin(sita)k,10,1+H*cos(sita),1+H*sin(sita),100k,8,1+r*cos(sita+P

23、I/2),1+r*sin(sita+PI/2)cskp,11,0,6,7,8csys,11!CreateHolek,9,H,rl,7,9l,7,6adrag,6,7arotat,6,7,10,-90arsys,y,2,3,1arsym,x,2,5,1aadd,2,3,4,5,6,7,8,9asba,1,10csys,0arsym,x,2, , , ,0,0nummer,all, , ,lowaadd,1,2/auto,1gplot!Meshing the planesmrt,6amesh,all!Add DOFDK,2,UX,0, ,UYDK,14,UX,0,UY!Add PressureSF

24、L,4,PRES,42SFL,11,PRES,42我修改的程序:L7_YouHua.mac计算结果为 45度-FINISH /CLEAR, NOSTART/FILNAME,shell_rigid_beam,1/TITLE,The Shell_Beam Rigid_Link Model SystemMy_H=150My_sita0=0My_dsita=5My_N=180/My_dsita*do,I,0,My_N-1! 步长默认为1parsav,all,myparfinish/clear,startparres,new,myparMy_sita=My_sita0+My_dsita*IModalin

25、g !宏程序/solusolve/post1!* ar11=ndinqr(0,14)!* UPF命令求取模型中的节点总数*GET,ar11,NODE,0,COUNT ! 获得节点总数目 _s1=*dim,_s1,ar11*vget,_s1(1),node,1,s,1*vscfun,My_smin,max,_s1(1)*if,I,eq,0,then My_MinS1=My_smin My_Msita=My_sita*ELSE*IF,My_smin,lt,My_MinS1,then My_MinS1=My_smin My_Msita=My_sita*ENDIF*ENDIF !* parsav,al

26、l,mypar !该行多余*enddo注:ansys有多行响应命令:MULTIPRO,START,4 *cset,1,3,a,beam width,20*cset,4,6,b,height,10*cset,61,62,The MYOFSET macro offsets the, selected nodes along each*cset,63,64,of the three axes. Fill in the , fields accordingly.MULTIPRO,ENDModaling.mac!This is a script whichcan create the modal wit

27、h a parameter sita.!Parameter SettingPI=3.14159sita=My_sita/180*PI !角度维弧度r=0.2H=My_H/1000!Customize the Environmentkeyw,pr_struc,1/prep7et,1,shell63r,1,0.12,0.12,0.12,0.12uimp,1,ex,dens,nuxy,2.1e9,1.2,0.375!Modeling!Createplatek,1,0,0k,2,2,0k,3,2,2k,4,0,2k,5,0.9,2k,6,1,1l,1,2l,2,3l,3,5l,5,4l,4,1al,1

28、,2,3,4,5!Createhole!Createmy coordinatek,7,1+H*cos(sita),1+H*sin(sita)k,10,1+H*cos(sita),1+H*sin(sita),100k,8,1+r*cos(sita+PI/2),1+r*sin(sita+PI/2)cskp,11,0,6,7,8csys,11!CreateHolek,9,H,rl,7,9l,7,6adrag,6,7arotat,6,7,10,-90arsys,y,2,3,1arsym,x,2,5,1aadd,2,3,4,5,6,7,8,9asba,1,10csys,0arsym,x,2, , , ,

29、0,0nummer,all, , ,lowaadd,1,2/auto,1gplot!Meshing the planesmrt,6amesh,all!Add DOFDK,2,UX,0, ,UYDK,14,UX,0,UY!Add PressureSFL,4,PRES,42SFL,11,PRES,42基于APDL语言的优化设计及其应用本文介绍了基于APDL(ANSYS Parametric Design Language)语言参数化优化设计的概念和实现过程,以实际中应用最为广泛的梁结构为原型的简化梁为例,利用APDL参数化设计语言和宏命令对其尺寸进行优化,实现了参数化建模、施加参数化载荷和求解的过

30、程。结果表明:在用户交互给定的条件下,程序能根据给定的不同条件得出相应的优化结果,便于用户从给定的条件与得出的结果中找到一组合适的优化数据,从而实现一般梁在尺寸方面的优化。1ANSYS二次开发概述ANSYS是世界上著名的大型通用有限元分析软件,它具有强大的求解器和前、后处理功能,能为我们解决复杂、庞大的工程实际问题。但是作为通用有限元软件,ANSYS在具体的专业深度上有所欠缺,对用户的力学、有限元知识以及工程经验有较高的要求,因而,该软件的学习周期较长、掌握起来的难度较大。对于各个专业的工程师来说,驾御ANSYS并不是一件容易的事情,因为ANSYS不是针对具体行业的专业软件,其灵活的设计分析和

31、大量的选项使初级用户不知如何着手。工程师们更渴望使用像ANSYS那样具有强大前后处理且操作简单的专业软件。因此对这种通用性强的软件进行二次开发就显的非常必要了。1.1 ANSYS二次开发的途径ANSYS 程序是一个功能强大、通用性好的有限元分析程序,同时它还具有良好的开放性,用户可以根据自身的需要在标准ANSYS 版本上进行功能扩充和系统集成,生成具有行业分析特点和符合用户需要的用户版本的ANSYS 程序。这是对其进行二次开发的基础。开发功能包括由三个部分:参数化程序设计语言(APDL)、用户界面设计语言(UIDL)、用户程序特性(UPFs)。1.1.1 参数化设计语言APDLANSYS参数化

32、设计语言APDL用建立智能分析的手段为用户提供了自动循环的功能,也就是说,程序的输入可设定为根据指定的函数、变量以及选出的分析标准决定输入的形式。APDL允许复杂的数据输入,使用户实际上对任何设计或分析有控制权。例如尺寸、材料、载荷、约束位置和网格密度等。APDL扩展了传统有限元分析之外的能力,并扩展了更高级运算,包括灵敏度研究、零件库参数化建模,设计修改和设计优化。APDL是一种为ANSYS二次开发专门设计开发的解释性文本语言,其内容包括参数、数组参数、表达式和函数、分支和循环、重复功能和缩写以及宏和用户程序等。1.1.2 用户界面工具 UIDL用户图形界面设计语言UIDL就是编写或改造AN

33、SYS的图形界面的专用语言,主要完成以下三种图形界面的设计:1.主菜单系统及菜单项2.对话框和拾取对话框3.帮助系统用户界面语言UIDL,用户可以在扩充ANSYS功能的同时建立起对应的图形驱动界面。实际上,ANSYS软件程序结构分内核与界面两部分,二者之间通过功能检索号联系,只要检索号正确,界面是何种形式无关紧要,因此,界面的变化不会对程序内核造成任何改变。根据该原理,用户可以实现对ANSYS界面的汉化,当然,也可以以汉化界面驱动用户自己的程序。1.1.3 用户可编程特征UPFs用户可编程特性(UPFs)向用户提供丰富的FORTRAN77用户子程序和函数。用户利用它们从开发程序源代码的级别上扩

34、充ANSYS功能。使用这些子程序和函数,编写用户功能的源程序,在与ANSYS版本要求匹配的FORTRAN或C+编译器上重新编译和连接,生成用户版本的ANSYS程序。另外,还提供了外部命令,允许用户创建ANSYS可以利用的共享库。1.2 ANSYS二次开发工具比较APDL所能实现的功能通俗的说来应该是次于UPFs而强与UIDL,但实际上是由于三者具体侧重点不同造成的:UIDL主要控制GUI界面的各类二次开发方法,涉及的分析部分就要少一些,APDL可以称其为和分析部分频繁打交道的一组小型工具,功能强大,但不和UIDL一样能够非常具体的针对某一两方面的二次开发处理,通常情况下的他融合在分析的角角落落

35、中。UPFs是三者之间的最强者,他能完成最复杂的二次开发工作,比如说构建新单元,复杂数据库交互,外围命令定制等,但UPFs在很多情况下也借助了APDL命令来完全实现其功能。同样我们也能在UIDL中嵌入APDL命令,来构建比较复杂的GUI二次开发工作。2.基于APDL有限元优化技术的一般步骤基于APDL的参数化设计的方法采用ANSYS的批处理方法进行优化的,其主要的优化设计过程通常包括以下几个步骤,这些步骤根据用户所选用优化方法的不同(批处理GUI方式)而有细微的差别。2.1 生成分析文件生成分析文件与通常的ANSYS分析并没有很大的不同,唯一的区别就是:优化的分析文件必须是参数化的。也就是说,

36、必须定义一些参量,至少要把所有的设计变量,状态变量和目标变量定义为参量形式。而且,用于优化的参量只能是标量数值参量,而不是数组或者字符参量。2.2 建立优化过程中的参数在GUI方式下,优化过程中的参数一般在ANSYS数据库中用分析文件来建立,这样做的好处是初始参数值可以作为一阶方法的起点,然而,对于各种优化过程来说,在数据库中的参数可以在GUI下进行操作,便于定义优化变量。2.3 进入OPT,指定分析文件首次进入优化处理器时,ANSYS数据库中的所有数据会自动作为设计序列1,这些参数值假定是一个设计序列。在GUI方式下,用户必须指定分析文件名,这个文件用于生成优化循环文件Jobname.LOO

37、P,在ANSYS优化处理器中,分析文件名无缺省值,用户必须指定一个分析文件名,否则将出错。并且在分析文件中,/PREP7或/OPT命令必须出现在行的第一个非空字符处。在批处理方式中,分析文件通常是批处理命令流的第一部分,从文件的第一行命令到命令/OPT第一次出现时,其缺省的分析文件名是Jobname.BAT,因此在批处理方式下不需要指定分析文件名。2.4 指定优化变量即要求用户指定哪些是设计变量、哪些是状态变量和目标函数,对于设计变量和状态变量,用户可以指定其最大和最小值,同时每一个变量都有一个公差值,这个公差值可以用户输入,也可以由程序自动选取。用户可以在任何时间简单地通过重新定义参数来改变已经定义过的参数,也可以删除一个优化变量,即该变量将不再作为优化变量使用,但该参数还存在。2.5 选择优化工具或优化方法优化方法是使单个函数在控制条件下达到最小值的传统优化方法。它由零阶法、一阶法和用户自定义方法。但在使用任何一种方法之前,用户必须指定一个目标函数。一般来说,一阶法精度较高,但是耗费机时;零阶方法速度较快,其精度较低,但对大多数工程问题而言,零阶分析方法足够了。2.6 指定优化循环控制方式每一种优化方法和优化工具都有相应的循环控制参数,因此在指定好优化优化方法和优化工具后,用户还要选择与此工具和方法相对应的循环控制参数。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论