Dataset_generator.m
256256的图片分成8块, 每块3535,在这些边缘先产生随机位移,然后将位移插值即8块中的每一块中间的位移是插值产生的
Dataset_generator.m
256256的图片分成8块, 每块3535,在这些边缘先产生随机位移,然后将位移插值即8块中的每一块中间的位移是插值产生的
Ill-conditioned or ill-posed problem
上述段落讨论了当面对一个线性求解表现差的情况时,其中一个可能的原因是数学问题本身条件差(ill-conditioned)或提出的问题不适定(ill-posed)。以下是对此段落的逐点解释:
诊断和解决条件差的系统:
SVD监视器的输出:
运用PETSc的选项来启动SVD监视器:
[Executioner] petsc_options = '-pc_svd_monitor' petsc_options_iname = '-pc_type' petsc_options_value = 'svd'
对于大型问题:
-ksp_compute_eigenvalues -ksp_gmres_restart 1000 -pc_type none
Krylov子空间迭代和特征值:
总之,对于一个条件差或不适定的问题,适当的诊断是解决困难的第一步。确保数学模型是有意义的,并且你已经为它配置了适当的数值求解和预处理策略。对于条件差的情况,缩放方程可能有助于改善数值求解过程。对于不适定的情况,则需要确保所有必要的数学和物理限制都已适当地引入模型中。
Incorrect Jacobian
上述内容介绍了如何诊断和处理雅可比矩阵(Jacobian matrix)不准确的情况,这是求解非线性方程组时可能会遇到的一个问题。雅可比矩阵在牛顿法(Newton's method)和预条件雅克比不完全牛顿法(PJFNK)中都有重要的作用。下面是对上述段落的逐点解释:
牛顿法和雅可比矩阵
预条件雅克比不完全牛顿法 (PJFNK)
[Preconditioning] [smp] type = SMP full = true [] []
检查雅可比矩阵是否不准确
[Preconditioning] [./FDP] type = FDP [../] []
更高级的检查和修复雅可比矩阵
自动微分 (AD) 的注释
以上内容强调了雅可比矩阵在有效求解非线性问题中的重要性,以及在出现问题时如何检查和修正雅可比矩阵。正确的雅可比矩阵对于迭代求解过程的快速收敛是必要的。如果排除了编码错误,自动微分可以确保在形成残差时也获得准确的雅可比矩阵
turning off
通过控制系统暂时关闭一些物理现象 (turning off some physics through the Controls system)
有些方程可能由于特定物理现象(如对流)是奇异的、有鞍点的、条件差的,或者简单地不在求解器能够处理的双曲/椭圆范畴内,特别是在初始化设置不好的情况下。可以在模拟过程中动态修改这些方程。核函数(Kernels)可以根据需要在模拟的不同部分被开启或关闭。
在下面的示例中,我们在0秒到0.49秒之间开启Diff0核函数,之后将其关闭并启用Diff1核函数。
通过这种方式,求解器能够在计算的不同阶段调整所使用的物理模型,帮助避免计算不稳定。
diagonal damping
对角线阻尼 (diagonal damping)
这是一个用来稳定牛顿法(Newton method)中使用非线性搜索时的求解过程的技术。通过调整线搜索(line search)策略,我们可以在非线性搜索时进行较慢的更新。
pseudo-transient relaxation
在伪瞬态放松(pseudo-transient relaxation)的上下文中,该文本描述的是一种处理数值求解难题的方法,特别适用于稳态问题难以求解,或者瞬态问题难以初始化的情况。
伪瞬态放松
有一些问题作为瞬态问题求解会更容易,而求解稳态则更为困难。还有些瞬态问题在初始化阶段难以设定初始条件。对于这类问题,可以通过在初始化阶段使用定制的伪瞬态放松来获益。
在这段文本中,建议了以下几种处理方法:
这种方法利用时间步长的慢速增加来帮助问题逐步达到稳态解。这里提到了IterationAdaptiveDT时间步长调整方法,它允许从一个较小的时间步长开始,并随着迭代的进行自动增加时间步长,以加速到达稳态的过程。
在配置文件的[./TimeStepper]块中:
这意味着系统会从一个较小的时间步长开始,如果连续迭代次数低于或等于10次,时间步长将会增加,以促进求解过程的收敛。
对于定制的放松,你可以为每个变量的时间导数乘以一个不同的因子。这可以帮助控制每个变量随时间的变化率,从而有针对性地让求解过程更平滑、更稳定。
综上所述,伪瞬态放松是一种数值技巧,可以在求解过程中暂时改变问题的性质,以帮助初始化并稳定计算,然后逐步过渡到原始问题的真实性质,这样做的好处是能够提高收敛速度,并避免了直接面对可能导致数值不稳定的困难问题。
use_current_history_variable
表示在裂纹应力的计算过程中,是否使用当前的历史变量。历史变量通常指的是与材料点相关的、随时间而演变的量,它可以用来追踪材料内部的损伤、塑性变形或者任何其它的内部状态变化。
具体来说,在裂纹力学的数值模拟中,"当前历史变量"可能表示当前的裂纹开度或者裂纹尖端的应力强度因子。这些信息可以从以前的计算步中得到,用于帮助判断材料是否发生破坏。
因此,启用use_current_history_variable选项意味着计算将会考虑材料的历史响应以及任何之前步骤中计算并存储的状态信息,以此为基础进行裂纹应力的精确计算。这样可以确保数值模拟中考虑到材料的破坏进程,以及裂纹的增长和开闭状态对材料性能的影响。
coordinate system aware logic
通常指的是计算过程中所用的核心算法能够识别并适应不同的坐标系统。在有限元分析软件的“Tensor Mechanics”模块中,这种逻辑确保应力散度(stress divergence)的计算考虑到了模型可能使用的坐标系统(比如笛卡尔坐标、圆柱坐标或球坐标系),从而能正确应用于不同形状和对称性的问题。
coordinate system aware logic
通常指的是计算过程中所用的核心算法能够识别并适应不同的坐标系统。在有限元分析软件的“Tensor Mechanics”模块中,这种逻辑确保应力散度(stress divergence)的计算考虑到了模型可能使用的坐标系统(比如笛卡尔坐标、圆柱坐标或球坐标系),从而能正确应用于不同形状和对称性的问题。
平均值算子
Laplace算子
are separated in energies from other bands.
有禁带
pseudopotential includes core electrons
Norm有核电子