ibgopoints.cxx

来自「有限元学习研究用源代码(老外的),供科研人员参考」· CXX 代码 · 共 82 行

CXX
82
字号
#include "ibgoctree.hxx"
#include "wzgrid.hxx"
#include "cogwarnings.hxx"

void ibgGetPoints(wzpoints p, ibgoctree oct)
{
  try{
    oct->test();
  }catch(...){
  }
  oct->getPointList(p);
}

void ibgOctreeData::getPointList(wzpoints p)
{
  wzPoint *n;
  wzIndex bn;
  ibgiNode i; cogFace s;
  int e,v,j,k,nn = 0;
  int cregion=0,cface=0,cedge=0,cvertex=0;
  wzArray<int>	nindex(nodes,1,0);
  wzArray<int>	findex(faces,1,0);
  p->boxDim = GridDim;
  nindex[0] = 0;
  wzRangeLoop(nodes,i){
    bn = nBoundary[i]; 
    if(bn && (bnType[bn] & ibgoHidden)){
      nindex[i] = 0;
      continue;
    }
    j = p->create(); nindex[i] = j;
    n  = &(p->Point[j]);
    *n = nPoint[i];
    p->Near[j] = nindex[nOld[i]];
  }
  cregion = j;
  wzRangeLoop(faces,i){
    if(fType[i] & ibgoHidden){
      findex[i] = 0; 
      continue;
    }
    j = p->create();
    findex[i] = j;
    n  = &(p->Point[j]);
    *n = fPoint[i];
    if((k = -fUp[i])>0 && k<i && findex[k])	p->Near[j] = findex[k];
    else if(k<0) 				p->Near[j] = nindex[bnBase[-k]];
    else if((k= -fDown[i])>0&&k<i&&findex[k])	p->Near[j] = findex[k];
    else if(k<0) 				p->Near[j] = nindex[bnBase[-k]];
    else					p->Near[j] = 0;
  }
  cface = j-cregion;
  /*  // this variant makes only one edge per plane
  wzRangeLoop(planes,i){
    e = pEdge[i];
    if(!e) continue;
    j  = p->create(); cedge++;
    n  = &(p->Point[j]);
    *n = ePoint[e];
    p->Near[j] = nindex[bnBase[pNode[0][i]]];
  }
  */
  wzRangeLoop(edges,e){
    j  = p->create(); cedge++;
    n  = &(p->Point[j]);
    *n = ePoint[e];
    p->Near[j] = nindex[bnBase[pNode[0][ePlane[e]]]];
  }
  wzRangeLoop(bcells,i){
    v = bcVertex[i];
    if(!v) continue;
    nn = p->create(); cvertex++;
    n  = &(p->Point[nn]);
    *n = vPoint[v];
    p->Near[nn] = nindex[cNode[0][bcBase[i]]];
  }
  cogInfoGenerate
    ("with <> points (in region <>, on face <>, on edge <>, vertices <>)")
      << p->length(), cregion, cface, cedge, cvertex;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?