求助,编写了一个udf代码,使颗粒在水汽浓度梯度场中受到扩散泳力向冷凝壁面迁移,但是带入case中跑的时候发现颗粒受力过大,就像直接拐弯吸附到壁面上一样,不懂问题出在那里。
引用于 x裂开者 在 2025年6月20日, 下午5:51模拟水蒸汽冷凝采用的是组分运输模型和欧拉壁面液膜模型,公式是看的别人文章里的公式,udf代码如下面所示
#include "udf.h"#define MW_VAPOR 18.015 /* 水汽分子量 */
#define MW_AIR 28.97 /* 空气分子量 */
#define SIGMA_DIFFUSION -0.26 /* 扩散滑移系数 */DEFINE_DPM_BODY_FORCE(diffusiophoresis_force, tp, i)
{
Thread *t = TP_CELL_THREAD(tp); /* 粒子所在网格线程 */
cell_t c = TP_CELL(tp); /* 粒子所在网格 */real dp = TP_DIAM(tp); /* 粒子直径 */
real particle_mass = TP_MASS(tp); /* 粒子质量 */real fluid_viscosity = C_MU_L(c,t); /* 流体粘度 */
real temperature = C_T(c,t); /* 温度 */
real pressure = C_P(c,t); /* 压力 */real vapor_mass_fraction = C_YI(c,t,0); /* 水汽质量分数 */
real mass_fraction_gradient = C_YI_G(c,t,0)[i]; /* 质量分数梯度 *//* 数值检查 */
if (vapor_mass_fraction < 1e-6)
return 0.0;if (fabs(mass_fraction_gradient) < 1e-12)
return 0.0;/* 质量分数转摩尔分数 */
real Y_v = vapor_mass_fraction;
real Y_a = 1.0 - Y_v;real molar_term_vapor = Y_v / MW_VAPOR;
real molar_term_air = Y_a / MW_AIR;
real vapor_molar_fraction = molar_term_vapor / (molar_term_vapor + molar_term_air);vapor_molar_fraction = MAX(vapor_molar_fraction, 1e-6);
vapor_molar_fraction = MIN(vapor_molar_fraction, 0.999);real air_molar_fraction = 1.0 - vapor_molar_fraction;
/* 水汽扩散系数 */
real diffusion_coef = 2.26e-5 * pow(temperature/273.15, 1.8) * 101325.0/pressure;/* 摩尔分数梯度 */
real dx_dy = (MW_AIR * MW_VAPOR) / pow((Y_v * MW_AIR + Y_a * MW_VAPOR), 2);
real molar_fraction_gradient = dx_dy * mass_fraction_gradient;/* 扩散泳力 */
real FDP = -3.0 * M_PI * fluid_viscosity * dp * diffusion_coef *
(1.0/air_molar_fraction + SIGMA_DIFFUSION) * molar_fraction_gradient;/* 转换为加速度 */
real acceleration = FDP / particle_mass;return acceleration;
模拟水蒸汽冷凝采用的是组分运输模型和欧拉壁面液膜模型,公式是看的别人文章里的公式,udf代码如下面所示
#include "udf.h"
#define MW_VAPOR 18.015 /* 水汽分子量 */
#define MW_AIR 28.97 /* 空气分子量 */
#define SIGMA_DIFFUSION -0.26 /* 扩散滑移系数 */
DEFINE_DPM_BODY_FORCE(diffusiophoresis_force, tp, i)
{
Thread *t = TP_CELL_THREAD(tp); /* 粒子所在网格线程 */
cell_t c = TP_CELL(tp); /* 粒子所在网格 */
real dp = TP_DIAM(tp); /* 粒子直径 */
real particle_mass = TP_MASS(tp); /* 粒子质量 */
real fluid_viscosity = C_MU_L(c,t); /* 流体粘度 */
real temperature = C_T(c,t); /* 温度 */
real pressure = C_P(c,t); /* 压力 */
real vapor_mass_fraction = C_YI(c,t,0); /* 水汽质量分数 */
real mass_fraction_gradient = C_YI_G(c,t,0)[i]; /* 质量分数梯度 */
/* 数值检查 */
if (vapor_mass_fraction < 1e-6)
return 0.0;
if (fabs(mass_fraction_gradient) < 1e-12)
return 0.0;
/* 质量分数转摩尔分数 */
real Y_v = vapor_mass_fraction;
real Y_a = 1.0 - Y_v;
real molar_term_vapor = Y_v / MW_VAPOR;
real molar_term_air = Y_a / MW_AIR;
real vapor_molar_fraction = molar_term_vapor / (molar_term_vapor + molar_term_air);
vapor_molar_fraction = MAX(vapor_molar_fraction, 1e-6);
vapor_molar_fraction = MIN(vapor_molar_fraction, 0.999);
real air_molar_fraction = 1.0 - vapor_molar_fraction;
/* 水汽扩散系数 */
real diffusion_coef = 2.26e-5 * pow(temperature/273.15, 1.8) * 101325.0/pressure;
/* 摩尔分数梯度 */
real dx_dy = (MW_AIR * MW_VAPOR) / pow((Y_v * MW_AIR + Y_a * MW_VAPOR), 2);
real molar_fraction_gradient = dx_dy * mass_fraction_gradient;
/* 扩散泳力 */
real FDP = -3.0 * M_PI * fluid_viscosity * dp * diffusion_coef *
(1.0/air_molar_fraction + SIGMA_DIFFUSION) * molar_fraction_gradient;
/* 转换为加速度 */
real acceleration = FDP / particle_mass;
return acceleration;
已上传的文件:- 您必须登录才有权限上传。
