程序代码是:
#include "udf.h"
#define MIN_IMPACT_VELO -1000
Domain *domain;
enum
{
NUM_OF_HITS,
AVG_DIAMETER,
AVG_RADI_VELO,
NUM_OF_USED_UDM
};
int UDM_checked = 0;
void reset_UDM_s(void);
int check_for_UDM(void)
{
Thread *t;
if (UDM_checked)
return UDM_checked;
thread_loop_c(t,domain)
{
if (FLUID_THREAD_P(t)) if (NULLP(THREAD_STORAGE(t,SV_UDM_I)))
return 0;
}
UDM_checked = 1;
reset_UDM_s();
return UDM_checked;
}
void reset_UDM_s(void)
{
Thread *t;
cell_t c;
face_t f;
int i;
if (!check_for_UDM())
return;
Message("Resetting User Defined Memory...\n" ;
thread_loop_f(t, domain)
{
if (NNULLP(THREAD_STORAGE(t,SV_UDM_I)))
{
begin_f_loop(f,t)
{
for (i = 0; i < NUM_OF_USED_UDM; i++)
F_UDMI(f,t,i) = 0;
}
end_f_loop(f, t)
}
else
{
Message("Skipping FACE thread no. %d..\n", THREAD_ID(t));
}
}
thread_loop_c(t,domain)
{
if (NNULLP(THREAD_STORAGE(t,SV_UDM_I)))
{
begin_c_loop(c,t)
{
for (i = 0; i < NUM_OF_USED_UDM; i++)
C_UDMI(c,t,i) = 0;
}
end_c_loop(c,t)
}
else
{
Message(" Skipping CELL thread no. %d..\n", THREAD_ID(t));
}
}
Message(" --- Done.\n" ;
}
DEFINE_DPM_EROSION(dpm_accr, p, t, f, normal, alpha, Vmag, Mdot)
{
real A[ND_ND], area;
int num_in_data;
Thread *t0;
cell_t c0;
real imp_vel[3], vel_ortho;
#if RP_2D
if (rp_axi)
{
real radi_pos[3], radius;
radi_pos[0] = P_POS(p)[1];
radi_pos[1] = P_POS(p)[2];
radius = NV_MAG(radi_pos);
NV_VS(radi_pos, =, radi_pos, /, radius);
imp_vel[0] = P_VEL(p)[0];
imp_vel[1] = NVD_DOT(radi_pos, P_VEL(p)[1], P_VEL(p)[2], 0);
}
else
#endif
NV_V(imp_vel, =, P_VEL(p));
vel_ortho = NV_DOT(imp_vel, normal);
if (vel_ortho < MIN_IMPACT_VELO)
return;
if (!UDM_checked)
if (!check_for_UDM())
return;
c0 = F_C0(f,t);
t0 = THREAD_T0(t);
F_AREA(A,f,t);
area = NV_MAG(A);
F_STORAGE_R(f,t,SV_DPMS_ACCRETION) += Mdot / area;
MARK_PARTICLE(p, P_FL_REMOVED);
if (THREAD_TYPE(t) == THREAD_F_JUMP)
return;
num_in_data = F_UDMI(f,t,NUM_OF_HITS);
F_UDMI(f,t,AVG_DIAMETER) = (P_DIAM(p)
+ num_in_data * F_UDMI(f,t,AVG_DIAMETER))
/ (num_in_data + 1);
C_UDMI(c0,t0,AVG_DIAMETER) = F_UDMI(f,t,AVG_DIAMETER);
F_UDMI(f,t,AVG_RADI_VELO) = (vel_ortho
+ num_in_data * F_UDMI(f,t,AVG_RADI_VELO))
/ (num_in_data + 1);
C_UDMI(c0,t0,AVG_RADI_VELO) = F_UDMI(f,t,AVG_RADI_VELO);
F_UDMI(f, t, NUM_OF_HITS) = num_in_data + 1;
C_UDMI(c0,t0,NUM_OF_HITS) = num_in_data + 1;
}
DEFINE_ON_DEMAND(reset_UDM)
{
domain = Get_Domain(1);
reset_UDM_s();
}
各位看看哪错了,应该怎样解决
![计算弯管的磨损量,利用fluent帮助里的程序,出错了,各位帮忙看看怎么回事]()
错误.png |