Skip to content

some problems about GetLaplacian and __ProcessTerminatingNodeAdjacentNodes #8

@yangchxiii

Description

@yangchxiii

1、
template
inline Real Octree::GetLaplacian(const int idx[DIMENSION]) const
{
return Real(fData.dotTable[idx[0]]*fData.dotTable[idx[1]]fData.dotTable[idx[2]](fData.d2DotTable[idx[0]]+fData.d2DotTable[idx[1]]+fData.d2DotTable[idx[2]]));
}
i can not understand why the return value of the function is like this. In hope's paper, It doesn't seem so……

2、 can u tell me the logic of this function? I can't got it……

void OctNode<NodeData,Real>::__ProcessTerminatingNodeAdjacentNodes(const int& dx,const int& dy,const int& dz,OctNode* node1,const int& radius1, OctNode* node2,const int& radius2,const int& cWidth2, TerminatingNodeAdjacencyFunction* F)
{
int cWidth=cWidth2>>1;
int radius=radius2>>1;
int o=ChildOverlap(dx,dy,dz,radius1+radius,cWidth);
if(o){
int dx1=dx-cWidth;
int dx2=dx+cWidth;
int dy1=dy-cWidth;
int dy2=dy+cWidth;
int dz1=dz-cWidth;
int dz2=dz+cWidth;
if(o& 1){if(F->Function(&node2->children[0],node1) && node2->children[0].children{__ProcessTerminatingNodeAdjacentNodes(dx1,dy1,dz1,node1,radius1,&node2->children[0],radius,cWidth,F);}}
if(o& 2){if(F->Function(&node2->children[1],node1) && node2->children[1].children{__ProcessTerminatingNodeAdjacentNodes(dx2,dy1,dz1,node1,radius1,&node2->children[1],radius,cWidth,F);}}
if(o& 4){if(F->Function(&node2->children[2],node1) && node2->children[2].children{__ProcessTerminatingNodeAdjacentNodes(dx1,dy2,dz1,node1,radius1,&node2->children[2],radius,cWidth,F);}}
if(o& 8){if(F->Function(&node2->children[3],node1) && node2->children[3].children{__ProcessTerminatingNodeAdjacentNodes(dx2,dy2,dz1,node1,radius1,&node2->children[3],radius,cWidth,F);}}
if(o& 16){if(F->Function(&node2->children[4],node1) && node2->children[4].children{__ProcessTerminatingNodeAdjacentNodes(dx1,dy1,dz2,node1,radius1,&node2->children[4],radius,cWidth,F);}}
if(o& 32){if(F->Function(&node2->children[5],node1) && node2->children[5].children{__ProcessTerminatingNodeAdjacentNodes(dx2,dy1,dz2,node1,radius1,&node2->children[5],radius,cWidth,F);}}
if(o& 64){if(F->Function(&node2->children[6],node1) && node2->children[6].children{__ProcessTerminatingNodeAdjacentNodes(dx1,dy2,dz2,node1,radius1,&node2->children[6],radius,cWidth,F);}}
if(o&128){if(F->Function(&node2->children[7],node1) && node2->children[7].children{__ProcessTerminatingNodeAdjacentNodes(dx2,dy2,dz2,node1,radius1,&node2->children[7],radius,cWidth,F);}}
}

Thanks a lot !!!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions