/[escript]/branches/doubleplusgood/dudley/src/Assemble_PDE_Single2_1D.cpp
ViewVC logotype

Diff of /branches/doubleplusgood/dudley/src/Assemble_PDE_Single2_1D.cpp

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

branches/domexper/dudley/src/Assemble_PDE_Single2_1D.c revision 3187 by jfenwick, Thu Sep 16 02:57:17 2010 UTC trunk/dudley/src/Assemble_PDE_Single2_1D.c revision 3911 by jfenwick, Thu Jun 14 01:01:03 2012 UTC
# Line 1  Line 1 
1    
2  /*******************************************************  /*******************************************************
3  *  *
4  * Copyright (c) 2003-2010 by University of Queensland  * Copyright (c) 2003-2012 by University of Queensland
5  * Earth Systems Science Computational Center (ESSCC)  * Earth Systems Science Computational Center (ESSCC)
6  * http://www.uq.edu.au/esscc  * http://www.uq.edu.au/esscc
7  *  *
# Line 40  Line 40 
40    
41  /**************************************************************/  /**************************************************************/
42    
43  void Dudley_Assemble_PDE_Single2_1D(Assemble_Parameters p, Dudley_ElementFile * elements,  void Dudley_Assemble_PDE_Single2_1D(Dudley_Assemble_Parameters p, Dudley_ElementFile * elements,
44                      Paso_SystemMatrix * Mat, escriptDataC * F,                      Paso_SystemMatrix * Mat, escriptDataC * F,
45                      escriptDataC * A, escriptDataC * B, escriptDataC * C, escriptDataC * D,                      escriptDataC * A, escriptDataC * B, escriptDataC * C, escriptDataC * D,
46                      escriptDataC * X, escriptDataC * Y)                      escriptDataC * X, escriptDataC * Y)
# Line 64  void Dudley_Assemble_PDE_Single2_1D(Asse Line 64  void Dudley_Assemble_PDE_Single2_1D(Asse
64      bool_t extendedY = isExpanded(Y);      bool_t extendedY = isExpanded(Y);
65      double *F_p = (requireWrite(F), getSampleDataRW(F, 0)); /* use comma, to get around the mixed code and declarations thing */      double *F_p = (requireWrite(F), getSampleDataRW(F, 0)); /* use comma, to get around the mixed code and declarations thing */
66      double *S = p.row_jac->BasisFunctions->S;      double *S = p.row_jac->BasisFunctions->S;
67      dim_t len_EM_S = p.row_numShapesTotal * p.col_numShapesTotal;      dim_t len_EM_S = p.row_numShapesTotal * p.row_numShapesTotal;
68      dim_t len_EM_F = p.row_numShapesTotal;      dim_t len_EM_F = p.row_numShapesTotal;
69    
70  #pragma omp parallel private(color, EM_S, EM_F, Vol, DSDX, A_p, B_p, C_p, D_p, X_p, Y_p, A_q, B_q, C_q, D_q, X_q, Y_q, row_index, q, s,r,rtmp,add_EM_F, add_EM_S)  #pragma omp parallel private(color, EM_S, EM_F, Vol, DSDX, A_p, B_p, C_p, D_p, X_p, Y_p, A_q, B_q, C_q, D_q, X_q, Y_q, row_index, q, s,r,rtmp,add_EM_F, add_EM_S)
# Line 93  void Dudley_Assemble_PDE_Single2_1D(Asse Line 93  void Dudley_Assemble_PDE_Single2_1D(Asse
93              Y_p = getSampleDataRO(Y, e);              Y_p = getSampleDataRO(Y, e);
94    
95              double vol = p.row_jac->absD[e] * p.row_jac->quadweight;              double vol = p.row_jac->absD[e] * p.row_jac->quadweight;
 //                      Vol=&(p.row_jac->volume[INDEX3(0,0,e, p.numQuadTotal,1)]);  
96              DSDX = &(p.row_jac->DSDX[INDEX5(0, 0, 0, 0, e, p.row_numShapesTotal, DIM, p.numQuadTotal, 1)]);              DSDX = &(p.row_jac->DSDX[INDEX5(0, 0, 0, 0, e, p.row_numShapesTotal, DIM, p.numQuadTotal, 1)]);
97              for (q = 0; q < len_EM_S; ++q)              for (q = 0; q < len_EM_S; ++q)
98                  EM_S[q] = 0;                  EM_S[q] = 0;
# Line 112  void Dudley_Assemble_PDE_Single2_1D(Asse Line 111  void Dudley_Assemble_PDE_Single2_1D(Asse
111                  A_q = &(A_p[INDEX4(0, 0, 0, 0, DIM, DIM, p.numQuadTotal)]);                  A_q = &(A_p[INDEX4(0, 0, 0, 0, DIM, DIM, p.numQuadTotal)]);
112                  for (s = 0; s < p.row_numShapes; s++)                  for (s = 0; s < p.row_numShapes; s++)
113                  {                  {
114                      for (r = 0; r < p.col_numShapes; r++)                      for (r = 0; r < p.row_numShapes; r++)
115                      {                      {
116                      rtmp = 0;                      rtmp = 0;
117                      for (q = 0; q < p.numQuadTotal; q++)                      for (q = 0; q < p.numQuadTotal; q++)
# Line 125  void Dudley_Assemble_PDE_Single2_1D(Asse Line 124  void Dudley_Assemble_PDE_Single2_1D(Asse
124                      EM_S[INDEX4(0, 0, s, r, p.numEqu, p.numComp, p.row_numShapesTotal)] += rtmp;                      EM_S[INDEX4(0, 0, s, r, p.numEqu, p.numComp, p.row_numShapesTotal)] += rtmp;
125                      }                      }
126                  }                  }
127                  } else                  }
128                    else
129                  {                  {
130                  for (s = 0; s < p.row_numShapes; s++)                  for (s = 0; s < p.row_numShapes; s++)
131                  {                  {
132                      for (r = 0; r < p.col_numShapes; r++)                      for (r = 0; r < p.row_numShapes; r++)
133                      {                      {
134                      rtmp = 0;                      rtmp = 0;
135                      for (q = 0; q < p.numQuadTotal; q++)                      for (q = 0; q < p.numQuadTotal; q++)
# Line 153  void Dudley_Assemble_PDE_Single2_1D(Asse Line 153  void Dudley_Assemble_PDE_Single2_1D(Asse
153                  B_q = &(B_p[INDEX3(0, 0, 0, DIM, p.numQuadTotal)]);                  B_q = &(B_p[INDEX3(0, 0, 0, DIM, p.numQuadTotal)]);
154                  for (s = 0; s < p.row_numShapes; s++)                  for (s = 0; s < p.row_numShapes; s++)
155                  {                  {
156                      for (r = 0; r < p.col_numShapes; r++)                      for (r = 0; r < p.row_numShapes; r++)
157                      {                      {
158                      rtmp = 0;                      rtmp = 0;
159                      for (q = 0; q < p.numQuadTotal; q++)                      for (q = 0; q < p.numQuadTotal; q++)
# Line 165  void Dudley_Assemble_PDE_Single2_1D(Asse Line 165  void Dudley_Assemble_PDE_Single2_1D(Asse
165                      EM_S[INDEX4(0, 0, s, r, p.numEqu, p.numComp, p.row_numShapesTotal)] += rtmp;                      EM_S[INDEX4(0, 0, s, r, p.numEqu, p.numComp, p.row_numShapesTotal)] += rtmp;
166                      }                      }
167                  }                  }
168                  } else                  }
169                    else
170                  {                  {
171                  for (s = 0; s < p.row_numShapes; s++)                  for (s = 0; s < p.row_numShapes; s++)
172                  {                  {
173                      for (r = 0; r < p.col_numShapes; r++)                      for (r = 0; r < p.row_numShapes; r++)
174                      {                      {
175                      rtmp = 0;                      rtmp = 0;
176                      for (q = 0; q < p.numQuadTotal; q++)                      for (q = 0; q < p.numQuadTotal; q++)
# Line 193  void Dudley_Assemble_PDE_Single2_1D(Asse Line 194  void Dudley_Assemble_PDE_Single2_1D(Asse
194                  C_q = &(C_p[INDEX3(0, 0, 0, DIM, p.numQuadTotal)]);                  C_q = &(C_p[INDEX3(0, 0, 0, DIM, p.numQuadTotal)]);
195                  for (s = 0; s < p.row_numShapes; s++)                  for (s = 0; s < p.row_numShapes; s++)
196                  {                  {
197                      for (r = 0; r < p.col_numShapes; r++)                      for (r = 0; r < p.row_numShapes; r++)
198                      {                      {
199                      rtmp = 0;                      rtmp = 0;
200                      for (q = 0; q < p.numQuadTotal; q++)                      for (q = 0; q < p.numQuadTotal; q++)
# Line 205  void Dudley_Assemble_PDE_Single2_1D(Asse Line 206  void Dudley_Assemble_PDE_Single2_1D(Asse
206                      EM_S[INDEX4(0, 0, s, r, p.numEqu, p.numComp, p.row_numShapesTotal)] += rtmp;                      EM_S[INDEX4(0, 0, s, r, p.numEqu, p.numComp, p.row_numShapesTotal)] += rtmp;
207                      }                      }
208                  }                  }
209                  } else                  }
210                    else
211                  {                  {
212                  for (s = 0; s < p.row_numShapes; s++)                  for (s = 0; s < p.row_numShapes; s++)
213                  {                  {
214                      for (r = 0; r < p.col_numShapes; r++)                      for (r = 0; r < p.row_numShapes; r++)
215                      {                      {
216                      rtmp = 0;                      rtmp = 0;
217                      for (q = 0; q < p.numQuadTotal; q++)                      for (q = 0; q < p.numQuadTotal; q++)
# Line 233  void Dudley_Assemble_PDE_Single2_1D(Asse Line 235  void Dudley_Assemble_PDE_Single2_1D(Asse
235                  D_q = &(D_p[INDEX2(0, 0, p.numQuadTotal)]);                  D_q = &(D_p[INDEX2(0, 0, p.numQuadTotal)]);
236                  for (s = 0; s < p.row_numShapes; s++)                  for (s = 0; s < p.row_numShapes; s++)
237                  {                  {
238                      for (r = 0; r < p.col_numShapes; r++)                      for (r = 0; r < p.row_numShapes; r++)
239                      {                      {
240                      rtmp = 0;                      rtmp = 0;
241                      for (q = 0; q < p.numQuadTotal; q++)                      for (q = 0; q < p.numQuadTotal; q++)
# Line 245  void Dudley_Assemble_PDE_Single2_1D(Asse Line 247  void Dudley_Assemble_PDE_Single2_1D(Asse
247                      EM_S[INDEX4(0, 0, s, r, p.numEqu, p.numComp, p.row_numShapesTotal)] += rtmp;                      EM_S[INDEX4(0, 0, s, r, p.numEqu, p.numComp, p.row_numShapesTotal)] += rtmp;
248                      }                      }
249                  }                  }
250                  } else                  }
251                    else
252                  {                  {
253                  for (s = 0; s < p.row_numShapes; s++)                  for (s = 0; s < p.row_numShapes; s++)
254                  {                  {
255                      for (r = 0; r < p.col_numShapes; r++)                      for (r = 0; r < p.row_numShapes; r++)
256                      {                      {
257                      rtmp = 0;                      rtmp = 0;
258                      for (q = 0; q < p.numQuadTotal; q++)                      for (q = 0; q < p.numQuadTotal; q++)
# Line 280  void Dudley_Assemble_PDE_Single2_1D(Asse Line 283  void Dudley_Assemble_PDE_Single2_1D(Asse
283                          X_q[INDEX2(0, q, DIM)];                          X_q[INDEX2(0, q, DIM)];
284                      EM_F[INDEX2(0, s, p.numEqu)] += rtmp;                      EM_F[INDEX2(0, s, p.numEqu)] += rtmp;
285                  }                  }
286                  } else                  }
287                    else
288                  {                  {
289                  for (s = 0; s < p.row_numShapes; s++)                  for (s = 0; s < p.row_numShapes; s++)
290                  {                  {
# Line 307  void Dudley_Assemble_PDE_Single2_1D(Asse Line 311  void Dudley_Assemble_PDE_Single2_1D(Asse
311                      rtmp += vol * S[INDEX2(s, q, p.row_numShapes)] * Y_q[q];                      rtmp += vol * S[INDEX2(s, q, p.row_numShapes)] * Y_q[q];
312                      EM_F[INDEX2(0, s, p.numEqu)] += rtmp;                      EM_F[INDEX2(0, s, p.numEqu)] += rtmp;
313                  }                  }
314                  } else                  }
315                    else
316                  {                  {
317                  for (s = 0; s < p.row_numShapes; s++)                  for (s = 0; s < p.row_numShapes; s++)
318                  {                  {
# Line 329  void Dudley_Assemble_PDE_Single2_1D(Asse Line 334  void Dudley_Assemble_PDE_Single2_1D(Asse
334                             p.row_DOF_UpperBound);                             p.row_DOF_UpperBound);
335              if (add_EM_S)              if (add_EM_S)
336                  Dudley_Assemble_addToSystemMatrix(Mat, p.row_numShapesTotal, row_index, p.numEqu,                  Dudley_Assemble_addToSystemMatrix(Mat, p.row_numShapesTotal, row_index, p.numEqu,
337                                    p.col_numShapesTotal, row_index, p.numComp, EM_S);                                    p.row_numShapesTotal, row_index, p.numComp, EM_S);
338    
339              }       /* end color check */              }       /* end color check */
340          }       /* end element loop */          }       /* end element loop */

Legend:
Removed from v.3187  
changed lines
  Added in v.3911

  ViewVC Help
Powered by ViewVC 1.1.26