LRTS Comm Thread Tracing in message recieve
[charm.git] / src / libs / ck-libs / TMRC2D / ref.C
blob4cc22f43e8cc8de27fb0684b21c0756bd15a132c
1 #include "ref.h"
2 #include "refine.decl.h"
3 #include "node.h"
4 #include "messages.h"
6 extern CProxy_chunk mesh;
8 // edgeRef methods
9 void edgeRef::update(elemRef& oldval, elemRef& newval, int b)
11   mesh[cid].updateElement(idx, oldval, newval, b);
14 elemRef edgeRef::getNbr(elemRef m)
16   refMsg *rm2;
17   rm2 = mesh[cid].getNbr(idx, m);
18   elemRef result((elemRef&)rm2->aRef);
19   CkFreeMsg(rm2);
20   return result;
23 void edgeRef::remove()
25   mesh[cid].removeEdge(idx);
28 int edgeRef::split(int *m, edgeRef *e_prime, int oIdx, int fIdx,
29                    elemRef requester, int *local, int *first, 
30                    int *nullNbr)
32   splitOutMsg *som;
33   int result;
34   som = mesh[cid].split(idx, requester, oIdx, fIdx);
35   *m = som->n;
36   *e_prime = som->e;
37   *local = som->local;
38   *first = som->first;
39   *nullNbr = som->nullNbr;
40   result = som->result;
41   CkFreeMsg(som);
42   return result;
45 void edgeRef::collapse(elemRef requester, int kIdx, int dIdx, elemRef kNbr, 
46                        elemRef dNbr, edgeRef kEdge, edgeRef dEdge, node newN, 
47                        double frac)
49   mesh[cid].collapse(idx, requester, kIdx, dIdx, kNbr, dNbr, kEdge, 
50                            dEdge, newN, frac);
53 int edgeRef::flipPrevent(elemRef requester, int kIdx, int dIdx, elemRef kNbr, 
54                       elemRef dNbr, edgeRef kEdge, edgeRef dEdge, node newN)
56   splitOutMsg *som;
57   int result;
58   som = mesh[cid].flipPreventE(idx, requester, kIdx, dIdx, kNbr, dNbr, kEdge, 
59                                dEdge, newN);
60   result = som->result;
61   CkFreeMsg(som);
62   return result;
65 int edgeRef::isPending(elemRef e)
67   intMsg *im;
68   int result;
69   im = mesh[cid].isPending(idx, e);
70   result = im->anInt;
71   CkFreeMsg(im);
72   return result;
75 int edgeRef::getBoundary()
77   intMsg *im;
78   int result;
79   im = mesh[cid].getBoundary(idx);
80   result = im->anInt;
81   CkFreeMsg(im);
82   return result;
85 void edgeRef::resetEdge()
87   mesh[cid].resetEdge(idx);
90 void edgeRef::checkPending(elemRef e)
92   mesh[cid].checkPending(idx, e);
95 void edgeRef::checkPending(elemRef e, elemRef ne)
97   mesh[cid].checkPending(idx, e, ne);
100 // elemRef methods
101 double elemRef::getArea()
103   doubleMsg *dm;
104   double result;
105   dm = mesh[cid].getArea(idx);
106   result = dm->aDouble;
107   CkFreeMsg(dm);
108   return result;
111 void elemRef::update(edgeRef& oldval, edgeRef& newval)
113   mesh[cid].updateElementEdge(idx, oldval, newval);
116 void elemRef::setTargetArea(double ta)
118   mesh[cid].setTargetArea(idx, ta);
121 void elemRef::resetTargetArea(double ta)
123   mesh[cid].resetTargetArea(idx, ta);
126 void elemRef::remove()
128   mesh[cid].removeElement(idx);
131 //void elemRef::collapseHelp(edgeRef er, node n1, node n2)
133 //  mesh[cid].collapseHelp(idx, er, n1, n2);