Modified to match new interface to C/C++.
authorMilind Bhandarkar <milind@cs.uiuc.edu>
Tue, 8 Aug 2000 04:23:37 +0000 (04:23 +0000)
committerMilind Bhandarkar <milind@cs.uiuc.edu>
Tue, 8 Aug 2000 04:23:37 +0000 (04:23 +0000)
tests/fem/femtest/fmesh.dat [new file with mode: 0644]
tests/fem/femtest/pgm.C

diff --git a/tests/fem/femtest/fmesh.dat b/tests/fem/femtest/fmesh.dat
new file mode 100644 (file)
index 0000000..2b077a7
--- /dev/null
@@ -0,0 +1,5 @@
+4 9 4
+1 2 4 5
+2 3 5 6
+4 5 7 8
+5 6 8 9
index bdf908f8ccc91c363185f7d92bab7007122e59b0..3f9bc66643bda29343aa7cbb950cfda0d41be7fe 100644 (file)
@@ -4,9 +4,9 @@
 #include "fem.h"
 
 extern "C" void
-init_(void)
+init(void)
 {
-  CkPrintf("init_ called\n");
+  CkPrintf("init called\n");
   FILE *fp = fopen("cmesh.dat", "r");
   if(fp==0) { CkAbort("Cannot open cmesh.dat file.\n"); }
   int nelems, nnodes, ctype;
@@ -34,34 +34,35 @@ typedef struct _element {
 } Element;
 
 extern "C" void
-driver_(int *nnodes, int *nnums, int *nelems, int *enums, int *npere, int *conn)
+driver(int nnodes, int *nnums, int nelems, int *enums, int npere, int *conn)
 {
+  int myId = FEM_My_Partition();
   // FEM_Print_Partition();
-  Node *nodes = new Node[*nnodes];
-  Element *elements = new Element[*nelems];
+  Node *nodes = new Node[nnodes];
+  Element *elements = new Element[nelems];
   int i;
-  for(i=0;i<*nnodes;i++) {
+  for(i=0;i<nnodes;i++) {
     nodes[i].val = 0.0;
     if(nnums[i]==0) { nodes[i].val = 1.0; }
   }
-  for(i=0;i<*nelems;i++) { elements[i].val = 0.0; }
+  for(i=0;i<nelems;i++) { elements[i].val = 0.0; }
   int fid = FEM_Create_Field(FEM_DOUBLE, 1, 0, sizeof(Node));
   int j;
-  for(i=0;i<*nelems;i++) {
-    for(j=0;j<*npere;j++) {
-      elements[i].val += nodes[conn[i*(*npere)+j]].val;
+  for(i=0;i<nelems;i++) {
+    for(j=0;j<npere;j++) {
+      elements[i].val += nodes[conn[i*npere+j]].val;
     }
-    elements[i].val /= (*npere);
+    elements[i].val /= npere;
   }
-  for(i=0;i<*nnodes;i++) { nodes[i].val = 0.0; }
-  for(i=0;i<*nelems;i++) {
-    for(j=0;j<*npere;j++) {
-      nodes[conn[i*(*npere)+j]].val += elements[i].val;
+  for(i=0;i<nnodes;i++) { nodes[i].val = 0.0; }
+  for(i=0;i<nelems;i++) {
+    for(j=0;j<npere;j++) {
+      nodes[conn[i*npere+j]].val += elements[i].val;
     }
   }
   FEM_Update_Field(fid, nodes);
   int failed = 0;
-  for(i=0;i<*nnodes;i++) {
+  for(i=0;i<nnodes;i++) {
     if(nnums[i]==0 || nnums[i]==1 || nnums[i]==3 || nnums[i]==4) {
       if(nodes[i].val != 0.25) { failed = 1; }
     } else {
@@ -69,29 +70,29 @@ driver_(int *nnodes, int *nnums, int *nelems, int *enums, int *npere, int *conn)
     }
   }
   if(failed==0) {
-    CkPrintf("[chunk %d] update_field test passed.\n", FEM_My_Partition());
+    CkPrintf("[chunk %d] update_field test passed.\n", myId);
   } else {
-    CkPrintf("[chunk %d] update_field test failed.\n", FEM_My_Partition());
+    CkPrintf("[chunk %d] update_field test failed.\n", myId);
   }
   double sum = 0.0;
   FEM_Reduce_Field(fid, nodes, &sum, FEM_SUM);
   if(sum==1.0) {
-    CkPrintf("[chunk %d] reduce_field test passed.\n", FEM_My_Partition());
+    CkPrintf("[chunk %d] reduce_field test passed.\n", myId);
   } else {
-    CkPrintf("[chunk %d] reduce_field test failed.\n", FEM_My_Partition());
+    CkPrintf("[chunk %d] reduce_field test failed.\n", myId);
   }
   sum = 1.0;
   FEM_Reduce(fid, &sum, &sum, FEM_SUM);
   if(sum==(double)FEM_Num_Partitions()) {
-    CkPrintf("[chunk %d] reduce test passed.\n", FEM_My_Partition());
+    CkPrintf("[chunk %d] reduce test passed.\n", myId);
   } else {
-    CkPrintf("[chunk %d] reduce test failed.\n", FEM_My_Partition());
+    CkPrintf("[chunk %d] reduce test failed.\n", myId);
   }
   FEM_Done();
 }
 
 extern "C" void
-finalize_(void)
+finalize(void)
 {
-  CkPrintf("finalize_ called\n");
+  CkPrintf("finalize called\n");
 }