




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
结构力学数值方法:边界元法(BEM):BEM的高阶单元与自适应方法1绪论1.1边界元法(BEM)简介边界元法(BoundaryElementMethod,BEM)是一种数值方法,用于求解偏微分方程,特别是在结构力学领域中,它被广泛应用于求解弹性力学、热传导、流体力学等问题。与有限元法(FEM)相比,BEM的主要优势在于它只需要在问题的边界上进行离散化,而不是在整个域内,这大大减少了计算量和所需的存储空间。1.1.1原理BEM基于格林定理(Green’stheorem),将偏微分方程转化为边界积分方程(BoundaryIntegralEquation,BIE)。通过在边界上设置单元,将BIE离散化为一组线性代数方程,然后求解这些方程来获得边界上的未知量。最后,利用这些边界上的解来计算整个域内的解。1.1.2应用BEM在工程问题中特别有用,例如:结构分析:用于预测结构在不同载荷下的响应。声学问题:模拟声波在复杂几何中的传播。电磁学:分析电磁场在特定边界条件下的行为。1.2高阶单元与自适应方法的重要性在边界元法中,单元的阶数和自适应方法的选择对结果的精度和计算效率有着重要影响。1.2.1高阶单元高阶单元指的是在单元内使用高阶多项式来逼近解的单元。与低阶单元相比,高阶单元能够更准确地表示复杂边界条件和非线性行为,从而提高解的精度。在某些情况下,使用高阶单元可以显著减少所需的单元数量,进而减少计算时间和存储需求。1.2.2自适应方法自适应方法是一种动态调整单元大小和分布的技术,以确保在需要更高精度的区域(如应力集中或高梯度区域)有更细的单元,而在解变化平缓的区域使用较大的单元。这种方法可以有效提高计算效率,同时保持解的高精度。1.2.3示例:使用高阶单元的BEM假设我们正在使用BEM解决一个二维弹性力学问题,其中边界条件是非线性的。为了提高解的精度,我们选择使用高阶单元。数据样例考虑一个半径为1的圆形区域,边界上受到非均匀压力分布。我们使用Python和一个边界元法库(如bempp)来实现。importbempp.api
importnumpyasnp
#定义圆的边界
grid=bempp.api.shapes.circle()
#定义高阶单元
space=bempp.api.function_space(grid,"P",2)#使用二次多项式
#定义边界条件
defpressure(x,n,domain_index,result):
result[0]=np.sin(2*np.pi*x[0])*np.cos(2*np.pi*x[1])
#创建边界算子
slp=bempp.api.operators.boundary.laplace.single_layer(space,space,space)
dlp=bempp.api.operators.boundary.laplace.double_layer(space,space,space)
#创建边界条件算子
pressure_op=bempp.api.GridFunction(space,fun=pressure)
#求解边界积分方程
u=bempp.api.linalg.gmres(slp+0.5*bempp.api.operators.boundary.sparse.identity(space,space,space),
pressure_op,tol=1e-5)[0]
#输出解
print(u.coefficients)解释在这个例子中,我们首先定义了一个圆形的边界,并使用二次多项式("P",2)来创建高阶单元。然后,我们定义了一个非线性的压力分布函数作为边界条件。通过创建边界算子和边界条件算子,我们构建了边界积分方程,并使用GMRES迭代方法求解。最后,我们输出了边界上的解。1.2.4自适应方法示例在BEM中实现自适应方法通常涉及到在求解过程中动态调整单元大小和分布。这可以通过监测解的误差或梯度来实现,然后在误差较大的区域细化单元。数据样例继续使用上述的圆形区域,我们可以通过监测解的梯度来决定哪些区域需要细化。#监测解的梯度
gradient=bempp.api.operators.boundary.laplace.gradient(space,space,space)*u
#定义自适应细化标准
defrefine_criterion(x,n,domain_index,result):
result[0]=np.linalg.norm(gradient.evaluate(x))>1e-3
#创建自适应细化算子
refine_op=bempp.api.GridFunction(space,fun=refine_criterion)
#应用自适应细化
grid=bempp.api.grid.refinement(refine_op,grid,max_levels=5)解释在这个示例中,我们首先计算了解的梯度。然后,我们定义了一个自适应细化标准,即如果解的梯度大于某个阈值(1e-3),则该区域需要细化。通过创建一个自适应细化算子并应用到网格上,我们实现了自适应细化,最多细化5级。通过使用高阶单元和自适应方法,我们可以在保持计算效率的同时,提高边界元法在解决复杂工程问题时的精度。2边界元法基础2.1BEM的基本原理边界元法(BoundaryElementMethod,BEM)是一种数值方法,用于求解偏微分方程问题,特别是在结构力学领域中,它被广泛应用于求解弹性力学、热传导、流体力学等问题。BEM的基本思想是将问题域的内部点转化为边界上的积分方程,通过在边界上离散化来求解问题。这种方法的优势在于它只需要对问题的边界进行离散,而不是整个域,从而大大减少了计算量和存储需求。2.1.1原理概述BEM的核心是格林定理(Green’stheorem)和格林函数(Green’sfunction)。格林定理允许我们将问题域内的微分方程转化为边界上的积分方程。格林函数则描述了在边界上施加单位力或单位热流时,域内各点的响应。通过格林函数和边界条件,我们可以建立边界积分方程,进而求解未知量。2.1.2离散化过程在BEM中,边界被离散成一系列的单元,每个单元上格林函数的积分被近似为单元上的积分。未知量(如位移、温度、压力等)在每个单元的节点上被求解。高阶单元的使用可以提高解的精度,而自适应方法则可以自动调整单元的大小和形状,以达到在关键区域提高精度的目的。2.2BEM的数学基础BEM的数学基础主要涉及格林定理、格林函数以及边界积分方程的建立。下面将简要介绍这些概念。2.2.1格林定理格林定理是BEM中将微分方程转化为积分方程的关键。对于一个封闭的区域Ω和其边界Γ,格林定理可以表示为:Ω其中,u和v是两个函数,∇是梯度算子,∇2是拉普拉斯算子,∂2.2.2格林函数格林函数Gx,x′描述了在点2.2.3边界积分方程通过格林函数和格林定理,我们可以建立边界积分方程。对于弹性力学问题,边界积分方程可以表示为:u其中,ux是点x的位移,σx′2.3BEM与有限元法(FEM)的比较边界元法与有限元法(FiniteElementMethod,FEM)都是求解偏微分方程的数值方法,但它们在离散化策略和计算效率上有所不同。2.3.1离散化策略BEM:只对边界进行离散,内部点的解通过边界上的积分方程计算得出。FEM:对整个域进行离散,每个单元内部的解通过插值函数近似。2.3.2计算效率BEM:由于只离散边界,计算量和存储需求通常比FEM小,特别是在三维问题中。FEM:虽然计算量可能更大,但FEM可以处理更复杂的问题域和内部源项。2.3.3精度与自适应性BEM:高阶单元的使用可以提高解的精度,自适应方法可以进一步优化边界单元的分布。FEM:同样可以通过增加单元的密度和使用高阶单元来提高精度,自适应网格细化技术在FEM中也得到了广泛应用。2.3.4示例:使用BEM求解二维弹性力学问题假设我们有一个二维的弹性体,边界上施加了已知的位移和力。我们使用BEM来求解内部点的位移。importnumpyasnp
fromegrateimportquad
#定义格林函数
defgreen_function(x,x_prime):
r=np.sqrt((x[0]-x_prime[0])**2+(x[1]-x_prime[1])**2)
return1/(2*np.pi*r)
#定义边界上的积分
defboundary_integral(x,boundary,stress,displacement):
total_displacement=0
forx_prime,s,dinzip(boundary,stress,displacement):
integral,_=quad(lambdat:green_function(x,x_prime+t*(boundary[1]-boundary[0]))*s,0,1)
total_displacement+=integral
returntotal_displacement
#边界条件
boundary=[(0,0),(1,0),(1,1),(0,1)]#简化为正方形边界
stress=[1,0,-1,0]#边界上的应力
displacement=[0,0,0,0]#边界上的位移
#求解内部点的位移
x=(0.5,0.5)#内部点
u=boundary_integral(x,boundary,stress,displacement)
print(f"内部点({x[0]},{x[1]})的位移为:{u}")2.3.5代码解释上述代码中,我们首先定义了格林函数green_function,它计算了两点之间的距离并返回格林函数的值。然后,我们定义了boundary_integral函数,它对边界上的每个点进行积分,计算内部点的位移。最后,我们使用这些函数来求解一个简化为正方形的边界上的内部点位移。请注意,上述代码仅作为示例,实际的BEM计算会更复杂,涉及到更精确的积分方法和边界单元的离散化。3高阶边界元3.1高阶单元的概念在边界元法(BEM)中,使用高阶单元可以显著提高解的精度,尤其是在处理复杂几何形状和应力集中区域时。高阶单元通过在单元内部使用更高阶的多项式来逼近几何形状和位移场,从而能够更准确地描述边界上的变化。这种逼近方式可以是线性的、二次的、三次的,甚至更高阶的。3.1.1优点提高精度:高阶单元能够更精确地表示边界条件和几何形状,减少数值误差。减少单元数量:由于单个高阶单元可以覆盖更大的几何变化范围,因此在达到相同精度时,可以使用较少的单元数量,从而减少计算成本。适应复杂几何:对于具有复杂边界或内部细节的结构,高阶单元能够更好地适应这些细节,提高解的可靠性。3.1.2缺点计算复杂度:高阶单元的构造和求解通常比低阶单元更复杂,需要更多的计算资源。数值积分:高阶单元的数值积分也更加复杂,可能需要更精细的积分点分布。3.2高阶边界元的构造构造高阶边界元的关键在于选择合适的逼近函数。在BEM中,逼近函数用于在单元边界上逼近未知量,如位移或应力。对于高阶单元,这些函数通常是多项式,其阶数高于线性函数。3.2.1逼近函数假设我们有一个二维边界元,使用二次多项式作为逼近函数。对于边界上的位移uxu其中,a13.2.2节点分布高阶单元通常需要在单元边界上分布更多的节点,以支持更高阶的逼近函数。例如,对于一个二次边界元,除了边界上的顶点外,还需要在边界上添加中间节点。3.2.3系数确定系数的确定通常通过在边界上应用位移或应力的边界条件来完成。这涉及到在每个节点上建立方程,然后求解系数矩阵。3.3高阶边界元的数值积分在BEM中,数值积分用于计算边界上的积分项,如奇异积分和非奇异积分。对于高阶单元,由于逼近函数的复杂性,直接使用低阶积分规则(如中点规则或梯形规则)可能无法提供足够的精度。因此,需要使用更高级的数值积分方法,如高斯积分。3.3.1高斯积分高斯积分是一种高效的数值积分方法,它通过在积分区间内选择特定的积分点和权重来近似积分值。对于高阶边界元,高斯积分点通常分布在单元边界上,以确保逼近函数在边界上的所有变化都能被准确地积分。示例代码以下是一个使用Python和NumPy库进行高斯积分的简单示例。假设我们有一个二次边界元,需要在边界上积分函数fximportnumpyasnp
#高斯积分点和权重,这里使用3点高斯积分
gauss_points=np.array([-0.77459667,0.0,0.77459667])
gauss_weights=np.array([0.55555556,0.88888888,0.55555556])
#定义被积函数
deff(x):
returnx**2
#进行高斯积分
integral=sum(gauss_weights[i]*f(gauss_points[i])foriinrange(len(gauss_points)))
print("积分结果:",integral)3.3.2解释在这个示例中,我们使用了3点高斯积分来近似函数fx=x3.3.3结论高阶边界元通过使用更高阶的逼近函数和更精细的节点分布,能够提高BEM的解精度,尤其是在处理复杂几何和应力集中区域时。然而,这也带来了计算复杂度的增加,需要使用更高级的数值积分方法,如高斯积分,来确保计算的准确性。4自适应边界元法4.1自适应方法的原理自适应边界元法(AdaptiveBoundaryElementMethod,ABEM)是一种通过局部网格细化和高阶单元来提高边界元法(BEM)计算精度的方法。其核心在于能够根据计算结果的误差分布,自动调整网格的密度和单元的阶次,从而在保证计算精度的同时,减少不必要的计算量。4.1.1错误估计自适应BEM中的错误估计通常基于后验误差估计,即在求解后评估解的误差。常见的错误估计方法包括:残差估计:通过计算残差(即实际解与近似解之间的差)来估计误差。局部误差估计:基于单元的局部性质,如梯度或曲率,来估计单元的误差。能量误差估计:通过计算能量误差来评估解的精度。4.1.2网格细化网格细化是自适应BEM中的关键步骤,它根据错误估计的结果,对误差较大的区域进行网格细化,以提高这些区域的计算精度。网格细化可以是均匀的,也可以是非均匀的,后者更常见,因为它能够更有效地分配计算资源。4.2误差估计与网格细化在自适应BEM中,误差估计与网格细化是紧密相连的。一旦确定了误差较大的区域,就需要对这些区域进行网格细化,以减少误差。网格细化可以采用以下几种策略:局部细化:仅在误差较大的区域增加节点,提高单元密度。全局细化:在整个模型中增加节点,虽然可以提高整体精度,但计算成本较高。高阶单元:在误差较大的区域使用高阶单元,通过增加单元的阶次来提高精度,而不需要增加节点数量。4.2.1实施步骤自适应BEM的实施通常遵循以下步骤:初始网格生成:创建一个初始的边界网格,用于初步的BEM计算。求解:使用BEM求解结构力学问题。误差估计:基于求解结果,估计每个单元的误差。网格细化:根据误差估计的结果,对误差较大的区域进行网格细化或使用高阶单元。重复求解与评估:重复步骤2和3,直到满足预定的精度要求或达到计算资源的限制。4.3示例:自适应BEM的实施假设我们正在使用自适应BEM求解一个二维弹性力学问题。以下是一个简化的实施步骤示例,包括代码和数据样例。4.3.1初始网格生成importnumpyasnp
frompybemimportBEMSolver,Mesh
#定义边界
boundary=np.array([[0,0],[1,0],[1,1],[0,1],[0,0]])
#创建初始网格
initial_mesh=Mesh(boundary,element_size=0.1)
#创建BEM求解器
solver=BEMSolver()4.3.2求解#定义材料属性和边界条件
material_properties={'E':200e9,'nu':0.3}
boundary_conditions={'displacement':np.array([0,0]),'force':np.array([0,-1e6])}
#求解问题
solution=solver.solve(initial_mesh,material_properties,boundary_conditions)4.3.3误差估计#计算残差作为误差估计
residuals=pute_residuals(solution)
#打印每个单元的残差
forelement,residualinzip(initial_mesh.elements,residuals):
print(f"Element{element.id}:Residual={residual}")4.3.4网格细化#根据残差进行网格细化
refined_mesh=initial_mesh.refine(residuals,threshold=1e-6)
#打印细化后的网格信息
print(refined_mesh)4.3.5重复求解与评估#重复求解和评估,直到满足精度要求
whilenotsolver.is_converged(refined_mesh,solution,residuals,tolerance=1e-8):
solution=solver.solve(refined_mesh,material_properties,boundary_conditions)
residuals=pute_residuals(solution)
refined_mesh=refined_mesh.refine(residuals,threshold=1e-6)4.3.6代码解释在上述示例中,我们首先使用pybem库创建了一个初始网格。然后,定义了材料属性和边界条件,并使用BEM求解器求解了问题。求解后,我们计算了每个单元的残差作为误差估计。根据残差,我们对网格进行了局部细化,以减少误差。最后,我们通过一个循环,重复求解和评估,直到满足预定的精度要求。请注意,上述代码示例是简化的,实际应用中可能需要更复杂的错误估计和网格细化策略。此外,pybem库是一个虚构的库,用于示例说明,实际应用中应使用相应的边界元法求解器库。5高阶与自适应BEM的结合5.1结合高阶单元与自适应方法的必要性在结构力学的数值分析中,边界元法(BoundaryElementMethod,BEM)以其在处理无限域问题和减少计算自由度方面的优势而著称。然而,对于复杂几何形状和高应力梯度的结构,传统的低阶BEM单元可能无法提供足够的精度。此时,引入高阶单元和自适应方法成为提高BEM分析精度的关键。5.1.1高阶单元的优势高阶单元通过在单元内部使用更高阶的多项式来逼近几何和物理场,能够更准确地描述边界上的应力和位移分布。这在处理具有尖锐边缘或高应力集中区域的结构时尤为重要,因为这些区域的应力梯度往往非常大,低阶单元难以捕捉。5.1.2自适应方法的重要性自适应方法允许在分析过程中动态调整网格的密度和单元的阶次,以确保在需要高精度的区域(如应力集中点)有足够的单元密度,而在应力变化平缓的区域则可以使用较少的单元,从而在保持计算精度的同时,减少整体计算量。这种策略对于优化计算资源的使用和提高复杂结构分析的效率至关重要。5.2高阶自适应BEM的实现实现高阶自适应BEM涉及多个步骤,包括高阶单元的构造、误差估计以及网格的自适应细化。下面将详细介绍这些步骤,并通过一个具体的案例来展示其应用。5.2.1高阶单元的构造高阶单元的构造通常基于高阶多项式基函数。例如,对于二维问题,可以使用Lagrange多项式作为基函数。假设我们有一个二次单元,其基函数可以表示为:#Python示例:构造二次单元的基函数
importnumpyasnp
deflagrange_basis(xi,eta,i,j):
"""
计算二次Lagrange多项式基函数的值。
xi,eta:自然坐标
i,j:基函数的阶次
"""
ifi==0andj==0:
return(1-xi)*(1-eta)*(1+xi+eta)/4
elifi==1andj==0:
return(1-xi)*(1+eta)/2
elifi==0andj==1:
return(1-eta)*(1+xi)/2
elifi==1andj==1:
return(1+xi)*(1+eta)/4
elifi==0andj==-1:
return(1-xi)*(1-eta)/2
elifi==-1andj==0:
return(1-xi)*(1-eta)/2
elifi==-1andj==-1:
return(1-xi)*(1-eta)/4
else:
return0
#示例:计算基函数值
xi,eta=0.5,0.5
basis_value=lagrange_basis(xi,eta,1,0)
print(f"二次单元基函数值:{basis_value}")5.2.2误差估计误差估计是自适应方法的核心,它用于确定哪些单元需要细化以及细化的程度。常见的误差估计方法包括后验误差估计和基于残差的误差估计。后验误差估计基于已知的解来评估单元的误差,而基于残差的误差估计则通过计算单元内部的残差来估计误差。#Python示例:基于残差的误差估计
defresidual_error_estimate(u,f,K,B):
"""
计算基于残差的误差估计。
u:位移向量
f:外力向量
K:刚度矩阵
B:应变-位移矩阵
"""
residual=np.dot(K,u)-f
error_estimate=np.sqrt(np.dot(residual,np.dot(B.T,np.dot(K,B)))*np.dot(residual,residual))
returnerror_estimate
#示例:计算误差估计
u=np.array([1,2,3])
f=np.array([4,5,6])
K=np.array([[1,0,0],[0,1,0],[0,0,1]])
B=np.array([[1,0,0],[0,1,0],[0,0,1]])
error=residual_error_estimate(u,f,K,B)
print(f"基于残差的误差估计:{error}")5.2.3网格的自适应细化基于误差估计的结果,网格自适应细化算法会选择误差较大的单元进行细分,同时可能提高这些单元的阶次。这一过程可以迭代进行,直到满足预设的误差阈值或达到计算资源的限制。#Python示例:网格自适应细化
defadaptive_refinement(mesh,error_estimates,threshold):
"""
执行网格自适应细化。
mesh:当前网格
error_estimates:单元误差估计
threshold:误差阈值
"""
refined_mesh=[]
fori,elementinenumerate(mesh):
iferror_estimates[i]>threshold:
#对误差较大的单元进行细分
refined_elements=refine_element(element)
refined_mesh.extend(refined_elements)
else:
refined_mesh.append(element)
returnrefined_mesh
#示例:网格自适应细化
mesh=[1,2,3,4]
error_estimates=[0.1,0.2,0.05,0.3]
threshold=0.15
refined_mesh=adaptive_refinement(mesh,error_estimates,threshold)
print(f"自适应细化后的网格:{refined_mesh}")5.3案例研究:高阶自适应BEM在复杂结构中的应用考虑一个具有复杂几何形状的结构,例如一个带有尖锐边缘的金属零件。使用高阶自适应BEM,我们首先构建一个粗网格,然后通过迭代的自适应过程,逐步细化网格并提高单元阶次,直到满足精度要求。5.3.1初始网格与误差估计#Python示例:初始网格与误差估计
initial_mesh=generate_initial_mesh()#假设有一个函数用于生成初始网格
initial_error_estimates=calculate_error_estimates(initial_mesh)#假设有一个函数用于计算误差估计5.3.2自适应细化过程#Python示例:自适应细化过程
refined_mesh=initial_mesh
whileTrue:
error_estimates=calculate_error_estimates(refined_mesh)
ifmax(error_estimates)<threshold:
break
refined_mesh=adaptive_refinement(refined_mesh,error_estimates,threshold)5.3.3最终结果与分析通过高阶自适应BEM,我们能够获得一个既精确又经济的网格,用于准确地分析复杂结构的应力分布。这种方法不仅提高了计算精度,还有效减少了不必要的计算资源消耗,使得BEM在处理复杂工程问题时更具竞争力。以上示例代码和描述仅为简化版,实际应用中,高阶自适应BEM的实现会涉及更复杂的数学和编程技术,包括高阶积分规则、误差估计的优化算法以及高效的网格管理策略。然而,这些基本概念和步骤为理解和应用高阶自适应BEM提供了坚实的基础。6结论与展望6.1BEM的未来发展趋势边界元法(BoundaryElementMethod,BEM)作为一种数值方法,在结构力学领域中展现出其独特的优势,尤其是在处理无限域、半无限域和复杂边界条件问题时。随着计算技术的不断进步和工程需求的日益复杂,BEM的未来发展趋势将更加注重高阶单元的开发与自适应方法的完善,以提高计算精度和效率。6.1.1高阶单元的开发高阶单元的引入旨在提高BEM的计算精度,尤其是在处理曲面和非线性问题时。传统的BEM使用低阶单元,如常数或线性单元,这在处理复杂几何形状时可能导致较大的误差。高阶单元通过增加单元内部的自由度,可以更准确地表示边界形状和应力分布,从而减少计算误差。例如,使用三次多项式或更高阶的多项式来逼近边界上的未知量,可以显著提高计算结果的准确性。6.1.2自适应方法的完善自适应方法是BEM中用于动态调整网格密度和单元阶次的技术,以达到在计算资源有限的情况下,优化计算精度的目的。自适应BEM可以根据计算过程中的误差估计,自动调整边界上的单元分布,将更多的单元分配到误差较大的区域,同时减少误差较小区域的单元数量,从而在保证计算精度
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 制作拍摄合同范本
- 债务变更合同范本
- 代销汽车合同范本
- 二手车合同范本商家自己写
- 分阶段付款合同范本
- 华帝橱柜合同范本
- 农村建房主体合同范本
- 单位门合同范本
- 医疗美容转让合同范例
- 产品设计开发合同范本
- CJJ2-2008城市桥梁工程施工与质量验收规范
- 病媒生物防治操作规程
- 2024年社会工作者《社会工作实务(中级)》考试真题必考题
- 德育教育研究课题申报书
- (高清版)JTG 3810-2017 公路工程建设项目造价文件管理导则
- 《煤矿重大事故隐患判定标准》试题及答案
- 《ISO31000:2024风险管理指南》指导手册(雷泽佳译2024-04)
- 学前儿童表演游戏的组织与指导(学前儿童游戏课件)
- 建筑用真空陶瓷微珠绝热系统应用技术规程
- (高清版)DZT 0214-2020 矿产地质勘查规范 铜、铅、锌、银、镍、钼
- 《拒绝校园欺凌 防霸凌主题班会》课件
评论
0/150
提交评论