#include "udf.h"
#include "mem.h"
#include <string.h>
#include <iostream.h>
#define Target_delt_T 60 //定义你希望达到的温升速率
#define Initial_V 0.1 //定义电压的初始值

CString zoneName_1 = "brick";
CString zoneName_2 = "coke-bot";
CString zoneName_3 = "coke-left";
CString zoneName_4 = "coke-right";
CString zoneName_5 = "dianzu-left";
CString zoneName_6 = "dianzu-right";
CString zoneName_7 = "inside-brick-left";
CString zoneName_8 = "inside-brick-right";
CString zoneName_9 = "insulating";
CString zoneName_10 = "nelectrode";
CString zoneName_11 = "pelectrode";
CString zoneName_12 = "sand";
// 定义全局变量,便于宏内调用
real staT = 0.0; //初始化为0
real currentV = Initial_V; //初始化为电压初始值
DEFINE_EXECUTE_AT_END(get_last_time_T)
{
Domain* d;
Thread* t;
cell_t c;
d = Get_Domain(1);
thread_loop_c(t, d)
{
begin_c_loop(c, t)
{
C_UDMI(c, t, 0) = C_T(c, t);
}
end_c_loop(c, t)
}
}
DEFINE_ADJUST(core_T, domain)
{
int curr_ts;
curr_ts = N_TIME;
real sumTV = 0.0;
real sumV = 0.0; //声明实数类型变量
#if !RP_HOST
cell_t c;
Thread* cthread;
thread_loop_c(cthread, domain)
{
if (0 != zoneName_1.CompareNoCase(THREAD_NAME(cthread)) &&
0 != zoneName_2.CompareNoCase(THREAD_NAME(cthread)) &&
0 != zoneName_3.CompareNoCase(THREAD_NAME(cthread)) &&
0 != zoneName_4.CompareNoCase(THREAD_NAME(cthread)) &&
0 != zoneName_5.CompareNoCase(THREAD_NAME(cthread)) &&
0 != zoneName_6.CompareNoCase(THREAD_NAME(cthread)) &&
0 != zoneName_7.CompareNoCase(THREAD_NAME(cthread)) &&
0 != zoneName_8.CompareNoCase(THREAD_NAME(cthread)) &&
0 != zoneName_9.CompareNoCase(THREAD_NAME(cthread)) &&
0 != zoneName_10.CompareNoCase(THREAD_NAME(cthread)) &&
0 != zoneName_11.CompareNoCase(THREAD_NAME(cthread)) &&
0 != zoneName_12.CompareNoCase(THREAD_NAME(cthread)))
{
begin_c_loop(c, cthread)
{
if (CURRENT_TIME < 1)
{
C_UDMI(c, cthread, 0) = 273.15;
}
sumV += C_VOLUME(c, cthread);
sumTV += C_VOLUME(c, cthread) * (C_T(c, cthread) - C_UDMI(c, cthread, 0));
}
end_c_loop(c, cthread)
}
}
#endif
// 变量全局约简并从计算节点传递到host节点
sumTV = PRF_GRSUM1(sumTV);
sumV = PRF_GRSUM1(sumV);
node_to_host_real_2(sumTV, sumV);
#if RP_HOST
//得到温度变化的体平均值
staT = (sumTV / sumV) / (CURRENT_TIMESTEP / 3600);
Message("the rate of Temperature of core is %e K. \n ", staT);
#endif
host_to_node_real_1(staT);
}
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删