收藏 分享(赏)

火灾模拟软件FDS的学习心得.doc

上传人:精品资料 文档编号:10512536 上传时间:2019-11-24 格式:DOC 页数:13 大小:126.05KB
下载 相关 举报
火灾模拟软件FDS的学习心得.doc_第1页
第1页 / 共13页
火灾模拟软件FDS的学习心得.doc_第2页
第2页 / 共13页
火灾模拟软件FDS的学习心得.doc_第3页
第3页 / 共13页
火灾模拟软件FDS的学习心得.doc_第4页
第4页 / 共13页
火灾模拟软件FDS的学习心得.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、1. FDS 的启动FDS4:FDS4 job_name.err3.1.2 开始 FDS 计算(多处理器版)利用多个处理器和多个内存( ram )跨网络运行 FDS,比跑单处理器版本困难。更重要的是需要的用户,使联系机器尽可能地无缝。这涉及到在每台机器上对某一特定用户创建账户,共享目录,提高网络速度,使每部机器知悉之间的细节等,一些由并行处理软件应付,其他的则不是。毫无疑问,在未来几年内这一过程将简化,但就目前而言,并行处理技术是仍相对较新,并需要更多的专业知识,在理解这两个操作系统与给定的电脑的网络连接。FDS 使用 MPI(消息传递接口) 3 ,让多台计算机上运行一个单一的 FDS 的工作

2、。其实,这项工作,必须划分成多个网格,处理器指定运算各个网格。每个处理器执行一个 FDS 工作(称为一个线程),MPI 负责网格信息的传输。也有不同的方法实现 MPI,很像有不同FORTRAN 和 c 编译器。每项执行基本上是一个调用 FDS 子程序的图书馆,传输数据从一个线程到另一个横跨快速网络。格式的子程序称呼已得到广泛接受,在社会上让不同的厂商和组织自由发展更好的软件,同时工作在一个开放的框架。FDS 执行的方法,取决于它实施的 MPI 如何安装。在 NIST 的并行版本的格式,是目前运行于 windows 电脑连接局域网(局域网, 100 mbps )的,或者对某一集群 Linux 的

3、个人电脑联系在一起的一个专用,快速( 1000 mbps )的网络。WINDOWS 电脑使用 mpich2 ,免费实施 MPI 的,由美国阿贡国家实验室。3.2 监测进展为某一特定计算的诊断写入文件名为 chid.out 。CPU 的使用情况和模拟的时候写在这里,所以,你可以看到该计划进行了有多远。在计算的任何时候, Smokeview 都可以运行,进展情况可以可视化的查看。预定时间前停止计算,要么关闭进程,或者最好是在同一目录建立一个输出文件名为 CHID.stop 的文件。程序终止文件的存在,使它的输出最新的流体变量在Smokeview 观看。由于计算,可持续几小时或几天,FDS 有一个重

4、新开始的特点。详情如何使用此功能,是由于在第 6.4.1 。简单地说,在最初的计算时,一个“RESTART“文件往往应当保存的。某些事情会扰乱计算,如停电,计算可以在最后保存的文件的时间上重新开始。它是可能的,控制停止的时间以及利用控制功能开始重启文件,如第 11.5 。第五章输入文件的基本结构5.1 工作命名输入文件规定格式与所有必要的信息来描述的情况。输入文件保存名称,例如job_name.fds ,job_name 是任何字符串,它有助于区分模拟。如果在 HEAD 的名单组中有相同的字符串在输入文件中,那么所有的输出文件与计算届时将有这个共同的名字。不应该有空白,在工作名称中。使用下划线

5、,以代表一个空格。用下划线字符而不是一个空格,也适用于一般的做法命名目录到你的系统。FDS 会覆盖输出文件,如果分配给它的名称是一样的。这是方便的,当你节省磁盘空间时。只是小心,不要覆盖您希望保留的计算。5.2 名单组格式化参数在输入文件中指定,通过 mamelist 格式化的记录。每个 namelist 用&开始,紧跟名单组的名称,然后一个逗号分隔的名单输入参数,最后是/,例如&DUMP NFRAMES=1800, DT_HRR=10., DT_DEVC=10., DT_PROF=30. /在 DUMP 名单组中设置各种参数的值,各种参数的含义在后面的章节介绍。名称组的记录可以在输入文件跨多

6、行,而只是一定以“ / “结束纪录,否则数据将不会被理解的。不要在名称组行内添加除适合该组的参数和值以外的东西。否则,FDS 将立即终止。名单组记录的参数可以由逗号,空格,或行分开。最好用逗号或行。有些机器不识别空格。评论和注释可以写入文件,只要除了空格没有东西在&之前,或没有东西在&和/之间,除了对应与特定名单组的适当参数。输入文件参数可以是整数( t_end = 5400 ) ,实数( co_yield = 0.008 ) ,实数或整数组(为 xyz = 6.04,0.28,3.65 )或( ijk = 90,36,38 )时,字符字符串:CHID=WTC_05_v5特征字符串组:SURF

7、_IDS=burner,INERT,INERT ,或逻辑参数:POROUS_FLOOR=.FALSE. 逻辑参数是.TRUE. 或.FALSE. -这时是由 Fortran 公约的。字符串列在这个用户手册必须被准确复制的,代码是区分大小写,并强调这样做。大部分的输入参数简单真实或整数标,如 DT= 0.02,但有输入的是多维数组。举例来说,当形容固体表面,你需要表达多层次中多种材料的质量分数。输入数组 MATL_MASS_FRACTION(IL,IC)传递成分IC 的 IL 层的质量分数到 FDS。例如,如果第二中物质的第三层质量分数为 0.5,就写为MATL_MASS_FRACTION(3,

8、2)=0.5输入一个以上的质量分数,用这种符号:MATL_MASS_FRACTION(1,1:3)=0.5,0.4,0.1,这意味着前三个材料的第一层的质量分数为0.5,0.4,0.1。符号 1:3 表示数组元素 1 至 3。注意:字符字符串能够被附上由撇号或引号。小心,不要制造输入文件通过从其他一些较简单的文本编辑器粘贴文本,在这种情况下,标点符号可能不能妥善复制到文本文件。5.3 输入文件的结构一般来说,名单组记录可以在输入文件中任何的命令输入,但最好系统的组织它们。通常,整体的信息是列在输入文件的上面,细节信息如障碍设备等列在下面。FDS 扫描整个输入文件,每次运行特定的名单组。一些文本

9、编辑器中,最后一行的文件经常不被读取,因为存在文件末尾的色彩。为保证 FDS 读取整个输入文件,加入:&TAIL /作为输入文件的最末行。这完善了文件,从&HEAD to &TAIL。FDS 甚至不找寻这最后一行。另一个经验规则是只在需要改变他们的默认值时才写入输入文件。这样,您就可以更容易区分你的要求 FDS 的要求。添加评论到文件中,只要这些不属于名单组的记录。一般输入文件的结构显示如下,原输入文件(WTC_05_v5.fds)的许多行,为了清晰而移走。&HEAD CHID=WTC_05_v5, TITLE=WTC Phase 1, Test 5, FDS version 5 /&MESH

10、 IJK=90,36,38, XB=-1.0,8.0,-1.8,1.8,0.0,3.82 /&TIME T_END=5400. /&MISC SURF_DEFAULT=MARINITE BOARD, TMPA=20., POROUS_FLOOR=.FALSE. /&DUMP NFRAMES=1800, DT_HRR=10., DT_DEVC=10., DT_PROF=30. /&REAC ID = HEPTANE TO CO2FYI = Heptane, C_7 H_16 C = 7.H = 16. CO_YIELD= 0.008 / SOOT_YIELD = 0.015 /&OBST XB=

11、 3.5, 4.5,-1.0, 1.0, 0.0, 0.0, SURF_ID=STEEL FLANGE / fire Pan.&SURF ID = STEEL FLANGE COLOR = BLACKMATL_ID = STEEL BACKING = EXPOSED THICKNESS = 0.0063 /.&VENT MB=XMIN,SURF_ID=OPEN /.&SLCF PBY=0.0, QUANTITY=TEMPERATURE, VECTOR=.TRUE. /.&BNDF QUANTITY=GAUGE_HEAT_FLUX /.&DEVC XYZ=6.04,0.28,3.65, QUAN

12、TITY=oxygen, ID=EO2_FDS /.&TAIL / End of file.我们强烈建议时,从一个新的局面,首先选择一个预先撰写输入文件极为相似的情况,作必要的修改,然后运行情况,以相当低的分析,决定几何是否建立正确。最好是在开始前用相关的比较简单的文件来收集其问题的主要特点,而不要尝试太多细节,否则可能掩盖了一个在计算中的基本缺陷。初步计算,应予粗糙网格,使运行时间少于一小时,并改正,可以很容易取得,没有浪费太多时间。正如你学习如何写输入文件,你会不断地运行,并重新运行您的例子当你加入复杂性。表 5.1 提供了一个快速参考,所以名单组参数在这里您可以找到参考,以及在这份文件哪

13、里找到介绍,表中包含了每个组所有的关键字。Table 5.1: Namelist Group Reference Table名单组描述 参考章节参数表BNDF 边界文件输出 12.2.6 13.1CTRL 控制功能参数 11.5 13.3DEVC 设备参数 11.1 13.4DUMP 输出参数 12.1 13.5HEAD 输入文件头 6.1 13.6HOLE 障碍物开口 7.2 13.7INIT 最初状态 6.5 13.8ISOF 等值面文件输出 12.2.7 13.9MATL 材料特性 8.4 13.10MESH 网格参数 6.3 13.11MISC 多种(参数行) 6.4 13.12OBS

14、T 障碍物 7.1 13.13PART Lagrangian 粒子 10 13.14PROF 轮廓剖面输出 12.2.4 13.15PROP 装置特性 11.3 13.16RADI 辐射 9.4 13.17RAMP 斜面曲线、剖面 8.5 13.18REAC 反应 9.1 13.19SLCF 薄片文件输出 12.2.5 13.20SPEC 种类参数 9.2 13.21SURF 表面特性 8.2 13.22TIME 模拟时间 6.2 13.24TRNX 网格延伸 6.3.3 13.25VENT 开口特性 7.3 13.26ZONE 压力区域参数 8.3 13.27第六章设置时间和空间的边界6.1

15、 命名工作:HEAD 名单组(表 13.6)首先给定名称。HEAD 名单组包含两个参数,如:&HEAD CHID=WTC_05_v5, TITLE=WTC Phase 1, Test 5, FDS version 5 /CHID 是 30 字符以内的字符串,用来标示输出文件。如 CHID=WTC_05_v5,很方便的命名输入文件 WTC_05_v5.fds,这样输入文件可以与输出文件联系在一起。句号和空格都不允许在CHID 里,因为标示输出文件的词尾对某些操作系统是有含义的。TITLE 是 60 字符以内的字符串,描述模拟。仅仅是传到不同的输出文件的描述性文本。6.2 模拟时间:TIME 名单

16、组(表 13.24)通过参数 T_END 来表示模拟持续时间。默认 1s。注意:TWFIN 仍然可使用,但并不支持使用。例如:&TIME T_END=5400. /设置为 0 用来快速检查几何体。如果想让开始的时间线不在 0,可以用参数 T_BEGIN 来指定第一个写入文件的时间步的时间。这将是有益的匹配实验数据的时限或录像。注意:在 T_BEGIN 之前不进行任何模拟,只是用来补偿从 0 开始的时间。如果 RAMP 的活动时间与 T_BEGIN 一样,那么它就是评价的实际时间;否则用 RAMP 的活动时间。因此,如果你想测试基于 CTRL 或 DEVC 的时间且最终联到 RAMP,那么你该把

17、T_BEGIN 设的稍小于 RAMP 动作的时间。例如你要测一个 10s 打开的开口,其 SUIF_ID 使用RAMP,T_BEGIN 要设置的略小于 10s。初始的时间步长大小可以用 DT 指定。此参数通常是自动设定的,划分网格细胞时。计算时,时间步被调整,这样 CFL 状态才被满意。如果在模拟开始时突然发生什么事情,最好设置初始时间步避免数值不稳定造成时间步过大。不同 DT 值的试验通过监测输出文件的时间步的大小记录。一个额外的参数在 TIME 组里,SYNCHRONIZE,是一个逻辑标志(.TRUE. or .FALSE.),表明了在多网格计算中每个网格的时间步必须一样,保证每个网格的进

18、程是相同的。更详细的信息6.3.2.默认值是.TRUE.6.3 计算网格:MESH 名单组(表 13.11)所有 FDS 计算必须在网格构成的区域内进行。每个网格被分为矩形细胞,其数量取决于预期的流体运动的解析。MESH 是定义计算域的名单组。网格内在坐标服从右手法则。原点被六个一组的数的第 135 个来定义,对角被 246 定义,举例来说:&MESH IJK=10,20,30, XB=0.0,1.0,0.0,2.0,0.0,3.0 /定义了一个跨越原点到 X=1m,Y=2m,Z=3m 的网格。该网格被参数 IJK 分成均匀细胞。在此例子中,网格为 10cm 的立方体。如果在某方向上不想均分网

19、格的大小,则会用到TRNX,TRNY,TRNZ 名单组来改变均匀的网格(6.3.3)。超过边界的障碍和开口截断在边界处。定义网格之外的物体没有影响,将不会在 Smokeview 中看到。注意:保证网格接近立方体。因为在 Y 和 Z 方向上,计算的一个重要部分用到了基于快速傅立叶变换(ffts )的泊松求解,第 2 和第 3 方向格式应为 2l 3m 5n,其中 lmn 是整数。例如 64 = 26, 72 = 2332 和 108 = 2233 是很好的网格,但 37,99 和 109 就不是。网格的第一个数 I 不用 FFTs,不用按照小数字的结合给出。不过你该测试不同的划分值来确保它们最终

20、不会过度减慢运算。1-1024 可用的数字:2 3 4 5 6 8 9 10 12 15 16 18 20 24 2527 30 32 36 40 45 48 50 54 60 64 72 75 80 8190 96 100 108 120 125 128 135 144 150 160 162 180 192 200216 225 240 243 250 256 270 288 300 320 324 360 375 384 400405 432 450 480 486 500 512 540 576 600 625 640 648 675 720729 750 768 800 810 86

21、4 900 960 972 1000 10246.3.1 两维和轴对称计算在 FDS 解决的方程以三维直角坐标系的形式书写。但是一个二维笛卡尔或二维圆柱(轴对称)的计算可能在 MESH 行里通过将 J 设置成 1 来进行。对轴对称,添加 CYLINDRICAL=.TRUE.到 MESH 行中,坐标 X 被处理为径向的 r 坐标。任何边界状态不该被设置在平面 y =YMIN=XB(3)或 y = YMAX=XB(4), 或 r = XMIN=XB(1),在一个 r = XB(1)=0 的轴对称的计算中,为了更好的视觉效果, XB(4) 和 XB(3)的区别要小,这样 Smokeview 的描绘看

22、起来像是2-D 的。图 6.1 多个网格的几何体6.3.2 多个网格和并行进程多个网格意思是计算域包括多于一个的计算网格,经常是联着的。在各网格中,在特定网格内的流速基础上的时间步可以解主要的方程。因每一个网格可以有不同的时间步,这一技术可节省 CPU 的时间,只在必要时要求相对粗的网格进行升级。粗网格最好用在关键值小或不重要的时间和空间梯度上。并行 FDS 需要分割计算区域为多各网格,每个处理器运行一个,或者在多处理器上,描述多个网格的规则是相似的,有些问题需要记住。这里是一个名单,指导方针和警告,对使用多重网格。1. 如果有一个以上的网格,每个都要有 MESH 行。这些行的输入命令在输入文

23、件中一影响。一般,网格应从优到粗的输入。FDS 假定一个列在先的网格输入文件凌驾于第二个网格,如果两网格重叠。网格可以重叠,邻接,或一点没有触及。最后的情况基本是单独的计算。障碍及开口是进入了整格坐标系统,无须适用于任何一个特定的网格。每个网格检查所有几何实体的坐标,并决定他们是否应包括在内。2. 避免把网格边界放到关键点,尤其是火点。有些时候,火在网格间蔓延无法避免,但尽可能尝试保持网格结合部相对远离复杂现象,因为跨越网格边界的信息交换相对于网格内的细胞与细胞间的交换还不准确。3. 其他网格的信息被接收,只在一个给定的网格的外部边界。一个完全嵌入大网格的小网格接收外部边界的信息,但大网格不接

24、收内部小网格的信息。基本上,通常较粗的大网格做自己的模拟而不被通常更好并包含在其内部的小网格所影响。好网格的细节,特别是关系到火的增长和蔓延,可能不被粗网格接收。这样,最好孤立火的行为在一个网格内,把粗的网格放在好网格的外部边界。这样好网格和粗网格互相交换信息。4. 使用相对粗的网格细胞实验不同的网格配置,以确保信息从网格到网格正在妥善转移。首先,流体是否受到该网格边界严重的影响?如果是,尽量移动网格远离活动的地点。第二,是否在网格间细胞单元的大小有太大的跳跃,如果是,考虑从好网格到粗网格的信息传递损失是否是可以容忍的。5. 当用简便公约来声明一个域的整个面是 OPEN 开口时要小心。每个网格

25、都有此属性,见7.36. 用 FDS5 来获得在多重压力区产生的背景压力是可能的,甚至当压力区穿越网格边界时。8.37. 并行计算时,迫使所有网格的时间步相同,设置 SYNCHRONIZE=.TRUE.在 TIME 行里。注意这是在 FDS5 中各种操作默认的。用此设置,所有网格活跃在每次循环。对于单处理器,多重网格的计算,这种策略可以减少甚至消除任何被多重网格使用的利益。但是,在并行运算中,如果一个特定网格在循环中不活动,因为它不准备更新,那么处理器指定那个网格不活动。迫使网格更新用比理想的时间步更短的时间不花费任何,因为处理器本来会闲置下来,其好处是有严密的关系在网格间。同步时间步是可能的

26、,在网格中特别选择的一套网格。SYNCHRONIZE=.TRUE.加入到 MESH 行并把 SYNCHRONIZE=.FALSE.加到 TIME 行。8. 当一个平面障碍接近两网格的临界时,确保每个网格都能看到它。如果障碍物甚至在其中一个网格 1 毫米之外,那这个网格不计它,那样信息并不能在网格间正确交换。9. 当并行的用多重网格运行时,计算效率如下检查:SYNCHRONIZE=.TRUE.加到 TIME 行;程序运行几百个时间步;计算在 CHID.OUT 文件里两个 100 重复点间的不同以墙上的时钟,22.1;时间差别除以 100。这是平均过去了,墙上时钟时间的每个时间步长;看每个网格的

27、CPU/步。最大值该略小于平均墙上的时间。并行计算的效率是最大 CPU/步除以平均每步的墙钟时间。如果此数在 90%到 100%之间,则并行运行良好。6.3.3 网格扩展:TRNX,TRNY,TRNZ 名单组表 13.25计算域的网状细胞默认有统一尺寸。但是,在一或两个坐标方向上不均匀是可以的。在X,Y,Z方向上,具有改变均匀的网格到非均匀的网格的功能。小心网格变换!如果你缩小某处细胞,那么必须扩大其他的细胞。当一或二个方向的网格改变之后,3D 网格中网格细胞的长宽比将不同。为保险,应避免改变细胞的长宽比超过 2 或 3. 记住,大涡模拟技术是基于假定这个数值网格要好,以使漩涡的形态是与混合相

28、关的。总的来说,漩涡的形成是由网格细胞的最大尺寸限制的。这样,在一个或两个方向缩小网格可能吧会带来更好的模拟,如果第三个方向很大。变形降低计算效率,两个方向的改变影响大于一个方向的影响。如果变形网格:&MESH IJK=15,10,20, XB=0.0,1.5,1.2,2.2,3.2,5.2 /你相改变 X 方向的空间。首先参考上面的数字。&TRNX CC=0.30, PC=0.50, MESH_NUMBER=2 /&TRNX CC=1.20, PC=1.00, MESH_NUMBER=2 /6.3.4 选择合适的网格尺寸特殊的模型选择合适的网格6.4 各种参数:MISC 名单组只能有一个 M

29、ISC 名单组在输入文件中。DNS 逻辑参数,如果是.TRUE.,则进行直接数字模拟,而非默认的 LES 大涡模拟GVEC 重力加速度的三个组成,默认 GVEC=0,0,-9.81HUMIDITY 单位%,有水源时指定,默认 40%ISOTHERMAL(等温的) 表明计算不包括任何温度和辐射热的交换,这样方程数量的减少必须解决,并简化。自动的 RADIATION 为 .FALSE.NOISE FDS 把流动区域设置的有小“噪音”来避免当边界和初始状态非常对称时非常对称的流体。去掉它用 NOISE=.FALSE.P_INF 背景压力(地面) 默认 101325PaSUPPRESSION 表明是否

30、包括气相火焰灭绝的逻辑参数。默认.TRUE.。SURF_DEFAULT SURF 行会应用到所有边界。除非特别指定。默认INERTTMPA 环境温度,默认 20UO,VO,WO 各坐标的气流速度的初值。一般都为 0,但当模拟流体立即流动的情况很方便,比如有风时的室外模拟。6.4.1 停止和再启动一个重要的 MISC 参数叫 RESTART。建立一个 CHID.STOP 的文件在目录下。重新开始,RESTART=.TRUE.需要添加到 MISC 行中。6.4.2 改变重力加速度可以改变,情况很少,有水喷淋时不得改变6.4.36.4.4 烟囱效应LAPSE_RATE(?C/m)添加到 MISC 行

31、。6.4.5 大涡模拟参数6.4.6 数值稳定性参数6.5 非常的初始状态:INIT 名单组 13.8 表通常 FDS 模拟开始在 time=0。空气温度固定,密度和压力随高度 Z 方向增长。这在室外的大模拟中是很重要的。有一些方便的方案来改变一些矩形区域的状态。添加格式:&INIT XB=0.5,0.8,2.1,3.4,2.5,3.6, TEMPERATURE=30. /同样可以用于 DENSITY 或 MASS FRACTION(N),N 代表输入文件中的 N 物质。固体障碍物可以给定初始温度,通过 SURF 行中 TMP_INNER 参数。初始速度可以通过 MISC行中的 UO,VO,W

32、O 给定。6.6 设置限制:CLIP 名单组很少情况下可能设高或低的边界,在密度,温度或物质质量分数上。表 13.2 在参数用于诊断结论的目的。第七章建立模型7.1 建立障碍物:OBST 名单组&SURF ID=FIRE,HRRPUA=1000.0 /&OBST XB=2.3,4.5,1.3,4.8,0.0,9.2,SURF_IDS=FIRE,INERT,INERT /在物体表明加了火源。这是简单描述燃烧体的方法。附加属性:在 SURF_ID 和 SURF_IDS 之外还可以用 SURF_ID6:1.&OBST XB=2.3,4.5,1.3,4.8,0.0,9.2,SURF_ID6=FIRE,

33、INERT,HOT,COLD,BLOW,INERT /SURF_ID6 不能与 SURF_ID 和 SURF_IDS 用于相同的 OBST 行。2.避免 FDS 允许建立薄片障碍,在 MISC 设置 THICKEN_OBSTRUCTIONS=.TRUE. 或者在每个 OBST 行设置 THICKEN=.TRUE.3.障碍可以在模拟过程中建立或移除。见 11.4.14.两个障碍可以重合,后来设置的覆盖先设置的。新的面的属性被应用于重合面。Smokeview区别两个独立的网格,经常导致难看的两面颜色的重合。简单纠正法是轻微缩小第一个障碍的坐标。Q 键显示指定的障碍,而不是 FDS 实施它们。5.用

34、 HOLE 如门或窗很方便。障碍可以填充到 HOLE 中,当 PERMIT_HOLE=.FALSE.加入 OBST行时。总的说默认 PERMIT_HOLE=.TRUE.所以任何障碍都可以被穿孔,除非指定。6.如果障碍不能移动或排出,设置 REMOVABLE=.FALSE.有时需要防止 FDS 移走嵌在另外障碍的障碍,就像门在墙里。7.很少时,你可能不允许 VENT 贴到特定障碍上,那样设置 ALLOW_VENT=.FALSE.8.障碍可以弄成半透明的,TRANSPARENCY 指定在 OBST 行。参数从 0 到 1 变换,0 全透明。该参数可以和 COLOR 和 RGB 一样设置。也可以在 SURF 行指定,与颜色指示器一起。9.障碍被 Smokeview 画成实体。画一个外轮廓来表示可以设置 OUTLINE=.TRUE.7.1.1 非矩形几何体和溢出的顶棚

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报