admin 管理员组文章数量: 887021
2024年2月18日发(作者:java程序设计难吗)
AVL Fire 软件的使用方法
第一章 安装方法
文件为镜像文件,如果计算机已安装虚拟光驱,可用虚拟光驱直接打开。如果没有安装虚拟光驱,也可直接解压到计算机。
1、运行“”文件,自动安装。当提示安装的目录时,修改到想安装的目录。
2、安装完成后,将安装文件目录下的Crack文件夹下的patch文件复制到avlfire安装目录下,双击运行patch文件。
3、双击桌面图标“CFDWM v1.31”运行fire。
第二章 基本操作
1.1 鼠标操作:工作平面内,按住鼠标右键平移网格模型,按住鼠标左键可旋转模型,中键模型放大和缩小。
1.2 用户界面:Fire同多数应用软件相似,fire的界面由工作区、菜单栏、状态栏和应用工具栏组成。界面的左侧为工程树(project),工程树中包括所有创建的网格文件,可以在工程树中加载文件,复制和删除文件等。中间为工作区域,即模型显示区域。界面右侧为应用工具栏,包含了所有针对网格文件进行修改和编辑的命令。
1.3 以intake port为例,介绍fire软件操作流程
Fire也自带pdf格式的用户帮助手册,算例的操作方法,各个应用模块的设计原理等,打开方法:开始→程序→AVL→Fire V8.31→Help Files PDF。
打开源帮助文件Fire_v83_Examples中intake port例子,对软件的基本操作进行讲解。
1.3.1 文件导入
Fire支持“.flm”,“.stl”的网格文件,.stl文件为CAD通用的表皮文件,fire虽然支持三维建模,但是应用较麻烦。所以可在UG,Pro/E等软件中建模,以stl格式导出,再导入到fire中。
方法一,状态工具栏→(import)→AVL/FIRE/v8.31/exam/903_Intake_Port/Start_
Data目录下的IP_surf_→ok,文件显示在工作区内,工程树中也会显示文件名。
方法二,工程树中右键选择meshes→Import→同方法一。
Fire软件计算流体采用的是有限体积控制法。在求解运算前,先要形成体积网格单元。划分网格单元的好坏直接关系到计算的精度和计算能否收敛的问题。需要掌握流体力学的基本知识和对软件的熟练程度。
1.3.2 创建网格
Fire中在进行划分网格前,需要创建两种网格单元。一是表面网格单元(surface),同时也是作为边界条件,二是边界线网格(edge meshes)。Fire里面有cell,face,node三种形式的选择单元。
1.3.2.1创建表面网格
在表面网格上创建名为BC_inlet,BC_outlet,refine三项cell单元,在工作区内右键选择导入的文件→Selections→弹出对话框,在Create下有Type,Name,Action的选择项→在Type中选择Cell→在Name中键入BC_inlet→Action选择empty→选择Create and Modify→弹出Modify对话框→Add by Angle→Angle输入40→Define,鼠标变成黑色箭头,在表面
网格上选择所要定义的表面,选择单元后,该单元就会显示一定的颜色,按Esc键确定选择。
在选择困难时,可通过鼠标的操作对模型进行旋转、平移和放大。
如果cell单元选择错误,按clear重新选择。同样的方法创建BC_outlet,refine,完成后在工程树中Selections目录下会显示刚才所创建的单元。
1.3.2.2创建edge meshes
选择应用工具栏FH→Edge Tools→Auto edge,弹出选项对话框,在工作区内选择表面文件,在Auto Edge下选择Closed Edges,Minimum number of edge patches输入1,Minimal
edge length 输入0.003,Angle输入20,选择Auto Edge,软件自动生成edge mesh文件并在工程树中显示所生成的文件。
生成的edge mesh文件往往不符合要求需要修改,通过勾选工程树中的文件,可以改变模型是否在工作区中显示。在工作区中只显示edge mesh,便于修改edge模型。创建一个名为cut的cell单元,单元中所有需要删除的线条,采用Add by Polygon选择,完成后在
View目录下勾选cut单元,选择Apply,在工作区域内只显示删除的线条,右键选择删除的线条,cut或delete完成删除。
添加线条,显示表面文件(IP_surf_meshes)。Auto edge→选择IP_surf_meshes→Trajectory→Create trajectory by maximum face angle→Angle threshold(degrees)输入80→Select mesh→存在的edge mesh文件→Trajectory。
以上只是fire中的很少部分修改和创建命令,进一步学习可参照fire中其他的例子。
1.3.3检查网格单元
前文提到单元的质量好坏直接关系到计算精度,因此检查单元的好坏是很有必要的。
选择FH→Info→Geo info→选择模型→Geo Infor。
检查没有错误后,保存。选择,弹出对话框,选择保存的路径→输入IP_mesh→ok。在保存目录下会有三个文件,Meshes,Calculation,IP_,生成。所有的网格文件都保存在meshes文件夹下。注意文件保存的是*.fpr格式,再打开文件时,可直接选择IP_,所有的网格文件都被加载。
1.3.4体积网格(volume meshes)单元划分
Fire中提供了自动和半自动的网格生成器,以六面体为主单元的实体模型。本例采用Fire中先进的自动网格划分技术。
选择FH→Hybrid Assistant→Start new meshing→Define surface mesh,可以在工作区内左键选择surface mesh或者在工程树中选择,选择Next→Define edge mesh,可以在工作区内选择一条边或者在工程树中选择,选择Next→Fame advanced hybrid。
在Maximal cellsize 输入0.005,Minimal cellsize 输入0.0003125,fire中默认的单位是米。
在Closure level(单元的精细程度) 选择1,1代表粗糙,2为中等,3是精细。在Number
of boundary layers 输入1,选择Next,弹出Selection for connect edge。
在下拉菜单中选择BC_inlet,按Add添加,在添加的下拉菜单中选择BC_outlet,选择next,弹出refinement窗口。
在下拉框中选择refinement,Size中0.000625,Depth中0.02,勾选Auto refinement,Next弹出Selection for remove cell。本例中没有移除的单元,确保任意选项不被选择,Next弹出OGL objects窗口,保持Ogl objects窗口的默认值,Next弹出Transformations窗口。
Transformations作用是在形成体积网格过程中,保证理想的区域内生成数量少,质量好的单元。详细步骤见帮助文件。
1.3.5网格生成
设置完成后,单击Finish,弹出 FAME-Monitor 窗口,显示体积单元划分过程,当窗口所有项目前的时间漏斗变成对号时,表示单元划分完成。
1.3.5.1导入体积网格单元
完成的体积单元文件存放在存储目录下的Meshes文件夹里,名为*。将其导入,在工作区域内只显示该体积网格文件。
由于在划分网格单元时,在一些区域会形成质量较差的单元,需要将这些单元进行优化,保证计算的准确性。首先检查单元,Info→Checks→在工作区内选择模型,在Check Type栏中勾选Negative Volumes,Negative Normals,Twisted Faces,Skewness和Cell-Edge Angle;这里只是检查单元,对于那些需要优化的单元,要把他们选择(selection)出来,在Sel栏中勾选Twisted Faces, Skewness , Cell-Edge Angle 和Warpage,并在对应的lay栏中输入3,单击Check。
检查完成后,会在#栏中显示检查的数量,同时在工程树IP_surf_smoothautomesh目录下显示。在工作区内显示需要优化的单元,按住ctrl,左键选择CheckTwistFaces, CheckSkewness,
CheckCellEdgeAngles 和CheckCellWarpage单元,右键选择activate。此法适于任何的单元显示。
优化单元,FH→Mesh Tools→Smooth→Volume optimizer→在Iterations输入3→Smooth,完成后在检查单元质量,会发现坏的单元有所减少。
1.3.6 计算
划分完单元后,进行计算。首先要设置边界条件
右键Calculation→New Case(FIRE)在calculation目录生成Case(Fire)的子目录,在Case目录下右击Solver Steering Files或者在Solver GUI,选择Edit SSF,弹出求解设置窗口。双击Case窗口最大化,如需切换窗口时,在菜单工具栏Windows下选择窗口切换。
按照帮助文件Fire_v83_Examples中intake port例子,设置好条件后,保存。
右键Case(Fire),选择Start calculation或者在SG→Start→local CPU→Next→Single
processor→v8.31→Next→不要选择1D Coupling(BOOST,GT-Power,WAVE)→Next→COMPILE
solver-executable AND START calculation→Next→Calculate。
1.3.6.1观察计算进程
为了便于观察计算过程,AVL fire中专门设置检测窗口。工程树中右键2D Log或者在SG中选择,弹出具有四个子窗口的窗口。在窗口的左侧会有两个在logfile中选择的两个单元作为观察单元,子目录下有下列参数:
RESU,RESV,RESW--三个速度分量的残差
RESM--压力的残差
RESK--湍流动能的残差
RESD--湍流耗散的残差
RESH--焓的残差
U,V,W--速度分量
P--pressure
TKIN--
DISP--dissipation
TEMP—temperature
TS--time step
IT--iteration
选择其中任意一个或者几个,然后在右侧的Monitor的下拉列表选择对应单元的对应参数,窗口中出现计算过程的动态曲线。打开任意一个Data窗口,显示有上述参数的数据表。直到计算完毕软件会提示计算完成。
1.3.7 后处理
像其他有限元分析一样,为了便于观察计算结果,有专门的命令显示各种计算结果。计算完成后,选择3D Result,点击鼠标右键,选择Load complete Iterations,选择适当的迭代精度,如,所有的结果目录在3D Result子目录下加载显示。或者选择Load partial
Iteration,单独选择迭代精度和所需要的物理量显示。
通常观察结果是在某一个截面上,选择Case(Fire)目录下Cuts,鼠标右键在Create的下拉列表中选择观察的截面或者创建一个必要的截面。完成后会在Cuts目录下,显示创建的截面,勾选需要观察的截面,在工作平面内会以彩色云图的形式显示结果,和彩色比例尺进行对照。
在一个工作平面内只能显示一个物理量,观察不同的物理量,有两种方法:一是在工作平面内选择截面,鼠标右键,选择Properties→Data settings→Display attribute→物理量→OK,选择Isocontour lines,结果以等高线的形式显示;二是在3D Result目录下选择相应的物理量,鼠标右键→Assign to cut→相应的截面。
1.4 HD_engine(柴油机)燃烧模拟
在intake port例子,中主要练习利用FAME Advanced Hybrid Meshing Technique来划分体积网格单元的流程。本节主要练习fire中移动网格划分方法,通过设置几个关键的曲轴转角实现网格的移动来模拟柴油机的缸内循环过程。由于汽缸工作容积的对称性和节省计算时间,根据柴油机的喷油孔的数量,在计算时取工作容积的360/n(n为喷油孔数)模拟计算。
1.4.1下至点180网格
首先形成燃烧室的平面网格,通过旋转平面网格形成三维的体积网格。在燃烧室的顶部选择一个面,将面拉伸一个活塞行程,完成下至点180的网格。
1.导入bowl_, edge_,compensation_三个文件,文件位于安装目录/AVL/FIRE/v8.31/exam/904_HD_Engine/Start Data/Meshes。
2.2D网格的形成
1) 打开bowl_edge,右键选择→Properties→勾选Points复选框,在边线上显示点。如果点显示不是很清楚,可以改变点的颜色,双击复选框前的颜色框,弹出调色盘,选择适当的颜色即可。
2) Edge Tools/2D Meshing/Interpolation/选择bowl_edge/Pick 4 points/选择需要划分区域的四个端点/在对话框中输入相关的参数,都选change input edge
mesh/Interpolation,生成TFI_1_of_bowl_edge。详细设置见帮助文件。New line——两点之间生成一条新的直线,subdiv——两点之间划分的段数,keep——不变,compression——压缩系数。
3) 删除多余的线使得bowl_edge如图所示,划分余下边线网格,Edge tools/2D Meshing/
Paving
选择bowl_edge
选择Keep constant boundary cell thickness
输入 0.0001 在Boundary cell thickness输入 1 在 Number of constant thickness cell
layers.
输入 6 在 Row adjustment delay.
选择 Paving完成过程,然后,选择 Cancel 退出,生成名为PAVINGMESH_1_of bowl_edge。
4) 用paving的方法划分compensation_edge,在Number of constant thickness cell layers中输入2,生成PAVINGMESH_1_of compensation_edge。
5) 将三块2D网格合并。Mesh Tools/Connect/按住Ctrl键,在project选择前面生成的网格/Join
Meshes。生成joined_1(1),选择joined_1(1),保持合并的一致性,选择Conform connect/Calculate
default valve/Conform connect,形成最终的2D
mesh如右图所示
3.三维网格形成
1)Enlarge/Rotate/选择joied_1(1)/在Number of Subdivisions输入15,在Angle输入
45/选择Z axis作为旋转轴/Rotate,生成Rotated_1_of_Joined_1,重命名为bowl_1。2)拉伸bowl_1上表面,形成汽缸工作容积。旋转bowl_1在顶部创建一个Face单元,名为top face,在工作平面内只显示top face和edge_sweep。
3)选择Mesh Tools/Enlarge/Extrude/选择top face/Predefined distribution/选择edge_sweep,Vector Z输入1/Extrude,Cancel退出,恢复bowl_1显示。
4)将bowl_1和2)中拉伸生成的网格合并,方法同2D mesh相同,生成Joined_2(1), 选择join ed_2(1)/选择Conform connect/Calculate default valve/Conform connect,注意连接时经常会有连接不上的问题,影响后面移动网格的形成,可以反复连接几次。重命名为HD_engine_180。
5)检查HD_engine_180,保证Negative Normals为零。如果不为零,检查2D mesh过程。
4.移动网格形成
1.为移动网格定义单元类型,详细设置参考见帮助文件。确保单元类型和数量与帮助文件一致。
2.由于模型并不是整个的汽缸,而是采用的八分之一部分。因此,需要定义循环的边界。Mesh
tools/connect/boundary connect/add,选择HD_engine_180,conform mesh surface,在interface A下拉菜单中选择cyclic,interface B中选择cyclic_rot/boundary connect。
1.下至点180到320
工作区只显示HD_engine_180,Fame motion/create mesh/fame engine/select/
HD_engine_180,在angle中输入180,creating move set,设置起始曲轴转角;
moving mesh parts/在name of moving part输入piston/add moving part/moving selection下拉框中选择bowl,buffer selection下拉框中选择buffer,interpolation下拉框中选择cylinder/选择piston displacement function,在conrod中输入0.265,stroke输入0.1651,piston offset输入0,point1 of axis:0,0,0,point2 of axis:0,0,1;
control center/start angle输入180,end angle输入320,angle increment输入20,interpolation increment输入0;
move/此时软件会显示移动网格进度/完成后选择save moving sets/工程树中的mesh files子目录下显示HD_engine_180_moving。
2.移动网格320到340
右键HD_engine_180_moving/open/2,此时打开了320时的移动网格,相比180时网格向上移动;
复制HD_engine_180_moving(2),将复制文件重命名为HD_engine_320;
重新细化移动网格,mesh tool/refine/redimension/选择HD_engine_320,需要创建两个点来定义方向,create/选择相邻的两个点,如图所示;
选择重新划分的网格区域,选择如图所示的两个的单元,点击pick选择start cell,文本框中会显示单元数,同样的办法选择end cell;
Find layer/在layer list 中选择layer0/number of distribution输入10,沿选定方向将网格划分10等分,compression factor输入1,压缩一倍/redimention;
网格重新划分后,定义的cell和face单元数量上会有所改变,因此需要将有变动的单元修改如图所示的数量;
检查boundary connectivity,如果不存在,重新定义;
在确保前面准备工作无误后,选择fame engine/select/选择HD_engine_320/angle输入320/左键选择320/append mesh,在表中会出现rezone 320,该操作表示添加网格,网格的起点角度是320;
Control center/start angle:320 end angle:340 angle increment :10/move/save moving
sets/close退出。
3.移动网格340到360,360到380
在进行划分移动网格之前,同样需要进行网格细化,打开HD_engine_moving(40);
复制HD_engine_moving(4),重命名为HD_engine_340;
用同样的方法Redimension HD_engine_340,number of distribution输入5,compression
factor输入0;
重新细化以后,检查定义的单元类型数量是否与下图相符,如果不符,重新定义不符的数量;
检查boundary connectivity,如果丢失,重新设置;
设置移动起始和终止角度,fame engine/select/HD_engine_340/angle输入340;
左键选择340/append mesh/rezone 340会出现在表格中;
340到360,Control center/start angle:340,end angle:360,angle
increment:5/move/save moving sets;
360到380,Control center/start angle:360,end angle:380,angle
increment:5/move/save moving sets;
Close退出。
4.移动网格380到540
分两步380到400,400到540实现网格的移动。由于380到400的网格同320到340的网格相同,只是有行程的方向不同,一个远离上止点,一个靠近上止点。同样400到540同180到320网格相同,可以不使用control center的move命令实现380到540的网格移动。可以直接在fame engine的mesh 窗口直接设置。
打开HD_engine_moving(4),fame engine/select/ 选择HD_engine_moving(4),angle输入380/左键选择表格中的380,append mesh;
打开HD_engine_moving(3),fame engine/select/ 选择HD_engine_moving(3),angle输入400/append mesh;
Control center/start angle :380,end angle:400/save moving sets,完成380到400网格的移动;
同样的方法将HD_engine_moving(2)和(1),设置成400到540的移动网格
Close退出,至此完成了一个180到540的活塞行程移动网格,共有12个不同曲轴转角位置的网格单元
Run
将12个不同曲轴转角位置的网格,串联起来形成连贯的活塞运动。
Fame engine/dummy run/ Startangle: 180 Endangle: 540 Interpolation increment: 5/ Start
Dummy Run;
此时工作区显示连贯的活塞运动,生成dummy run(1)的网格文件;
Close退出。
GUI
2.1 Run mode 即模拟计算的形式,分为steady、timestep、crank_angle三种形式。
Steady,稳态计算;
Timestep,以时间为计算变量。delta_t设置计算的时间步长。end time 计算结束时间。Second order,启动二阶隐式差分计算方案,提高计算精度但需要较多的内存和仿真时间。Restart without time information,从先前的计算数值初始化计算初值;
Crank_angle,以曲轴转角代替时间,用于往复式内燃机计算。Delta_alpha设置角度步长,start angle 起始角度,end angle终止角度。Activate engine cycle freezing,解决发动机循环变动边界条件是非常耗费时间的,为了获得尽可能的详细的边界条件,不得不选择非常小的计算步长。engine cycle freezing 是fire创新的解决计算时间和各循环间的耦合问题的计算方法。
2.2 Module activation,fire针对不同问题的计算模块。解决某个问题时,通常需要多个模块联合。选择不同的模块,边界条件(boundary conditions)和初始化条件(initial
conditions)会有所不同。
Porosities,模拟多孔介质中的流动问题,用于流量分配器,催化转化器,填料床,多孔板。
Multiphase,多相
Species transport,
General gas phase reactions,通用气相反应
Aftertreatment,尾气后处理
Combustion,非均质湍流燃烧
Spray,基于离散液滴(DDM)喷雾模拟
Wallfilm,壁膜计算
User-functions,用户自定义
Thin wall,薄壁
FEM interface,有限元边界面
Single phase boiling,单相沸腾
Radiation,辐射
2.3 Boundary conditions
边界条件需要使用面单元(face)来定义,每个边界条件需要独立的face单元,没有定义的边界默认为是温度为293.15K的实体壁面。边界条件分为inlet/outlet、wall、symmetry;
2.3.1 Inlet/outlet,设置进出口处的边界条件:static pressure,total pressure,Averaged Pressure,stagnation pressure(用于超音速或亚音速),normal velocity(边界法向速度),velocity(X,Y,Z方向的速度),periodic(循环边界),1D coupling(一维耦合),mixing plane(混合平面),gradient=0(出口处Von Neumann condition连续),gradient=0-pressure(),gradient=0-pressure(出口处von Neumann condition不连续);
2.3.2 Symmetry,设置边界法向速度,扩散通量,对流通量为零;
2.3.3 Wall,设置壁面边界,壁面的速度,热力学状态。
2.4 Fluid properties,流体性质设定
除了常用流体性质外,还可以自定义流体的性质。
2.5 Initial condition,初始化设置条件,主要包括温度、压力、湍流参数,速度、密度、标量。
Initialization mode,初始化速度场。Uniform initialization均匀初始化,potential flow势流,swirl/tumble 涡流/滚流。
1-Equation turbulence model,初始化涡流场。
Reinitialization,smoothing在species transport模块中才可选择。
2.6 Solver control,设置求解数学方程,关系到求解的收敛速度和稳定性。
Discretization,离散化处理
Calculation of boundary values影响边界的压力计算,网格为质量良好的六面体单元时,选择extrapolate外推法;单元质量不是很好时,推荐采用mirror。
Calculation of derivatives导数的计算,推荐采用least sq. fit,精度高。
Cell face adjustment,推荐只有在网格质量很差时使用,用于限制单元面的横向扩散。
Realizability constraints限制湍流的粘度峰值。
Artificial compressibility限制小的干扰在非压力流场中的压力传播速度。
Simple默认一种压力算法,simplec供用户选择的一种压力算法。
2.7 Equation control,控制方程
Activate equations,激活控制方程
Momentum & continuity,动量及连续性方程;
Turbulence,湍流方程。S-A(Spalart-Allmaras),k-epsilon,k-zeta-f,RSM_isodiff,RSM_anisodiff等湍流模型,默认情况下选择k-e方程;
Energy,能量控制方程;
Total enthalgy
Scalar,被动标量控制方程
Pressure reference cell,参考压力单元
Two stage pressure correction
Compressibility,压缩性
Wall treatment,壁面附近的流动和传热的处理方法
Heat transfer wall model,传热壁面模型
2.8 Underrelaxation factors,控制方程的迭代收敛速度,松弛度越高,计算快,但稳定性差,反之。推荐值如下表
Differencing scheme,差分求解控制方程的方案
Upwind,一阶差分格式;
Central differencing,中心差分格式;
Minmod relaxed,二阶差分格式;
Minmod bounded,当minmod relaxed 不能收敛时,选择此方法;
Avl smart relaxed,二阶差分格式
Avl smart bounded,smart relaxed不能收敛时,选择此法。
2.9 Linear solver,线性算法求解控制方程设置
Linear solver type线性求解类型选择,GSTB(广义零基准正交化求解)、AMG(代数多重网格求解)、CGJP(雅克比对称多处理)、auto自动选择;
Min iteration 每步计算的最小迭代次数;
Max iteration 每步计算的最大迭代次数;
Tolerance收敛精度。
2.10 Convergence criteria,收敛准则。在模拟计算过程实际为一个迭代计算的过程,需要设置一个准则,以便计算机跳到下一步迭代计算中。有两种方法,一是设置每步的最大迭代次数;二是设置每步的收敛精度。
Max number of iterations
Min number of iterations
Normalized residuals残差归一化
Reduction of residuals残差订正
2.11 Output control,输出控制
Write 2D result file,文件名为*.fl2。选择输出的物理量,输出可以是整个几何体或者是某个选定的单元。物理量主要包括flow quantities(流量属性)、turbulence quantities(湍流属性)、wall summary(传热属性)。针对不同的计算模块,可以添加相关的物理量,也可以用户自定义相关的物理量;
Write 3D result file,文件名为*.fl3。通过选择输出频率和物理量,结果通过IMPRESS
post-processer处理显示。;
Write restart file,文件名为*.rs0,*.rs1等。用于记录计算中途停止,重新计算时的数据。新的数据文件替换旧的文件;
Write backup file,文件名为*.bc-0100等。根据设定,备份不同迭代时间的计算过程文件,便于重新计算,可以有多个不同迭代时间段文件。
Log file,文件名为*.fla。显示计算过程中各个流动变量的残差和迭代次数,以便收敛精度的估计,通常在inlet/outlet边界条件,各选择一个单元作为检测目标。
Module activation中选择combustion模块;
Modules子目录下打开combustion目录,进行条件设置。Cumbustion子目录如下图所示。
Control,添加计算结果输出的物理量,默认为off;
Ignition models,点火模型设置,如下图
Spark ignition,火花式点火,火花点火设置窗口如下
Number of spark ignition,点火个数;spark locations,点火位置;spark timing,点火时间;flame kernel size,火焰核心半径(m);ignition duration,点火持续时间(s)。
Auto ignition
Diesel,柴油机压燃式点火,reaction coefficient
Diesel_mil,压燃式多点火模型,火核可以在不同位置或时刻产生;
HCCI,均质混合压燃
Knock,爆燃时分子团的扩散和反应热模型
AnB knock,描述爆燃时燃料的消耗和放热模型
Empirical knock,描述特定区域发生爆震的的可能性
Combustion models,燃烧模型
Eddy breakup model,涡流破碎模型
Emission models,燃烧产物模型
版权声明:本文标题:AVL_Fire_软件的使用方法 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1708213810h516899.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论