/[escript]/trunk/dudley/src/Assemble_PDE_Single2_3D.c
ViewVC logotype

Diff of /trunk/dudley/src/Assemble_PDE_Single2_3D.c

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

revision 3223 by jfenwick, Wed Sep 29 05:02:52 2010 UTC revision 3224 by jfenwick, Wed Sep 29 05:19:37 2010 UTC
# Line 63  void Dudley_Assemble_PDE_Single2_3D(Asse Line 63  void Dudley_Assemble_PDE_Single2_3D(Asse
63      bool_t extendedX = isExpanded(X);      bool_t extendedX = isExpanded(X);
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      const double* S = p.shapeFns;      const double *S = p.shapeFns;
67      dim_t len_EM_S = p.numShapes * p.numShapes;      dim_t len_EM_S = p.numShapes * p.numShapes;
68      dim_t len_EM_F = p.numShapes;      dim_t len_EM_F = p.numShapes;
69    
# Line 149  void Dudley_Assemble_PDE_Single2_3D(Asse Line 149  void Dudley_Assemble_PDE_Single2_3D(Asse
149                      EM_S[INDEX4(0, 0, s, r, p.numEqu, p.numComp, p.numShapes)] += rtmp;                      EM_S[INDEX4(0, 0, s, r, p.numEqu, p.numComp, p.numShapes)] += rtmp;
150                      }                      }
151                  }                  }
152                  } else                  }
153                    else
154                  {                  {
155                  for (s = 0; s < p.numShapes; s++)                  for (s = 0; s < p.numShapes; s++)
156                  {                  {
# Line 213  void Dudley_Assemble_PDE_Single2_3D(Asse Line 214  void Dudley_Assemble_PDE_Single2_3D(Asse
214                           B_q[INDEX2(0, q, DIM)] +                           B_q[INDEX2(0, q, DIM)] +
215                           DSDX[INDEX3(s, 1, q, p.numShapes, DIM)] *                           DSDX[INDEX3(s, 1, q, p.numShapes, DIM)] *
216                           B_q[INDEX2(1, q, DIM)] +                           B_q[INDEX2(1, q, DIM)] +
217                           DSDX[INDEX3(s, 2, q, p.numShapes, DIM)] *                           DSDX[INDEX3(s, 2, q, p.numShapes, DIM)] * B_q[INDEX2(2, q, DIM)]);
                          B_q[INDEX2(2, q, DIM)]);  
218                      }                      }
219                      EM_S[INDEX4(0, 0, s, r, p.numEqu, p.numComp, p.numShapes)] += rtmp;                      EM_S[INDEX4(0, 0, s, r, p.numEqu, p.numComp, p.numShapes)] += rtmp;
220                      }                      }
221                  }                  }
222                  } else                  }
223                    else
224                  {                  {
225                  for (s = 0; s < p.numShapes; s++)                  for (s = 0; s < p.numShapes; s++)
226                  {                  {
# Line 262  void Dudley_Assemble_PDE_Single2_3D(Asse Line 263  void Dudley_Assemble_PDE_Single2_3D(Asse
263                           DSDX[INDEX3(r, 0, q, p.numShapes, DIM)] +                           DSDX[INDEX3(r, 0, q, p.numShapes, DIM)] +
264                           C_q[INDEX2(1, q, DIM)] *                           C_q[INDEX2(1, q, DIM)] *
265                           DSDX[INDEX3(r, 1, q, p.numShapes, DIM)] +                           DSDX[INDEX3(r, 1, q, p.numShapes, DIM)] +
266                           C_q[INDEX2(2, q, DIM)] *                           C_q[INDEX2(2, q, DIM)] * DSDX[INDEX3(r, 2, q, p.numShapes, DIM)]);
                          DSDX[INDEX3(r, 2, q, p.numShapes, DIM)]);  
267                      }                      }
268                      EM_S[INDEX4(0, 0, s, r, p.numEqu, p.numComp, p.numShapes)] += rtmp;                      EM_S[INDEX4(0, 0, s, r, p.numEqu, p.numComp, p.numShapes)] += rtmp;
269                      }                      }
270                  }                  }
271                  } else                  }
272                    else
273                  {                  {
274                  for (s = 0; s < p.numShapes; s++)                  for (s = 0; s < p.numShapes; s++)
275                  {                  {
# Line 311  void Dudley_Assemble_PDE_Single2_3D(Asse Line 312  void Dudley_Assemble_PDE_Single2_3D(Asse
312                      EM_S[INDEX4(0, 0, s, r, p.numEqu, p.numComp, p.numShapes)] += rtmp;                      EM_S[INDEX4(0, 0, s, r, p.numEqu, p.numComp, p.numShapes)] += rtmp;
313                      }                      }
314                  }                  }
315                  } else                  }
316                    else
317                  {                  {
318                  for (s = 0; s < p.numShapes; s++)                  for (s = 0; s < p.numShapes; s++)
319                  {                  {
# Line 319  void Dudley_Assemble_PDE_Single2_3D(Asse Line 321  void Dudley_Assemble_PDE_Single2_3D(Asse
321                      {                      {
322                      rtmp = 0;                      rtmp = 0;
323                      for (q = 0; q < p.numQuad; q++)                      for (q = 0; q < p.numQuad; q++)
324                          rtmp +=                          rtmp += vol * S[INDEX2(s, q, p.numShapes)] * S[INDEX2(r, q, p.numShapes)];
325                          vol * S[INDEX2(s, q, p.numShapes)] *                      EM_S[INDEX4(0, 0, s, r, p.numEqu, p.numComp, p.numShapes)] += rtmp * D_p[0];
                         S[INDEX2(r, q, p.numShapes)];  
                     EM_S[INDEX4(0, 0, s, r, p.numEqu, p.numComp, p.numShapes)] +=  
                         rtmp * D_p[0];  
326                      }                      }
327                  }                  }
328                  }                  }
# Line 347  void Dudley_Assemble_PDE_Single2_3D(Asse Line 346  void Dudley_Assemble_PDE_Single2_3D(Asse
346                             X_q[INDEX2(0, q, DIM)] +                             X_q[INDEX2(0, q, DIM)] +
347                             DSDX[INDEX3(s, 1, q, p.numShapes, DIM)] *                             DSDX[INDEX3(s, 1, q, p.numShapes, DIM)] *
348                             X_q[INDEX2(1, q, DIM)] +                             X_q[INDEX2(1, q, DIM)] +
349                             DSDX[INDEX3(s, 2, q, p.numShapes, DIM)] *                             DSDX[INDEX3(s, 2, q, p.numShapes, DIM)] * X_q[INDEX2(2, q, DIM)]);
                            X_q[INDEX2(2, q, DIM)]);  
350                      }                      }
351                      EM_F[INDEX2(0, s, p.numEqu)] += rtmp;                      EM_F[INDEX2(0, s, p.numEqu)] += rtmp;
352                  }                  }
353                  } else                  }
354                    else
355                  {                  {
356                  for (s = 0; s < p.numShapes; s++)                  for (s = 0; s < p.numShapes; s++)
357                  {                  {
# Line 385  void Dudley_Assemble_PDE_Single2_3D(Asse Line 384  void Dudley_Assemble_PDE_Single2_3D(Asse
384                      rtmp += vol * S[INDEX2(s, q, p.numShapes)] * Y_q[q];                      rtmp += vol * S[INDEX2(s, q, p.numShapes)] * Y_q[q];
385                      EM_F[INDEX2(0, s, p.numEqu)] += rtmp;                      EM_F[INDEX2(0, s, p.numEqu)] += rtmp;
386                  }                  }
387                  } else                  }
388                    else
389                  {                  {
390                  for (s = 0; s < p.numShapes; s++)                  for (s = 0; s < p.numShapes; s++)
391                  {                  {
# Line 404  void Dudley_Assemble_PDE_Single2_3D(Asse Line 404  void Dudley_Assemble_PDE_Single2_3D(Asse
404                  row_index[q] = p.row_DOF[elements->Nodes[INDEX2(q, e, p.NN)]];                  row_index[q] = p.row_DOF[elements->Nodes[INDEX2(q, e, p.NN)]];
405    
406              if (add_EM_F)              if (add_EM_F)
407                  Dudley_Util_AddScatter(p.numShapes, row_index, p.numEqu, EM_F, F_p,                  Dudley_Util_AddScatter(p.numShapes, row_index, p.numEqu, EM_F, F_p, p.row_DOF_UpperBound);
                            p.row_DOF_UpperBound);  
408              if (add_EM_S)              if (add_EM_S)
409                  Dudley_Assemble_addToSystemMatrix(Mat, p.numShapes, row_index, p.numEqu,                  Dudley_Assemble_addToSystemMatrix(Mat, p.numShapes, row_index, p.numEqu,
410                                    p.numShapes, row_index, p.numComp, EM_S);                                    p.numShapes, row_index, p.numComp, EM_S);

Legend:
Removed from v.3223  
changed lines
  Added in v.3224

  ViewVC Help
Powered by ViewVC 1.1.26