Cleaning up the example
[charm.git] / examples / ParFUM / TOPS_simple2D / pgm.C
1 /*
2  
3    Simple Explicit FEA example using
4       the ParFUM Tops-like API
5
6                By 
7            Isaac Dooley
8
9  */
10
11 //#include "pgm.h"
12 #include "ParFUM_TOPS.h"
13
14 class ElemAtt {
15 public:
16   int A[5];
17 };
18
19 class NodeAtt {
20 public:
21   double A[10];
22   int B;
23 };
24
25
26
27 extern "C" void
28 init(void)
29 {
30
31   TopModel *m = topModel_Create_Init(sizeof(ElemAtt), sizeof(NodeAtt));
32
33
34
35         {
36           TopElemItr* e_itr = topModel_CreateElemItr(m);
37           int elem_count=0;
38           for(topElemItr_Begin(e_itr);topElemItr_IsValid(e_itr);topElemItr_Next(e_itr)){
39                 elem_count++;
40                 // TopNode node = topElemItr_GetCurr(itr);
41           }
42           printf("init : elem_count = %d\n", elem_count);
43         }
44
45         for(int i=1;i<=7;++i){
46           TopNode node = topModel_InsertNode(m,i,i,i);
47           NodeAtt a;
48           a.A[3]=i;
49           a.B=777;
50           topNode_SetAttrib(m,node,&a);
51         }
52         printf("init : Inserted 7 nodes\n");
53
54         for(int i=1;i<=17;++i){
55           TopNode conn[3] = {1,2,3};
56           TopElement elem = topModel_InsertElem(m,FEM_TRIANGULAR,conn);
57
58           ElemAtt a;
59           a.A[1]=i;
60           topElement_SetAttrib(m,elem,&a);
61
62         }
63         printf("init : Inserted 17 elements\n");
64
65
66 }
67
68
69 // A driver() function 
70 // driver() is required in all FEM programs
71 extern "C" void
72 driver(void)
73 {
74
75   int myId = FEM_My_partition();
76   TopModel *m = topModel_Create_Driver(sizeof(ElemAtt), sizeof(NodeAtt));
77
78
79   printf("vp %d: Entering driver()\n", myId); 
80
81         {
82           TopNodeItr* itr = topModel_CreateNodeItr(m);
83           int node_count=0;
84           for(topNodeItr_Begin(itr);topNodeItr_IsValid(itr);topNodeItr_Next(itr)){
85                 node_count++;
86                 // TopNode node = topNodeItr_GetCurr(itr);
87           }
88           printf("vp %d: node_count = %d\n", myId, node_count);
89         }
90
91
92         {
93           TopElemItr* e_itr = topModel_CreateElemItr(m);
94           int elem_count=0;
95           for(topElemItr_Begin(e_itr);topElemItr_IsValid(e_itr);topElemItr_Next(e_itr)){
96                 elem_count++;
97                 // TopNode node = topElemItr_GetCurr(itr);
98           }
99           printf("vp %d: elem_count = %d\n", myId, elem_count);
100         }
101
102 }
103