/[escript]/branches/domexper/dudley/src/Assemble_jacobeans.c
ViewVC logotype

Diff of /branches/domexper/dudley/src/Assemble_jacobeans.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2548 by jfenwick, Mon Jul 20 06:20:06 2009 UTC revision 2748 by gross, Tue Nov 17 07:32:59 2009 UTC
# Line 19  Line 19 
19  #endif  #endif
20    
21    
22    /* input:
23    
24    double* coordinates[DIM*(*)]
25    dim_t numQuad
26    double* QuadWeights[numQuad]
27    dim_t numShape
28    dim_t numElements
29    dim_t numNodes
30    index_t* nodes[numNodes*numElements]  where NUMSIDES*numShape<=numNodes
31    double* DSDv[numShape*DIM*numQuad]
32    dim_t numTest
33    double* DTDv[LOCDIM*numTest*numQuad]
34    index_t* element_id[numElements]
35    
36    output:
37    
38    double* dTdX[DIM*numTest*NUMSIDES*numQuad*numElements]
39    double* volume[numQuad*numElements]
40    
41    */
42    
43    #define SCALING(_nsub_,_dim_) pow(1./(double)(_nsub_),1./(double)(_dim_))
44    
45  /**************************************************************/  /**************************************************************/
46  /*                                                            */  /*                                                            */
# Line 35  void Assemble_jacobeans_1D(double* coord Line 57  void Assemble_jacobeans_1D(double* coord
57       #pragma omp parallel       #pragma omp parallel
58       {       {
59         register double D,invD, X0_loc;         register double D,invD, X0_loc;
60         #pragma omp for private(e,q,s,D,invD,X0_loc) schedule(static)         #pragma omp for private(e,q,s,D,invD,X0_loc, q) schedule(static)
61         for(e=0;e<numElements;e++){         for(e=0;e<numElements;e++){
62             for (q=0;q<numQuad;q++) {             for (q=0;q<numQuad;q++) {
63                D=0;                D=0;
# Line 76  void Assemble_jacobeans_2D(double* coord Line 98  void Assemble_jacobeans_2D(double* coord
98         register double dXdv00,dXdv10,dXdv01,dXdv11,         register double dXdv00,dXdv10,dXdv01,dXdv11,
99                         dvdX00,dvdX10,dvdX01,dvdX11, D,invD,                         dvdX00,dvdX10,dvdX01,dvdX11, D,invD,
100                         X0_loc, X1_loc;                         X0_loc, X1_loc;
101         #pragma omp for private(e,q,s,dXdv00,dXdv10,dXdv01,dXdv11,dvdX00,dvdX10,dvdX01,dvdX11, D,invD,X0_loc, X1_loc) schedule(static)         #pragma omp for private(e,q,s,dXdv00,dXdv10,dXdv01,dXdv11,dvdX00,dvdX10,dvdX01,dvdX11, D,invD,X0_loc, X1_loc, q) schedule(static)
102         for(e=0;e<numElements;e++){         for(e=0;e<numElements;e++){
103             for (q=0;q<numQuad;q++) {             for (q=0;q<numQuad;q++) {
104                dXdv00=0;                dXdv00=0;
# Line 106  void Assemble_jacobeans_2D(double* coord Line 128  void Assemble_jacobeans_2D(double* coord
128                     dTdX[INDEX4(s,0,q,e,numTest,DIM,numQuad)]=DTDv[INDEX3(s,0,q,numTest,LOCDIM)]*dvdX00+DTDv[INDEX3(s,1,q,numTest,LOCDIM)]*dvdX10;                     dTdX[INDEX4(s,0,q,e,numTest,DIM,numQuad)]=DTDv[INDEX3(s,0,q,numTest,LOCDIM)]*dvdX00+DTDv[INDEX3(s,1,q,numTest,LOCDIM)]*dvdX10;
129                     dTdX[INDEX4(s,1,q,e,numTest,DIM,numQuad)]=DTDv[INDEX3(s,0,q,numTest,LOCDIM)]*dvdX01+DTDv[INDEX3(s,1,q,numTest,LOCDIM)]*dvdX11;                     dTdX[INDEX4(s,1,q,e,numTest,DIM,numQuad)]=DTDv[INDEX3(s,0,q,numTest,LOCDIM)]*dvdX01+DTDv[INDEX3(s,1,q,numTest,LOCDIM)]*dvdX11;
130                   }                   }
131    
132                }                }
133                volume[INDEX2(q,e,numQuad)]=ABS(D)*QuadWeights[q];                volume[INDEX2(q,e,numQuad)]=ABS(D)*QuadWeights[q];
134             }             }
# Line 131  void Assemble_jacobeans_2D_M1D_E1D(doubl Line 154  void Assemble_jacobeans_2D_M1D_E1D(doubl
154       {       {
155         register double dXdv00,dXdv10,dvdX00,dvdX01,D,invD,         register double dXdv00,dXdv10,dvdX00,dvdX01,D,invD,
156                         X0_loc, X1_loc;                         X0_loc, X1_loc;
157         #pragma omp for private(e,q,s,dXdv00,dXdv10,dvdX00,dvdX01,D,invD,X0_loc, X1_loc) schedule(static)         #pragma omp for private(e,q,s,dXdv00,dXdv10,dvdX00,dvdX01,D,invD,X0_loc, X1_loc, q) schedule(static)
158         for(e=0;e<numElements;e++){         for(e=0;e<numElements;e++){
159             for (q=0;q<numQuad;q++) {             for (q=0;q<numQuad;q++) {
160                dXdv00=0;                dXdv00=0;
# Line 180  void Assemble_jacobeans_2D_M1D_E1D_C(dou Line 203  void Assemble_jacobeans_2D_M1D_E1D_C(dou
203         register double dXdv00_0,dXdv10_0,dvdX00_0,dvdX01_0,D_0,invD_0,         register double dXdv00_0,dXdv10_0,dvdX00_0,dvdX01_0,D_0,invD_0,
204                         dXdv00_1,dXdv10_1,dvdX00_1,dvdX01_1,D_1,invD_1,                         dXdv00_1,dXdv10_1,dvdX00_1,dvdX01_1,D_1,invD_1,
205                         X0_loc_0, X1_loc_0, X0_loc_1, X1_loc_1;                         X0_loc_0, X1_loc_0, X0_loc_1, X1_loc_1;
206         #pragma omp for private(e,q,s,dXdv00_0,dXdv10_0,dvdX00_0,dvdX01_0,D_0,invD_0,dXdv00_1,dXdv10_1,dvdX00_1,dvdX01_1,D_1,invD_1,X0_loc_0, X1_loc_0, X0_loc_1, X1_loc_1) schedule(static)         #pragma omp for private(e,q,s,dXdv00_0,dXdv10_0,dvdX00_0,dvdX01_0,D_0,invD_0,dXdv00_1,dXdv10_1,dvdX00_1,dvdX01_1,D_1,invD_1,X0_loc_0, X1_loc_0, X0_loc_1, X1_loc_1, q) schedule(static)
207         for(e=0;e<numElements;e++){         for(e=0;e<numElements;e++){
208             for (q=0;q<numQuad;q++) {             for (q=0;q<numQuad;q++) {
209                dXdv00_0=0;                dXdv00_0=0;
# Line 241  void Assemble_jacobeans_2D_M1D_E2D(doubl Line 264  void Assemble_jacobeans_2D_M1D_E2D(doubl
264         register double dXdv00,dXdv10,dXdv01,dXdv11,         register double dXdv00,dXdv10,dXdv01,dXdv11,
265                         dvdX00,dvdX10,dvdX01,dvdX11, D,invD,                         dvdX00,dvdX10,dvdX01,dvdX11, D,invD,
266                         X0_loc, X1_loc;                         X0_loc, X1_loc;
267         #pragma omp for private(e,q,s,dXdv00,dXdv10,dXdv01,dXdv11,dvdX00,dvdX10,dvdX01,dvdX11, D,invD,X0_loc, X1_loc) schedule(static)         #pragma omp for private(e,q,s,dXdv00,dXdv10,dXdv01,dXdv11,dvdX00,dvdX10,dvdX01,dvdX11, D,invD,X0_loc, X1_loc, q) schedule(static)
268         for(e=0;e<numElements;e++){         for(e=0;e<numElements;e++){
269             for (q=0;q<numQuad;q++) {             for (q=0;q<numQuad;q++) {
270                dXdv00=0;                dXdv00=0;
# Line 297  void Assemble_jacobeans_2D_M1D_E2D_C(dou Line 320  void Assemble_jacobeans_2D_M1D_E2D_C(dou
320         register double dXdv00_0,dXdv10_0,dXdv01_0,dXdv11_0,dvdX00_0,dvdX10_0,dvdX01_0,dvdX11_0, D_0,invD_0,         register double dXdv00_0,dXdv10_0,dXdv01_0,dXdv11_0,dvdX00_0,dvdX10_0,dvdX01_0,dvdX11_0, D_0,invD_0,
321                         dXdv00_1,dXdv10_1,dXdv01_1,dXdv11_1,dvdX00_1,dvdX10_1,dvdX01_1,dvdX11_1, D_1,invD_1,                         dXdv00_1,dXdv10_1,dXdv01_1,dXdv11_1,dvdX00_1,dvdX10_1,dvdX01_1,dvdX11_1, D_1,invD_1,
322                         X0_loc_0, X1_loc_0, X0_loc_1, X1_loc_1;                         X0_loc_0, X1_loc_0, X0_loc_1, X1_loc_1;
323         #pragma omp for private(e,q,s,dXdv00_0,dXdv10_0,dXdv01_0,dXdv11_0,dvdX00_0,dvdX10_0,dvdX01_0,dvdX11_0, D_0,invD_0,dXdv00_1,dXdv10_1,dXdv01_1,dXdv11_1,dvdX00_1,dvdX10_1,dvdX01_1,dvdX11_1, D_1,invD_1,X0_loc_0, X1_loc_0, X0_loc_1, X1_loc_1) schedule(static)         #pragma omp for private(e,q,s,dXdv00_0,dXdv10_0,dXdv01_0,dXdv11_0,dvdX00_0,dvdX10_0,dvdX01_0,dvdX11_0, D_0,invD_0,dXdv00_1,dXdv10_1,dXdv01_1,dXdv11_1,dvdX00_1,dvdX10_1,dvdX01_1,dvdX11_1, D_1,invD_1,X0_loc_0, X1_loc_0, X0_loc_1, X1_loc_1, q) schedule(static)
324         for(e=0;e<numElements;e++){         for(e=0;e<numElements;e++){
325             for (q=0;q<numQuad;q++) {             for (q=0;q<numQuad;q++) {
326                dXdv00_0=0;                dXdv00_0=0;
# Line 375  void Assemble_jacobeans_3D(double* coord Line 398  void Assemble_jacobeans_3D(double* coord
398                         dvdX00,dvdX10,dvdX20,dvdX01,dvdX11,dvdX21,dvdX02,dvdX12,dvdX22, D,invD,                         dvdX00,dvdX10,dvdX20,dvdX01,dvdX11,dvdX21,dvdX02,dvdX12,dvdX22, D,invD,
399                         X0_loc,X1_loc,X2_loc;                         X0_loc,X1_loc,X2_loc;
400    
401        #pragma omp for private(e,q,s,dXdv00,dXdv10,dXdv20,dXdv01,dXdv11,dXdv21,dXdv02,dXdv12,dXdv22,dvdX00,dvdX10,dvdX20,dvdX01,dvdX11,dvdX21,dvdX02,dvdX12,dvdX22,D,invD,X0_loc,X1_loc,X2_loc) schedule(static)        #pragma omp for private(e,q,s,dXdv00,dXdv10,dXdv20,dXdv01,dXdv11,dXdv21,dXdv02,dXdv12,dXdv22,dvdX00,dvdX10,dvdX20,dvdX01,dvdX11,dvdX21,dvdX02,dvdX12,dvdX22,D,invD,X0_loc,X1_loc,X2_loc, q) schedule(static)
402         for(e=0;e<numElements;e++){         for(e=0;e<numElements;e++){
403             for (q=0;q<numQuad;q++) {             for (q=0;q<numQuad;q++) {
404                dXdv00=0;                dXdv00=0;
# Line 448  void Assemble_jacobeans_3D_M2D_E3D(doubl Line 471  void Assemble_jacobeans_3D_M2D_E3D(doubl
471         register double dXdv00,dXdv10,dXdv20,dXdv01,dXdv11,dXdv21,dXdv02,dXdv12,dXdv22, m0, m1, m2,         register double dXdv00,dXdv10,dXdv20,dXdv01,dXdv11,dXdv21,dXdv02,dXdv12,dXdv22, m0, m1, m2,
472                         dvdX00,dvdX10,dvdX20,dvdX01,dvdX11,dvdX21,dvdX02,dvdX12,dvdX22, D,invD,                         dvdX00,dvdX10,dvdX20,dvdX01,dvdX11,dvdX21,dvdX02,dvdX12,dvdX22, D,invD,
473                         X0_loc, X1_loc, X2_loc;                         X0_loc, X1_loc, X2_loc;
474         #pragma omp for private(e,q,s,dXdv00,dXdv10,dXdv20,dXdv01,dXdv11,dXdv21,dXdv02,dXdv12,dXdv22, m0, m1, m2,dvdX00,dvdX10,dvdX20,dvdX01,dvdX11,dvdX21,dvdX02,dvdX12,dvdX22, D,invD,X0_loc, X1_loc, X2_loc) schedule(static)         #pragma omp for private(e,q,s,dXdv00,dXdv10,dXdv20,dXdv01,dXdv11,dXdv21,dXdv02,dXdv12,dXdv22, m0, m1, m2,dvdX00,dvdX10,dvdX20,dvdX01,dvdX11,dvdX21,dvdX02,dvdX12,dvdX22, D,invD,X0_loc, X1_loc, X2_loc, q) schedule(static)
475         for(e=0;e<numElements;e++){         for(e=0;e<numElements;e++){
476             for (q=0;q<numQuad;q++) {             for (q=0;q<numQuad;q++) {
477                dXdv00=0;                dXdv00=0;
# Line 529  void Assemble_jacobeans_3D_M2D_E3D_C(dou Line 552  void Assemble_jacobeans_3D_M2D_E3D_C(dou
552                         dXdv00_1,dXdv10_1,dXdv20_1,dXdv01_1,dXdv11_1,dXdv21_1,dXdv02_1,dXdv12_1,dXdv22_1, m0_1, m1_1, m2_1,                         dXdv00_1,dXdv10_1,dXdv20_1,dXdv01_1,dXdv11_1,dXdv21_1,dXdv02_1,dXdv12_1,dXdv22_1, m0_1, m1_1, m2_1,
553                         dvdX00_1,dvdX10_1,dvdX20_1,dvdX01_1,dvdX11_1,dvdX21_1,dvdX02_1,dvdX12_1,dvdX22_1, D_1,invD_1,                         dvdX00_1,dvdX10_1,dvdX20_1,dvdX01_1,dvdX11_1,dvdX21_1,dvdX02_1,dvdX12_1,dvdX22_1, D_1,invD_1,
554                         X0_loc_0, X1_loc_0, X2_loc_0, X0_loc_1, X1_loc_1, X2_loc_1;                         X0_loc_0, X1_loc_0, X2_loc_0, X0_loc_1, X1_loc_1, X2_loc_1;
555         #pragma omp for private(e,q,s,dXdv00_0,dXdv10_0,dXdv20_0,dXdv01_0,dXdv11_0,dXdv21_0,dXdv02_0,dXdv12_0,dXdv22_0, m0_0, m1_0, m2_0,dvdX00_0,dvdX10_0,dvdX20_0,dvdX01_0,dvdX11_0,dvdX21_0,dvdX02_0,dvdX12_0,dvdX22_0, D_0,invD_0,dXdv00_1,dXdv10_1,dXdv20_1,dXdv01_1,dXdv11_1,dXdv21_1,dXdv02_1,dXdv12_1,dXdv22_1, m0_1, m1_1, m2_1,dvdX00_1,dvdX10_1,dvdX20_1,dvdX01_1,dvdX11_1,dvdX21_1,dvdX02_1,dvdX12_1,dvdX22_1, D_1,invD_1,X0_loc_0, X1_loc_0, X2_loc_0, X0_loc_1, X1_loc_1, X2_loc_1) schedule(static)         #pragma omp for private(e,q,s,dXdv00_0,dXdv10_0,dXdv20_0,dXdv01_0,dXdv11_0,dXdv21_0,dXdv02_0,dXdv12_0,dXdv22_0, m0_0, m1_0, m2_0,dvdX00_0,dvdX10_0,dvdX20_0,dvdX01_0,dvdX11_0,dvdX21_0,dvdX02_0,dvdX12_0,dvdX22_0, D_0,invD_0,dXdv00_1,dXdv10_1,dXdv20_1,dXdv01_1,dXdv11_1,dXdv21_1,dXdv02_1,dXdv12_1,dXdv22_1, m0_1, m1_1, m2_1,dvdX00_1,dvdX10_1,dvdX20_1,dvdX01_1,dvdX11_1,dvdX21_1,dvdX02_1,dvdX12_1,dvdX22_1, D_1,invD_1,X0_loc_0, X1_loc_0, X2_loc_0, X0_loc_1, X1_loc_1, X2_loc_1, q) schedule(static)
556         for(e=0;e<numElements;e++){         for(e=0;e<numElements;e++){
557             for (q=0;q<numQuad;q++) {             for (q=0;q<numQuad;q++) {
558                dXdv00_0=0;                dXdv00_0=0;
# Line 650  void Assemble_jacobeans_3D_M2D_E2D(doubl Line 673  void Assemble_jacobeans_3D_M2D_E2D(doubl
673         register double dXdv00,dXdv10,dXdv20,dXdv01,dXdv11,dXdv21,m00,m01,m11,         register double dXdv00,dXdv10,dXdv20,dXdv01,dXdv11,dXdv21,m00,m01,m11,
674                         dvdX00,dvdX01,dvdX02,dvdX10,dvdX11,dvdX12,D,invD,                         dvdX00,dvdX01,dvdX02,dvdX10,dvdX11,dvdX12,D,invD,
675                         X0_loc, X1_loc, X2_loc;                         X0_loc, X1_loc, X2_loc;
676         #pragma omp for private(e,q,s,dXdv00,dXdv10,dXdv20,dXdv01,dXdv11,dXdv21,m00,m01,m11,dvdX00,dvdX01,dvdX02,dvdX10,dvdX11,dvdX12,D,invD, X0_loc, X1_loc, X2_loc) schedule(static)         #pragma omp for private(e,q,s,dXdv00,dXdv10,dXdv20,dXdv01,dXdv11,dXdv21,m00,m01,m11,dvdX00,dvdX01,dvdX02,dvdX10,dvdX11,dvdX12,D,invD, X0_loc, X1_loc, X2_loc, q) schedule(static)
677         for(e=0;e<numElements;e++){         for(e=0;e<numElements;e++){
678             for (q=0;q<numQuad;q++) {             for (q=0;q<numQuad;q++) {
679                dXdv00=0;                dXdv00=0;
# Line 718  void Assemble_jacobeans_3D_M2D_E2D_C(dou Line 741  void Assemble_jacobeans_3D_M2D_E2D_C(dou
741                         dXdv00_1,dXdv10_1,dXdv20_1,dXdv01_1,dXdv11_1,dXdv21_1,m00_1,m01_1,m11_1,                         dXdv00_1,dXdv10_1,dXdv20_1,dXdv01_1,dXdv11_1,dXdv21_1,m00_1,m01_1,m11_1,
742                         dvdX00_1,dvdX01_1,dvdX02_1,dvdX10_1,dvdX11_1,dvdX12_1,D_1,invD_1,                         dvdX00_1,dvdX01_1,dvdX02_1,dvdX10_1,dvdX11_1,dvdX12_1,D_1,invD_1,
743                         X0_loc_0, X1_loc_0, X2_loc_0, X0_loc_1, X1_loc_1, X2_loc_1;                         X0_loc_0, X1_loc_0, X2_loc_0, X0_loc_1, X1_loc_1, X2_loc_1;
744         #pragma omp for private(e,q,s,dXdv00_0,dXdv10_0,dXdv20_0,dXdv01_0,dXdv11_0,dXdv21_0,m00_0,m01_0,m11_0,dvdX00_0,dvdX01_0,dvdX02_0,dvdX10_0,dvdX11_0,dvdX12_0,D_0,invD_0,dXdv00_1,dXdv10_1,dXdv20_1,dXdv01_1,dXdv11_1,dXdv21_1,m00_1,m01_1,m11_1,dvdX00_1,dvdX01_1,dvdX02_1,dvdX10_1,dvdX11_1,dvdX12_1,D_1,invD_1,X0_loc_0, X1_loc_0, X2_loc_0, X0_loc_1, X1_loc_1, X2_loc_1) schedule(static)         #pragma omp for private(e,q,s,dXdv00_0,dXdv10_0,dXdv20_0,dXdv01_0,dXdv11_0,dXdv21_0,m00_0,m01_0,m11_0,dvdX00_0,dvdX01_0,dvdX02_0,dvdX10_0,dvdX11_0,dvdX12_0,D_0,invD_0,dXdv00_1,dXdv10_1,dXdv20_1,dXdv01_1,dXdv11_1,dXdv21_1,m00_1,m01_1,m11_1,dvdX00_1,dvdX01_1,dvdX02_1,dvdX10_1,dvdX11_1,dvdX12_1,D_1,invD_1,X0_loc_0, X1_loc_0, X2_loc_0, X0_loc_1, X1_loc_1, X2_loc_1, q) schedule(static)
745         for(e=0;e<numElements;e++){         for(e=0;e<numElements;e++){
746             for (q=0;q<numQuad;q++) {             for (q=0;q<numQuad;q++) {
747                dXdv00_0=0;                dXdv00_0=0;
# Line 802  void Assemble_jacobeans_3D_M2D_E2D_C(dou Line 825  void Assemble_jacobeans_3D_M2D_E2D_C(dou
825       #undef DIM       #undef DIM
826       #undef LOCDIM       #undef LOCDIM
827  }  }
 /*  
  * $Log:$  
  *  
  */  

Legend:
Removed from v.2548  
changed lines
  Added in v.2748

  ViewVC Help
Powered by ViewVC 1.1.26