计算机辅助设计和制造的具有大小有限的疲劳损伤的生成设计形状优化的制作方法

文档序号:33367665发布日期:2023-03-08 00:34阅读:26来源:国知局
计算机辅助设计和制造的具有大小有限的疲劳损伤的生成设计形状优化
背景技术
::1.本说明书涉及物理结构的计算机辅助设计,所述物理结构可使用增材制造、减材制造和/或其他制造系统和技术来制造。2.已经开发了计算机辅助设计(cad)软件并使用它来生成对象的三维(3d)表示,并且已经开发了计算机辅助制造(cam)软件并使用它来评估、计划和控制这些对象的物理结构的制造,例如,使用计算机数控(cnc)制造技术来进行。通常,cad软件使用边界表示(b-rep)格式存储正在建模的对象的几何图形的3d表示。b-rep模型是一组连接的曲面元素,所述曲面元素指定所建模的3d对象的固体部分与非固体部分之间的边界。在b-rep模型(通常称为b-rep)中,几何图形使用平滑且精确的数学曲面存储在计算机中,这与网格模型的离散和近似曲面形成对比,后者可能难以使用在cad程序中。3.cad程序已经与减材制造系统和技术结合使用。减材制造是指通过切除部分库存材料而从库存材料(通常是比3d对象大的“坯件”或“工件”)产生3d对象的任何制造过程。此类制造过程通常涉及在从粗加工操作开始、可选半精加工操作和精加工操作的一系列操作中使用多个cnc机床切割工具。除了cnc加工之外,其他减材制造技术包括电极放电加工、化学加工、水射流加工等。相比之下,增材制造(也称为固体自由形式制造或3d打印)是指在一系列层或横截面中由原材料(通常是粉末、液体、悬浮液或熔融固体)构建3d对象的任何制造过程。增材制造的实例包括熔丝制造(fff)和选择性激光烧结(sls)。由原材料构建3d对象的其他制造技术包括铸造和锻造(热锻和冷锻两者)。4.此外,cad软件已经被设计为针对一个零件或者将制造的零件的较大系统中的一个或多个零件执行3d几何图形的自动生成(生成设计)。这种3d几何图形的自动化生成往往受限于由cad软件的用户指定的设计空间,并且3d几何图形生成通常受制于设计目标和约束,所述设计目标和约束可由cad软件的用户或另一方定义并且被导入到cad软件中。设计目标(诸如最小化废弃材料或设计零件的重量)可用于推动几何图形生成过程朝向更好的设计发展。设计约束可包括单独零件的结构完整性约束(即,要求在零件使用期间,零件在预期结构载荷下不应当失效)和由较大系统强加的物理约束(即,要求零件在使用期间不干扰系统中的另一个零件)两者。此外,设计约束的实例包括最大质量、在载荷下的最大偏转、最大应力等。5.一些cad软件已经包括使用各种大小、厚度和密度的晶格和蒙皮来促成3d几何图形增强的工具,其中晶格由在接合处彼此连接或直接连接到固体零件的梁或支柱组成,并且蒙皮是覆盖或封装晶格的外壳结构。此类工具允许重新设计3d零件以减轻重量,同时仍然维持期望的性能特性(例如,刚度和柔韧性)。此类软件工具已经使用各种类型的晶格拓扑,所述晶格拓扑可用于生成可制造的晶格结构。6.此外,生成设计过程的输入可包括指定生成设计过程的边界条件的一组输入固体(b-rep输入),但是许多现代生成设计求解器并不直接在其输入固体的确切的曲面边界表示上操作。相反,对b-rep进行采样并且用诸如水平集或四面体或六面体网格等体积表示进行替代,这对于由求解器计算的物理模拟和材料合成来说明显更为方便和有效。输入固体集可包括“保留体”,所述保留体应当始终存在于设计中,并且表示应当在上面应用边界条件(例如,机械载荷和约束)的系统的其他零件或位置的界面。应当或不应当生成几何图形的其他区域也可以类似的方式提供,诸如定义“障碍体”的输入固体,其表示不应当生成新的几何图形的区域。技术实现要素:7.本说明书描述了涉及使用生成设计过程进行物理结构的计算机辅助设计的技术,其中物理结构的三维(3d)模型可被产生为具有大小有限的疲劳损伤,并且其中由此产生的物理结构之后可使用增材制造、减材制造和/或其他制造系统和技术来制造。8.一般而言,本说明书中描述的主题的一个或多个方面可体现于一种或多种方法中,这些方法包括:由计算机辅助设计程序获得制造对应的物理结构将依据的建模对象的设计空间、所述建模对象的一个或多个设计标准、所述物理结构的一种或多种使用中载荷状况和制造所述物理结构所用的材料的临界疲劳裂纹长度;由所述计算机辅助设计程序根据所述一个或多个设计标准、所述物理结构的所述一种或多种使用中载荷状况和所述材料的所述临界疲劳裂纹长度来迭代地修改所述设计空间中的所述建模对象的生成设计的三维形状,其中所述迭代地修改包括:强制执行限制所述建模对象的所述生成设计的三维形状的最小厚度的设计标准,所述最小厚度是基于所述材料的所述临界疲劳裂纹长度;以及由所述计算机辅助设计程序提供所述建模对象的所述生成设计的三维形状以用于使用一个或多个计算机控制的制造系统来制造对应于所述建模对象的所述物理结构。9.所述一个或多个设计标准可包括所述建模对象在所述物理结构的所述一种或多种使用中载荷状况中的每一者下的所需载荷循环数,并且所述获得可包括获得制造所述物理结构所用的材料的一个或多个规范,所述一个或多个规范包括使疲劳强度与载荷循环相关的数据;并且其中所述迭代地修改可包括:根据所述三维形状的当前型式和所述一种或多种使用中载荷状况来执行所述建模对象的数值模拟以产生所述建模对象的物理响应的当前数值评估;针对所述物理结构的所述一种或多种使用中载荷状况中的至少一者从所述建模对象的所述物理响应的所述当前数值评估中查找最大化的应力或应变元素;使用所述最大化的应力或应变元素和使疲劳强度与载荷循环相关的所述数据来确定所述物理结构的所述一种或多种使用中载荷状况中的所述至少一者中的每一者的预期载荷循环数;基于根据所述建模对象的所述所需载荷循环数以及所述物理结构的所述一种或多种使用中载荷状况中的所述至少一者中的每一者的所述预期载荷循环数来计算的损伤分数而重新定义所述建模对象的疲劳安全系数不等式约束;以及至少根据所述疲劳安全系数不等式约束来计算所述三维形状的水平集表示中的隐式曲面的形状变化速度。10.所述一个或多个规范可包括制造所述物理结构所用的相应的不同材料的两个或更多个规范,所述数据可包括针对所述不同材料中的每一者的使疲劳强度与载荷循环相关的数据,确定所述预期载荷循环数可包括确定所述不同材料中的每一者的单独的预期载荷循环数,并且重新定义所述疲劳安全系数不等式约束可包括:基于根据所述不同材料的所述预期载荷循环数中的相应的预期载荷循环数来计算的相应的损伤分数而计算所述不同材料中的每一者的单独的疲劳安全系数;以及使用所述不同材料的所述疲劳安全系数的最小值来重新定义所述建模对象的所述疲劳安全系数不等式约束;并且其中计算所述形状变化速度可包括使用根据所述疲劳安全系数的形状导数确定的梯度来计算至少一个形状变化速度。11.所述查找可包括至少基于所述建模对象的所述物理响应的所述当前数值评估中的应力分布的标准偏差而计算使用中载荷状况的最大应力值。12.所述强制执行可对所述建模对象的所述生成设计的三维形状使用厚度测量,所述厚度测量是至少两种不同的厚度测量的组合。13.所述至少两种不同的厚度测量可包括(i)第一距离测量,所述第一距离测量是从所述建模对象的曲面点在负法线方向上进行光线投射的所述建模对象内的长度;以及(ii)第二距离测量,所述第二距离测量是接触所述建模对象的所述曲面点并在所述建模对象内部拟合的最大球面的直径,如通过检查在所述球面的曲面上定义的离散的采样位置来确定。14.所述强制执行可包括使用基于体积分数或最小厚度的不等式约束作为限制所述最小厚度的所述设计标准的代理,其中所述基于体积分数或最小厚度的不等式约束使用重要性系数来修改,所述重要性系数在所述迭代地修改的初始阶段期间被设定为零,并且在所述迭代地修改的后续阶段期间基于所述迭代地修改的先前迭代中是否违反一个或多个其他约束而进行调整。15.调整可包括在所述迭代地修改的多次迭代中在初始目标值与最终目标值之间调整所述基于体积分数或最小厚度的不等式约束的目标值;以及当在所述多次迭代中调整所述目标值时,使用比例积分微分控制器来调整并稳定对根据所述基于体积分数或最小厚度的不等式约束的评估来确定的所述建模对象的修改量所作的改变。16.获得所述材料的所述临界疲劳裂纹长度可包括:获得制造所述物理结构所用的所述材料的一个或多个规范;以及根据所述一个或多个规范中的信息计算所述材料的所述临界疲劳裂纹长度,所述信息可包括所述材料的疲劳裂纹增长曲线的模量。17.所述建模对象的所述生成设计的三维形状可包括隐式曲面的水平集表示,所述一个或多个设计标准可包括所述建模对象在所述物理结构的所述一种或多种使用中载荷状况中的每一者下的所需载荷循环数,并且所述迭代地修改可包括:根据所述三维形状的当前型式和所述一种或多种使用中载荷状况来执行所述建模对象的数值模拟以产生所述建模对象的物理响应的当前数值评估;使用所述当前数值评估和所述厚度测量来确定所述物理结构的所述一种或多种使用中载荷状况中的每一者的预期载荷循环数以强制执行限制所述最小厚度的所述设计标准;基于根据所述建模对象的所述所需载荷循环数以及所述物理结构的所述一种或多种使用中载荷状况中的每一者的所述预期载荷循环数来计算的损伤分数而重新定义所述建模对象的疲劳安全系数不等式约束;至少根据所述疲劳安全系数不等式约束来计算所述隐式曲面的形状变化速度;使用所述形状变化速度来更新所述水平集表示以产生所述建模对象的所述三维形状的更新型式;以及至少重复所述执行、所述确定、所述重新定义、所述计算和所述更新,直到已经执行预定义次数的形状修改迭代,或者直到所述设计空间中的所述建模对象的所述生成设计的三维形状针对所述一个或多个设计标准和所述一种或多种使用中载荷状况收敛于稳定解为止。18.所述物理结构的所述一种或多种使用中载荷状况可包括所述物理结构的两种或更多种使用中载荷状况,所述一个或多个设计标准可包括所述建模对象在所述物理结构的所述两种或更多种使用中载荷状况中的每一者下的所需载荷循环数,确定所述预期载荷循环数可包括确定所述隐式曲面上的多个点中的每一者在所述两种或更多种使用中载荷状况中的每一者下的单独的预期载荷循环数,并且重新定义所述疲劳安全系数不等式约束可包括:针对所述多个点中的每一者,对与所述两种或更多种使用中载荷状况相对应的载荷特定损伤分数进行求和,其中每个载荷特定损伤分数包括将关于所述多个点中的一者和所述使用中载荷状况中的一者的预期载荷循环数除以关于所述使用中载荷状况中的所述一者的所述所需载荷循环数,以产生所述多个点中的每一者的所述载荷特定损伤分数的和;对所述载荷特定损伤分数的所述和中的每一者求倒数;以及使用所述载荷特定损伤分数的所述倒数和的最小值来重新定义所述建模对象的所述疲劳安全系数不等式约束。19.计算所述形状变化速度可包括使用根据形状导数公式确定的量来计算至少一个形状变化速度,所述形状导数公式近似于所述疲劳安全系数的形状导数。20.近似于所述疲劳安全系数的所述形状导数的所述形状导数公式可包括基于体积分数或最小厚度的不等式约束,所述基于体积分数或最小厚度的不等式约束使用重要性系数来修改,所述重要性系数基于所述迭代地修改的先前迭代中是否违反一个或多个其他约束而进行调整。21.所述一种或多种方法可包括:在所述迭代地修改的多次迭代中在初始目标值与最终目标值之间调整所述基于体积分数或最小厚度的不等式约束的目标值;以及当在所述多次迭代中调整所述目标值时,使用比例积分微分控制器来稳定对根据所述形状导数公式确定的所述量所作的改变,并且调整根据所述形状导数公式确定的所述量对所述更新中所使用的所述形状变化速度的总体贡献。22.本文描述的这些和其他方法可使用编码计算机辅助设计程序的非暂时性计算机可读介质来实现,所述计算机辅助设计程序可操作来使一个或多个数据处理设备执行一种或多种方法。在一些实现方式中,一种系统包括:非暂时性存储介质,所述非暂时性存储介质上存储有计算机辅助设计程序的指令;以及一个或多个数据处理设备,所述一个或多个数据处理设备被配置为运行所述计算机辅助设计程序的所述指令以执行所述一种或多种方法。此外,此类系统可包括增材制造机器或其他制造机器,并且所述一个或多个数据处理设备可被配置为运行所述计算机辅助设计程序的所述指令以根据所述三维模型为此类机器生成指令(例如,用于所述增材制造机器的工具路径规范),并且通过由所述机器使用所述指令(例如,所述增材制造机器使用所述工具路径规范)来制造对应于所述对象的所述物理结构。23.本说明书中描述的主题的具体实施方案可被实现来达成以下优点中的一个或多个。设计可根据损伤容限疲劳约束来优化。在拓扑优化期间,还可满足疲劳最优设计要求,例如,基于结构载荷的具有疲劳约束的要求。要求可为例如针对使用中载荷状况的循环数或者转换为循环数的时间段。本说明书中描述的技术可应用于具有多种不同材料的对象,并且单独的疲劳约束可根据对应的材料信息和指定的载荷状况来计算。因此,通过相对于用户指定的疲劳约束生成设计,对象的所得的设计可忍受一定量的损伤以避免对应的物理对象的严重失效,否则如果对象遭受绝对的疲劳损伤,则可能会出现所述严重失效。因此,预先确定的量的损伤容限可被构建到始于对象创建的生成设计阶段的物理对象中。24.该过程可自动地并结合其他技术一起执行,诸如水平集方法、固体各向同性材料惩罚(simp)方法、常规的贴体求解器、用于提高稳定性的备份和恢复、防止连接断开的几何图形的特定于载荷状况的平流、比例积分微分(pid)控制器、其他自适应控制器和相关技术,包括自适应pid调谐、pid自动调谐,可使用后一者来满足任意设计约束。25.在附图和以下描述中阐述了在本说明书中描述的主题的一个或多个实施方案的细节。根据说明书和附图以及权利要求将清楚明白本发明的其他特征、方面和优点。附图说明26.图1a示出了可用于设计和制造物理结构的系统的实例。27.图1b示出了设计和制造物理结构的过程的实例。28.图2a示出了初始设计构型与当前设计构型之间的几何图形映射的实例的图形表示。29.图2b示出了从固体网格到水平集栅格的数据映射的实例的图形表示。30.图2c示出了基于水平集的拓扑优化过程的问题设置的实例;图2d示出了来自图2c的问题设置的窄带速度实例;并且图2e示出了来自图2c的在扩展之后的速度。31.图3a示出了使用一个或多个生成设计过程生成将制造的对象的3d模型的一个或多个部分的过程的实例。32.图3b示出了应用于设计空间的初始接种几何图形的实例的图形表示,以及在设计空间上执行生成设计过程之后的米歇尔(michell)类型拱问题的所得设计。33.图3c示出了在执行生成设计过程期间针对米歇尔类型拱问题的中间设计的气泡插入历史的实例的图形表示。34.图4a示出了使用实现具有受控收敛的任意约束处理的一个或多个生成设计过程生成将制造的对象的3d模型的一个或多个部分的过程的实例。35.图4b示出了分别使用b-样条跟踪目标约束值的逐渐减小和增加的曲线图的实例。36.图4c示出了考虑到不同的体素大小,μ值随着目标体积变化的示例变型的图形表示。37.图4d示出了在具有近似体积控制而没有自适应控制的迭代优化过程期间跟踪目标体积分数与实际体积分数的曲线图的实例。38.图4e示出了在具有pid控制(而没有自适应pid控制)的迭代优化过程期间跟踪目标体积分数与实际体积分数的曲线图的实例。39.图4f示出了自适应地修改pid控制器的参数值的过程的实例。40.图4g示出了跟踪约束归一化中所使用的不同量度的曲线图的实例。41.图4h示出了在有和没有线搜索的情况下跟踪约束的收敛历史的曲线图的实例。42.图5a示出了使用针对主体上的安全寿命疲劳约束进行求解的一个或多个生成设计过程生成将制造的对象的3d模型的一个或多个部分的过程的实例。43.图5b示出了在多个循环内跟踪主体上的疲劳强度(应力)的sn曲线的实例。44.图6a示出了根据包括至少一个损伤容限疲劳约束的一个或多个设计标准来迭代地修改设计空间中的建模对象的生成设计的三维形状的过程的实例。45.图6b示出了几何图形的图形表示,其中几何图形的厚度根据不同的测量技术来计算。46.图6c示出了在不同速率下跟踪sigmoid函数的曲线的曲线图的实例。47.图6d示出了描述疲劳裂纹性质的表的实例。48.图6e示出了使用针对主体上的损伤容限疲劳约束进行求解的一个或多个生成设计过程生成将制造的对象的3d模型的一个或多个部分的过程的实例。49.图7a是根据包括应力约束的一个或多个设计标准来迭代地修改设计空间中的建模对象的生成设计的三维形状的过程的实例。50.图7b示出了在对象上测量的构建角度的实例的图形表示。51.图7c示出了使用应力约束生成将制造的对象的三维模型的一个或多个部分的过程的实例。52.图8a示出了根据一个或多个设计标准来迭代地修改设计空间中的建模对象的生成设计的三维形状同时避免过多的突然变化并且最小化连接断开的可能性的过程的实例。53.图8b是优化期间几何图形连接断开的实例的图形表示。54.图8c是具有模拟元素的几何图形的实例的图形表示,所述模拟元素基于元素与几何图形的交集而进行分类。55.图9示出了包括数据处理设备的数据处理系统的示意图,所述数据处理设备可被编程为客户端或服务器。56.各个图中的相同的参考数字和标记指示相同的元件。具体实施方式57.图1a示出了可用于设计和制造物理结构的系统100的实例。计算机110包括处理器112和存储器114,并且计算机110可连接到网络140,所述网络可为专用网络、公共网络、虚拟专用网络等。处理器112可为一个或多个硬件处理器,所述硬件处理器各自可包括多个处理器核心。存储器114可包括易失性存储器和非易失性存储器两者,诸如随机存取存储器(ram)和快闪ram。计算机110可包括各种类型的计算机存储介质和装置,其可包括存储器114,以存储在处理器112上运行的程序指令,包括一个或多个计算机辅助设计(cad)程序116,所述程序指令实现三维(3d)建模功能并且包括用于拓扑优化的一个或多个生成设计过程,这使用数值模拟进行,并且包括材料或微观结构形状优化技术、几何或宏观结构形状优化技术,或两者(例如,使用一个或多个基于水平集的拓扑优化过程)。58.由一个或多个cad程序116执行的数值模拟可模拟一个或多个物理性质并且可使用一种或多种类型的模拟来产生建模对象的物理响应(例如,结构响应)的数值评估。例如,可使用有限元分析(fea),包括线性静态fea、一种或多种有限差分法和一种或多种材料点法。此外,由一个或多个cad程序116执行的物理性质的模拟可包括计算流体动力学(cfd)、声学/噪声控制、热传导、计算注射成型、电或电磁通量和/或材料固化(其可用于成型过程中的相变)模拟。此外,一个或多个cad程序116可潜在地实现孔和/或夹具生成技术以支持制造期间的夹持和/或制造控制功能。59.如本文所使用,cad是指用于设计满足设计要求的物理结构的任何合适的程序,而不管cad程序是否能够与制造装备对接和/或控制所述制造装备。因此,一个或多个cad程序116可包括一个或多个计算机辅助工程(cae)程序、一个或多个计算机辅助制造(cam)程序等。一个或多个cad程序116可在计算机110上本地运行、在一个或多个远程计算机系统150(例如,可由计算机110经由网络140访问的一个或多个第三方供应商的一个或多个服务器系统)的计算机上远程运行、或本地运行和远程运行两者兼而有之。因此,cad程序116可为在两个或更多个单独的计算机处理器上协作地操作的两个或更多个程序,其中在本地在计算机110处操作的一个或多个程序116可通过使一个或多个计算机150上的一个或多个程序116执行卸载处理操作来“向云”卸载处理操作(例如,生成设计和/或数值模拟操作)。60.一个或多个cad程序116在计算机110的显示装置120上呈现用户界面(ui)122,所述用户界面可使用计算机110的一个或多个输入装置118(例如,键盘和鼠标)来操作。应注意,虽然在图1a中被示出为单独的装置,但是显示装置120和/或输入装置118也可彼此集成和/或与计算机110集成,诸如集成在平板计算机中(例如,触摸屏可为输入/输出装置118、120)。此外,计算机110可包括虚拟现实(vr)和/或增强现实(ar)系统或者为所述系统的一部分。例如,输入/输出装置118、120可包括vr/ar输入手套118a和/或vr/ar耳机120a。在任何情况下,用户160都能与一个或多个cad程序116交互以创建和修改一个或多个3d模型,所述3d模型可存储在一个或多个3d模型文档130中。61.在所示的实例中,初始3d模型132是用于输入到生成设计过程的种子模型。在此实例中,用户160已经定义了在生成设计过程中攻克的机械问题,以从起始3d模型132产生新的3d模型。在这种情况下,所定义的问题是米歇尔类型拱问题,其中用户160已经指定域134和载荷状况136。然而,这只是许多可能的实例之一。62.在一些实现方式中,用户160(或其他人员或程序)可指定将制造的对象的设计空间、用于对象的数值模拟(例如,fea、cfd、声学/噪声控制、热传导、计算注射成型模拟、电或电磁通量、材料固化等)的数值模拟设置(例如,一个或多个载荷和一种或多种材料)、关于对象的至少一个设计目标(例如,最小化材料使用)、以及关于对象的至少一个设计约束(例如,体积约束)。在一些实现方式中,用于数值模拟和生成设计过程的输入可包括:当前3d模型的一个或多个区域,在所述一个或多个区域中生成新的3d几何图形;一种或多种载荷状况,所述载荷状况定义由正在设计的物理结构承受的在一个或多个不同方向上的一个或多个载荷;一种或多种材料(例如,被确定为设计空间的基线材料模型的一种或多种各向同性固体材料);用作生成设计过程的输入的一种或多种种子模型类型;使用的一个或多个生成设计过程;和/或用于设计空间的一个或多个区域中的一个或多个晶格拓扑。生成设计和数值模拟过程的输入可包括非设计空间、不同类型的部件(例如,杆、轴承、外壳)、一个或多个目标制造过程和相关联的参数、应当避免的障碍几何图形、应当包含在最终设计中的保留几何图形以及与各个方面相关的参数,诸如设计的分辨率、合成类型等。63.此外,一个或多个cad程序116在ui122中提供用户界面元素以使得用户160能够指定上述各种类型的输入,并且所有这些输入(或各种子集)可用于本文档中描述的生成设计和数值模拟过程中。此外,一个或多个cad程序116的ui122可使得用户160能够使用传统的3d建模功能来设计零件(以构建3d设计模型的精确的几何描述),然后在3d设计模型的一个或多个部分内指定的设计空间中使用生成设计和模拟过程。因此,如将了解的,可使用本文档中描述的系统和技术来设计许多可能类型的物理结构,ui122可用于为将制造的零件创建完整的机械问题定义,并且生成设计和数值模拟过程可通过不经过耗时的物理测试而实现提高的性能来加速新产品的开发。64.此外,如本文所描述,一个或多个cad程序116实现至少一个生成设计过程,这使得一个或多个cad程序116能够基于一个或多个设计目标和约束(即,设计标准)而自动地生成一个或多个3d模型的一个或多个部分(或整个3d模型),其中几何设计基于模拟反馈而迭代地进行优化。应注意,如本文所使用,“优化”(或“最优”)并不意味着在所有情况下都实现了所有可能设计中的最佳设计,而是意味着最佳(或接近最佳)设计是从考虑到可用处理资源在指派的时间(例如,如由形状修改迭代的预定义次数指定)内可生成的一组有限的可能设计中选择的。设计标准可由用户160或另一方定义并且被导入到一个或多个cad程序116中。设计标准可包括单独零件的结构完整性约束(例如,要求在零件使用期间,零件在预期结构载荷下不应当失效)和由较大系统强加的物理约束(例如,要求零件包含在指定体积内,以免在使用期间干扰系统中的一个或多个其他零件)。65.可使用各种生成设计过程,所述生成设计过程可优化3d模型的至少一部分的形状和拓扑。一个或多个cad程序116对一个或多个3d模型的几何设计的迭代优化涉及拓扑优化,所述拓扑优化是一种轻量化的方法,其中通过最小化受制于设计约束(例如,以体积为约束的结构顺应度)的目标函数来确定材料的最优分布。拓扑优化可使用多种数值方法来解决,所述数值方法可广义地分为两组:(1)材料或微观结构技术,以及(2)几何或宏观结构技术。微观结构技术是基于确定材料密度的最优分布,并且包括固体各向同性材料惩罚(simp)方法和均质化方法。在simp方法中,中间材料密度受到惩罚,以有利于ρ=0或ρ=1,分别表示空隙或固体。在均质化方法中,中间材料密度被视为复合材料。66.相比之下,宏观结构技术将材料视为均质的,并且所产生的建模对象的三维拓扑表示为设计空间(也称为用于拓扑优化的域或域的子空间)内一个或多个固体区域(其中具有均质材料)和一个或多个空隙区域(其中没有材料)之间的一个或多个边界。在生成设计过程期间优化一个或多个边界的一个或多个形状,同时由于形状优化与添加/去除和缩小/增长/合并一个或多个空隙区域相结合,拓扑在域中发生了变化。因此,可使用宏观结构技术从生成设计过程产生的最终优化的拓扑的类型可在很大程度上取决于种子几何图形内的空隙的数量和大小以及优化过程期间空隙的添加和去除。67.应注意,虽然在图1a中仅示出了一个种子模型132(其中这个模型132包括包围空隙区域的许多孔132b的复杂固体区域132a),但是应当了解,对于任何给定的生成设计过程迭代,本文档中描述的生成设计过程都可采用两个或更多个种子几何图形/模型,以便改善形状和拓扑优化的最终结果。此外,在形状和拓扑优化过程期间,可将一个或多个空隙引入到固体域中和/或可将一个或多个固体引入到空隙域中,以便改善形状和拓扑优化的最终结果。因此,一个或多个cad程序116可包括各种类型的可用种子几何图形和中间过程几何图形引入,以及允许用户160设计其自身的种子几何图形和中间过程几何图形引入的用户界面元素。同样,用户160可运行两次或更多次生成设计过程迭代(保存每次迭代的结果),直到产生优选的生成设计为止。68.在各种实现方式中,如本文所描述,一个或多个cad程序116提供如下生成设计形状优化过程:(1)利用受控收敛,(2)在载荷循环内实现损伤预防,(3)具有大小有限的疲劳损伤,(4)使用构建材料强度模型,和/或(5)具有奇点和连接断开预防。在一些实现方式中,一个或多个cad程序116实现所有上文列出的过程,而在其他实现方式中,一个或多个cad程序116实现上文列出的过程的子集。69.一旦用户160对生成设计的3d模型感到满意,3d模型就可被存储为3d模型文档130和/或用于生成模型的另一种表示(例如,用于增材制造的.stl文件)。这可根据用户160的请求来完成,或者根据用户对另一个动作的请求来完成,诸如将3d模型132发送到增材制造(am)机器170,或者可直接连接到计算机110或经由网络140连接的其他制造机械,如图所示。这可涉及在本地计算机110或云服务上执行的用于将3d模型132导出到制造所依据的电子文档的后处理。应注意,电子文档(为简洁起见将简称为文档)可为文件,但不一定对应于文件。可将文档存储在保存其他文档的文件的一部分中,存储在专用于所讨论的文档的单个文件中,或者存储在多个协同文件中。70.在任何情况下,一个或多个cad程序116都可向am机器170提供文档135(具有适当格式的工具路径规范)以产生完整结构138,所述完整结构包括优化的拓扑和形状(在此实例中,针对米歇尔类型拱问题生成的拱设计)。am机器170可采用一种或多种增材制造技术,诸如颗粒技术(例如,粉末床熔融(pbf)、选择性激光烧结(sls)和直接金属激光烧结(dmls))、挤出技术(例如,熔融沉积建模(fdm),其可包括金属沉积am)。此外,用户160可保存或传输3d模型以备后用。例如,一个或多个cad程序116可存储包括所生成的3d模型的文档130。71.在一些实现方式中,一个或多个减材制造(sm)机器174(例如,计算机数控(cnc)铣床,诸如多轴、多工具铣床)也可用于制造过程中。这一个或多个sm机器174可用于制备一个或多个am机器170将在其上操作的初始工件。在一些实现方式中,部分完整结构138由一个或多个am机器170生成和/或使用铸造方法(例如,使用陶瓷外壳的熔模铸造(ic)或使用砂芯的砂模铸造(sc))生成,并且之后由cnc机器174对这个部分完整结构138去除(例如,精加工)一个或多个部分以便形成完整结构。在一些实现方式中,一个或多个cad程序116可向sm机器174提供对应的文档135(具有适当格式的工具路径规范,例如cnc数控(nc)程序)以用于使用各种切割工具等来制造零件。此外,在一些实现方式中,使用一个或多个sm机器174整体地产生完整结构138。72.在各种实现方式中,系统100的一个或多个cad程序116可实现如本文档中所描述的一个或多个生成设计过程。生成设计过程寻求最优的几何形状、拓扑或两者。例如,生成设计过程通过最小化受制于约束的与性能相关的目标函数而在替代设计中寻求最优几何形状:73.最小化74.使得gi(s,u(s))=0i=1,...,ngꢀꢀ(2)75.其中s是与域的几何形状相关的设计变量的向量,并且u是取决于s的状态变量(例如,位移)的向量。附加约束(例如,均衡)由集合gi表示。为简单起见,此处假设等式约束。用于最小化(1)的数学规划方法可基于梯度或基于非梯度。基于梯度的方法(对比基于非梯度的方法)通常使用与设计灵敏度相关联的更多信息,例如:[0076][0077]这是与性能相关的目标函数相对于设计变量的导数。在基于晶格的方法中,s表示晶格厚度。在基于水平集的拓扑优化方法中,s表示固体区域的边界。[0078]图1b示出了设计和制造物理结构的过程的实例。例如由一个或多个cad程序116获得180设计变量,以用于产生生成3d模型。不同的生成设计过程可通过使用设计变量的不同组合来制定,所述设计变量可包括晶格、密度场和水平集。在一些实现方式中,设计变量可包括各种类型的输入,例如通过ui122接收到的输入,诸如在通过系统100中的一个或多个cad程序116变得可用的不同的生成设计合成方法之间的选择。在一些实现方式中,可用的生成设计合成方法包括(1)基于水平集的拓扑优化,其提供用于拓扑优化的基本水平集方法,(2)晶格和蒙皮优化,其提供晶格和蒙皮的厚度优化,(3)混合拓扑优化,其提供具有晶格填充的拓扑优化,(4)由内向外的混合拓扑优化,其中晶格填充存在于拓扑优化的设计与原始设计空间之间的负空间中,(5)中空拓扑优化,其提供一种利用内部中空区域进行拓扑优化的方法,和/或(6)混合-中空拓扑优化,其提供一种利用晶格填充和内部中空区域进行拓扑优化的方法。有关此类生成设计合成方法的另外的细节,请参见2019年11月6日提交的于2020年5月14日作为wo2020/097216公布且名为“macrostructuretopologygenerationwithdisparatephysicalsimulationforcomputeraideddesignandmanufacturing”的pct/us2019/060089,其以引用的方式并入本文。此外,可用的生成设计合成方法可采用下文结合图3a至图8c描述的系统和技术中的一种或多种。[0079]附加设计变量是可能的,诸如(1)用于生成设计几何图形产生的设计空间,例如设计或加载到一个或多个cad程序116中的边界表示(b-rep)3d模型,所述3d模型用作所描述的生成设计过程的优化域的子空间,和/或(2)一组输入固体,所述一组输入固体指定生成设计几何图形产生的边界条件,例如,使用ui122选择来指定一个或多个子空间的b-rep,所述子空间被保留用作与较大的3d模型或一个或多个单独的3d模型中的一个或多个其他部件连接的一个或多个连接点。例如,可由一个或多个cad程序116响应于来自用户160的输入而使用设计变量的不同组合。例如,用户160可选择不同的生成设计合成方法以在单个3d模型内的相应的不同设计空间内使用。[0080]其他设计变量可包括用于数值模拟的设置,例如,fea模型中的元素的密度或将与生成设计的零件的拓扑优化的3d形状一起使用的所选择的晶格拓扑的均质化晶格材料表示。设计变量可包括各种设计目标和约束,诸如本文档中所描述的设计目标和约束。此外,例如可由一个或多个cad程序116提供协助用户指定设计变量的功能。例如,晶格推荐器可使用单一固体模拟针对给定问题提供对合适的晶格设定的预测。在一些实现方式中,使用在2017年4月26日提交的名为“methodandsystemforgeneratinglatticerecommendationsincomputeraideddesignapplications”的pct公布号wo2017/186786a1中描述的晶格推荐器,其以引用的方式并入本文。[0081]在指定生成设计变量的情况下,例如由一个或多个cad程序116使用一个或多个生成设计过程(例如,使用一种或多种所选择的生成设计合成方法)来产生185一个或多个3d模型。在一些实现方式中,一个或多个生成设计过程可使用所描述的水平集方法,其中来自方程1、2和3的s表示使用一个或多个水平集隐式地表示的固体区域的边界,所述一个或多个水平集是在笛卡尔背景栅格上计算的有符号距离值。在基于水平集的拓扑优化方法中,结构的外部形状由一维高阶水平集函数表示,并且形状和构型的变化由水平集函数值的变化替代,以便获得最优结构。水平集函数是指以下这样的函数:指示设定初始结构的设计域的每个部分是对应于形成结构并被材料占据的材料域(材料相),形成空隙的空隙域(空隙相),还是对应于这两个域之间的边界,其中表示材料域的值与表示空隙域的值之间的预定值表示材料域与空隙域之间的边界。[0082]在使用基于水平集的拓扑优化方法的一些实现方式中,使用一个或多个八叉树数据结构来准确地解析几何图形。基于水平集的拓扑优化通常涉及使用形状导数来优化设计域的形状,所述形状导数是相对于形状的约束最小化问题的导数。将形状变化应用于水平集,这允许在形状修改期间实现拓扑变化。这种类型的生成设计过程的结果是将设计空间划分为固体和空隙区域,从而产生优化的形状,通常伴有拓扑变化。对于这种类型的基于水平集的拓扑优化,以及关于本文档中描述的这种类型的基于水平集的拓扑优化的变型,可使用以下方法中的一种或多种。[0083]线性弹性拓扑优化[0084]考虑在域ω下的固体的线性弹性边界值问题:[0085]在ω中ꢀꢀ(4)[0086]u=0在γd上ꢀꢀ(5)[0087]在γn上ꢀꢀꢀꢀ(6)[0088]其中∈(u)是线性应变张量,d是四阶本构张量,u是位移向量,f是外部载荷向量,并且t是在向外法线n下在纽曼(neumann)边界γn上的规定牵引力。为简单起见,可针对γd假设齐次狄利克雷(dirichlet)边界条件。约束拓扑优化问题之后可为[0089]最小化j(ω,u)ꢀꢀꢀ(7)[0090]受制于在ω中ꢀꢀꢀꢀ(8)[0091]u=0在γn上ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(9)[0092]d∈(u)n=t在γn上ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(10)[0093]其中顺应度最小化可用作目标函数[0094][0095]图2a示出了初始设计构型与当前设计构型之间的几何图形映射240的实例的图形表示。拓扑优化中的解空间可通过设计空间内几何形状的不同扰动来定义。在此背景下,可定义将给定域246ωω映射到扰动域248ωt中的线性映射242。在此映射下,具有坐标x∈ω的材料点可被映射244到以下项上[0096]xt=x+tδv,t≥0ꢀꢀ(12)[0097]其中δv是规定的常数向量场,并且t是标量参数(参见图2a)。应注意,使用基于梯度的数学规划方法求解方程涉及使用目标函数在速度场δv的方向上的方向导数[0098][0099]可使用多于一种方法来获得目标函数的方向导数,以用于基于梯度的优化方法中。适合于与基于梯度的优化方法一起使用的方法包括直接微分、半分析导数、伴随方法和有限差分。此外,下文结合图4a至图4f详细地描述了获得目标函数的方向导数的值的另外的方法,包括近似技术。[0100]伴随方法[0101]评估形状导数(方程13)可能需要状态变量u在速度向量δv的方向上的方向导数。这可通过使用以下链式法则来看出[0102][0103]但是在一些实现方式中,可使用伴随方法,所述伴随方法涉及拉格朗日量(lagrangian)l(ω,u,λ)的形成,所述拉格朗日量取决于域形状ω、位移场u和拉格朗日参数λ[0104][0105]拉格朗日量的平稳条件(即,δl(ω,u,λ)=0)可产生一整套的形状优化方程。例如,可通过考虑拉格朗日量相对于位移u的变化来给出顺应度最小化(方程11)的伴随问题。在引入成本函数(方程11)并如下利用散度定理重新表述域项之后[0106][0107]称为伴随问题的对应的边界值问题可变为[0108]在ω中ꢀꢀ(7)[0109]λ=0在γd中ꢀꢀ(18)[0110]在γn中ꢀꢀꢀꢀꢀꢀ(19)[0111]这可导致确定λ=-u是伴随问题的解。这意味着伴随问题(方程17-19)不需要明确针对顺应度最小化问题(方程11)进行求解。此类问题称为自伴随问题,其中直接问题的解也会产生伴随解。然而,这种情况并不常见,并且可能需要根据直接问题的性质和目标函数来对不同的伴随问题进行求解。原样使用拉格朗日量的优点包括恒等式:[0112][0113]此方程可使得形状导数(方程13)能够被表述为以下形式的边界积分:[0114][0115]在不失去一般性的情况下,可假设一些边界变化与实际形状优化无关。在固体力学中,边界变化通常可具有以下形式:[0116]δv=0在γd上ꢀꢀ(22)[0117]δv=0在γn上其中[0118]δv≠0在γn上其中σn=0。[0119]这意味着,在形状优化期间,边界γn中只有没有牵引力的部分可自由移动。在此背景下,在结构顺应度(方程11)作为成本函数的情况下拉格朗日量(方程15)在方向上的变型可变为:[0120][0121]在不限制方程22中所述的δv的情况下,拉格朗日量的变型可另外包含若干项。在形状的迭代优化期间,形状导数(方程23)可用作梯度信息。为了实现目标函数的最大限度的减小,可如下选择边界扰动[0122]δv=-(2u·f-d∈(u):∈(u))。ꢀꢀ(24)[0123]这种边界扰动可沿着法线的方向进行应用,其中v是形状变化速度并且由以下项给出[0124][0125]体积控制[0126]仅使用顺应度最小化目标(方程11)的拓扑优化可产生覆盖整个设计空间的最优拓扑。因此,通常需要某种形式的体积约束。此外,在一些实现方式中,在拓扑优化期间对体积变化的控制出于以下若干原因可能非常重要:1)强制执行体积约束;2)提供用户对拓扑优化进程的控制,例如,在初始迭代期间体积变化较多,而在后期迭代期间体积变化较少;以及3)确保满足不具有形状导数的任意约束。[0127]应注意,针对约束的形状导数的存在可能需要修改方程25中的形状变化速度。可考虑修改后的目标函数,其中体积受到以下项中的惩罚参数μ的惩罚:[0128][0129]对应的形状导数(方程25)则可由以下项给出:[0130][0131]其中μ是沿着边界的常数。形状导数(方程25)中的速度项现在可具有如下附加项:[0132]v=-(2u·f-d∈(u):∈(u)+μ)ꢀꢀꢀꢀ(28)[0133]增广拉格朗日方法[0134]在一些实现方式中,使用增广拉格朗日方法。一些方法(参见上文的体积控制)可能具有局限性,诸如存在关于满足规定的体积目标的难题。实质上,设计的最终体积可取决于方程26中规定的μ的值。在此类情况下,可通过使用增广拉格朗日方法来达成满足规定的设计约束目标。在最终体积目标为vf(ω)的情况下,针对顺应度最小化来考虑以下拉格朗日量:[0135][0136]形状导数则可由以下项给出:[0137][0138]其中惩罚参数λ,μ可按递增序列更新,使得它们收敛于最优拉格朗日乘子。在一些实现方式中,使用一种或多种启发式方法来更新惩罚参数。[0139]贴体求解器[0140]在一些实现方式中,使用一个或多个基于贴体网格的求解器。使用此类基于贴体网格的求解器与水平集方法涉及将数据从固体网格映射到笛卡尔栅格(应注意,由于笛卡尔栅格的结构化性质,逆映射是微不足道的)。这涉及如图2b所示的两个映射,该图示出了从固体网格262到水平集栅格264的数据映射260的实例的图形表示。[0141]固体网格元素中的数据(例如,应变能、vonmises应力)可首先映射到固体网格节点。这种映射可通过数据平均来实现。例如,通过对在固体节点nj处固体网格262中的固体网格元素ei数据进行平均来进行。此外,可使用线性形状函数将固体网格节点中的数据映射到体素栅格点。固体网格节点nj处的数据可线性地插值到水平集栅格264中的水平集栅格点gi。具有这种映射可允许水平集方法与利用贴体求解器求解的复杂fea模型一起使用。[0142]现在描述宏观结构拓扑优化过程的详细实例。为了简单呈现,顺应度最小化问题与惩罚体积(方程26)一起使用。此外,对于以下所有详细实例,为了便于呈现,假定fea用于数值模拟,但是也可使用上述其他数值模拟类型。[0143]起始形状可简单地为设计空间或设计空间与合适的种子几何图形的相交形状。可通过将起始形状转换为带符号的距离场(sdf)来创建初始水平集ψ0。可使用openvdb工具包的实现方式来完成转换。其他方法也是可能的。接着,可迭代地优化形状,直到目标函数已经收敛为止。用于模拟的fea模型包括正被优化的生成设计空间的一个或多个固体区域全体中的固体元素。在每次迭代中,fea模型中的每个元素e的本构模型d可通过根据元素相对于当前水平集的相对位置改变弹性模量来更新。例如,在水平集之外的元素(称为空隙元素)被赋予非常低的刚度dv,而在内部的元素的本构模型被设定为原始固体材料的刚度ds。这可通过检查元素节点的平均水平集来实现:[0144][0145]其中nj表示元素节点的坐标。一旦fea模型与由水平集表示的当前几何图形保持同步,就可对边界值问题(方程4-6)进行求解以便计算平流速度。可通过使用例如汉密尔顿-雅可比(hamilton-jacobi)方程对水平集ψ进行平流来应用形状变化:[0146][0147]其中v是形状导数(方程28)。应注意,可使用一种或多种启发式形状更新方法,并且考虑到由形状导数指定的移动方向,可使用移动水平集的第0个等值轮廓线的一种或多种方法。fea节点与水平集栅格点之间的线性映射(参见上文的贴体求解器)可允许将fea结果,例如d∈(u):∈(u)转移到计算平流速度v的水平集。[0148]一旦目标函数已经收敛,就可使用提取ψ的第0个等值轮廓线的轮廓成形方法来提取最终的水平集的曲面。算法的实例如下:[0149]用于基于水平集的拓扑优化的水平集算法[0150]输入:(ω,dv,ds,μ)[0151]输出:(ωs)[0152]//从设计空间启动水平集ψ[0153]1:ψ0=fsdf(ω)[0154]//一直迭代,直到满足收敛公差c为止[0155]2:i=0[0156]3:whilei=0or|ji-ji-1|>cdo[0157]//将fea元素的本构模型设定为空隙dv或固体ds[0158]4:[0159]//公式化并求解fea问题[0160]5.[0161]6.u-k-1f[0162]//计算平流速度[0163]7:[0164]//求解汉密尔顿-雅可比方程并且获得新的水平集ψi+1[0165]8:[0166]9:ψi+1←ψi[0167]//计算目标[0168]10:[0169]//增量迭代[0170]11:i←i+1[0171]12:endwhile[0172]//获得最终的水平集作为固体区域[0173]13:[0174]应注意,针对任意目标和约束推广此算法可能需要修改,诸如以下修改。在第6条中,应当解决计算每个目标和约束的形状导数所需的任何伴随问题(参见上文的伴随方法)。在第7条中,应当使用增广拉格朗日方法(参见上文的增广拉格朗日方法)来组合不同的形状导数以产生单个平流速度。大体上有关对生成设计过程实现这些修改的另外的细节,请参见下文的用于受约束的形状优化的增广拉格朗日算法。[0175]几何图形[0176]假设∑是欧几里得空间中的平滑的水密性有向曲面,其中法向量场n∑指向∑之外的“自由空间”的方向。可通过在负法线方向上使固体对象“加厚”而从∑中创建出固体对象。即:可选择小的来定义[0177]ωh:={x-sn∑(x):对于所有x∈[0,h]}ꢀꢀꢀꢀ(33)[0178]直白地说,ωh由夹在∑与在负法线方向上从∑偏移距离h的偏移部之间的所有点组成,所述偏移部表示为[0179]σh:={x-hn∑(x):对于所有x∈∑}ꢀꢀ(34)[0180]ωh的边界由两个不相交的曲面组成:∑自身和偏移曲面∑h。[0181]应注意,通常称为的“向外”单位法向量场(其从由ωh定义的固体材料内部指向固体材料外部)等于∑上的n∑,但是与在∑h上的n∑在相反的方向上指向。其在y∈∑h处的精确公式是-n∑(proj∑(y)),其中proj∑是将点y带到其在∑上的最近点的映射-因此,例如,如果已知y=x-hn∑(x)并且h足够小,则proj∑(y)=x.[0182]几何图形的变形[0183]∑可被允许变形。变形可由曲面法线速度函数生成,所述曲面法线速度函数可表示为θ⊥:这种变形可以多种方式实现:例如,将∑表示为函数在背景欧几里得空间上的零水平集,并且相对于θ⊥(的扩展)使用平流。所述方法可等同于变形中的一阶变形。重要的是ε自身的无穷小变型,这正是曲面法线速度函数。∑的任何变形都将具有变形的“量值”的概念,这是正的标量ε。例如,如果变形是由平流生成,则变形的量值对应于平流时间。变形的曲面可由∑ε表示。[0184]一旦∑变形,∑h就也会变形。它以一种方式简单地“拖动”,使得偏移距离h维持在σε与∑h的变形型式之间。因此,加厚的对象ωh的变形完全由∑的变形决定。应注意,可显示出,∑h在点y∈∑h处的无穷小变型正好是-θ⊥(proj∑(y)),其中proj∑是将点y带到其在∑上的最近点的映射。[0185]通过最速下降进行优化[0186]可使用最速下降方法为某一目标函数:曲面→找到最优∑。这是基于形状泰勒公式,所述公式表明∑相对于由上述某一生成的变型而变化量值ε满足[0187]φ(∑ε)≈φ(∑)+εdφ∑(θ⊥)ꢀꢀ(35)[0188]这是对于足够小的ε来说的,其中dφ∑(φ⊥)将φ在∑处的形状导数符号化。[0189]在θ⊥的方面使用形状导数公式,可选择特定的θ⊥,使得形状泰勒公式中的形状导数项保证为负。因此,如果∑相对于这个选择的θ⊥发生至少足够小的ε变化,则目标函数将减小。在通过执行变型(例如,通过对表示∑的水平集函数进行平流)更新∑之后,更新的形状表示相对于目标函数的改进。为了实现进一步改进,可迭代地重复该程序,直到出现收敛为止。[0190]某一类目标函数的形状导数[0191]考虑以下形式的目标函数。假设φ0:是某一“体积”形状函数(例如,可对体积域进行评估的形状函数),诸如平均结构顺应度相对于一组载荷状况和总质量的凸线性组合。这允许通过以下项来定义“曲面”形状函数[0192]φ(σ):=φ0(ωh)ꢀꢀ(36)[0193]可假设已知知晓如何计算φ0在任意域ω处以及相对于ω的任意变型ω∈的形状导数,所述任意变型是由边界法线速度函数相对于ω的向外单位法向量场生成的。也就是说,φ0可为标准的,这意味着形状导数满足hadamard-zolésio结构定理,并且对于足够小的ε提供以下公式[0194]φ0(ωε)≈φ0(ω)+εdφ0,ω(θ⊥)[0195]其中[0196]ω的函数gω称为φ0在形状ω下的形状梯度。gω的确切形式取决于φ0并且可通过例如针对平均结构顺应度和体积计算导数而算出来。[0197]φ的形状导数可以φ0的形状导数表述。这可通过几乎完全利用φ0的形状导数的以上公式(应用于ωh),并考虑到边界法线速度在构成的两个不相交的曲面上的性质来完成。即:∑可具有边界法线速度v⊥:=θ⊥,而∑h可具有边界法线速度然后,φ在∑的由法线速度函数θ⊥生成的变型∑ε下的一阶变化由以下项给出[0198][0199]因此,期望的形状导数公式为[0200][0201]应注意,y可简单地用作∑h上的虚拟积分变量以强调两个积分是在不同的空间上,并且无法以任何简单的方式先验地组合。[0202]提取下降方向[0203]回想一下,形状导数的精确公式的效用是,它应当允许以一种方式选择θ⊥,使得形状导数变为负,从而导致目标函数根据形状泰勒公式降低到一阶。然而,对于上文计算的φ的形状导数,如何达到这一点还不是很清楚。这归因于以下事实:存在两个竞争项(例如,在∑上的积分和在∑h上的积分),并且考虑到θ⊥,并不清楚这些竞争项如何达到平衡。[0204]有两种方式可以继续进行下去。第一种方式是应用提取下降方向的希尔伯特空间(hilbertspace)方法。第二种方式是将变量变换应用于∑h上的积分,从而允许其表述为∑上的积分。这很简单:回想一下,任何点y∈∑h都可以y=x-hn∑(x)形式书写;就我们现在的目的而言,这应当被视为从∑到∑h的映射。将此映射称为n:∑→∑h,其中n(x):=x-hn∑(x))。因此通过用于曲面积分的变量变换公式[0205][0206]其中jac是n的雅可比行列式(jacobian),并且基于以下事实:对于所有x∈∑,proj∑(x-hn∑(x))=x。[0207]结果证明,可确定n的雅可比行列式。在一定程度上借助于微分几何的情况下,可显示出jac(x)=1+hh∑(x)+h2k∑(x),其中h∑是∑的平均曲率,并且k∑是∑的高斯曲率,从而提供[0208][0209]对dφ∑(θ⊥)的这种操纵为φ在∑处的形状梯度提供了良好公式,表示为[0210][0211]因此,θ⊥=-g∑的选择使得dφ∑(θ⊥)为负,这是朝向φ的最优性更新∑的最速下降程序所需的。[0212]用于受约束的形状优化的增广拉格朗日算法[0213]介绍[0214]可开发解决受约束的形状优化问题的算法,其中受制于等式和不等式约束的混合的形状函数将被最小化(例如,体积或顺应度)。这些约束可使用形状函数(例如,目标体积、聚合应力度量或聚合位移度量)。可使用不同的算法来处理非聚合(也称为逐点)约束,诸如在形状的每个点处的应力的范数。一般而言,优化问题可为以下形式:对于在ω中满足线性弹性pde的uω[0215][0216]受制于ge(ω,uω)=0ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(46)[0217]gi(ω,uω)=0ꢀꢀꢀꢀ(47)[0218]其中adm是一组可接受的形状,f是带标量值的形状可微分的形状函数,并且ge和gi是带向量值的形状可微分的形状函数,所述形状函数可显式地取决于形状,或通过其在载荷下的弹性响应而隐式地取决于形状。[0219]经典的增广拉格朗日算法[0220]等式约束[0221]在优化向量变量的标量函数的经典设定中的增广拉格朗日方法可最简单地应用于以下形式的受等式约束的优化问题[0222][0223]受制于gi(x)=0,对于i=1,...,kꢀꢀ(48)[0224]增广拉格朗日方法是所谓的惩罚方法的增强方法。惩罚方法考虑了惩罚目标函数和趋于无穷大的序列c:=ck。然后,可定义对于任何i都决不会是gi(xk)=0的情况。但是由于c值的递增序列会对约束进行越来越严重的惩罚,因此可预期xk最终会满足约束,在这种意义上,如果xk收敛于x*,则对于所有i都满足gi(x*)=0。另外,可预期x*是方程48的解。[0225]惩罚方法的问题是,由于病态条件数(poorconditioning),c值的递增序列会使得lc(x)在数值上最小化变得越来越困难。增广拉格朗日方法可补救这个问题。此算法最小化了“增广拉格朗日量”[0226][0227]并且还维护一系列拉格朗日乘子μk和递增的惩罚参数ck。再次,可定义这些序列以一种方式更新,使得ck稳定在某一大而有限的值上(因此避免了一般惩罚方法固有的病态性)。这在以下情况下发生:xk收敛于方程48的解x*(因此它是最优且可行的)并且μk收敛于在kkt条件下关联到x*的拉格朗日乘子μ*。由于增广拉格朗日方法在原始变量x和“对偶”变量μ两者上进行迭代,因此这个算法是原始-对偶优化方法的实例。[0228]增广拉格朗日算法的通用框架可能需要增加惩罚参数的方法和收紧公差的方法。[0229]1.选择最终公差t最终。[0230]2.设定k=0开始于初始公差c0、μ0开始于受到比t最终更少约束的初始公差t0。[0231]3.当没有收敛于公差t最终内时:[0232]a.将无约束优化算法应用于问题当实现收敛于公差tk内时停止算法。在此收敛水平上将xk+1输出为x值。[0233]b.检查约束满足[0234](i)如果在公差tk内不满足约束,则假设ck+1:=increase(ck)并且μk+1:=μk。[0235](ii)如果在公差tk内满足约束,则根据更新拉格朗日乘子。[0236]c.设定公差tk+1:=tighten(tk)。[0237]d.递增k。[0238]应注意以上算法的特征,所述特征为拉格朗日乘子的更新。可如下进行理解。增广拉格朗日量在迭代k处的无约束最小值满足或[0239][0240]当然,受等式约束的优化方程48的解x*和拉格朗日乘子满足[0241][0242]gi(x*)=0对于i=1,...,kꢀꢀ(52)[0243]在增广拉格朗日算法中,由于期望确保迭代xk收敛于x*,因此期望能使和gi(xk)→0与此目标相一致。因此,拉格朗日乘子更新可解释为呈形式的定点迭代方案来实现这一点。[0244]不等式约束[0245]经典的受等式约束的增广拉格朗日算法到经典的受不等式约束的情况的巧妙扩展可取决于两个事实。对于事实1,问题[0246][0247]等同于以下问题[0248][0249]方程54中的新的z变量称为松弛变量,并且在可行最优值处满足其中x*是方程53的可行最优值。[0250]对于事实2,方程54的增广拉格朗日量是[0251][0252]并且增广拉格朗日算法中出现的无约束优化可被分解并部分求解如下:[0253][0254]其引入了这是因为可使用初等微积分技术显式地在上执行最小化,并且根据函数对结果进行表述。[0255]结果是,可通过将增广拉格朗日算法(参见上文的等式约束)应用于修改后的拉格朗日函数来求解受不等式约束的方程53[0256][0257]其梯度(经过某一操纵)是[0258][0259]应注意,出于完整性,对z变量的最小化的解出现在方程56中。代入这个解产生方程57。为简单起见,对z变量的最小化改写为以下形式[0260][0261]其中a、b、s是固定参数,其可如下求解。[0262]第一步骤是代入y:=z2并且用替代以上最小化问题。这个新的问题现在非常简单,因为函数φ(y):=a(s+y)+b(s+y)2是简单的抛物线,并且问题找出这个抛物线的被约束于区域y≥0的最小值。因此,全局约束最小值是在φ的全局无约束最小值处或者在约束区域的y=0边界处,无论在哪处都是较小的。这导致y*=-a/2b-s,或者y*=0;从中选择φ*:=φ(y*)达到最小的结果。因此,在代数重排之后为[0263]φ*=min{φ(0),φ(-a/2b-s)}[0264][0265]利用s=gi(x)以及a=μi和=c/2,获得方程57。[0266]对受约束的形状优化问题的应用[0267]为简单起见,可应用增广拉格朗日算法来对具有一个标量等式约束和一个标量不等式约束的方程45-47进行求解。然后,ω∈adm可被解释为表示ω满足以下形式的可容许性约束。每个ω∈adm的曲面含有预定义端口;每个ω∈adm含有预定义保留区域;并且每个ω∈adm避开预定义禁入区域。[0268]经典的增广拉格朗日算法(参见以上等式约束)可针对等式约束和不等式约束两者进行模拟,但是可适合于满足可容许性约束的形状。增广拉格朗日量被定义为[0269][0270]其中为简单起见,并未指示f、ge、gi对线性弹性pde的μω的解的依赖性。为了仅考虑作为形状依赖量的曲面或体积积分的形状函数,从一般原则已知的是,这种类型的函数l的在给定形状ω下评估的形状梯度是的表示为dl(ω):的标量值函数。增广拉格朗日量在形状ω下的形状梯度是[0271]dlc(ω,μe,μi)=df(ω)+(μe+cge(ω))dge(ω)+max{0,μi+cgi(ω)}dgi(ω)ꢀꢀ(63)[0272]其中df(ω)、dge(ω)、dgi(ω)分别是目标函数和约束函数在形状ω下的形状梯度。[0273]从一般原则还已知的是,更新形状ω以减小lc的值同时维持可容许性约束可通过以下方式来达成:相对于由lc的形状梯度(例如,lc的形状梯度在检测到违反可容许性时可适当地归零,并且使用adalsteinsson-sethian速度扩展算法来将dlc(ω)的值从θω扩展到θω的窄带)的投影扩展构成的速度函数将表示ω的水平集函数平流特定时间(经由线性搜索或相关程序确定)。这是在c、μe、μi的任何固定值处对问题minω∈admlc(ω,μe,μi)进行求解的无约束的基于梯度的形状优化算法的基础。[0274]现在可如下给出用于求解方程45-47的增广拉格朗日算法。所述算法需要增加惩罚参数的方法和收紧公差的方法。[0275]1.选择最终公差t最终[0276]2.设定k=0。开始于初始c0、开始于比t最终更少限制的初始公差t0。[0277]3.初始化形状ω0。[0278]4.当没有收敛于公差t最终内时:[0279]a.将无约束的基于梯度的形状优化算法应用于问题直到收敛于公差tk内。在此收敛水平上输出形状ωk+1[0280]b.检查约束满足。[0281](i)如果在公差tk内不满足约束,则根据和和假设ck+1:=increase(ck)乘子。[0282](ii)如果在公差tk内满足约束,则根据和更新拉格朗日乘子。[0283]c.设定公差tk+1:=tighten(tk)。[0284]d.递增k。[0285]平流前操作[0286]在一些实现方式中,在对形状平流之前对速度场执行一个或多个操作,包括(1)窄带速度限制,(2)使用平流掩模进行平流预防,和/或(3)速度扩展。对于这些中的第一种情况,窄带速度限制涉及将速度限制于水平集的第0个等值轮廓线周围的窄带。对于第二种情况,平流掩模在端口(包含纽曼和狄利克雷边界条件的几何界面)内部具有值0,并且在域中的其他位置具有值1。将形状导数和平流速度乘以平流掩模来防止端口内部的任何平流。关于这些中的第三种情况,速度场在水平集的第0个等值轮廓线的正反两侧上应当是连续的。然而,目标函数(通常是应变能)往往仅在负窄带内部可用。速度扩展将域内部的所有速度投射到正窄带。这可通过以下方式来完成:对所述域内部的通过沿着负法线移动等于水平集的距离找到的点处的速度进行采样:[0287][0288]在图2c至图2e中示出了第一操作和第三操作的实例。[0289]图2c是基于水平集的拓扑优化过程的问题设置200的实例。问题设置200意图生成车辆的挂架,其中相对于将生成的挂架的端口204(也称为保留几何图形或保留子空间)指定设计空间202。在图2d和图2e中也示出了图2c中透视地示出的横截面x。图2d示出了窄带速度210。窄带中的体素的数量由wnb表示,并且δs表示体素的大小。图2e示出了速度扩展相对于水平集的第0个等值轮廓线214的效果212。[0290]以上方法可与各种类型的基于水平集的拓扑优化一起使用,所述基于水平集的拓扑优化将在下文结合图3a至图8c进行进一步描述。返回到图1b,本文档中描述的所有生成设计过程可例如在一个或多个cad程序116中实现,以提供以下两者:(1)提供对生成设计过程的实质性用户控制,以及对生成设计输出的后处理以形成对象的最终的可接受的3d模型,以及(2)提供用于以下项的控制功能:提供生成设计的3d模型以用于制造对应于对象的物理结构。因此,可例如在显示装置120上的ui122中连同接受或拒绝设计的选项190一起向用户呈现生成设计处理的结果。[0291]如果设计被拒绝,则图1b的过程可返回来例如由一个或多个cad程序116获得180一个或多个新的设计变量以用于产生新的生成3d模型。例如,新的设计变量可包括选择180不同的空隙添加和/或去除技术以在形状优化期间改变三维形状的拓扑。例如,在使用基于水平集的拓扑优化方法的实现方式中,可在结构优化的过程期间基于目标函数的拓扑导数而将一个或多个空隙引入到材料域中,以允许改变拓扑(改变构型),诸如将孔引入材料域中。下文结合图3a描述了关于空隙引入技术的一个或多个实例的另外的细节。此外,所获得180的一个或多个设计变量可包括本文档中描述的可影响生成设计过程的所有不同的用户输入。[0292]一旦设计不被拒绝190,图1b的过程就可例如由一个或多个cad程序116提供1953d模型以用于使用一个或多个计算机控制的制造系统(例如,am机器170、sm机器174和/或其他制造机器)来制造对应于对象的物理结构。提供195可涉及将3d模型发送或保存到持久性存储装置以用于使用一个或多个计算机控制的制造系统来制造对应于对象的物理结构。在一些实现方式中,提供195涉及例如由一个或多个cad程序116生成195a一个或多个计算机控制的制造系统使用3d模型的工具路径规范,并且例如通过一个或多个cad程序116经由一个或多个计算机控制的制造系统使用针对增材制造机器生成的工具路径规范来制造195b对应于对象的物理结构的至少一部分。[0293]应注意到,所提供195的3d模型可为通过生成设计合成方法产生185的3d模型或生成设计输出的处理后版本。例如,在一些实现方式中,可在提供195之前将通过生成设计合成方法产生的3d网格模型转换为水密性b-rep3d模型。在一些实现方式中,生成设计输出可使用2018年11月9日提交且名为“conversionofgenerativedesigngeometrytoeditableandwatertightboundaryrepresentationincomputeraideddesign”的美国专利申请号62/758,053中描述的系统和技术来进行后处理,所述系统和技术被包括在2021年5月25日发布的美国专利号11,016,470中,所述专利要求美国专利申请号62/758,053的优先权并且名为“conversionofmeshgeometrytowatertightboundaryrepresentation”。此外,在一些实现方式中,经过后处理的生成设计输出可使用2018年11月9日提交的于2019年11月5日作为美国专利号10,467,807发布且名为“facilitatededitingofgenerativedesigngeometryincomputeraideddesignuserinterface”的美国申请号16/186,136中描述的系统和技术来进行编辑。此外,下文结合图3a至图8c描述的生成设计过程也可被实现来使用上文描述的后处理、编辑和/或提供195系统和技术。最终,虽然在由cad程序提供关于生成设计的多个选项的背景下进行描述,但是本文档中描述的生成设计过程中的每一者都可被实现为cad程序中的独立式生成设计过程。因此,并不是下文结合图3a至图8c描述的所有生成设计过程都需要一起以任何给定的实现方式实现。[0294]图3a示出了如下文结合图3a至图8c进一步详细地描述的使用一个或多个生成设计过程生成将制造的对象的3d模型的一个或多个部分的过程(例如,如由图1a的一个或多个cad程序116执行)的实例。图3a的过程是图1b中的所定义的过程185的实例。识别设计空间、用于数值模拟的设置和所选择的生成设计过程的其他输入以用于启动300可与一个或多个所选择的生成设计过程一起使用的宏观结构(或几何)类型的生成模型(例如,3d模型的水平集表示)。[0295]当将使用的生成过程采用基本水平集方法来进行拓扑优化时,针对设计空间启动300水平集。应注意,水平集方法是宏观结构生成建模技术的实例,其中生成模型将被设计的对象表示为设计空间内一个或多个固体区域(其中具有均质材料)与一个或多个空隙区域(其中没有材料)之间的一个或多个边界。此外,识别输入可涉及例如经由显示装置120上的ui122接收用户输入,从另一个程序或第三方来源导入信息,和/或这些输入中的一者或多者可在给定的实现方式中预先定义。[0296]用于数值模拟的设置可包括待模拟的一个或多个物理性质和如上文所讨论的将执行的模拟的一种或多种类型,以及潜在的代理建模或其他近似方法。在一些实现方式中,针对程序的所有用途或考虑到程序中的已经启动生成设计过程所依据的特定上下文来预先定义数值模拟的类型。此外,用于数值模拟的设置包括至少一组载荷状况和/或与将执行的数值模拟的类型相关联的其他物理环境信息。[0297]设计空间可为初始3d模型或初始3d模型的一个或多个部分以用作起始几何图形。在一些情况下,设计空间可被确定为所有初始几何图形的边界体,所述边界体用于指定载荷或与将执行的数值模拟的类型相关联的其他物理环境信息。在一些情况下,设计空间可为无边界的。在一些实现方式中,将用作起始几何图形的设计空间的部分可通过遗传算法或其他过程自动地设定。例如,可将气泡状孔(例如,孔132b)置于域中并且可使用遗传算法来改变气泡大小和间距。[0298]接种和气泡方法[0299]初始接种[0300]设计空间可使用接种过程来初始化,其中设计空间通过如下所示的设计空间ω与种子几何图形ωs之间的布尔交集来定义:[0301]ω0=ω∪ωsꢀꢀꢀꢀ(64)[0302]其中ω0是在将接种几何图形ωs应用于初始设计空间ω之后所得的初始化的域。种子几何图形可具有各种不同的形状,例如气泡阵列或网格,所述不同的形状具有参数化特性,例如气泡直径和间距。参数可为用户定义的或者通过下文描述的某一接种过程(例如,气泡接种)自动地定义。[0303]初始接种可带来更有效的优化和设计变化的灵活性。例如,可定义初始接种以便避免局部极小值和重新开始优化的需求。此外,初始接种可有助于产生设计变化。在一些实现方式中,种子几何图形例如根据由先前执行的设计过程生成的最终几何图形、随机地初始化接种几何图形的随机过程、根据用户感兴趣的其他因素或前述各项的某一组合而进行用户定义。[0304]图3b示出了应用于设计空间的初始接种几何图形的实例的图形表示,以及在设计空间上执行生成设计过程之后的米歇尔类型拱问题的所得设计。接种几何图形314和316表示用于初始化设计空间的不同几何图形,并且可为用户定义的或是根据下文描述的某一接种过程,例如,气泡接种。接种几何图形316与图1a的种子模型132是相同的。最终设计318和320是在根据几何图形314和316相应地对设计空间进行接种之后通过应用相同的生成设计过程而生成的设计。最终设计320与图1a的完整结构138是相同的。所得的最终设计318和320具有不同的几何图形和不同的物理性质,例如,不同的应变能。因此,即使生成设计过程相同,接种几何图形也会对不同设计空间的最终设计产生重大影响。[0305]此外,其他输入可取决于将执行的数值模拟的类型和/或将使用的生成设计过程的类型。例如,当将在生成设计过程中使用晶格时,其他输入可包括晶格拓扑、体积分数、单位大小和厚度。可单独或组合地使用各种类型的生成设计过程,而图3a示出了所有这些不同类型的生成设计过程的代表过程。在启动300宏观结构类型生成模型之后,开始修改这个生成模型的迭代过程,以便满足物理结构的设计标准,例如,满足一个或多个设计约束并最大化一个或多个设计目标。[0306]在一种或多种定义的载荷状况下执行302当前模型(例如,3d形状的隐式曲面的水平集表示)的物理响应的数值模拟。一般而言,数值模拟302将当前模型中的每个固体区域视为均质固体材料,并且将当前模型中的每个空隙区域视为其中没有材料。然而,在一些实现方式中,可改变这种对待。例如,在混合拓扑优化中,在以下情况下执行302建模对象的数值模拟:将固体区域中的至少一部分视为其中具有至少一个空隙(例如,宏观结构生成建模技术将之视为固体,数值模拟将之视为部分地包含空隙的晶格形式)或者将空隙区域中的至少一部分视为其中具有至少一个固体(例如,宏观结构生成建模技术将之视为空隙,数值模拟将之视为部分地包含固体材料的晶格形式)。作为另一个实例,在中空拓扑优化的情况下,在以下情况下执行302建模对象的数值模拟:将固体区域中的至少一部分视为其中具有空隙(即,宏观结构生成建模技术将之视为固体,数值模拟将之视为包含中空区域)。最终,在这两者的组合中,即在混合中空拓扑优化中,在以下情况下执行302建模对象的数值模拟:将固体区域中的至少一部分视为其中具有部分空隙区域和完整空隙两者(即,宏观结构生成建模技术将之视为固体,数值模拟将之视为部分地包含环绕中空区域的晶格结构)。关于混合、中空和混合-中空拓扑优化的另外的细节,请参见2019年11月6日提交且于2020年5月14日作为wo2020/097216公布的pct/us2019/060089。[0307]使用来自模拟的结果以根据当前模型的模拟的物理响应的当前数值评估来更新304当前模型(例如,水平集表示)。例如,可在被建模的对象的3d形状的水平集表示中针对隐式曲面计算形状变化速度,并且可使用所计算的形状变化速度来更新304这个水平集表示以产生建模对象的3d形状的更新版本。应注意,在各种实现方式中,作为建模对象的3d形状的迭代修改的一部分,诸如下文结合图4a至图8c所描述,可在更新304之前、期间或之后执行其他操作。[0308]此外,为了在对象的当前模型中产生拓扑变化,可在当前模型的迭代修改中的每次修改或所选择的修改中将一个或多个空隙插入308到当前模型中。例如,可插入308具有根据当前模型确定的位置、大小和形状的一个或多个气泡。此外,在一些实现方式中,一个或多个空隙的插入308仅在迭代修改的早期部分期间进行和/或仅在迭代修改期间定期地进行(例如,以规律的空隙插入间隔进行)。在图3a的实例中,一个或多个空隙的插入仅在当前迭代小于预定义的空隙插入截止值时,而且仅在当前迭代等于空隙插入间隔时才进行。[0309]气泡法[0310]一般而言,可作为气泡法的一部分执行可选的确定306和插入308。气泡法允许从内部改变设计空间的拓扑,因为默认水平集方法仅允许从边界进行改变。使用拓扑导数来识别气泡的位置,例如使用拓扑形状敏感度方法来计算,所述拓扑形状敏感度方法使形状导数与拓扑导数相关。[0311]在一些实现方式中,在以下特征下应用气泡法:[0312]1.位置:拉格朗日量的形状导数用作拓扑导数的代理。下文相对于方程105更详细地描述了形状导数。[0313]2.频率:在每次迭代时不插入气泡。而是,根据用户定义或自动确定的间隔来插入气泡。在体积减小迭代已经完成之后不插入气泡。[0314]3.大小:在给定迭代处的所插入的气泡的大小根据当前模型体积的用户定义或自动确定的比率βb来计算:[0315]v(bt)=βbv(ωt)。ꢀꢀ(65)[0316]其中v(bt)是某一迭代t处插入的气泡的体积,并且v(ωt)是模型在迭代t处的体积。[0317]4.形状:如下所示,所插入的气泡的形状基于当前模型的元素的拓扑导数的分布而确定:[0318][0319]其中ek是当前模型在给定迭代t处的第k个元素。在一些实现方式中,优化所插入的气泡的形状,同时在多次迭代内增加所插入的气泡的总体大小。[0320]然后,将具有最低形状导数的元素的体积累加,直到达到必要的气泡体积(即,根据方程64)为止。在迭代t处生成的气泡bt的所得的形状、位置和体积因此满足以下项:[0321]bt=e1∪e2∪…∪eks.t.v(bt)=v(e1)+v(e2)+…+/(ek)ꢀꢀ(67)[0322]返回到图3a,在可选地确定306当前迭代小于空隙插入截止值并且等于空隙插入间隔之后,将一个或多个空隙插入308到当前模型中。在执行302数值模拟之前,或在启动300模型之前,可例如通过用户输入预先确定或自动地确定空隙插入截止值和空隙插入间隔。可根据气泡法(例如,上文参考方程65-67所描述的气泡法)来插入一个或多个空隙。[0323]图3c示出了在执行生成设计过程期间针对米歇尔类型拱问题的中间模型的气泡插入历史321的实例的图形表示。从在迭代0处的模型ω0322a开始,气泡迭代历史321包括:在迭代1处的模型ω1322b;在迭代10处的模型ω10322c;在迭代11处的模型ω11322d(插入了两个气泡);在迭代20处的模型ω20322e;在迭代21处的模型ω21322f(插入了一个气泡);在迭代30处的模型ω30322g;以及在迭代31处的模型ω31322h(插入了两个气泡),其中在t={0,10,20,30}处进行了气泡插入。同样在此实例中,气泡体积比βb被设定为0.05,这意味着所插入的气泡的体积各自等于当前域的体积的5%,即,与方程65一致。[0324]尽管气泡插入历史321示出了在第一次迭代之后插入气泡,但是也可在生成设计过程的第一次迭代期间插入气泡。在一些实现方式中,可执行气泡法的多个实例,其中不同的初始条件和参数带来不同的设计变化。实现所描述的技术的系统可提供设计变化的结果以供用户选择优选的变化。在一些实现方式中,所述系统可根据预定(例如,用户提供)的标准来自动地选择设计变化。[0325]返回到图3a,可在每次迭代期间对收敛进行检查310。为了确定生成设计是否收敛于稳定解,检查310可识别满足所有设计约束并且自最后一次或多次迭代以来设计目标没有显著地改进的状况。数值模拟302、更新304、任何空隙插入308和检查310过程一直迭代,直到收敛为止。此外,在一些实现方式中,一旦检查312显示已经完成预定次数的形状修改迭代,就结束迭代过程。应注意,形状修改迭代的预定次数可被设定为足够高的,使得从根本上保证将满足所有设计约束,并且使用下文参考图4a至图4h所描述的受控收敛技术,还能够从根本上保证将在预定义的迭代次数内(如果不是在此之前的话)实现收敛于任何设计目标的大体最优值。[0326]受控收敛[0327]在受控收敛技术中,在形状和拓扑优化开始时定义预定时间段或迭代次数。对于每个设计约束,为每次迭代指定更接近于约束的当前值的目标。[0328]这可带来至少两个改进。首先,用户可指定时间段或迭代次数。然后控制收敛速率以在用户指定的时间段或迭代次数内对给定问题进行求解。因此,考虑到用户在分配多少时间来生成解的方面强加的资源限制,使用受控收敛的设计过程可得出合适的解。其次,在为每个约束指定更接近于约束的当前值的目标值的过程中,可降低振荡和根本性变化的可能性。[0329]图4a示出了使用实现具有受控收敛的任意约束处理的一个或多个生成设计过程生成将制造的对象的3d模型的一个或多个部分的过程的实例。首先描述受控收敛,然后介绍任意约束处理。计算机辅助设计程序获得416制造对应的物理结构将依据的建模对象的设计空间、建模对象的一个或多个设计标准和物理结构的一种或多种使用中载荷状况,其中一个或多个设计标准包括至少一个设计约束。例如,如上文参考图3a所描述,获得416可作为启动300的一部分完成。如上文参考图3b至图3c所描述,接种技术可应用于设计空间,这可进一步改进生成设计过程。[0330]识别418迭代量。迭代量可为时间或来自用户或以其他方式计算的迭代的计数。根据迭代量和函数从初始目标值到最终目标值计算420针对至少一个设计约束的一系列目标值。[0331][0331]表示一系列约束,其中是在迭代n处的最终目标值。将迭代t中要满足的每个约束的目标值定义为[0332][0333]其中并且nd(ξ)是使用递归关系计算的d次b样条[0334][0335]其中n0(ξ)=0。[0336]尽管这种描述假设使用b样条作为计算420的函数,但是可使用任何合适的平滑函数来实现相同的结果。不同的平滑函数包括同一类别函数的不同阶,例如不同阶的b样条。平滑函数和函数的阶的选择改变了在所识别418的迭代量内如何快速地实现终结设计约束目标值。可使用的平滑函数的其他实例包括任意阶多项式、拉格朗日多项式和细分曲线。在一些实现方式中,实现所描述的技术的系统可对用户提示多个参考点,并且响应于接收到用户选择的参考点,所述系统可例如使用插值或任何适当的技术生成穿过所述点的曲线。[0337]图4b示出了分别使用b样条跟踪目标约束值的逐渐减小和增加的曲线图401a、401b的实例。在t≤nv迭代期间完成从约束的起始值到最终目标的基于b样条的转变。在迭代nv<t≤n期间维持最终目标值。在曲线图401a、401b中,约束的目标值通过以下项给出:[0338][0339]应特别注意,根据方程70,将迭代分为两个部分。在迭代小于或等于nv时,第一部分包括该第一部分中的不同迭代的不同目标值。在第二部分(即,在nv之后的部分)中,在每次迭代处的约束的目标值是最终目标值[0340]曲线图401a示出了始于起始约束值.9的约束目标nv=30,n=50,以及d=4次的b样条。曲线图401b示出了始于起始约束值.25的约束目标nv=80,n=80,以及d=3次的b样条。因此,可利用各种不同的起始和终结约束值,并利用不同的平滑函数和迭代量来实现优化方法。[0341]近似体积控制[0342]在一些实现方式中,计算420设计约束的该系列目标值包括计算生成设计的三维形状的体积分数的目标变化。一些约束可具有未良好定义、近似或根本未定义的形状梯度或形状导数。在这些情况下,可计算代理形状导数以提高准确性并且施加更多的控制。[0343]将恒定值μ用于所有优化迭代将导致收敛于最终体积,所述最终体积取决于速度v的相对量值μ,其中速度取决于边界值问题,由以下项给出:[0344][0345]u=0在γd上ꢀꢀ(72)[0346][0347]其中ω是固体的域,d是固体的四阶本构张量,u是位移向量,f是外部载荷向量,是在向外法向量n下在纽曼边界γn上的规定的牵引力。为简单起见,仅在γd上假设齐次狄利克雷边界条件。替代地,可使用变量值μt,使得在拓扑优化的迭代t期间实现体积目标vt,t。假设vt-1表示在第(t-1)次迭代之后的体积。在迭代t期间的期望的体积变化写为:[0348]δvt=vt,t-vt-1。ꢀꢀ(74)[0349]这种体积变化可近似为[0350]δvt≈t∫γa(vse+μ)dγꢀꢀ(75)[0351]其中a∈{0,1}是平流掩模并且t是求解汉密尔顿-雅可比方程中使用的时间步长。应注意,当使用较小的时间步长时,近似误差减小为零:[0352][0353]最大时间步长受限于以下柯朗-弗里德里希斯-列维(courant-friedrichs-lewy)(cfl)条件[0354][0355]其中c是常数,δs是体素大小并且|v|最大是平流速度的最大量值,由以下项给出:[0356]v=-(2u·f-d∈(u):∈(u)+μꢀꢀ(78)[0357]其中变量像它们在方程71-73中那样进行定义。[0358]假设vu、vl表示vse的边界,使得vl≤vse≤vu。最大速度量值现在由以下项给出[0359]|v|最大=vu+μ≥|ul+μ|ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(79)[0360]|v|最大=-(vl+μ)≥|uu+μ|ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(80)[0361]|v|最大=-(vu+μ)≥|ul+μ|ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(81)[0362]|v|最大=vl+μ≥|uu+μ|ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(82)[0363]将|v|最大和t的值代入方程76中得出:[0364]如果vu+μ≥|ul+μ|ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(83)[0365]如果-(vl+μ≥|uu+μ|ꢀꢀꢀꢀꢀꢀꢀꢀ(84)[0366]如果-(vu+μ≥|ul+μ|ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(85)[0367]如果vl+μ≥|uu+μ|ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(86)[0368][0369]应注意,当体力(bodyforce)项在方程78中为零(f=0)时,针对μ的不同情况的数量简化为方程83和84。这导致速度的应变能分量为正,即,vu,vl∈r+,从而导致最大速度量值受限于方程83或方程84。关于方程77中的mt的上限意味着对于任意高的体积变化δvt无法找到值。[0370]图4c示出了考虑到不同的体素大小δs,μ值随着目标体积变化δvt的示例变型的图形表示。曲线401c对应于体素大小2,曲线401d对应于体素大小3,并且曲线401e对应于体素大小4。在这些示例变型中,使用二等分算法找到μ的上限/下限。实质上,上限/下限在(0+δvt)/2处启动并且连续地迭代,直到从方程83-86中找到满足方程79-82中的对应假设的有效μ为止。可替代地,可在使用多个平流步骤时使用违反cfl条件的平流时间,即设定t=1/|v|最大并且根据以下项计算μ[0371][0372]以此方式,体积导数可用作诸如应力、疲劳安全系数、屈曲安全系数和位移等许多优化约束的代理形状导数。如下文所描述,可使用自适应控制器(包括pid控制器)来实现准确的体积控制。[0373]返回到图4a,计算机辅助设计程序根据一个或多个设计标准和物理结构的一种或多种使用中载荷状况来迭代地修改设计空间中的建模对象的生成设计的三维形状。迭代地修改包括执行422数值模拟,计算424形状变化速度,以及使用形状变化速度来更新426一个或多个水平集表示。三维形状的修改可包括3d形状的几何图形以及3d形状的拓扑两者的修改。执行422数值模拟,例如,如上文参考图3a所描述。执行422包括根据三维形状的当前型式和一种或多种使用中载荷状况来执行建模对象的数值模拟以产生建模对象的物理响应(例如,结构响应)的当前数值评估。[0374]计算424包括根据针对每个设计约束计算420的相应的一系列目标值中的相应的下一个(例如,归一化的)目标值来计算三维形状的水平集表示中的隐式曲面的形状变化速度。在一些实现方式中,所描述的技术可应用于基于密度的方法,如simp。可将目标值归一化,其技术在下文进行描述。该系列目标值开始于初始目标值并且结束于设计约束的最终目标值。如上文参考图4b和方程70所描述,在迭代的第一部分(直至nv)期间,根据平滑函数(例如,b样条)计算420目标值。当迭代地修改超过nv时,计算424中所使用的下一个目标值是相应的设计约束的最终目标值。[0375]使用包括比例积分微分(pid)控制器的自适应控制器的体积控制[0376]接着,讨论使用自适应控制器进行准确的体积控制。[0377]一般而言,自适应控制器是一种提供反馈以连续地计算期望值与测量值之间的误差值,然后对某一控制参数应用校正的技术。比例积分微分控制器(pid)控制器是一种类型的基于某一控制参数的值的比例、积分和微分项而连续地计算期望值与测量值之间的误差值的自适应控制器。可使用pid控制器来控制影响形状变化(例如,特定约束梯度的相对贡献)的不同参数。在迭代地修改期间,pid控制器的比例、积分和微分分量通过以下方式来调整以隐式地减缓或加速形状变化:响应于生成设计的三维形状的振荡而对受控参数应用不同的控制量。[0378]pid控制器的pid分量还被调整为响应于成功或失败的重复而实现测量值的第一级增加以满足测量值的归一化的下一个目标值。分量的增加和减小可使用乘子值来进行,所述乘子值是基于分量的测量值与目标值的平均偏差。例如,乘子可为1+abs(偏差)。如下文所描述,pid控制器可用于针对包括实现受控收敛的过程的优化过程的每次迭代准确地校正模型的目标体积。[0379]为方便起见,以下描述将引用由表示的体积分数以分别指示在迭代t结束时的目标体积分数和实际体积分数。[0380][0381]其中v0表示设计空间的体积。[0382]考虑到迭代n的最大次数和目标最终体积分数每次迭代的目标体积分数可使用上文参考方程68所描述的受控收敛过程来计算:[0383][0384]接着,计算μ的值(方程83-86)以实现每次迭代的这个体积目标。应注意,期望体积分数与实际体积分数之间的误差在每次过程结束时保留下来,这是由方程75中的近似引起的,从而导致在迭代t之后出现量值的误差vt,t-vt。应注意,当计算针对迭代t+1的体积变化时在方程74中已经考虑了这个误差,所述体积变化是下一次迭代的体积变化和来自先前迭代的误差的总和[0385][0386]然而,在一些情况下,这并不足以实现规定的体积目标。因此,使用pid控制器。[0387]图4d示出了在具有近似体积控制而没有自适应控制的迭代优化过程期间跟踪目标体积分数与实际体积分数的曲线图401f、401g的实例。曲线图401f示出了在体积在多次迭代内增加时在建模对象的目标体积与实际体积之间的差异。曲线图401g示出了在体积在多次迭代内减小时在建模对象的目标体积与实际体积之间的差异。在两种情况下,目标体积和实际体积都不一致,并且误差在较长的迭代内会变大,这可能会带来灾难性的结果。[0388]为了解决这个问题,可使用自适应(例如,pid)控制器来调整每次迭代的体积目标,以维持对体积变化的更好的控制。如下定义在迭代t处的体积分数(实际体积与目标体积之间)的误差:[0389][0390]迭代t的目标体积现在通过以下项来计算[0391][0392]其中kp,ki,kd∈r+是pid参数。应注意,pid控制器应用于目标体积分数变化而不是目标体积,以确保pid参数不依赖于初始域体积。除非另有说明,否则在下文使用kp=1,ki=0.1,kd=0.1。为简单起见,将在下文如下表示此类pid控制器,其中为清楚起见将舍弃下标t:[0393][0394]图4e示出了在具有pid控制(而没有自适应pid控制,如下文所描述)的迭代优化过程期间跟踪目标体积分数与实际体积分数的曲线图401h、401i的实例。曲线图401h示出了正体积情况(其中通过后续迭代向模型添加体积),而曲线图401i示出了负体积情况(其中通过后续迭代从模型减去体积)。在两种情况下,目标体积和实际体积紧密相随,其中误差小于在没有pid控制器的情况下执行的相同优化,如上文参考图4d所描述。[0395]这个过程的最终结果是基于控制参数δvt的变化而对响应参数施加控制。此外,使用pid控制器的体积控制和一般的自适应控制器技术可与本文档中描述的所有其他系统和技术结合应用,包括用于处理下文描述的任意等式和不等式约束,并且与结合图5a至图8c所描述的各种其他形状和拓扑优化技术结合应用。[0396]自适应pid调谐[0397]在一些实现方式中,为了提供对广泛范围的设计问题的良好控制,自适应(例如,pid)控制器中的kp、ki、kd参数响应于控制器行为而通过应用乘子来修改,所述乘子等于迭代结果与目标的平均偏差。受监测的三个关键的控制器状态可为:[0398]振荡:振荡被定义为在所观察的时间段期间,存在多于2对连续成功和失败时发生。[0399]重复失败或成功:如果成功或失败出现在等于指定的最大迭代的某个预定阈值(例如,10%)的迭代次数内,则认为成功或失败是重复的。[0400]重复过多失败或成功:如果成功或失败与目标之间的相对误差超过预定阈值,例如10%,则认为成功或失败是过多的。[0401]pid控制理论表明,积分项应当用于减少系统误差,而微分项应当用于抑制振荡。比例项指导收敛速度。实际上,往往发现微分项会很难调整,并且事实上会导致振荡行为(一种称为“微分冲击”的现象)。[0402]图4f示出了自适应地修改pid控制器的参数值的过程的实例。如果确定有振荡402,则减小比例项和积分项。如果微分项当前处于零,则将微分项设定为比例项的某一百分比;在其他情况下还是减小微分项404。这些改变的目标是减缓体积变化。如果确定有重复成功或失败406,则增加比例项,减小积分项,并且将微分项设定为零408。这些改变的目标是略微增加体积变化以消除小的系统误差。如果确定有过多重复的失败或成功410,则比例项不受影响,增加积分项,并且将微分项设定为零412。在这种情况下的目标是与显著的系统误差成比例地增加体积变化。[0403]为了使新调整的参数生效,可在调整之后的设定的迭代次数内应用正常状态。类似地,可修改在确定控制器状态时所考虑的时段以避免过度补偿。在一些实现方式中,允许设计问题在初始优化阶段中快速地收敛。因此,在该间隔期间,仅适应振荡状态,而所有其他状态都被自适应过程有效地忽略。[0404]因而,返回到图4a,作为计算424的一部分,自适应控制器(例如,pid控制器)的比例、积分和微分分量还可被调整为响应于成功或失败的重复相对于下一个(例如,归一化的)目标值的相对误差超过阈值而实现形状变化的第二级增加。在此实例中,形状变化的第二级增加大于形状变化的第一级增加。[0405]自适应控制器也可使用任何适当的机器学习技术来实现以响应于一个或多个输入而预测控制参数的变化。例如,控制器可被实现为具有多个神经网络层的神经网络。神经网络可包括接收一个或多个输入的输入层,以及响应于输入而输出对控制参数的改变的输出层。神经网络可包括在输入层与输出层之间的一个或多个隐藏层,每个隐藏层将一个或多个非线性函数应用于该层处的接收到的输入,其中根据学习的参数值对函数进行加权。[0406]可根据任何适当的监督式学习技术来训练被实现为神经网络的自适应控制器。在监督式学习的情况下,可在训练数据集上训练控制器,所述训练数据集包括pid控制器的输入,所述输入与约束值响应于输入而发生的比例、积分和微分变化的输出变化成对。训练数据可包括由pid控制器生成的所有输入-输出对的子集,例如,前n次迭代,其中n是某一预定义值。例如,可通过添加随机振荡或其他变化来进一步修改训练数据。[0407]如下文参考任意等式和不等式约束所描述,可针对每个约束实现单独的自适应控制器。在一些实现方式中,自适应控制器可被实现为神经网络或其他机器学习模型,其接收由每个pid控制器生成的约束变化作为输入,并且生成考虑到所有约束的最终体积变化作为输出。在使用单个机器学习模型的实现方式中,用于训练模型的训练数据可包括多次迭代内的有或没有随机扰动的如上文所描述的输入-输出对的子集。[0408]除了比例项、积分项和微分项之外,还可根据附加输入来训练自适应控制器以生成约束值或最终体积变化。例如,附加输入可来自拓扑优化过程,诸如从正在设计的零件的当前形状提取的特征,或所述零件的当前应力、应变和位移结果的特征。自适应控制器可接收这些附加输入来学习参数值以生成更准确的控制值或最终形状变化并且进一步稳定优化过程。[0409]可响应于新的测试用例和设计要求而进一步训练自适应控制器。附加训练可离线地、实时地或以这两者的组合完成。例如,如果特定优化任务未收敛或者不稳定,可针对所有测试用例但针对不同的控制器设定运行优化过程的多个实例,所述不同的控制器设定例如为对机器学习模型进行加权的不同的模型参数值、不同的超参数值(例如,学习速率、批量大小等)或两者。例如根据某一性能度量具有最佳性能的实例的设定可用于自适应控制器和对应的优化过程中以产生最终设计。多个实例可例如在测试用例的数量较小时离线地运行,或者在优化过程期间在线地适配。[0410]尽管给出了神经网络作为用于实现自适应控制器的示例机器学习技术,但是可使用任何合适的技术,例如模糊逻辑或任何适当类型的回归模型。此外,如本文档中所描述,自适应控制器还可具有提供关于优化过程的趋势和当前状态的更多信息的一个或多个额外输入(而不只是测量误差)。[0411]在拓扑优化期间的约束归一化[0412]如上文参考图4a的计算424所描述,受控收敛可与约束值的归一化相结合。约束值可具有不同的数量级,从而导致对于复杂约束不存在或很难实现病态的优化问题和梯度。例如,疲劳安全系数的起始值可为约10,000,而目标值可为1。在此类情况下,梯度的敏感度会随着解接近目标而减弱,并且由于相对较小的误差,最终值10(其相对于起始值具有9/10000的误差)可被认为是可接受的。如下文在归一化算法中所描述,移动参考值改善了所述问题。[0413]归一化算法[0414]输入:ti、t、n、gt,n、tk、ti、k阈值、k当前、kg[0415]输出:g最考,t[0416][0417]如下指出了归一化算法的一些特征。[0418]不应当在每次迭代中更新参考值g参考,t。在设定新的参考之后,应当留出足够的时间以使约束稳定。这使用内循环迭代的概念(归一化算法的第3至22条)来实现。内循环迭代的最大长度由给出,其可针对每个设计问题进行动态调整,例如,调整为使得在内循环长度的下限为5的情况下存在至少6次内循环迭代。[0419]用于确定现有参考是否过于远离当前值的阈值δg阈值使用约束值的移动平均值的乘子(例如,20)来计算。移动平均值计算的长度由给出,例如10。如果在最后一个内循环期间检测到振荡,则增加阈值,否则在当前参考值高于阈值时减小所述阈值。[0420]参考值的任何变化都受限于使用现有值的比率0<kg≤1(例如,0.6)计算的最大变化δg阈值=kgg参考,t-1。任何减小的参考值也都应当大于当前违反|gi-gt,n|的乘子。乘子的实例由k当前=1.2给出。[0421]图4g示出了如在归一化算法中所详述以及如上文刚刚所描述的跟踪约束归一化中所使用的不同量度的曲线图401j的实例。具体地,曲线图401j示出了随着约束值逼近下一个目标值,如何随时间更新参考值g参考,t。最终目标值是gt,n,而gt表示约束在其随时间振荡逼近最终目标值gt,n时的当前值。参考值g参考,t大于约束的当前值和最终值两者,并且不会随着每次迭代而变化。参考值随着时间的推移而进行调整,从而逼近最终目标值,而不会超过当前目标值。[0422]在一些实现方式中,根据归一化算法计算的值可被分配给目标参考值并且在归一化算法的每次内循环迭代开始时另外可能出现参考值的突然变化的情况下,可使用自适应控制器(例如,如上文参考图4d至图4f所描述的pid控制器)来实现所应用的参考g参考,t的平滑过渡。针对给定迭代t的一种示例应用如下:[0423][0424][0425]任意约束处理[0426]任意约束处理是即使在不可获得精确的形状导数时也能够应用于任何类型的优化约束的一般方法。不管是实现代理形状导数还是实现实际形状导数,通过生成设计过程都可实现更高的准确性和控制。[0427]任意等式约束[0428]在优化问题中考虑g(ω,u(ω))=0类型的等式约束,其中顺应度最小化被用作目标函数。在不存在形状导数的情况下,行业中的常规做法是在监测g时进行优化,并且在g≈0时终止优化。这意味着,当解在g→0逼近零时,最终结果因缺少控制而为未收敛的解。[0429]然而,在不具有形状导数的情况下,自适应控制器可用于强制执行等式约束。假设gi(ω,u(ω))j=1,...,ng表示一系列等式约束,该系列等式约束已经如上文所描述(例如,使用上文的归一化算法)进行了归一化,使得考虑每个约束的归一化误差,所述归一化误差可用于以类似于方程91的方式为每次迭代定义约束的误差:[0430][0431]这可代入方程93中以近似在迭代t中满足约束gj所需的体积变化:[0432][0433]其中当约束与体积变化负相关时,ij=-1,否则igi=1。对有效地施加控制以实现响应参数的期望的结果。当存在多个约束时,每个约束将推荐满足约束所需的不同体积变化。所述约束被分组成正值和负值:[0434][0435]然后,在此迭代中应用的单个体积变化可利用以下项来计算[0436][0437]关于任何非零δvt的体积控制的形状导数中的μ值可按照上文针对近似体积控制参考方程71-87所描述的方法来应用。[0438]任意不等式约束[0439]上文参考任意等式约束和方程95-98所描述的技术会导致体积变化在变得满足约束时收敛于零,即,在时当使用不等式约束时,这会引起潜在问题,因为可在下满足不等式约束。因此,当使用不等式约束时,可使用称为重要性系数的松弛变量来管理每个违反约束的相对贡献。当所有约束被赋予相等的重要性时,重要性系数可减轻收敛的不受控制的变化和干扰最小化目标的约束。重要性系数在生成设计过程的不同迭代期间调节不同约束的相对重要性。[0440]假设表示每个约束的重要性系数,方程96可如下修改:[0441][0442]其中所应用的重要性系数使用预定(例如,用户提供)的重要性系数如下计算:[0443][0444]其中如果在迭代t处违反了不等式约束gk,则否则在每次迭代时,所应用的重要性系数根据所有约束的的符号来更新。这允许约束违反影响所应用的重要性系数以及因此体积变化δvt。[0445]为了防止因约束状态从违反变为未违反(反之亦然)而发生突然变化,例如,可使用pid控制器,如上文参考方程96和97以及图4d至图4f所描述,以如下稳定重要性系数的变化:[0446][0447]复杂的生成设计问题可根据上文描述的技术的组合,例如通过受控收敛、不等式和等式约束的组合并使用pid控制器来进行求解。[0448]用于约束处理的修改后的增广拉格朗日方法[0449]参考方程28-30介绍的增广拉格朗日算法可如下修改以如上文所描述适应任意等式和不等式约束的约束处理。[0450]受控收敛:经典的增广拉格朗日方法将约束违反项ej计算为约束的当前值与最终值之间的差值,例如,如下计算:[0451][0452]如上文例如参考图4b至图4c所描述,应用受控约束收敛。一些约束可能比其他约束更早地收敛,因此,可逐渐地减小对设计所作出的改变的量,即在初始阶段期间进行大的改变,之后进行逐渐变小的改变。[0453]不具有形状导数的约束:虽然针对许多目标和约束的形状导数可使用伴随方法(方程14-25)在数学上进行计算,但是在商用的有限元求解器中实现伴随方法可能是一项艰巨的任务。另外,优化约束有时可通过由用户提供的黑盒评估器来评估。因此,可按照上文例如参考任意约束处理和图4b至图4e所描述的技术来使用代理形状导数。[0454]精确的体积控制:精确的体积控制对于从复杂的工程实例获得良好的设计输出而言往往是相当重要的。上文参考近似体积控制、使用自适应控制器的体积控制和方程71-93介绍的μ计算方法可被整合到增广拉格朗日方法中,同时使用线搜索算法来进一步提高准确性。[0455]首先,可将约束分为两组其中前一者包含受体积变化影响的所有约束,而后一者包含不是例如最小/最大厚度或重心约束的约束。来自增广拉格朗日方法的形状导数之后如下修改:[0456][0457]其中约束误差ej使用方程95的pid稳定型式,通过来自任意不等式约束的上文参考方程99-101所描述的重要性系数项来计算:[0458][0459]当形状导数dgj/dω不可用时,可使用合适的代理形状导数来近似所述形状导数。例如,来自集合的任何此类约束都可如下使用体积形状导数来近似:[0460][0461]其中当约束与体积变化负相关时,ij=-1,否则igi=1。应注意,在法线方向上的体积的导数为1。[0462]接着,使用上文参考近似体积控制、使用自适应控制器的体积控制和方程71-93所描述的概念计算μ*。使用中的所有约束,使用任意约束处理为每次迭代t计算目标体积变化δvt。接着,使用上文参考近似体积控制和方程71-87所描述的方法计算μ*。应注意,需要如下修改方程87以考虑到任意约束和目标:[0463][0464]在一些情况下,应当考虑到陷阱:当当检测到这种情况时,在此类情况下应当将μ*设定为1。这通常在约束朝向目标值收敛,即ej→0时发生。[0465]针对迭代t更新增广拉格朗日参数μj,λj可使用自适应(例如,pid)控制器来稳定,如上文相对于图4f所描述。例如,请在下文参见μj更新规则:[0466][0467]如早先所提及,可应用线搜索算法(例如,梯度下降或牛顿方法(newton’smethod))来确保在对水平集平流之后实现的体积变化相对于目标体积变化δvt在某一可接受的公差内。线搜索被进行来找出最优乘子lt,使得平流速度由给出。应注意,禁用线搜索等同于设定lt=1。[0468]图4h示出了在有和没有线搜索的情况下跟踪约束的收敛历史的曲线图414a至414c的实例。曲线图414a示出了在有线搜索的情况下的所施加的体积变化对比目标体积变化δvt。曲线图414b示出了在没有线搜索的情况下的所施加的体积变化对比目标体积变化δvt。曲线图414c示出了在收敛期间的速度乘子lt的历史。[0469]返回到图4a,在一些实现方式中,一个或多个设计标准包括多个设计约束,所述多个设计约束包括第一不等式约束和第二不等式约束。在这些实现方式中,设计约束被分组成第一组和第二组,第一组包含受体积变化影响的所有多个设计约束,而第二组包含不受体积变化影响的多个设计约束中的一个或多个其余设计约束。计算424形状变化速度包括使用例如如上文所描述的增广拉格朗日方法,所述增广拉格朗日方法将调整系数应用于来自第一组的形状变化贡献的总和,但是不将调整系数应用于来自第二组的形状变化贡献。[0470]在一些实现方式中,不具有定义的形状梯度的至少一个设计约束包括第一不等式约束和第二不等式约束。第一不等式约束具有对第一比例积分微分控制器的第一输入控制参数,并且具有第一重要性系数,所述第一重要性系数乘以由第一比例积分微分控制器提供的形状变化量,例如,如上文参考任意不等式约束和方程99-101所描述。第二不等式约束具有对第二比例积分微分控制器的第二输入控制参数,并且具有第二重要性系数,所述第二重要性系数乘以由第二比例积分微分控制器提供的形状变化量。[0471]根据代理形状梯度计算424隐式曲面的形状变化速度因此可包括基于迭代地修改的先前迭代中是否违反一个或多个其他约束而调整第一重要性系数和第二重要性系数两者。例如,重要性系数可通过将系数乘以关于迭代地修改的先前迭代中的其他约束的违反乘子来修改。在一些实现方式中且如上文例如大体上参考图4d至图4f并参考方程99-101所描述,比例积分微分控制可用于稳定对第一重要性系数和第二重要性系数的调整。[0472]另外如上文参考图4a、图4f、图4g所描述,振荡可为多于2对连续成功或失败以满足归一化的下一个目标值。此外,用于满足归一化的下一个目标值的成功或失败的重复可为在等于或大于迭代量的10%的迭代次数内发生的重复,并且其中阈值是10%。在一些实现方式中,响应于振荡而进行调整包括减小比例分量、减小积分分量并且减小或重置微分分量。在一些实现方式中,响应于成功或失败的重复而进行调整包括增加比例分量、减小积分分量并且将微分分量设定为零。在一些实现方式中,响应于相对误差超过阈值而进行调整包括增加积分分量并且将微分分量设定为零。[0473]如上文参考自适应控制器和图4d至图4f所描述,至少一个设计约束可能不具有定义的形状梯度。因此,在一些实现方式中,计算424包括根据通过自适应控制调整的代理形状梯度输出来计算隐式曲面的形状变化速度。具体地,使用输入控制参数,所述输入控制参数是对不具有定义的形状梯度的至少一个设计约束的归一化的当前值与来自该系列目标值中的目标值中的相应目标值的归一化的下一个目标值之间的误差的度量。误差的度量随着迭代地修改期间至少改变一次的参考值而变化,这可允许受控收敛,同时顺利地满足临界约束。[0474]在一些实现方式中,至少一个设计约束包括第一等式约束和第二等式约束,所述第一等式约束具有对第一自适应控制器的第一输入控制参数,并且第二等式约束具有对第二自适应控制器的第二输入控制参数,例如,如上文参考任意等式约束和方程95-98所描述。然后,根据代理形状梯度计算424隐式曲面的形状变化速度包括当第一等式约束和第二等式约束中没有一者与形状变化成反比例时使用由第一自适应控制器和第二自适应控制器提供的最大形状变化量,并且当第一等式约束和第二等式约束中没有一者与形状变化成比例时使用由第一自适应控制器和第二自适应控制器提供的最小形状变化量。当一个约束与形状变化成反比例并且至少一个约束与形状变化成比例时,使用平均形状变化量。[0475]在计算424之后,使用形状变化速度来更新426一个或多个水平集表示以产生建模对象的三维形状的更新型式。重复执行422、计算424和更新426,直到检查428确定已经执行预定义次数的形状修改迭代,或者设计空间中的建模对象的生成设计的三维形状针对一个或多个设计标准和一种或多种使用中载荷状况收敛于稳定解为止。例如,如上文参考图3a所描述,可执行更新426和检查428。然后,计算机辅助设计程序可提供建模对象的生成设计的三维形状以用于使用一个或多个计算机控制的制造系统来制造对应于建模对象的物理结构。[0476]疲劳约束[0477]接着,提供了基于所提供的关于设计体的疲劳约束而优化设计的描述。除了上文(例如,图3a至图4h)描述的技术,以及随附的针对受控收敛、接种和任意约束处理的描述之外,还可优化设计体以满足疲劳约束,所述疲劳约束指定了主体的总预期寿命或每一种载荷状况下强加在主体上的循环数。除了优化过程(例如,如上文所描述的生成设计过程)之外,还可自动地执行所述过程。[0478]描述了评估此约束的两种主要方法:安全寿命计算和损伤容限方法。前一者是关于通过将应力保持低于容许阈值来防止疲劳损伤。后一者接受存在疲劳损伤并且旨在于确保在特定的检查时间点之前,疲劳裂纹不会引起严重失效。[0479]安全寿命疲劳[0480]图5a示出了使用针对主体上的一个或多个安全寿命疲劳约束进行求解的一个或多个生成设计过程生成将制造的对象的3d模型的一个或多个部分的过程的实例。计算机辅助设计程序获得504制造对应的物理结构将依据的建模对象的设计空间、建模对象的一个或多个设计标准、物理结构的一种或多种使用中载荷状况和制造物理结构所用的材料的一个或多个规范。可例如像上文参考图3a所描述那样完成获得504。[0481]安全寿命优化是基于材料的疲劳性质。测试样品以获得材料数据库中可获得的sn曲线。设计者可针对每种相关载荷状况指定零件的使用寿命内的预期载荷循环量。它们的累积效应指导了容许的设计应力。通常,使用基于应力的安全寿命疲劳法。然而,在低循环载荷问题中,应变寿命疲劳法可能是优选的。[0482]sn曲线处理.[0483]图5b示出了在多个循环内跟踪主体上的疲劳强度(应力)的sn曲线520的实例。对于包含多种材料的主体,如下文更详细地描述的,可使用多个sn曲线。[0484]本文描述的损伤容限和安全寿命疲劳方法都可利用材料sn曲线。由于其潜在的平坦且无限的区域,这些区域带来了计算上的挑战,并且在优化过程期间应当谨慎地解释。[0485]sn曲线通常将应力置于y轴上并且将循环置于x轴上,因为典型的疲劳工作流涉及从已知的循环数极限开始找到适当的最大应力约束。这使得sn曲线用户输入自然地成为了[循环,应力]点。这种点定义非常适合损伤容限优化方法并且因此仅需要使用从最低循环到最高循环的点排序。然而,在安全寿命疲劳法的情况下,优化方法从应力进行到循环数据。正在设计的对象的模拟提供应力数据,针对所述应力数据,应当从sn曲线中找到预计循环数。因此,所述方法的重要的方面是将用户提供的数据点转为[应力,循环]对并且将这些对从最低应力到最高应力排序。另外,当检测到耐久部段,即曲线中存在处于耐久应力(在此应力以下,循环数实际上是无限的)的平坦区域时,将对应于曲线的该部段的点的集合从最高应力到最低应力重新排序。然后,曲线读取算法很容易返回报告的最高循环值,而不是插值到无穷大。[0486]当输入数据包括不同材料的数据时,针对不同材料中的每一者提供单独的预期载荷循环数。这包括从拟合到使疲劳强度与载荷循环相关的数据的塑性区域和弹性区域中的数据点集合的一条或多条曲线返回载荷循环数;然后,从使疲劳强度与载荷循环相关的数据的耐久区域中的数据点集合返回最高载荷循环数。[0487]基于应力的安全寿命疲劳法[0488]返回到图5a,一个或多个设计标准包括建模对象在物理结构的一种或多种使用中载荷状况中的每一者下的所需载荷循环数。输入可被提供为每种载荷状况的循环,或者提供为可选地可转换为循环的时间段,例如,提供为几秒、几分钟、几小时、几天、几周、几个月、几年等。一个或多个规范包括使疲劳强度与载荷循环相关的数据。数据可被提供为材料的sn曲线。数据可测量应力作为疲劳应力的指示符,但是在一些实现方式中,例如,当使用中载荷状况根据要求具有低循环数时,使用应变。[0489]所述程序根据一个或多个设计标准、物理结构的一种或多种使用中载荷状况和一个或多个规范来迭代地修改设计空间中的建模对象的生成设计的三维形状。迭代地修改可包括修改对象的三维形状的几何图形和拓扑两者。[0490]例如,迭代地修改包括根据三维形状的当前型式和一种或多种使用中载荷状况来执行506建模对象的数值模拟以产生建模对象的物理响应的当前数值评估,如上文参考图3a和图4a所描述。[0491]针对物理结构的一种或多种使用中载荷状况中的每一者从建模对象的物理响应的当前数值评估中查找508最大化的应力或应变元素。所述元素可为物理结构的某一点、位置或区域处的值。在一些实现方式中且如下文参考图8a至图8c所描述,查找508包括至少基于建模对象的物理响应的当前数值评估中的应力分布的标准偏差而计算使用中载荷状况的最大应力值。[0492]具体地,在拓扑优化期间,可在每次迭代时计算每个元素的应力。在可选地针对奇点(下文参考图8a至图8c所描述)调整之后,可找到给定载荷状况下跨所有元素的最大主应力,并且从一条或多条sn曲线获得对应的循环数。所获得的循环与所需的循环之比表示损伤分数。使用曼纳法则(miner′srule),根据所有载荷状况的损伤分数计算总安全系数。疲劳约束必须应对多材料问题。单独地计算每种材料的疲劳安全系数并且由最小值指导优化,如下所示:[0493][0494]其中是使用以下项计算的材料的疲劳安全系数:[0495][0496]其中疲劳安全系数sf由所使用的所有材料的最小疲劳安全系数给出,cσ是针对最大主应力(maxωσp)的从sn曲线获得的循环数,并且是给定载荷状况lc的所需循环数。[0497]在优化期间,疲劳约束被定义为sf-st≥0,其中是目标疲劳安全系数。这可使用上文参考受控收敛、任意约束处理和图4a至图4h所描述的方法通过下文推导的形状导数dsf/dω来强制执行。在一些实现方式中,如方程105所示,体积形状导数可用作代理形状导数。[0498]聚合疲劳度量的形状导数[0499]假设ω是中的域。在本说明书中,在每个点x∈ω处独立地评估相对于随着时间的推移而重复应用的多种载荷状况在ω上的基于应力的疲劳度量。出于拓扑优化的目的,将这些逐点测量聚合成称为聚合疲劳度量的全局测量,所述全局测量近似于逐点测量的最大值。[0500]聚合疲劳度量采用以下形式。假设c:是包括ω的材料的sn曲线的逆,并且假设是第l个载荷状况的参考值。这个聚合疲劳度量使得能够对循环载荷所引起的损伤进行求和。对1/(安全系数)的目标值进行优化,其中对零件可承受的损伤和来自载荷(应力或应变和循环数)的实际损伤进行求和。[0501]ω的聚合疲劳测量被定义为:[0502][0503]其中σl(ω)是在第l个载荷状况下ω中的应力张量的量值中的最大值的近似。换句话说,[0504][0505]其中是相对于第l个载荷状况在ω中满足线性弹性方程的位移函数,并且σ(ul)是相关联的应力张量。[0506]下文将更详细地描述聚合疲劳度量s的形状导数。[0507]命题1.形状函数s相对于由法线速度θ:生成的形状ω的变型的形状导数由以下项给出:[0508][0509]其中λt:是第l个载荷状况的伴随位移函数。这是线性弹性方程的解,其中伴随力项以弱形式给出为线性积分形式:[0510][0511]由于s可分解成应用于应力积分∫ω||σ(ul)||2p的一系列运算,该计算如下分解。首先,使用来自普通微积分的链式法则计算这一系列运算的导数。然后,计算应力积分的形状导数,对此céa方法被使用并且在下文进行描述。[0512]假设ωε表示由法线速度函数θ生成的ω的变型。表示为dsω·θ的期望的形状导数的计算开始为:[0513][0514]首先,使用来自普通微积分的链式法则来将导数d/dε带到应力积分上,然后在其中转入形状微分技术,如下所示:[0515][0516]其中ul,ε是在域ωε中针对第l个载荷状况的位移函数。[0517]接着,使用形状微分。使用céa方法来计算方程115中剩余的应力积分的形状导数。在以下描述中取消了下标l,因为这对于所有载荷状况都是相同的。拉格朗日量如下:[0518][0519]其中[0520]a(ω,u,λ):=∫ωσ(u):e(λ)ꢀꢀ(117)[0521]是在ω中的出现在弱形式的弹性方程中的积分形式。[0522]在此处,σ(u)是位移u的应力张量,并且e(λ)是“虚位移”λ的“虚应变”。因此,是与该对位移相关联的“虚功”。另外,是在ω中的出现在弱形式的弹性方程中的积分线性形式,它对由施加体和边界牵引力所做的“虚功”进行编码。现在分三个步骤进行céa方法。[0523]步骤1.将拉格朗日量相对于λ的变型设定为等于零产生通过u来满足的线性弹性方程。这是有意设计的,因为正好是弱弹性方程的左手侧。[0524]步骤2.设定拉格朗日量相对于u的变型产生关于λ的称为伴随状态方程的相关方程组。这些方程的解被称为伴随状态。这些方程的弱型式为:对于u的所有变型[0525][0526]在此处,σ′(δn)是应力张量相对于位移的导数。这具有简单的形式,因为应力与应变线性相关,应变进而又与u线性相关-梯度是线性算子,或者相当简单σ′=σ。还使用了的对称性。上文证明λ满足线性弹性方程,但是存在以积分线性形式编码的新的“伴随力”项:[0527][0528]步骤3.céa方法取决于以下事实,这可进行证明:通过忽略u和λ的形状依赖性,然后插入u的状态和λ的伴随状态来计算的拉格朗日量的形状导数等于∫ω||σ(u)||2p自身的形状导数。由于拉格朗日量中的所有表达式都是体积积分,因此仅需要在ω上的与形状无关的函数的这种积分的形状导数公式。[0529]接着,假设θ在狄利克雷上并在ω的齐次纽曼边界中消失(否则,形状导数会包括其他项)。最终,假设不存在体力项,例如通过忽略给定载荷状况下重力的影响来实现。总之,这最后两个假设具有从形状导数公式(方程116)中去除项的效果。因此,在所有假设之后的结果如下:[0530][0531]其中u是状态并且λ是伴随状态。[0532]基于应变的安全寿命疲劳法[0533]基于应变的安全寿命计算还使用方程108和109,但是cσ参数变为了cε。sn曲线的应变与循环形式用作输入。根据neuber法则从最大主应力(maxωσp)如下计算应变值:[0534][0535]其中k是由用户指定的集中系数(默认为1)并且e是材料的杨氏模量。[0536]返回到图5a,如上文参考sn曲线处理和图5b所描述,使用最大化的应力或应变元素和使疲劳强度与载荷循环相关的数据来确定510物理结构的一种或多种使用中载荷状况中的每一者的预期载荷循环数。基于根据建模对象的所需载荷循环数以及物理结构的一种或多种使用中载荷状况中的每一者的预期载荷循环数来计算的损伤分数而重新定义512建模对象的疲劳安全系数不等式约束。在一些实现方式中,不等式约束可被归一化并且使用自适应控制器来调整,例如,如上文参考图4d至图4f所描述。[0537]在一些实现方式中,一个或多个规范包括制造物理结构所用的相应的不同材料的两个或更多个规范。因此,关于规范的数据包括针对不同材料中的每一者的使疲劳强度与载荷循环相关的数据。因此,确定510包括确定不同材料中的每一者的单独的预期载荷循环数。此外,重新定义512包括基于根据不同材料的预期载荷循环数中的相应的预期载荷循环数来计算的相应的损伤分数而计算不同材料中的每一者的单独的疲劳安全系数。根据单独的安全系数,使用不同材料的疲劳安全系数的最小值来重新定义建模对象的疲劳安全系数不等式约束。[0538]在一些实现方式中,物理结构的一种或多种使用中载荷状况包括物理结构的两种或更多种使用中载荷状况,并且一个或多个设计标准包括建模对象在物理结构的两种或更多种使用中载荷状况中的每一者下的所需载荷循环数。计算不同材料中的每种相应的材料的单独的安全系数包括对与两种或更多种使用中载荷状况相对应的载荷特定损伤分数进行求和,其中每个载荷特定损伤分数包括将关于不同材料中的一者和使用中载荷状况中的一者的预期载荷循环数除以关于使用中载荷状况中的一者的所需载荷循环数。单独的安全系数通过以下方式来获得:对载荷特定损伤分数的和求倒数以获得单独的安全系数。参见例如方程109。[0539]至少根据疲劳安全系数不等式约束来计算514三维形状的水平集表示中的隐式曲面的形状变化速度。可相对于其他约束计算形状变化速度,并且可计算代理导数,其中形状导数是不可用的或没有良好地定义,例如,如上文参考任意约束处理和图4a至图4h所描述。然后,使用形状变化速度来更新516水平集表示以产生建模对象的三维形状的更新型式。上文相对于方程110-120描述的聚合疲劳度量的形状导数可用于计算疲劳安全系数不等式约束的形状变化速度。[0540]在一些实现方式中,计算514包括使用根据形状导数公式确定的量来计算至少一个形状变化速度,所述形状导数公式近似于疲劳安全系数的形状导数,例如,上文参考方程105所描述的体积形状导数。将公式修改为包括应力形状导数,而不是体积形状导数。[0541]在一些实现方式中,使用重要性系数来处理至少一个设计约束,包括疲劳安全系数,例如,如上文相对于图4a,并大体上相对于任意不等式约束处理和方程53-60所描述,基于迭代地修改的先前迭代中是否违反一个或多个其他约束而调整所述重要性系数。[0542]在一些实现方式中,使用自适应控制器来调整体积分数的目标值,例如,如上文参考图4d至图4f所描述。具体地,在迭代地修改的多次迭代中在初始目标值与最终目标值之间调整基于体积分数或最小厚度的不等式约束的目标值。当在多次迭代中调整目标值时,使用自适应控制来稳定对根据形状导数公式确定的量所作的改变。[0543]在一些实现方式中,使用自适应控制来调整根据形状导数公式确定的量对更新中所使用的形状变化速度的总体贡献。自适应控制器可用于调整代理形状导数对总平流速度的贡献,即,根据用于约束处理的增广拉格朗日方法的修改的型式进行调整,如上文参考方程102-107所描述。[0544]重复执行506、查找508、确定510、重新定义512、计算514和更新516,直到检查518确定已经执行预定义次数的形状修改迭代,或者设计空间中的建模对象的生成设计的三维形状针对一个或多个设计标准和一种或多种使用中载荷状况已收敛于稳定解为止。检查518可为如上文参考图3a和图4a所描述的检查。然后,可提供建模对象的生成设计的三维形状,例如以用于使用一个或多个计算机控制的制造系统来制造对应于建模对象的物理结构。这些技术可与用于拓扑优化的混合、中空和混合-中空方法进行组合。[0545]损伤容限疲劳法[0546]如上文所描述的安全寿命疲劳约束有助于通过防止指定数量的载荷循环期间的疲劳损伤来确保对象在用户指定的载荷状况下不会失效。相比之下,损伤容限疲劳技术集中于将疲劳损伤限制在容许极限内以帮助确保在零件失效之前在现场检测到疲劳损伤。关键目标是计算临界疲劳裂纹长度并且确保它在服务检查间隔期间不会超过设计部件的厚度。因此,这种方法的关键要求是能够对拓扑优化设计强制执行厚度约束。可隐式地强制执行厚度约束,例如通过增加设计的体积,从而导致设计的所有部分的厚度都出现增加来进行。[0547]应注意,类似于安全寿命疲劳方法,下文描述的损伤容限疲劳技术可以与上文描述的技术例如受控收敛、接种和任意约束处理任何组合进行使用。此外,在一些实现方式中,安全寿命疲劳和损伤容限疲劳方法都是可用的,其中针对给定问题的疲劳设计约束在一些情况下通过安全寿命方法来解决,而在其他情况下,疲劳设计约束使用以下损伤容限疲劳技术来解决。可基于被设计的零件的预期用途而选择适当的方法。例如,在航空航天应用中,通常根据损伤容限方法来设计零件。两种模式的可用性一起允许解决更大范围的设计问题。[0548]图6a示出了根据包括至少一个损伤容限疲劳约束的一个或多个设计标准来迭代地修改设计空间中的建模对象的生成设计的三维形状的过程的实例。三维形状包括隐式曲面的水平集表示,并且一个或多个设计标准包括建模对象在物理结构的一种或多种使用中载荷状况中的每一者下的所需载荷循环数。[0549]根据三维形状的当前型式和一种或多种使用中载荷状况来执行608建模对象的数值模拟以产生建模对象的物理响应(例如,结构响应)的当前数值评估,如上文参考图3a、图4a和图5a所描述。[0550]使用当前数值评估和厚度测量来确定610物理结构的一种或多种使用中载荷状况中的每一者的预期载荷循环数以强制执行限制最小厚度的设计标准。来自当前数值评估的具有最大应变或应力的点可用于确定预期载荷循环数。计算当前厚度和强制执行最小厚度在下文进行描述。[0551]厚度约束[0552]首先,计算并强制执行厚度约束。可使用多种方法中的一者或多者来测量并强制执行厚度,例如至少两种不同的厚度测量的组合,如下文所描述。另外,应了解,所描述的损伤容限疲劳技术可通过基于密度的拓扑优化(例如,使用simp方法),而不是通过基于边界的拓扑优化(例如,水平集方法)来实现,如结合图6a所描述。[0553]图6b示出了几何图形600a、600b的图形表示,其中几何图形600a、600b的厚度根据不同的测量技术来计算。几何图形600a示出了使用光线投射方法测量的主体601。几何图形600a中的点x处的光线投射厚度被定义为hr(x)=|x-xr|,其中xr是在点x处的向量n的负方向上的光线投射射中几何图形600a的点。可针对点x处的向量n的不同方向重复光线投射,包括向量n垂直于几何图形600a的情况。[0554]相比之下,在几何图形600b中示出了球面拟合方法,并且所述球面拟合方法涉及找到可在域内部拟合,同时接触几何图形600b中的测量点x的最大球面的直径。这通过以下方式来完成:运行二等分算法以找出点x与xr之间的球面重心xs。使用极角a在球面周边/曲面上定义了离散的采样位置具有原点xs的球面在关于域的最大水平集低于特定阈值δh,即满足以下条件时被认为在域内部拟合:[0555][0556]球面拟合厚度之后被定义为hs(x)=2|x-xs|。在一些实现方式中,厚度被定义为h(x=max{hs(x),hr(x)}。如果需要不在域曲面上的点处的厚度,则在测量曲面上的厚度之前,首先使用水平集的法线将所述点投射到曲面上。可针对多个方向多次重复球面拟合方法(产生多个xr点,取决于所选择的方向)。所计算的最大球面可用于定义厚度。[0557]最小厚度约束gt可被定义为[0558][0559]其中γ是域曲面并且h最小是目标最小厚度。近似形状导数由以下项给出:[0560][0561]厚度约束可使用上文相对于任意约束处理和图4a至图4h描述的方法来应用。在一些实现方式中,关于厚度约束的重要性系数通过sigmoid函数sr(ξ)来修改,使得厚度约束仅在优化的后期阶段期间生效实施。[0562][0563]sigmoid函数被定义为:[0564][0565]其中ξ如下计算[0566][0567]其中识别开始厚度约束应用,这被视为体积减小迭代nv中的最大迭代和第一次违反厚度约束。[0568]图6c示出了在不同速率下跟踪sigmoid函数的曲线601a至601e的曲线图的实例。曲线601a是速率为1的sigmoid函数的曲线;曲线601b是速率为2的sigmoid函数的曲线;曲线601c是速率为3的sigmoid函数的曲线;曲线601d是速率为4的sigmoid函数的曲线;并且曲线601e是速率为5的sigmoid函数的曲线。[0569]尽管此处描述了用于测量厚度的两种技术,但是应理解,在不丧失一般性的情况下,可使用用于测量主体的厚度的任何合适的技术。此外,所描述的技术可被组合(即,两种不同的厚度测量的组合)来改进结果。例如,两种不同的厚度测量可包括(i)第一距离测量是从建模对象的曲面点在负法线方向上进行光线投射的建模对象内的长度,并且(ii)第二距离测量是接触建模对象的曲面点并在建模对象内部拟合的最大球面的直径,诸如上文参考图6b所描述,如通过检查在球面的曲面上定义的离散的采样位置来确定。[0570]损伤容限疲劳约束[0571]接着,描述损伤容限疲劳约束。材料的临界疲劳裂纹长度hd被定义为[0572][0573]其中c是疲劳循环数,ρg是材料的疲劳裂纹增长曲线的模量并且可为用户指定的,例如2.8,a是初始裂纹长度,其可被设定为等于所选择的零件检查方法的最小缺陷检测大小,默认值为a=1mm,i是应力强度系数,例如默认值为i=1.22x10-12),并且y描述了裂纹类型,例如默认值为y=1。应力范围δσ如下根据应力比r例如r=0.1和最大应力σ最大推导:[0574]δσ=(1-r)σ最大。ꢀꢀ(129)[0575]材料的最小厚度之后由以下项给出[0576][0577]其中是期望的临界厚度与宽度比,并且sf是规定的设计安全系数。乘子和y裂纹类型变量是相关的并且可在描述关于给定材料的疲劳裂纹性质的工程表中找到。[0578]图6d示出了描述疲劳裂纹性质的表格601f的实例。在表格601f中,关于对应的乘子示出了裂纹类型变量y。y是应力强度系数表达式中所使用的几何图形校正系数。校正系数描述了裂纹长度a与特征的厚度w之间的联系。表格601f示出了不同材料的y和a/w的值。表格601f可为用户指定的,对于不同材料,y和比率a/w存在指定值。[0579]裂纹长度a被设定为等于临界裂纹长度ac,它趋向于无穷大,即,零件的严重失效。在优化期间,这给出了要优化的最小厚度,即如果用户期望a/w比率为0.1(即,最小厚度应当10倍于ac),则计算ac值并且按这个值的倍数应用最小厚度。一般而言,y的值是小的并且因此表示小的裂纹厚度比,即,零件的大的厚度对比零件的特征中的临界裂纹长度。这具有以下效果:增加特征中的临界裂纹长度,使得它可容易地被所选择的检查技术检测到。[0580]添加优化约束以满足损伤容限疲劳要求的一种方式是使用恒定的全局厚度目标。假设设计处于疲劳极限,其中c等于所需的疲劳循环数并且σ最大是来自sn曲线的对应应力。方程128用于计算每种材料的临界裂纹长度修改最小厚度约束(方程123),其中目标厚度被设定为方程130使用最坏情况裂纹长度的结果。目标厚度在整个优化过程中保持恒定:[0581][0582]可替代地,可在每次迭代时针对设计的曲面上的每个点x计算损伤容限疲劳安全系数。这使用每个点处的应力σlc(x)和厚度h(x)来计算每种载荷状况的所支持的循环数clc(x):[0583][0584]材料的损伤容限疲劳安全系数sd现在可类似于安全寿命疲劳方法使用曼纳法则来算出:[0585][0586]其中clc(x)是从方程132获得的循环数,并且是给定载荷状况lc的所需循环数。[0587]在优化期间,疲劳约束被定义为sd-st≥0,其中是目标疲劳安全系数-所有材料安全系数中的最低安全系数。这可使用上文相对于任意约束处理和图4a至图4h描述的方法来强制执行。如上文所描述,体积或厚度形状导数(方程124)可用作代理形状导数。为了使用厚度形状导数,应当采取以下额外步骤:使用方程128和130来将对应于临界安全系数的点应力和厚度数据转换为厚度目标h最小。应注意,如上文参考图6c所描述,重要性系数应当乘以sigmoid类型函数。[0588]图6e示出了使用针对主体上的损伤容限疲劳约束进行求解的一个或多个生成设计过程生成将制造的对象的3d模型的一个或多个部分的过程的实例。[0589]计算机辅助设计程序获得602制造对应的物理结构将依据的建模对象的设计空间、建模对象的一个或多个设计标准、物理结构的一种或多种使用中载荷状况和制造物理结构所用的材料的临界疲劳裂纹长度。例如,如上文参考图3a、图4a和图5a所描述,可执行获得602。在一些实现方式中,获得材料的临界疲劳裂纹长度包括获得制造物理结构所用的材料的一个或多个规范,并且根据一个或多个规范中的信息(例如,如上文参考图5b和图6d所描述的sn曲线和工程表)计算材料的临界疲劳裂纹长度。所述信息可包括材料的疲劳裂纹增长曲线的模量。[0590]所述程序根据一个或多个设计标准、物理结构的一种或多种使用中载荷状况和一个或多个规范来迭代地修改设计空间中的建模对象的生成设计的三维形状。例如,如上文参考图3a、图4a、图5a和图6a所描述,迭代地修改可包括修改对象的三维形状的几何图形和拓扑两者。迭代地修改包括强制执行604限制建模对象的生成设计的三维形状的最小厚度的设计标准,所述最小厚度是基于材料的临界疲劳裂纹长度。最小厚度可为临界疲劳裂纹长度的比率,诸如最小厚度是临界疲劳裂纹长度的10倍。例如,如上文参考图6b所描述,厚度可使用各种技术来测量。[0591]提供606建模对象的生成设计的三维形状,以用于使用一个或多个计算机控制的制造系统来制造对应于建模对象的物理结构。[0592]如上文参考处理任意不等式约束和图4a至图4h所描述,在一些实现方式中,强制执行最小厚度不等式约束可包括使用基于体积分数或最小厚度的不等式约束作为限制最小厚度的设计标准的代理。使用体积形状导数导致疲劳安全被正确地满足,但是在一些实现方式中,由厚度形状导数替代体积形状导数。基于体积分数或最小厚度的不等式约束使用重要性系数来修改,所述重要性系数在迭代地修改的初始阶段期间被设定为零,并且在迭代地修改的后续阶段期间基于迭代地修改的先前迭代中是否违反一个或多个其他约束而进行调整。[0593]另外如上文参考图4d至图4f所描述,pid控制可用于在迭代地修改的多次迭代中在初始目标值与最终目标值之间调整基于体积分数或最小厚度的不等式约束的目标值。当在多次迭代中调整目标值时,pid控制还可用于调整并稳定对根据基于体积分数或最小厚度的不等式约束的评估来确定的建模对象的修改量所作的改变。[0594]返回到图6a,可基于根据建模对象的所需载荷循环数以及物理结构的一种或多种使用中载荷状况中的每一者的预期载荷循环数来计算的损伤分数而重新定义612建模对象的疲劳安全系数不等式约束。[0595]在一些实现方式中,物理结构的一种或多种使用中载荷状况包括物理结构的两种或更多种使用中载荷状况,并且一个或多个设计标准包括建模对象在物理结构的两种或更多种使用中载荷状况中的每一者下的所需载荷循环数。在这些实现方式中,确定610预期载荷循环数包括确定多个点(例如,使用一种或多种技术识别为临界点的点)中的每一者的单独的预期载荷循环数。可替代地,如在方程132和133中针对两种或更多种使用中载荷状况中的每一者下的隐式曲面所详述,在每次迭代时针对设计的曲面上的每个点x进行确定610。[0596]在一些实现方式中,重新定义612疲劳安全系数不等式约束包括针对多个点中的每一者,对与两种或更多种使用中载荷状况相对应的载荷特定损伤分数进行求和。每个载荷特定损伤分数包括将关于多个点中的一者和使用中载荷状况中的一者的预期载荷循环数除以关于使用中载荷状况中的一者的所需载荷循环数,以产生多个点中的每一者的载荷特定损伤分数的和。对和求倒数,并且使用倒数和的最小值来重新定义建模对象的疲劳安全系数不等式约束。参见例如方程109。[0597]至少根据疲劳安全系数不等式约束来计算614隐式曲面的形状变化速度。然后,使用形状变化速度来更新616水平集表示以产生建模对象的三维形状的更新型式。在一些实现方式中,计算614包括使用根据形状导数公式确定的量来计算至少一个形状变化速度,所述形状导数公式近似于疲劳安全系数的形状导数。[0598]重复执行608、确定610、重新定义612、计算614和更新616,直到检查618确定已经执行预定义次数的形状修改迭代,或者设计空间中的建模对象的生成设计的三维形状针对一个或多个设计标准和一种或多种使用中载荷状况已收敛于稳定解为止,例如,如上文参考图3a所描述。[0599]设计数字孪生[0600]制造零件与设计零件之间的关系可被实现为数字孪生,使得预期设计与物理零件之间的差异减小。这在增材制造零件中尤其普遍,其中厚度和构建角度的效果会对零件的性能具有重大影响。在设计过程中很难考虑到这一点,尤其是在应用其他优化技术的时候,例如,如上文参考图3a至图6e所描述。因此,可基于每个元素而应用特征的厚度与其构建角度之间的已知关系,而常规技术假设整个零件上的强度相等。[0601]图7a是根据包括应力约束的一个或多个设计标准来迭代地修改设计空间中的建模对象的生成设计的三维形状的过程的实例。根据三维形状的当前型式和一种或多种使用中载荷状况来执行708建模对象的数值模拟以产生建模对象的物理响应的当前数值评估。物理响应可为建模对象在一种或多种使用中载荷状况下的结构响应。可执行708数值模拟,例如,如上文参考图3a所描述。[0602]针对物理结构的一种或多种使用中载荷状况中的每一者从建模对象的物理响应的当前数值评估中查找710最大化的应力或应变元素。最大应力或应变元素可为建模对象的点、位置或区域的应力、应变或两者。在上文参考图5a和图6a描述了疲劳约束和计算应力约束的描述。[0603]对特征大小和构建角度的依赖性[0604]增材制造部件(例如,金属部件)对于不同的构建角度和部件厚度值具有不同的强度。点x处的冯米斯应力(vonmisesstress)目标被修改为厚度h(x)和构建角度β(x)的函数,所述构建角度是相对于某一恒定构建方向测量的。厚度可通过包括上文参考图6b所描述的技术的任何合适的技术或技术组合来测量。[0605]图7b示出了在对象700上测量的构建角度的实例的图形表示。曲面上的点x处的构建角度使用来计算,其中n(x)是在x处的曲面的法向量。对象的内部位置是不在对象的曲面上的位置。对于这些位置,构建角度可首先通过将沿着预定构建方向的内部位置投射到三维形状的曲面位置来计算。然后,使用上文提及的公式β(x)根据曲面位置的法线相对于预定构建方向所成的角度来确定内部位置的构建角度。[0606]冯米斯应力约束被使用并且采用以下形式:[0607][0608]其中σt是每种材料的固定应力目标。现在这将随着厚度和构建角度的变化而变化,从而导致应力约束被修改为[0609][0610]关于构建角度和厚度的可变性从应力目标转移到应力自身。为方便起见,并同时维持相同的安全系数:[0611][0612]可使用上文参考任意约束处理和图4a至图4h所描述的方法来强制执行约束,其中在下文使用和推导组合距离-法向量-曲率惩罚的形状导数。在一些实现方式中,如方程105所示,体积形状导数可用作代理形状导数。[0613]接着,呈现距离-法向量-曲率惩罚的形状导数的导数。首先,分别呈现带符号距离函数、单位法向量函数和曲面曲率函数的形状导数的推导。然后,呈现这三个形状导数的组合惩罚的推导。[0614]带符号距离函数的形状导数[0615]假设是具有边界的域在本说明书中,作为映射在本说明书中,作为映射的的距离函数由以下项定义:[0616][0617]对于每个将集合定义为y∈ω的集合,在所述集合中实现了以上最小值。在恰好由一个点组成的情况下,该点被称为由x到上的最近点投影并且由表示。另外,如下将符号分配给距离函数:对于x∈ω.,而对于而对于的带符号距离函数现在可被定义为[0618][0619]可容易地看到,是1-lipschitz,即,它的差商统一以1为边界。因此,通过rademacher定理,它几乎在任何地方都是可微分的,并且无论的性质如何,这都是适用的。的中轴被定义为集合其中距离函数的平方是不可微分的。在上是永远不可微分的,而当是可微分的曲面时,至少在上是可微分的。因此,中轴使用来定义以排除的除了异常点之外的所有点。根据定义,s的勒贝格(lebesgue)测度等于零。可证实,点的集合是s的子集,对于所述集合,由至少两个不同的点组成。[0620]为了支持以下描述,呈现了微分几何图形的以下事实。为了便于描述,假设ω的边界在以下意义上是“合理的”:存在其切面并且所述切面可微分地变化,使得的曲率可使用单位法向量场的切向导数来定义。还假设为至少c2,这意味着可被表述为c2函数的曲线图的有限集的并集。[0621]假设假设是的单位向外法向量场。假设k1(y)、k2(y)是在处相对于的主曲率,并且假设e1(y)、e2(y)是y处的的切面与y处的主曲率方向对准的正交基。[0622]命题1.假设ω是具有c2边界的域。设想然后,在x处是可两次微分的。此外,如果则在x处也是可两次微分的。当且仅当时,点在上具有唯一投影。在这种情况下,并且在x处的梯度是[0623][0624]对于每个和每个以下项成立:[0625][0626]此外,s的闭包由s中的所有点连同严格遵守以上不等式中的至少一者的所有点组成。[0627]设想x不在s的闭包中。则[0628][0629]并且[0630][0631]假设t∈:是作为向量场θ:的流动出现的变换的单参数族。这意味着:tε满足以下方程:[0632][0633]t0=恒等式ꢀꢀ(144)[0634]回想一下,形状依赖函数fω:相对于这个变化的拉格朗日导数被定义为:[0635][0636]并且fω相对于这个变化的欧拉导数被定义为:[0637][0638]接下来的结果给出了带符号距离函数的欧拉导数。[0639]命题2.如果x不属于s的闭包,则带符号距离函数相对于在x处由向量场θ生成的变化的欧拉导数满足:[0640][0641]证明如下。首先,计算带符号距离函数相对于在x处由向量场θ生成的变化的拉格朗日导数。对于这个使用(tε(x))=||tε(x)-yε||,其中yε在所有上最小化了||tε(x)-y||。结果是[0642][0643]这是借助于对条件进行微分而获得的。类似地,可证实,欧拉导数的定义中的梯度项是期望的公式如下。[0644]考虑以下形式的形状函数:[0645][0646]其中φ是其自变量的平滑函数。使用形状微积分的标准工具,以及带符号距离函数的欧拉导数的公式来计算φ的形状导数。[0647]命题3.假设tε:是作为向量场θ:的流动出现的变换的单参数族。则[0648][0649]其中θ⊥是θ在上的法向分量,并且是φ相对于其第二自变量的偏导数。如果某个量的欧拉导数由质数表示,则[0650][0651]观察到,以上公式中出现的第一积分不处于hadamard-zolésio结构定理的标准形式,即在上的曲面积分。公式在上确实仍然取决于θ⊥,因此定理仍然成立。基于余面积公式而使用变量变化,此积分可以标准形式进行表述。以下结果应归于dapogny等人,geometricconstraintsforshapeandtopologyoptimizationinarchitecturaldesign,computationalmechanics,springerverlag,(2017,59(6),第933页至第965页)。[0652]命题4.假设ω是具有c2边界的域。则[0653][0654]其中t(y)是沿着从向内散发的光线到的中轴的距离,并且j(y,τ)是变量变化的雅可比因子,其为[0655][0656]应注意,以上的雅可比因子具有特别好的替代形式。将乘积展开得出:[0657][0658]其中和分别是的平均曲率和高斯曲率。这是因为这些是的第二基本形式的不变量,其中主曲率是特征值。[0659]单位法向量函数的形状导数[0660]假设∑是嵌入欧几里得空间中的任何有向的平滑曲面,并且假设y:是在背景欧几里得空间上定义并完全独立于∑的平滑向量场。考虑以下形式的形状函数:[0661]φ(∑):=∫∑φ(x,《y(x),n∑(x)》dσ(x))ꢀꢀ(155)[0662]其中φ:是其自变量的平滑函数。在以上被积函数中出现的对象是:∑的单位法向量n∑、∑的表面积元素dσ。φ在给定形状∑下的形状导数相对于任何给定的形状变型进行计算。这意味着:假设tε(∑)是由欧几里得空间的变换tε的单参数族生成的∑的变型;则相对于这个变型的形状导数是[0663][0664]为了计算φ的形状导数,首先更详细地描述变换tε。存在继续进行的许多方式,并且全部都等同于ε的一阶。在以下描述中选择了哈达玛(hadamard)速度方法,因为它非常适合于基于水平集的形状优化,但是应理解,可使用其他方法,诸如在m.c.delfour和j.p.zol′esio,shapesandgeometries:metrics,analysis,differentialcalculus,andoptimization(第2版,2011)中描述的那些方法。[0665]设想tε:是作为向量场θ:的流动出现的变换。换句话说,tε满足以下方程[0666][0667]t0=恒等式。[0668]是切向梯度算子,div||是切向散度算子,并且h∑是∑的平均曲率。另外,将φ(x,《y(x),n∑(x)》)写作φ(x,q(x))(其中q(x):=《y(x),n∑(x)》)以强调被积函数的结构,并且φ的偏导数相对于其第二自变量表示为[0669]命题1.假设∑是嵌入欧几里得空间中的有向的平滑曲面,并且假设tε是由向量场θ:生成的∑的变型。φ在∑处的形状导数由以下项给出[0670][0671]其中θ⊥是θ在∑上的法向分量,并且表示法线方向上的全方向导数。证明如下。应用欧拉导数的微积分以获得:[0672][0673]其中质数表示欧拉导数。[0674]因为y与形状无关,因此其欧拉导数会消失,并且因此,在分部分求积分之后,[0675][0676]考虑在方程160中推导的公式的具体应用。也就是说,应用dapogny等人论文中的函数φ的公式,即[0677]φ(《x,n∑》):=||y-n∑||2=2-2《x,n∑》ꢀꢀ(161)[0678]其中y是在欧几里得空间上定义的平滑的形状无关的单位向量场。由于作为其自变量的函数φ(x,q)=2-2q,则是常数函数因此,在此情况下产生了命题1并且:[0679][0680]此时,使用对于背景欧几里得空间上的任何向量场都有效并受限于∑的恒等式因此,[0681][0682]这个公式几乎与dapogny等人论文中的公式相同。存在两处差异:第一差异是dapogny的论文中仅出现切向散度算子;第二差异是平均曲率以与dapogny的论文中相反的符号出现。第一差异很可能归因于误差,而第二差异归因于以下事实:dapogny的论文对平均曲率使用了相反符号约定。在论文中,h∑相对于向内单位法向量进行定义,而在此处,它相对于向外单位法向量进行定义。(前一个约定具有以下优点:球面的平均曲率为正并且等于2,而后一个约定具有以下优点:理论公式总体上含有更少的负号,但是事实是单位球面的平均曲率是-2。)[0683]可证实,某一水平集函数f:的形式的水平集的平均曲率等于其中是水平集的单位法向量场。因此,如果命题1的公式中的y具有这种形式,则形状导数可被解释为∑的平均曲率与水平集的平均曲率之差。[0684]第二实例涉及2.5d可制造性惩罚。在此情况下,像先前一样使用惩罚函数φ,但是在存在被积函数的情况下,函数是[0685]φ(x,q(x)):=[q(x)]2e(x)ꢀꢀ(164)[0686]其中像先前一样q(x):=《y(x),n∑(x)》,但是存在以下重要差异:-y实际上是表示铣削方向的常数向量场,因此函数e(x)是偏移指数冲击函数的乘积。因此,结果是[0687][0688]因为y是常数。[0689]曲面曲率函数的形状导数[0690]假设∑是中的平滑的有向曲面。考虑以下形式的取决于∑的曲面曲率不变量(即,平均曲率和全曲率)的形状函数:[0691][0692]其中h∑是∑的平均曲率,||a∑||2是∑的全曲率,并且φ是其自变量的平滑函数。[0693]以下是对计算这种形式的形状函数的形状导数的描述。换句话说,将针对任何变型tε(∑)展示如何计算导数[0694][0695]其中tε:是作为向量场θ:的流动出现的变换的单参数族。这意味着:tε满足以下方程[0696][0697]t0=恒等式。[0698]与曲面∑相关联的主要几何对象是诱导曲面度量张量h∑(即,第一基本形式)、单位法向量场n∑和第二基本形式a∑。上文描述了这些分量相对于上文介绍的变型的导数计算(而不是其分量相对于∑的切丛的局域基的导数计算,因为这些量是张量的)。[0699]为了进行计算,在黎曼几何中的嵌入曲面的背景下介绍了一些初步概念。首先,在任意点x∈∑附近使用∑的局部参数化以借助于映射来将∑的在x附近的足够小的管状邻域参数化。在此参数化下,ε方向映射到向量场θ。引入一对向量场该对向量场在∑附近足够线性独立并且对于每个ε都与tε(∑)相切。这通过以下方式来实现:将∑的切丛的关于参数化的局部坐标基前推到∑的足够小的管状邻域。这意味着:如果e°1、e°2表示这个基,则使用以下定义ei(y):=dtε(e°i(x)),对于一些x∈∑,足够接近∑的任何y具有y=tε(x)形式。在此处,dtε是tε的偏导数的矩阵。其次,向量场n在此管状邻域上进行定义,具有以下性质:如果足够接近∑的y对于一些x∈∑具有y=tε(x)形式,则n(y)是tε(∑)在y处的单位法向量场。记法x=x||+x⊥n是在此管状邻域上定义的向量场x相对于n的正交分解。应注意,如果对于一些x∈∑,y=tε(x),则x||(y)与tε(∑)相切。[0700]假设hε和aε分别是tε(∑)的诱导曲面度量张量和第二基本形式到∑的拉回。则其分量相对于局部基满足[0701][0702]假设[hε]ij表示矩阵hε的逆的分量。应注意,当提及∑上的这些量时,取消了下标ε)。接着,向量场n满足[0703][0704]最终,通过对n的定义方程进行微分,推导出以下项:[0705][0706]这两个方程唯一地确定了向量场事实上,可看到,这些方程在tε(∑)上建立了相关结果是以下引理1。[0707]引理1.以下公式成立:[0708][0709]证明。在θ方向上对方程《n,n》≡1进行微分以推导出必须是切向的。然后,将方程针对i=1、2在θ方向上进行微分以推导出[0710][0711]其中i=1、2。这暗示了结果。[0712]引理2.设想tε是由向量场θ生成的∑的变型并且假设[hε]ij是相对于∑的切丛的任何局部基e1、e2将tε(∑)的诱导曲面度量张量拉回到∑的分量。则[0713][0714]其中aij是∑的第二基本形式相对于局部基的分量并且表示曲面协变导数算子。[0715]证明。可在任何局部基中执行计算,因为可证实,结果独立于基(这是微分几何学的基本原理)。因此,在任意x∈∑处都能使用上文介绍的局部基。由此,通过协变导数在中的定义和性质,得出以下结果[0716][0717]因为以上协变导数之间的差是会消失的李氏括号(liebracket)这是因为θ和两者都是坐标基向量场的前推。(在此计算中,使用了记法其中f:是任何可微分函数;这种记法反映了将向量场x的概念与x方向上的方向导数算子合并的标准微分几何实践。)接着,使用∑的第二基本形式的定义,获得了以下项:[0718][0719]引理3.设想tε是由向量场θ生成的∑的变型并且假设[aε]ij是相对于上文介绍的局部基将tε(∑)的第二基本形式拉回到∑的分量。则[0720][0721]证明。再次,可在任何局部基中执行计算,因为可证实,结果独立于基。因此,在任意x∈∑处都能使用上文介绍的局部基。通过tε(∑)的第二基本形式的拉回的定义,其相对于这个局部基的分量满足由此,通过协变导数在中的定义和性质,得出以下结果:[0722][0723]在方程178的第一项中使用引理1得到[0724][0725]针对方程178的第二项进行以下推导:[0726][0727]因为《n,n)=1并且唯一地一起表征的方程意味着[0728][0729]现在将两个导数代入方程178中得出[0730][0731]这使用协变双张量的曲面协变导数的定义来进行。[0732]∑的曲面曲率不变量为:全曲率,即第二基本形式相对于诱导曲面度量张量的平方范数,表示为||a∑||2;以及平均曲率,即第二基本形式相对于诱导曲面度量张量的迹,表示为h∑。应注意,∑的高斯曲率或固有曲率就这些不变量来说通过公式给出。现在相对于上文介绍的变型给出这些量的导数。[0733]命题4.设想tε是由向量场θ生成的∑的变型并且假设hε是tε(∑)的平均曲率。则[0734][0735]其中δ||是曲面拉普拉斯-贝尔特拉米(laplace-beltrami)算子。[0736]证明。将引理2和引理3应用于定义也就是说,[0737][0738]根据需要,δ||在其出现之处简单地进行识别并且使用科达齐(codazzi)方程来用项替代[0739]命题5.设想tε是由向量场θ生成的∑的变型并且假设||aε||2是tε(∑)的全曲率。则[0740][0741]证明。将引理2和引理3应用于定义所需计算类似于证明先前引理的那些计算。[0742]积分曲面曲率的变型[0743]在此部分中,考虑了∑的曲面曲率不变量的曲面积分。首先,描述了以下初步结果。[0744]引理6.设想tε是由向量场θ生成的∑的变型并且假设[hε]ij是相对于∑的切丛的任何局部基e1、e2将tε(∑)的诱导曲面度量张量拉回到∑的分量。假设φ∑:是形状可微分的曲面依赖标量函数。则[0745][0746]其中div||是曲面散度算子并且h∑是∑的平均曲率。[0747]证明。通过曲面积分的变量变化公式,[0748][0749]最后,使用引理2和以下计算:[0750][0751]命题7.假设φ是介绍中所陈述的形式的曲面积分算子。设想tε是由向量场θ生成的∑的变型。则[0752][0753]代入命题4和5的结果:[0754][0755]因为含有θ||的所有项都可通过广义斯托克斯定理(stokes′theorem)证实为等于会消失的∫∑div||(φ(h∑,||a∑||2)θ||)dσ。[0756]组合距离-法向量曲率惩罚的形状导数[0757]假设ω是中的域。用于惩罚ω的几何特征的某一类形状函数的一般形式是基于带符号距离函数,以及边界曲面的法向量场和曲率不变量。具体地,考虑以下形状函数:[0758][0759]其中φ和ψ是其自变量的平滑函数,并且分别是的带符号距离函数、法向量场和平均曲率。大多数几何性能函数(例如,表面积、用于形状平滑的willmore能量、厚度惩罚、悬垂角惩罚)都可以这种形式进行转换。[0760]归功于用于形状微分的链式法则,方程191的形状导数的计算分解成多个部分。假设ωε是由边界速度函数θ:生成的ω的变型,其中切向部分和法向部分分别由θ||和θ⊥表示。则,[0761][0762]其中·表示所谓的拉格朗日导数并且表示对运算对象的第k个槽求偏导数。函数f的拉格朗日导数被定义为f沿循由θ诱导产生的变化的导数。向量场的拉格朗日导数类似地定义。[0763]以上的拉格朗日微分表达式中的每一者都具有用上文已经推导的θ||和θ⊥来表示的公式。此外,可证实,对θ||的依赖性在最终表达式中已完全消失(这个结果被称为hadamard-zolésio结构定理)。这通过以下方式来证实:引入对于体积被积函数通过定义并对于曲面被积函数通过定义的欧拉导数。现在归功于斯托克斯定理,对θ||的所有显式依赖都消失了:[0764][0765]其余的欧拉微分项可使用上文推导的以下方程来处理。这些方程是:[0766][0767][0768][0769]其中是到上的最近点投影,并且δ||是的拉普拉斯-贝尔特拉米算子,并且是的第二基本形式的平方弗罗贝尼乌斯范数(squaredfrobeniusnorm)(又称为全曲率或平方主曲率之和)。将这些代入方程193中得出形状导数公式。[0770]图7c示出了使用应力约束生成将制造的对象的三维模型的一个或多个部分的过程的实例。计算机辅助设计程序获得702增材制造对应的物理结构将依据的建模对象的设计空间、建模对象的包括至少一个应力约束的设计标准、物理结构的至少一种使用中载荷状况和增材制造物理结构所用的一种或多种材料的规范。[0771]规范包括信息,例如,厚度的数据集或函数、构建角度或两者,以生成材料的对应强度。规范指示一种或多种材料的多个强度值,所述强度值各自取决于使用一种或多种材料将构建的物理结构的厚度、以及构建角度中的一者或两者。使用一种或多种材料增材制造将制造的对象。[0772]产生704建模对象的生成设计的三维形状,这包括根据设计标准、至少一种使用中载荷状况和一种或多种材料的规范来修改三维形状的几何图形和三维形状的拓扑两者。产生704包括在建模对象的对象形状和拓扑修改期间根据来自多个强度值的相应值来改变对建模对象之上或之中的不同位置处的应力约束的评估。在一些实现方式中,使用其他约束,例如应变约束或位移约束。每个强度值对应于不同位置中的每个位置处的厚度和构建角度中的一者或两者。应注意,如结合图7a所描述,所描述的设计数字孪生技术可通过基于密度的拓扑优化(例如,使用simp方法),而不是基于边界的拓扑优化(例如,水平集方法)来实现。在任一种情况下,提供706建模对象的生成设计的三维形状以用于增材制造物理结构。[0773]在一些实现方式中,每个强度值对应于不同位置中的每个位置处的厚度或厚度和构建角度两者。此外,产生704包括:测量不同位置中的每个位置处的厚度;以及至少基于不同位置中的每个位置处的所测量的厚度而计算相应的强度值。如上文参考图6b所描述,测量厚度可包括对建模对象的生成设计的三维形状使用厚度测量,所述厚度测量是至少两种不同的厚度测量的组合。两种不同的测量可包括至少以下项的组合(i)第一距离测量是从建模对象的曲面点在负法线方向上进行光线投射的建模对象内的长度,并且(ii)第二距离测量是接触建模对象的曲面点并在建模对象内部拟合的最大球面的直径,如通过检查在球面的曲面上定义的离散的采样位置来确定。[0774]在一些实现方式中,修改三维形状的几何图形和拓扑两者包括强制执行限制建模对象的生成设计的三维形状的最小厚度的设计标准,例如,最小厚度是基于材料的临界疲劳裂纹长度,如参考图6a至图6e所描述。最小厚度可为临界疲劳裂纹长度的比率,诸如最小厚度是临界疲劳裂纹长度的10倍。[0775]返回到图7a,使用最大化的应力或应变元素和使疲劳强度与载荷循环相关的数据针对物理结构的一种或多种使用中载荷状况中的每一者确定712预期载荷循环数。使疲劳强度与载荷循环相关的数据可为经验的,即,例如,如图6d所示,来自对应材料的先前测量的强度的表格,或者数据可基于函数而生成,所述函数针对使用对应材料构造的对象的给定载荷状况的输入载荷循环数生成疲劳强度作为输出。[0776]基于根据建模对象的所需载荷循环数以及物理结构的一种或多种使用中载荷状况中的每一者的预期载荷循环数来计算的损伤分数而对建模对象重新定义疲劳安全系数不等式约束。如上文参考图4a至图4h所描述,可应用用于处理任意约束(包括不等式约束)的技术。[0777]至少根据疲劳安全系数不等式约束来计算716三维形状的水平集表示中的隐式曲面的形状变化速度。使用形状变化速度来更新718水平集表示以产生建模对象的三维形状的更新型式。在一些实现方式中,计算形状变化速度包括使用根据不同位置中的每个位置处的厚度和构建角度中的一者或两者的形状导数(例如,方程193所示和上文所推导的形状导数)来确定的梯度计算至少一个形状变化速度。[0778]可替代地或组合地,即在存在多个约束的情况下,可使用至少一个形状变化速度通过根据形状导数公式确定的量来计算形状变化速度,所述形状导数公式近似于不同位置中的每个位置处的厚度和构建角度中的一者或两者的形状导数。一个示例形状导数公式是上文参考方程105所描述的体积形状导数公式。[0779]如上文参考任意不等式约束和方程91-102所描述,可将重要性系数应用于不等式约束以使用包括基于体积分数的不等式约束的形状导数公式来修改基于体积分数的不等式约束。这种约束也可为上文参考方程123-127所描述的最小厚度不等式约束,或如上文参考图5a至图6e所描述的基于应力的不等式约束。约束可使用重要性系数来修改,基于迭代地修改的先前迭代中是否违反一个或多个其他约束而调整所述重要性约束。修改重要性系数的实例是乘以违反乘子。[0780]重复执行708、查找710、确定712、重新定义714、计算716和更新718,直到检查720确定已经执行预定义次数的形状修改迭代,或者设计空间中的建模对象的生成设计的三维形状针对一个或多个设计标准和一种或多种使用中载荷状况已收敛于稳定解为止,如上文参考图3a所描述。可通过设计数字孪生来运行任何约束,只要在该过程期间运行数值模拟即可,例如,如上文参考图4a至图4h所描述处理任何约束。因此,数字孪生并不专属于损伤容限疲劳。类似地,任何数量的约束都可与设计数字孪生共存,因为所述设计数字孪生仅影响数值模拟中所使用的材料模型。[0781]奇点和连接断开[0782]包括冯米斯应力约束的应力约束对于运行生成设计来说可能是必不可少的,但是它们很难实现,因为有限元分析模型中的一些元素会显示出非常高的应力。下文提供了可减轻或彻底消除此类高应力的概率方法。尽管以下实例提及应力约束,但是可应用这些技术来避免奇点并且防止针对任何约束进行生成设计期间的连接断开。例如由于锐凹角或较差的网格划分,可能会出现奇点。下文描述的过程可被实现来作为生成设计过程的一部分自动地执行,例如,包括上文参考图3a至图7c所描述的技术。[0783]图8a示出了根据一个或多个设计标准来迭代地修改设计空间中的建模对象的生成设计的三维形状,同时避免过多的突然变化并且最小化连接断开的可能性的过程的实例。计算机辅助设计程序获得814制造对应的物理结构将依据的建模对象的设计空间、建模对象的一个或多个设计标准和物理结构的一种或多种使用中载荷状况。例如,如上文参考图3a、图4a、图5a、图6a和图7a所描述,根据一个或多个设计标准和物理结构的一种或多种使用中载荷状况来在设计空间中迭代地修改建模对象的生成设计的三维形状。[0784]避免奇点的一个解决方案是以下修改的用方程134中的简单的百分位数值σx替代最大应力。[0785][0786]其中σx表示当元素以σ的递增次序排序时处于第x个百分位数的元素的应力。然而,这导致域maxωσ中的最大应力对x的值过于敏感。替代地,使用误差函数的逆将百分位数x转换为标准正常偏差z[0787][0788]接着,根据以下项来计算最大应力:[0789]其中μ(σ)和χ(σ)表示应力分布的平均偏差和标准偏差,这两者都可根据任何常规技术来计算。[0790]下表1示出了对象的基于本部分中所描述的技术而避免的应力奇点:[0791][0792]表1[0793]基于百分位数的方法通过基于对象上处于相同百分位数的点的应力值的标准偏差而平滑某一点处的最大应力来给全局应力的振荡性质带来了稳定性。[0794]高速度平滑[0795]先前部分描述了调节域中的约束值的最大值(即,maxωgi)。这同样适用于约束导数dgt/dω,为清楚起见由dgt表示。[0796]图8b是优化期间几何图形连接断开的实例的图形表示。对象804被示出为处于优化的不同阶段。通常,几何端口可与设计的主体断开连接(在806处示出),在所述主体中,载荷路径由代用材料(ersatzmaterial)占据。具有平流速度非常高的小区域会引起连接断开和局部形状变化。速度钳制和高速度平滑的组合可用于防止这种现象。[0797]归一化:可将所有形状导数归一化,使得当前设计γ的曲面上的最大值的量值近似于体素大小δs[0798][0799]这意味着平流时间t=1/δs足以防止几何图形发生超过一个体素的平流。实现这一点的一种简易方式是利用速度钳制。[0800]速度钳制:速度钳制中的第一步骤是根据上文参考方程197-199所描述的百分位数方法来计算形状导数的参考值。[0801](dgt)参考=μ(dgt)+erf-1(x)χ(dgt)ꢀꢀ(201)[0802]其中μ和χ表示曲面上的形状导数的平均偏差和标准偏差,并且x∈{0.9,0.95,0.99,0.999等}是用户给出的百分位数。应注意,百分位数值x对于诸如应变能的良性形状导数来说可能会高得多(但不会过高),而对于诸如应力的大幅波动的形状导数来说可能会更低。[0803]接着,对于内窄带(即,窄带宽度等于wnbδs)中的所有栅格点xk,对高于参考值(dgt)参考的速度值进行钳制,同时如下保留符号β:[0804][0805]其中ψ(xl)表示栅格点的水平集。然而,这会导致速度剖面的突然变化。速度钳制应当以一种方式完成,使得速度剖面中存在平滑过渡。[0806]高速度平滑:高速度平滑的目标是平滑所有高速度(|dgt|>|(dgt)参考|),使得对高于根据方程201计算的参考速度的所有值实现逐步平滑。用户给出的参数ρ(例如,ρ=0.85)用于缩放小于参考速度的所有速度值[0807][0808]其中k参考表示栅格点在它们以形状导数的次序排序之后的位置索引。[0809]所有栅格点中速度大于参考速度的平滑后的速度如下通过拟合三次多项式来找出:[0810](dgt(xk))平滑=αξ3+bξ2+cξ+dk参考≤k≤nꢀꢀ(204)[0811]其中ξ表示偏移索引ξ=k-k参考。未知系数{a,b,c,d}可通过以下方式求出:通过在ξ=0和ξ=ξ最大=n-k参考处设定适当的边界条件来对所获得的线性方程组进行求解[0812][0813]平滑速度在ξ=0处的梯度可得出为[0814][0815]最终,平滑后的归一化的速度由以下项给出[0816][0817]返回到图8a,在迭代地修改内,根据三维形状的当前型式和一种或多种使用中载荷状况来执行816建模对象的数值模拟以产生建模对象的物理响应(例如,结构响应)的当前数值评估。例如,如上文参考图3a所描述,针对三维形状的水平集表示中的隐式曲面计算818形状变化速度。[0818]然后,根据多项式函数来改变820形状变化速度,所述多项式函数已经拟合到形状变化速度的高于参考速度的至少一部分。例如,如上文参考方程204所描述,多项式函数可为三次多项式。尽管给出的实例是三次多项式,但是可使用其他不同阶的多项式。[0819]例如,如上文参考图3a所描述,使用形状变化速度来更新822水平集表示以产生建模对象的三维形状的更新型式。在一些实现方式中,例如,如上文所描述,参考速度基于隐式曲面上的形状导数的平均偏差和标准偏差而设定。[0820]在迭代地修改中重复执行816、计算818、改变820和更新822,直到检查830确定已经执行预定义次数的形状修改迭代,或者设计空间中的建模对象的生成设计的三维形状针对一个或多个设计标准和一种或多种使用中载荷状况已收敛于稳定解为止,例如,如上文参考图3a所描述。最终,可提供建模对象的生成设计的三维形状,以用于使用一个或多个计算机控制的制造系统来制造对应于建模对象的物理结构。[0821]备份和恢复[0822]用于防止几何连接断开的另一种技术是在每次迭代时备份包括几何水平集的所有关键数据,并且当平流结果不理想时恢复数据。因此,在一些实现方式中,在更新822之后但在重复之前,可在更新期间所进行的改变中检查824过度变化。在这些情况下,可将三维形状的当前型式设定826为三维形状的更新型式以在下一次迭代中解除(undue)过度变化,即,撤销过度变化。然后,如下文所描述,可减缓828迭代地修改的下一次迭代中的形状变化。减缓下一次迭代的变化可包括在迭代地修改的下一次迭代中减小建模对象的生成设计的三维形状的目标体积变化。[0823]为了防止重复出现相同的不期望的结果,如下并使用乘子β修改如上文参考图4a至图4h所描述的针对每次迭代t计算的体积变化δvt,这通过施加较小的体积变化来减缓收敛:[0824]δvt←βδvt。ꢀꢀ(208)[0825]在开始时可将这个乘子启动为β=1并且使用固定增量δβ(>0)根据每次平流的结果而在每次迭代中更新所述乘子:[0826]β←max(0,β-δβ)如果平流不期望ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(209)[0827]β←min(1,β+δβ)其他ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(210)[0828]下一个任务是将每次平流的结果分类为期望/不期望。实现这一点的一种方式是监测拉格朗日量的变化,即,如上文参考方程15-25所描述来进行。这可通过对目标的容许的相对变化强加限制而以更精细的方式实现。给定迭代t的目标/约束的相对变化被定义为[0829][0830][0831]其中约束误差使用方程95的pid稳定型式,通过使用上文参考任意不等式约束和图4a至图4h所描述的技术计算的重要性系数项来计算。由表示的目标的参考值由以下项给出[0832][0833]目标的最大容许变化分别受限于目标减小量和增加量约束的最大容许变化分别受限于约束的正变化(良性)负变化(恶性)需要检查约束不等式的符号以确定适当的极限。[0834]因此,在一些实现方式中,在完成执行816之前,识别并去除815在数值模拟中根据三维形状的当前型式生成的但是在狄利克雷边界条件下部分地而不完全地在隐式曲面内的元素,之后执行数值模拟。元素和节点是指在执行816期间如何表示设计几何图形。在有限元模拟中,用元素的集合替代域。每个元素由沿着元素的边界并在一些情况下在元素内部的一组节点定义。一般而言,模型中的元素和节点越多,模拟的准确性越高。用于创建这些节点和元素的一组技术被称为网格划分。[0835]在优化期间,当前域的形状会反复地变化。在对有限元模型的每次迭代中可对模型重新进行网格划分,以准确地表示当前域。由于这在计算上很昂贵,因此一些生成设计过程会在每次迭代时停用位于当前域之外的元素。可在数值模拟模型中通过去除不完全在隐式曲面内的元素来改进当前设计的表示。可通过将此类切割元素视为具有部分刚度来提高整体准确性。[0836]此外,在一些实现方式中,检查824过度变化可包括在迭代地修改的单次迭代中将在一个或多个设计标准下由更新所致的变化与针对一个或多个设计标准所允许的变化量的预定义极限进行比较。[0837]代用材料[0838]拓扑优化的simp方法中的常见做法是使用可变密度材料或代用材料。具有密度ρ=1的元素被视为在域内部,而具有∈<ρ<1的那些元素是在边界上,其中∈(通常被设定为诸如0:001的小值)表示在设计之外的材料的密度。在有限元分析期间,将每个元素的刚度乘以密度以及惩罚因子p以惩罚中间密度[0839]k←ρpk。ꢀꢀ(214)[0840]水平集方法往往仅使用两种状态(ρ∈{∈,1})作为边界并且因此定义更为清晰。由于不存在中间密度,即k←ρpk,因此不需要惩罚因子。然而,这有时会导致连接断开,因为在域之外具有ρ=∈的元素可支持载荷路径。[0841]另外,已经观察到,具有存在ρ=∈的材料会严重影响根据有限元模型预测的稳定安全系数。可从有限元模型中完全去除对预测的稳定系数具有重大影响的代用材料。这通过以下方式来实现:在每次迭代时对具有ρ=∈的所有元素进行分组并且去除在狄利克雷边界条件下未连接到任何节点的所有此类分组。[0842]如上所述,在图8a所示的过程的一些实现方式中,在执行816之前,识别815在数值模拟中根据三维形状的当前型式生成的部分地而不完全地在隐式曲面内的元素。然后,可将所识别的元素的密度设定为等于所识别的元素的相应的体积分数,其中所识别的元素的体积分数是落入隐式曲面内的所识别的元素的分数量。在一些实现方式中,执行816可包括如下文所描述根据密度惩罚所识别的元素的刚度。[0843]作为严重的连接断开问题的另一个解决方案,可应用四面体切割算法,所述算法恢复了代用材料在当前域的边界上的元素中的使用。实质上,通过将密度设定为等于域内部的元素的体积分数,更好地近似此类元素的刚度。就像在simp方法中一样,之后根据密度来惩罚刚度,其中惩罚因子为p=1:[0844][0845]k(ei)←ρ(ei)k(ei)。[0846]计算域内部的每个元素的体积并非易事,因为与域有效重叠的一些元素的所有节点可能在元素之外。[0847]图8c是具有模拟元素810的几何图形808的实例的图形表示,所述模拟元素基于元素810与几何图形808的交集而进行分类。下文相对于元素示出了问题。可对此类元素进行细分812直到节点处于第0个等值轮廓线的任一侧上,即[0848][0849]其中xi表示元素e的节点坐标。应注意,可能必须对某些元素(例如,元素)进行多次细分,直到它们满足方程216的条件为止。细分l的所需深度可通过递归地细分元素并比较域内部的总体积来确定[0850][0851]其中表示元素的子元素的索引。当以上条件成立时,可停止递归细分。在一些实现方式中,将体素大小δs设定为固体元素的平均边缘长度的一半。考虑到最小特征大小≈δs,通常仅仅1级的细分就足够了。[0852]四面体元素的体积分数可根据域来缩减。当计算元素边缘与第0个等值轮廓线的交点时,可使用线性插值[0853][0854]图9是包括数据处理设备900的数据处理系统的示意图,所述数据处理设备可被编程为客户端或服务器。数据处理设备900通过网络980与一个或多个计算机990连接。尽管在图9中仅示出了一个计算机作为数据处理设备900,但是可使用多个计算机。数据处理设备900包括可分布于应用层与操作系统之间的各种软件模块。这些软件模块可包括可执行和/或可解释的软件程序或文库,包括实现上文描述的系统和技术的一个或多个3d建模程序904的工具和服务。因此,一个或多个3d建模程序904可为一个或多个cad程序904并且可实现一个或多个生成设计过程(例如,使用一种或多种基于水平集的方法来进行生成设计)以进行拓扑优化和数值模拟操作(有限元分析(fea)或其他操作)。此外,一个或多个程序904可潜在地实现制造控制操作(例如,生成和/或应用工具路径规范以实施设计对象的制造)。所使用的软件模块的数量可随实现方式而变化。此外,软件模块可分布于通过一个或多个计算机网络或其他合适的通信网络连接的一个或多个数据处理设备上。[0855]数据处理设备900还包括硬件或固件装置,包括一个或多个处理器912、一个或多个附加装置914、计算机可读介质916、通信接口918和一个或多个用户接口装置920。每个处理器912能够处理用于在数据处理设备900内执行的指令。在一些实现方式中,处理器912是单线程或多线程处理器。每个处理器912能够处理存储在计算机可读介质916上或诸如附加装置914中的一个附加装置的存储装置上的指令。数据处理设备900使用通信接口919,例如通过网络980来与一个或多个计算机990通信。用户接口装置920的实例包括显示器、相机、扬声器、传声器、触觉反馈装置、键盘、鼠标以及vr和/或ar设备。数据处理设备900可将实现与上文描述的一个或多个程序相关联的操作的指令存储在例如计算机可读介质916或者一个或多个附加装置914上,例如以下项中的一者或多者:硬盘装置、光盘装置、磁带装置和固态存储器装置。[0856]本说明书中描述的主题的实施方案和功能操作可在以下项中实现:数字电子电路;或计算机软件、固件或硬件,包括本说明书中公开的结构以及其结构等效物;或它们中的一者或多者的组合。本说明书中描述的主题的实施方案可使用计算机程序指令的一个或多个模块来实现,所述计算机程序指令被编码在非暂时性计算机可读介质上以供数据处理设备执行或控制所述数据处理设备的操作。计算机可读介质可为制造产品,诸如计算机系统中的硬盘驱动器或通过零售渠道出售的光盘、或嵌入式系统。计算机可读介质可能被单独需要并且稍后,例如在通过有线或无线网络传送计算机程序指令的一个或多个模块之后利用计算机程序指令的一个或多个模块进行编码。计算机可读介质可为机器可读存储装置、机器可读存储基板、存储器装置或者它们中的一者或多者的组合。[0857]术语“数据处理设备”涵盖用于处理数据的所有设备、装置和机器,作为举例包括可编程处理器、计算机或者多个处理器或计算机。除了硬件,所述设备还可包括为正讨论的计算机程序创建执行环境的代码,例如构成以下项的代码:处理器固件、协议栈、数据库管理系统、操作系统、运行时环境、或它们中的一者或多者的组合。此外,所述设备可采用各种不同的计算模型基础设施,诸如web服务、分布式计算和栅格计算基础设施。[0858]计算机程序(也被称为程序、软件、软件应用、脚本或代码)可以任何合适的编程语言形式编写,包括编译或解释语言、声明性或过程性语言,并且所述计算机程序可以任何合适的形式部署,包括作为独立程序或作为模块、部件、子例程、或适合用于计算环境中的其他单元进行部署。计算机程序不一定对应于文件系统中的文件。程序可存储在保存其他程序或数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中、专用于正讨论的程序的单个文件中或多个协调文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。计算机程序可被部署来在一个计算机上或多个计算机上执行,所述多个计算机位于一个场地或分布于多个场地并且通过通信网络来互连。[0859]本说明书中描述的过程和逻辑流可由一个或多个可编程处理器执行,所述可编程处理器执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行功能。所述过程和逻辑流还可由专用逻辑电路例如fpga(现场可编程门阵列)或asic(专用集成电路)执行,并且设备也可被实现为以上各项。[0860]适合于执行计算机程序的处理器作为举例包括通用和专用微处理器两者,以及任何种类数字计算机中的任一个或多个处理器。一般而言,处理器会从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器,以及用于存储指令和数据的一个或多个存储器装置。一般而言,计算机还会包括或可操作地耦合来从用于存储数据的一个或多个大容量存储装置,例如磁盘、磁光盘或光盘接收数据或向其传送数据或两者兼有。然而,计算机不需要具有此类装置。此外,计算机可嵌入在另一个装置中,例如移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏控制台、全球定位系统(gps)接收器或便携式存储装置(例如,通用串行总线(usb)闪存驱动),仅列举几例。适合于存储计算机程序指令和数据的装置包括所有形式的非易失性存储器、介质和存储器装置,作为举例包括半导体存储器装置,例如eprom(可擦除可编程只读存储器)、eeprom(电可擦除可编程只读存储器)和快闪存储器装置;磁盘,例如内置硬盘或可移动盘;磁光盘;以及cd-rom和dvd-rom盘。处理器和存储器可通过专用逻辑电路进行补充,或并入其中。[0861]为了提供与用户的交互,本说明书中描述的主题的实施方案可在计算机上实现,所述计算机具有:显示装置,例如lcd(液晶显示器)显示装置、oled(有机发光二极管)显示装置或另一种用于向用户显示信息的显示器;以及用户可利用来向计算机提供输入的键盘和指点装置,例如鼠标或轨迹球。也可使用其他种类的装置来提供与用户的交互;例如,提供给用户的反馈可为任何合适形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且来自用户的输入可以任何合适的形式接收,包括声音、言语或触觉输入。[0862]计算系统可包括客户端和服务器。客户端和服务器通常远离彼此并且典型地通过通信网络交互。客户端和服务器的关系借助于相应的计算机上运行且彼此具有客户端-服务器关系的计算机程序来产生。本说明书中描述的主题的实施方案可在计算系统中实现,所述计算系统包括后端部件,例如像数据服务器;或包括中间件部件,例如应用服务器;或包括前端部件,例如客户端计算机,所述客户端计算机具有图形用户界面或浏览器用户界面,通过所述图形用户界面或浏览器用户界面,用户可与本说明书中描述的主题的实现方式交互;或一个或多个这种后端、中间件或前端部件的任何组合。所述系统的部件可通过数字数据通信的任何合适的形式或介质例如通信网络来互连。通信网络的实例包括局域网(“lan”)和广域网(“wan”)、互联网络(例如,互联网)以及对等网络(例如,自组织对等网络)。[0863]虽然本说明书包含许多实现方式细节,但是这些细节不应被解释为限制要求保护或可能要求保护的内容的范围,而应被解释为是对所公开的主题的具体实施方案所特有的特征的描述。在本说明书中在单独的实施方案背景下描述的某些特征还可在单一实施方案中组合地实现。相反,在单一实施方案背景下描述的各种特征也可在多个实施方案中单独地或以任何合适的子组合实现。此外,尽管上文可能将特征描述为以特定组合操作,并且甚至起初也是这样要求保护的,但是来自所要求保护的组合的一个或多个特征在一些情况下可从该组合中去除,并且所要求保护的组合可指向子组合或子组合的变型。[0864]类似地,虽然操作在附图中以特定次序示出,但是这不应被理解为为了实现期望的结果,要求此类操作以所示的特定次序或以有序次序执行,或者要执行所有示出的操作。在某些情况下,多任务处理和并行处理可能是有利的。此外,上文描述的实施方案中的各种系统部件的分离不应被理解为在所有实施方案中都需要这样的分离,并且应理解,所描述的程序部件和系统通常可被一起集成到单个软件产品或封装到多个软件产品中。[0865]因此,已经描述了本发明的具体实施方案。其他实施方案也在所附权利要求的范围内。此外,权利要求中叙述的动作可以不同次序执行并且仍然实现期望的结果。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1