如何在开源代码中使用无量纲形式而不是 Units

计算科学 有限元 非线性方程 波传播 固体力学
2021-12-28 12:06:59

我正在使用开源 FEM 平台,它要求您将方程系统转换为无量纲形式。因此,没有为问题中的参数指定单位。如果您使用兼容的输入单元,您应该期望输出匹配单元 - 就像在普通 python 或 C++ 代码中解决物理问题一样。我有一个弹塑性动力学问题要解决,这些是用于软粘土的 Drucker-Prager 土壤模型的参数。

E = 5000000;                 // Young's Modulus in N/m^2 or Pa
nu = 0.35;                   // Poisson's Ratio Unitless
cohesion = 20000.0;          // N/m^2 or Pa
dilatancy_angle = 25.0;      // Degrees
hardening_parameter = 0.1;   // Unitless
friction_angle = 25.0;       // Degrees
double rho = 1750.0;         // Mass density in kg/m^3

网格是 (1 x 1) 方形网格。因此,当我看到使用上述参数在此网格上传播的波引起的位移时,在 Paraview 中,假设输出应以米 (m) 为单位是否有意义。此外,在这样的平台中,如何将网格与现实场景进行比较?例如,我可以假设我的网格是 1 公里 x 1 公里平方的地面并且我正在查看的位移以米为单位吗?如果我采用 (10 x 10) 网格怎么办?谁能解释一下这种无量纲逻辑是如何工作的?

1个回答

答案很简单:您为代码提供几何信息,即节点坐标(在您的情况下以米表示),而不仅仅是拓扑信息,即网格如何布局和连接到节点。

因此,根据您提供的节点坐标,您可以有不同的域“大小”。例如,如果您有四个具有坐标的节点(0,0,0),(100,0,0),(100,100,0),(0,100,0)那么你正在建模一个 100m 的正方形。

当然,所有数量(几何、材料特性、边界条件)都应以一致的单位表示。作为一般规则,如果您只使用 SI 单位(kg、m、s 及其导数),您就处于“安全”的一边。

关于“无量纲形式”一词的最后评论。我想了解正在发生的事情的方式是,我将给定一致的单位系统(例如 SI)中的物理量的数值提供给 FE 代码。代码的输出将是在同一单位制中计算的物理量的数值。

真正的无量纲形式是一个更一般的概念,您可以在其中重写方程,使变量是纯数字而不是物理量。