dynamicsoar's log

主に研究関係のメモ

UDF: cell thread に含まれる face thread にアクセスする

UDF において、ある cell thread tc(たとえば翼を含む空間)に含まれる face thread tf(たとえば翼表面)を求めるのに、次のようなことができた:

begin_c_loop(c,tc);
c_face_loop(c,tc,i)
{
  if(C_FACE_THREAD(c,tc,i)==tf)
  {
    f=C_FACE(c,tc,i);
    f_node_loop(f,tf,n)
    {
       np=F_NODE(f,tf,n);
       if( NODE_POS_NEED_UPDATE(np) )
      {
         NODE_POS_UPDATED(np);
         do something;
      }
    }
  }
}
end_c_loop(c,tc);

if(C_FACE_THREAD(c,tc,i)==tf) のところ、UDFマニュアルのサンプルだと if( THREAD_ID(C_FACE_THREAD(c,tc,i)) == THREAD_ID(tf) ) のように書いてるんだけど、Thread ポインタのままで比較しても特に問題はなさそうだった。

…あれ?でもなんかこれあまり有意義ではないかも・・・