活动介绍

【Nastran求解器策略】:如何为不同问题类型选择最佳求解器

立即解锁
发布时间: 2025-01-13 03:08:31 阅读量: 86 订阅数: 30 AIGC
ZIP

MYSTRAN:NASA 开发的基于 Fortran 的 NASTRAN 库求解器

![学习patran和nastran的100个问题总结](https://forums.autodesk.com/t5/image/serverpage/image-id/403117i1537E9051DA1940A?v=v2) # 摘要 本文系统地介绍了Nastran求解器的基础知识,详细探讨了不同求解器的类型、特点及其适用场景,并提供了选择求解器的理论依据。通过对比分析求解器的性能,包括精度、稳定性和资源消耗,本文阐述了在实际工程案例中如何选择最佳求解器,并给出了结果分析。此外,本文还探讨了优化求解策略的方法,如预处理、网格划分、并行计算和后处理,以提高求解效率和准确性。最后,本文针对特定工程问题,如多物理场耦合分析、高级材料模型应用以及大规模系统仿真,提出了一系列高级求解策略。 # 关键字 Nastran求解器;求解器类型;性能对比;案例分析;求解策略;并行计算;多物理场耦合;高级材料模型;大规模仿真 参考资源链接:[Patran与Nastran学习精要:100个问题解析](https://wenku.csdn.net/doc/2c0ssm0w03?spm=1055.2635.3001.10343) # 1. Nastran求解器基础知识 Nastran求解器是有限元分析(FEA)领域内的一款强大的工具,它在工程问题求解中发挥着至关重要的作用。本章节将为读者提供Nastran的基础知识,为理解后续章节的深入讨论打下坚实的基础。 ## 1.1 Nastran求解器概述 Nastran求解器是由美国国家航空咨询委员会(NASA)开发的一款通用结构分析软件。最初设计用于航空航天工程,现今,其应用已经广泛扩展到汽车、机械、土木等众多工程领域。Nastran的核心是基于有限元方法(FEM),该方法将复杂结构划分为更小的元素,通过求解这些元素的刚度矩阵,从而预测整个结构在不同载荷条件下的响应。 ## 1.2 求解器组成及其功能 Nastran求解器由多个模块组成,每个模块都有其特定的功能,如:线性静力学求解器用于分析在静止状态下结构受力和变形的情况;非线性分析求解器则处理那些在变形过程中材料属性和几何形态会发生变化的问题;动力学求解器则用于分析结构在动态载荷下的响应,比如振动和冲击问题。 通过下一章节我们将深入了解各种求解器的特点和适用场景,以便读者能够根据自身工程问题的需求选择最合适的求解器。 # 2. 理解不同求解器的特点和适用场景 ## 2.1 求解器类型概览 ### 2.1.1 线性静力学求解器 线性静力学求解器专注于解决结构在恒定载荷下的响应问题。它们基于线性材料模型和小位移理论,能够高效地提供位移、应变和应力等关键参数的精确解。这种类型的求解器适合用于工程设计的初步阶段,用于评估材料性能和设计结构的稳定性。 ```mermaid graph LR A[开始分析] --> B[定义材料和载荷] B --> C[应用边界条件] C --> D[选择线性静力学求解器] D --> E[计算位移和应力] E --> F[验证结果] F --> G[结束分析] ``` ### 2.1.2 非线性分析求解器 非线性分析求解器则更为复杂,因为它们能够处理材料非线性、几何非线性或两者同时存在的情况。此类求解器在分析大位移、接触问题、塑性变形和材料硬化等现象时显得尤为重要。 ### 2.1.3 动力学求解器 动力学求解器关注的是系统在动态载荷作用下的响应,包括瞬态动力学分析和模态分析。这类问题的求解对于理解结构在振动、冲击或周期性载荷下的行为至关重要。 ## 2.2 选择求解器的理论依据 ### 2.2.1 理解问题的物理本质 为正确选择求解器,首先需要对问题的物理本质有深刻理解。例如,对于涉及大变形、大转动或材料塑性变形的问题,就需要选择非线性求解器。而动力学问题则需要考虑系统是否在受到时间依赖的载荷作用。 ### 2.2.2 求解器的数学模型和算法 接下来需要考虑的是求解器的数学模型和算法。不同的求解器可能使用不同的算法来求解同一个问题,因此要根据问题的特殊性质选择合适的算法。 ### 2.2.3 计算资源和效率考量 计算资源和效率也是选择求解器时不可忽视的因素。对于大规模问题,必须考虑求解时间、内存消耗以及是否需要并行计算等因素。 ## 2.3 求解器性能比较 ### 2.3.1 精度和稳定性分析 精度和稳定性是评价求解器性能的关键指标。通过对比不同求解器在已知测试案例中的表现,可以评估它们在实际应用中的可靠性。 ### 2.3.2 大规模问题的求解能力 对于大规模问题,求解器的并行计算能力和内存管理策略显得尤为重要。一些求解器在处理大型网格时速度更快,内存消耗更少。 ### 2.3.3 求解时间和内存消耗 在比较求解器时,求解时间和内存消耗是需要重点考量的。对于需要进行多次迭代和优化的问题,求解器的效率会直接影响到设计周期的长短。 # 3. 实际案例分析:选择最佳求解器的实践 在现代工程设计与分析领域,正确的求解器选择对确保仿真的准确性与效率至关重要。本章节将通过三个实际案例分析来展示如何在不同类型的工程问题中选择最佳求解器。 ## 3.1 线性静力学问题案例分析 ### 3.1.1 案例背景和问题描述 在某汽车制造商中,工程师需要对车架结构在静态载荷下的应力和变形进行评估。由于车架是一个复杂的结构体,包含数百个零件和多种材料,对计算资源的需求较高。求解这类线性静力学问题,选择合适的求解器至关重要。 ### 3.1.2 求解器选择过程 线性静力学问题通常使用线性静力学求解器来解决。根据问题的具体要求,工程师需选择能够高效处理复杂边界条件和材料属性的求解器。在这个案例中,工程师决定使用Nastran的SOL101求解器,因为它支持广泛的线性静态分析类型,包括但不限于线性弹性静力学分析。 ### 3.1.3 结果分析和对比 通过运行SOL101求解器,工程师获得了车架在静态载荷下的应力分布和变形情况。结果通过与实验数据比较,验证了仿真的准确性。此外,工程师还对比了使用其他线性静力学求解器的计算时间与资源消耗,发现Nastran求解器在计算精度和资源利用上都达到了最佳平衡。 ## 3.2 动力学问题案例分析 ### 3.2.1 案例背景和问题描述 在另一个工程案例中,工程师需评估一个高速旋转的涡轮叶片在运行过程中的动态响应。这涉及到复杂的动力学行为,需要考虑惯性效应、阻尼以及可能的非线性特征。 ### 3.2.2 求解器选择过程 为了精确模拟这种动态响应,工程师选择了Nastran的SOL103求解器,它是一个专门为动力学问题设计的求解器。SOL103支持模态分析、谐响应分析、瞬态动力学分析等多种动力学分析类型,非常适合本案例中的动态问题。 ### 3.2.3 结果分析和对比 通过应用SOL103,工程师得到了涡轮叶片在不同转速下的应力和变形情况。通过与理论计算和实际测试结果对比,验证了仿真模型的准确性。同时,也与使用其他动力学求解器的结果进行了比较,SOL103在求解精度和计算效率上均表现优异。 ## 3.3 非线性问题案例分析 ### 3.3.1 案例背景和问题描述 非线性问题在工程实践中非常常见,如材料的屈服、接触问题以及大变形等。在本案例中,工程师需要评估一个橡胶垫在大变形下的性能。 ### 3.3.2 求解器选择过程 面对非线性问题,Nastran提供了SOL400系列求解器。这类求解器能够处理材料非线性、几何非线性以及复杂的边界条件非线性。工程师选择了SOL401求解器,它专门用于材料非线性问题。 ### 3.3.3 结果分析和对比 通过使用SOL401求解器,工程师成功模拟了橡胶垫在不同载荷下的大变形行为。仿真结果与实验数据非常接近,验证了模型的准确性。在性能对比中,SOL401在求解非线性问题的稳定性和求解速度上都优于其他非线性求解器。 在完成上述案例分析后,我们总结了各求解器在不同问题类型中的应用效果,并根据实际工程需求进行了选择和优化。下一章节,我们将深入探讨优化求解策略以提高仿真效率的高级话题。 # 4. 优化求解策略以提高效率 ### 4.1 预处理和网格划分的策略 在有限元分析中,预处理和网格划分是两个至关重要的步骤,它们对求解效率和结果准确性有着决定性的影响。网格质量的好坏直接影响到求解器的计算精度和速度,而预处理则是提高线性系统求解效率的关键。 #### 4.1.1 网格质量对求解效率的影响 在进行有限元分析时,高质量的网格划分能够保证模型的几何特征被准确捕捉,并且减少求解过程中的数值误差。一个高质量的网格应满足以下标准: - 单元形状规则,避免出现过度扭曲的单元。 - 网格密度足够,特别是在应力集中的区域应使用更细密的网格。 - 网格过渡平滑,避免出现突变的网格密度变化。 下面的表格展示了不同网格质量对求解效率的潜在影响: | 网格质量 | 计算精度 | 计算时间 | 结果稳定性 | |----------|----------|----------|-------------| | 低 | 差 | 短 | 不稳定 | | 中 | 中 | 中 | 较稳定 | | 高 | 好 | 长 | 稳定 | #### 4.1.2 预处理技术的选取 预处理是在求解器前对线性系统进行的处理,目的是减少求解过程中的计算量。有效的预处理技术包括: - 对称不完全分解预处理(SIP) - 不对称多重网格预处理(AMG) - 低秩近似预处理(LRAP) 使用预处理技术可以加速迭代求解器的收敛速度,减少求解所需的迭代次数。下面是一个使用Python编写的简单的预处理技术应用示例: ```python import numpy as np import scipy.sparse.linalg as sp # 构建一个线性系统 A = np.array([[3, -1, 0, 0], [-1, 3, -1, 0], [0, -1, 3, -1], [0, 0, -1, 2]]) b = np.array([1, 2, 3, 4]) # 使用Jacobi预处理 M = np.diag(A) preconditioner = sp.aslinearoperator(np.diag(1.0 / np.diag(A))) # 使用迭代求解器求解 x, info = sp.gmres(A, b, M=preconditioner) # 输出结果 print("Solution:", x) ``` 在这个例子中,我们首先定义了一个线性系统,然后创建了一个简单的Jacobi预处理器,并使用GMRES迭代求解器求解线性系统。预处理技术的选取取决于问题的特性和求解器的支持。 ### 4.2 并行计算的应用 并行计算是一种通过将计算任务分配给多个处理器来加速计算的方法。在有限元分析中,利用并行计算可以显著缩短大型问题的求解时间。 #### 4.2.1 并行计算的优势 并行计算的优势主要体现在以下几个方面: - **缩短求解时间**:对于大规模问题,通过并行计算可以将求解时间显著缩短。 - **处理能力增强**:可以处理更大规模的问题,这对于复杂系统的仿真至关重要。 - **资源利用最大化**:利用多核处理器的计算能力,提高计算资源的利用率。 #### 4.2.2 并行求解器的配置和优化 配置并行求解器通常涉及以下几个步骤: - **选择合适的并行求解器**:如PETSc、Trilinos等,它们提供了丰富的并行计算接口。 - **处理器通信优化**:通过最小化处理器间的通信来优化性能。 - **负载平衡**:合理分配计算任务,保证每个处理器的负载平衡。 下面是一个并行计算配置的示例,使用了MPI库来实现并行计算: ```c++ #include <mpi.h> #include <iostream> int main(int argc, char* argv[]) { MPI_Init(&argc, &argv); int world_size; MPI_Comm_size(MPI_COMM_WORLD, &world_size); int world_rank; MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); // 伪代码:在每个处理器上执行计算任务 std::cout << "Processor " << world_rank << " out of " << world_size << " is processing." << std::endl; MPI_Finalize(); return 0; } ``` 在这个例子中,我们展示了如何使用MPI进行简单的并行程序配置。程序首先初始化MPI环境,然后获取并输出处理器的总数和当前处理器的排名。实际计算任务应该在`MPI_Finalize()`函数调用之前执行。 ### 4.3 后处理工具和结果验证 在有限元分析完成后,后处理是必不可少的一步。后处理包括可视化结果、提取数据和进行结果验证等。 #### 4.3.1 后处理工具的选择 选择合适的后处理工具对分析结果的理解至关重要。一个优秀的后处理工具应具备以下特性: - **结果可视化**:提供高质量的图形和动画来展示结果。 - **数据提取**:允许用户提取重要的数据点进行进一步分析。 - **交云操作**:支持复杂模型的交互式操作。 #### 4.3.2 结果验证和误差分析 结果验证主要关注于以下几个方面: - **与理论解的对比**:检查结果是否符合理论预期。 - **与其他求解器的对比**:与已验证的求解器结果进行比较。 - **敏感性分析**:分析模型参数变化对结果的影响。 在进行误差分析时,常见的步骤包括: - **网格收敛性检查**:确保结果在网格细化后是收敛的。 - **物理量一致性检查**:比如质量守恒、能量平衡等。 通过以上步骤,我们可以确保我们的分析结果是可信的,并为后续的优化或决策提供坚实的基础。 # 5. 特定工程问题的求解策略 ## 5.1 多物理场耦合分析 ### 5.1.1 耦合问题的特点和挑战 多物理场耦合分析指的是在工程问题中,多个物理场之间相互作用和影响的现象。如流体与结构的相互作用(流固耦合)、热传递与结构变形(热结构耦合)、电磁场与结构响应(电磁结构耦合)等。这些问题的特点包括高度的非线性、计算资源需求大以及求解过程中的不稳定性。 多物理场耦合的挑战主要表现在以下几个方面: 1. 精确建模:不同物理场的方程差异较大,难以用统一的模型进行描述。 2. 稳定性分析:由于物理场之间的相互作用,计算的稳定性和收敛性更难保证。 3. 计算成本:耦合问题通常要求更细的网格划分和更小的时间步长,从而导致巨大的计算量。 ### 5.1.2 耦合求解器的选择和应用 根据不同的耦合问题类型,选择合适的耦合求解器至关重要。在Nastran中,可以选择如下类型的耦合求解器: 1. MSC Nastran SOL 400系列:用于热结构耦合问题的求解。 2. SOL 401系列:适用于流固耦合的仿真分析。 3. SOL 600系列:支持多种多物理场耦合,包括声固耦合和电磁结构耦合等。 应用耦合求解器的基本步骤包括: 1. 定义物理场相关的控制方程和边界条件。 2. 选择恰当的耦合算法,如顺序耦合、直接耦合等。 3. 设定求解器参数,保证求解过程的稳定性和效率。 4. 分析结果,验证耦合效应是否合理。 ## 5.2 高级材料模型的应用 ### 5.2.1 材料模型对求解的影响 材料模型是模拟真实物理现象中材料性质的基础。高级材料模型考虑了材料的非线性行为,如弹塑性、蠕变、疲劳和损伤等,这在高应力集中区、冲击和长期荷载作用下的结构分析中尤为重要。 对求解的影响主要表现在: 1. 结果的准确性:材料模型越接近真实材料行为,结果越准确。 2. 计算难度:高级材料模型通常更复杂,可能增加求解的难度和时间。 3. 收敛性:复杂材料模型可能需要更多的迭代次数来达到收敛。 ### 5.2.2 高级材料模型的实现 在Nastran中实现高级材料模型,需要: 1. 确定材料属性:如弹性模量、泊松比、塑性本构模型参数等。 2. 选择适用的单元类型:如具有非线性材料行为的SOL600系列单元。 3. 设置材料非线性参数:在材料定义中指定非线性行为,如塑性硬化曲线、损伤模型参数等。 4. 进行计算并分析结果:使用高级材料模型进行模拟计算,并仔细检查计算结果的合理性和收敛性。 ## 5.3 大规模系统仿真 ### 5.3.1 系统仿真在复杂工程中的应用 大规模系统仿真涉及复杂、多组件、多物理场的集成分析。这类仿真在汽车、航空航天、船舶、建筑等领域中被广泛应用。 系统仿真的应用优势包括: 1. 整体性能评估:评估产品设计在实际操作条件下的性能。 2. 多学科设计优化:进行多学科协同优化,提高设计效率和质量。 3. 风险评估与管理:预测潜在风险并提前采取措施。 ### 5.3.2 针对大规模系统的求解策略 对于大规模系统的求解策略,以下是几个关键的步骤: 1. 子系统划分:将整个系统拆分成子系统,分别进行建模和分析。 2. 界面协调:确保子系统间的交互界面精确协调,避免误差累积。 3. 模块化建模:利用模块化方法进行建模,便于管理和修改。 4. 分布式计算:采用分布式计算资源,提升计算效率。 采用分布式计算时,还可以考虑使用网格计算、云计算等技术,实现计算任务在多个处理器或计算节点间的并行处理。这样不仅能够缩短计算时间,还可以处理更大规模的问题,更有效地利用现有计算资源。
corwn 最低0.47元/天 解锁专栏
赠100次下载
点击查看下一篇
profit 400次 会员资源下载次数
profit 300万+ 优质博客文章
profit 1000万+ 优质下载资源
profit 1000万+ 优质文库回答
复制全文

相关推荐

SW_孙维

开发技术专家
知名科技公司工程师,开发技术领域拥有丰富的工作经验和专业知识。曾负责设计和开发多个复杂的软件系统,涉及到大规模数据处理、分布式系统和高性能计算等方面。
最低0.47元/天 解锁专栏
赠100次下载
百万级 高质量VIP文章无限畅学
千万级 优质资源任意下载
千万级 优质文库回答免费看
专栏简介
《学习 Patran 和 Nastran 的 100 个问题》专栏汇集了 100 个常见问题,涵盖了从模型构建到仿真分析最佳实践的各个方面。专栏文章提供了深入的见解和实用技巧,包括: * 模型构建和网格划分技巧,以提高模型精度 * 求解器策略,以优化不同问题类型的求解效率 * 性能优化秘笈,以显著提升计算效率 * 常见操作失误的快速修复方案 * 高级模型构建技巧,用于处理接触、载荷和动态分析 * 实战指南,提供 10 个提升问题解决能力的实用技巧 * 网格质量控制流程,以确保模型准确性 * 并行计算技术,以解锁分析速度 * 核心专业术语详解,以深入理解 Patran 和 Nastran * 第三方软件集成策略,以解决复杂问题 * 仿真分析最佳实践,以确保高效和精确的仿真

最新推荐

Rust模块系统与JSON解析:提升代码组织与性能

### Rust 模块系统与 JSON 解析:提升代码组织与性能 #### 1. Rust 模块系统基础 在 Rust 编程中,模块系统是组织代码的重要工具。使用 `mod` 关键字可以将代码分隔成具有特定用途的逻辑模块。有两种方式来定义模块: - `mod your_mod_name { contents; }`:将模块内容写在同一个文件中。 - `mod your_mod_name;`:将模块内容写在 `your_mod_name.rs` 文件里。 若要在模块间使用某些项,必须使用 `pub` 关键字将其设为公共项。模块可以无限嵌套,访问模块内的项可使用相对路径和绝对路径。相对路径相对

Rust开发实战:从命令行到Web应用

# Rust开发实战:从命令行到Web应用 ## 1. Rust在Android开发中的应用 ### 1.1 Fuzz配置与示例 Fuzz配置可用于在模糊测试基础设施上运行目标,其属性与cc_fuzz的fuzz_config相同。以下是一个简单的fuzzer示例: ```rust fuzz_config: { fuzz_on_haiku_device: true, fuzz_on_haiku_host: false, } fuzz_target!(|data: &[u8]| { if data.len() == 4 { panic!("panic s

Rust编程:模块与路径的使用指南

### Rust编程:模块与路径的使用指南 #### 1. Rust代码中的特殊元素 在Rust编程里,有一些特殊的工具和概念。比如Bindgen,它能为C和C++代码生成Rust绑定。构建脚本则允许开发者编写在编译时运行的Rust代码。`include!` 能在编译时将文本文件插入到Rust源代码文件中,并将其解释为Rust代码。 同时,并非所有的 `extern "C"` 函数都需要 `#[no_mangle]`。重新借用可以让我们把原始指针当作标准的Rust引用。`.offset_from` 可以获取两个指针之间的字节差。`std::slice::from_raw_parts` 能从

iOS开发中的面部识别与机器学习应用

### iOS开发中的面部识别与机器学习应用 #### 1. 面部识别技术概述 随着科技的发展,如今许多专业摄影师甚至会使用iPhone的相机进行拍摄,而iPad的所有当前型号也都配备了相机。在这样的背景下,了解如何在iOS设备中使用相机以及相关的图像处理技术变得尤为重要,其中面部识别技术就是一个很有价值的应用。 苹果提供了许多框架,Vision框架就是其中之一,它可以识别图片中的物体,如人脸。面部识别技术不仅可以识别图片中人脸的数量,还能在人脸周围绘制矩形,精确显示人脸在图片中的位置。虽然面部识别并非完美,但它足以让应用增加额外的功能,且开发者无需编写大量额外的代码。 #### 2.

React应用性能优化与测试指南

### React 应用性能优化与测试指南 #### 应用性能优化 在开发 React 应用时,优化性能是提升用户体验的关键。以下是一些有效的性能优化方法: ##### Webpack 配置优化 通过合理的 Webpack 配置,可以得到优化后的打包文件。示例配置如下: ```javascript { // 其他配置... plugins: [ new webpack.DefinePlugin({ 'process.env': { NODE_ENV: JSON.stringify('production') } }) ],

AWS无服务器服务深度解析与实操指南

### AWS 无服务器服务深度解析与实操指南 在当今的云计算领域,AWS(Amazon Web Services)提供了一系列强大的无服务器服务,如 AWS Lambda、AWS Step Functions 和 AWS Elastic Load Balancer,这些服务极大地简化了应用程序的开发和部署过程。下面将详细介绍这些服务的特点、优缺点以及实际操作步骤。 #### 1. AWS Lambda 函数 ##### 1.1 无状态执行特性 AWS Lambda 函数设计为无状态的,每次调用都是独立的。这种架构从一个全新的状态开始执行每个函数,有助于提高可扩展性和可靠性。 #####

Rust数据处理:HashMaps、迭代器与高阶函数的高效运用

### Rust 数据处理:HashMaps、迭代器与高阶函数的高效运用 在 Rust 编程中,文本数据管理、键值存储、迭代器以及高阶函数的使用是构建高效、安全和可维护程序的关键部分。下面将详细介绍 Rust 中这些重要概念的使用方法和优势。 #### 1. Rust 文本数据管理 Rust 的 `String` 和 `&str` 类型在管理文本数据时,紧密围绕语言对安全性、性能和潜在错误显式处理的强调。转换、切片、迭代和格式化等机制,使开发者能高效处理文本,同时充分考虑操作的内存和计算特性。这种方式强化了核心编程原则,为开发者提供了准确且可预测地处理文本数据的工具。 #### 2. 使

并发编程中的锁与条件变量优化

# 并发编程中的锁与条件变量优化 ## 1. 条件变量优化 ### 1.1 避免虚假唤醒 在使用条件变量时,虚假唤醒是一个可能影响性能的问题。每次线程被唤醒时,它会尝试锁定互斥锁,这可能与其他线程竞争,对性能产生较大影响。虽然底层的 `wait()` 操作很少会虚假唤醒,但我们实现的条件变量中,`notify_one()` 可能会导致多个线程停止等待。 例如,当一个线程即将进入睡眠状态,刚加载了计数器值但还未入睡时,调用 `notify_one()` 会阻止该线程入睡,同时还会唤醒另一个线程,这两个线程会竞争锁定互斥锁,浪费处理器时间。 解决这个问题的一种相对简单的方法是跟踪允许唤醒的线

Rust项目构建与部署全解析

### Rust 项目构建与部署全解析 #### 1. 使用环境变量中的 API 密钥 在代码中,我们可以从 `.env` 文件里读取 API 密钥并运用到函数里。以下是 `check_profanity` 函数的代码示例: ```rust use std::env; … #[instrument] pub async fn check_profanity(content: String) -> Result<String, handle_errors::Error> { // We are already checking if the ENV VARIABLE is set

Rust应用中的日志记录与调试

### Rust 应用中的日志记录与调试 在 Rust 应用开发中,日志记录和调试是非常重要的环节。日志记录可以帮助我们了解应用的运行状态,而调试则能帮助我们找出代码中的问题。本文将介绍如何使用 `tracing` 库进行日志记录,以及如何使用调试器调试 Rust 应用。 #### 1. 引入 tracing 库 在 Rust 应用中,`tracing` 库引入了三个主要概念来解决在大型异步应用中进行日志记录时面临的挑战: - **Spans**:表示一个时间段,有开始和结束。通常是请求的开始和 HTTP 响应的发送。可以手动创建跨度,也可以使用 `warp` 中的默认内置行为。还可以嵌套