Cleaned up code and use new interface FEM_Mesh_data().
[charm.git] / examples / fem / simple2D / pgm.h
1 #include <stdlib.h>
2 #include <stdio.h>
3 #include <math.h>
4 #include "charm++.h"
5 #include "fem.h"
6 #include "netfem.h"
7 #include "vector2d.h"
8
9 //One element's connectivity information
10 typedef int connRec[3];
11
12 // A structure for handling data that may need to be migrated
13 struct myGlobals {
14   int nnodes;
15   int nelems;
16   vector2d *coord;
17   connRec *conn;
18
19   vector2d *R_net, *d, *v, *a;
20   
21   double *S11, *S22, *S12;
22 };
23
24 //Compute forces on constant-strain triangles:
25 void CST_NL(const vector2d *coor,const connRec *lm,vector2d *R_net,
26             const vector2d *d,const double *c,
27             int numnp,int numel,
28             double *S11o,double *S22o,double *S12o);
29
30 // Prototypes
31 void advanceNodes(const double dt,int nnodes,const vector2d *coord,
32                   vector2d *R_net,vector2d *a,vector2d *v,vector2d *d,bool dampen);
33
34 void pup_myGlobals(pup_er p,myGlobals *g);
35
36 //The material constants c, as computed by fortran mat_const
37 // I think the units here are Pascals (N/m^2)
38 const double matConst[4]={3.692e9,  1.292e9,  3.692e9,  1.200e9 };
39
40 //The timestep, in seconds
41 const double dt=1.0e-9;
42
43 // A convenient error function
44 static void die(const char *str) {
45   CkError("Fatal error: %s\n",str);
46   CkExit();
47 }
48
49
50
51 #define NANCHECK 1 /*Check for NaNs at each timestep*/