用户场函数示例
本节提供了一些用户场函数示例。
比例缩放现有场函数
假设要创建一个用户场函数,以英寸为单位(而不是采用计算的 SI 单位)定义 X 方向上的距离。 可以创建一个名为“X 英寸”的场函数,定义如下:
$$Centroid[0]/0.0254
设置瞬态边界条件
假设要设置一个瞬态边界条件,使温度在 0.01 秒内从 300K 线性跃升到值 1000K。 用户场函数定义(用于定义边界温度)如下:
($Time >= 0.01) ? 1000 : 300+70000*$Time
指定矢量场函数的分量
要根据相应分量定义矢量、组分表或位置场函数,在方括号内指定三个用逗号分隔的标量分量。 例如,设置一个场函数来初始化异径管中的速度,其中,大直径中的速度为 2 m/s,小直径中的速度为 10 m/s,且直径在 x = 4 时发生变化。 场函数定义如下:
[($$Centroid[0] < 4) ? 2 : 10, 0, 0]
计算和可视化面法向
在 Simcenter STAR-CCM+ 中,面积场函数是面积分量的矢量场函数,即:面积值乘以单位法向。 因此,要计算单位面法向,可以创建一个场函数,按面积值标准化面积场函数:
- 创建一个场函数,例如,名为 Face Normals(面法向)。
- 将其类型设为 Vector(矢量),并将定义设为:
$$Area / $$Area.mag()
此场函数可用于可视化面法向,方法是创建矢量场景并将矢量设为“面法向”场函数。 还可以将矢量显示器添加到现有场景中。 示例场景如下所示。
根据网格通量创建速度场函数
要根据与速度具有相同单位的网格通量创建场函数:
- 创建用户自定义场函数并将其重命名为 Grid Flux Velocity(网格通量速度)。
- 将其维度设为长度 = 1 和时间 = -1。
- 将其类型设为 Vector(矢量)。
- 将其定义设为:
$$GridFlux * $$Area / $$Area.mag2()
在此表达式中,$$GridFlux / $$Area.mag() 为速度幅值,$$Area / $$Area.mag() 为通量方向(垂直于面网格面积)。
使用矢量场函数计算导数
涉及导数的典型用户场函数包括:
- 速度发散 指定为:
div($$Velocity)
- 密度、速度发散 指定为:
div($Density * $$Velocity)
- 压力梯度 指定为:
grad($Pressure)
- 速度的旋度 指定为:
curl($$Velocity)
基于网格单元的最小二乘梯度算法用于计算场梯度。 在边界处,使用零阶外插值。 此算法不同于各种求解器计算的梯度。 因此,计算用于后处理的梯度可能与通过使用特定求解器中的保留临时储存选项看到的求解器梯度略有不同。 但是,它们非常接近于大多数实际用途。
计算表面拉力
在固定的表面约束下,可以根据应力张量与面法向的点积计算表面拉力。 用户场函数定义如下:
dotVector($$$StressTensor,$$Area/$$Area.mag())
由于 $$Area 为每个面提供一个常数值,因此计算的拉力是每个面的平均值。