Get Zone ID by Name

利用 thread_loop_f 和 thread_loop_c 遍历 face 和 cell 的 threads

DEFINE_ADJUST(FUDM_T_interface_melt,d)
{
    int WALLID = GetZoneIdByName("interface-melt"); //call GetZoneIDByName macro
    face_t f;
    Thread *tf = Lookup_Thread(d,WALLID);

    begin_f_loop(f,tf)
    {
        ......
    }
    end_f_loop(f,tf)
}

int GetZoneIdByName(char *zoneName)
{
    int zoneID=-1;
    Domain *domain=Get_Domain(1);

    Thread *tf;
    thread_loop_f(tf, domain) // loop all face threads
    {
        if(strcmp(zoneName,THREAD_NAME(tf)) == 0) //using strcmp to compare thread name
        {
            zoneID=THREAD_ID(tf);
            break;
        }
    } 
    if(-1==zoneID)  //if name not same
    {
        Thread *tc;
        thread_loop_c(tc, domain) //loop all cell threads
        {
            if(strcmp(zoneName,THREAD_NAME(tf)) == 0) //compare thread name
            {
                zoneID=THREAD_ID(tc);
                break;
            }
        }
    }
    return zoneID;
}

————————————————
转载自:https://blog.csdn.net/SuperUDF/article/details/128140287