/[escript]/branches/trilinos_from_5897/dudley/src/Assemble_LumpedSystem.cpp
ViewVC logotype

Diff of /branches/trilinos_from_5897/dudley/src/Assemble_LumpedSystem.cpp

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

revision 6078 by caltinay, Wed Mar 2 04:13:26 2016 UTC revision 6079 by caltinay, Mon Mar 21 12:22:38 2016 UTC
# Line 14  Line 14 
14  *  *
15  *****************************************************************************/  *****************************************************************************/
16    
 /****************************************************************************  
   
   Assembles the mass matrix in lumped form.  
   
   The coefficient D has to be defined on the integration points or not present.  
   lumpedMat has to be initialized before the routine is called.  
   
 *****************************************************************************/  
   
17  #include "Assemble.h"  #include "Assemble.h"
18  #include "ShapeTable.h"  #include "ShapeTable.h"
19  #include "Util.h"  #include "Util.h"
20    
21  namespace dudley {  namespace dudley {
22    
23  void Assemble_LumpedSystem(Dudley_NodeFile* nodes, Dudley_ElementFile* elements,  void Assemble_LumpedSystem(const NodeFile* nodes, const ElementFile* elements,
24                             escript::Data& lumpedMat, const escript::Data& D,                             escript::Data& lumpedMat, const escript::Data& D,
25                             bool useHRZ)                             bool useHRZ)
26  {  {
# Line 52  void Assemble_LumpedSystem(Dudley_NodeFi Line 43  void Assemble_LumpedSystem(Dudley_NodeFi
43      }      }
44    
45      // initialize parameters      // initialize parameters
46      Assemble_Parameters p;      AssembleParameters p;
47      Assemble_getAssembleParameters(nodes, elements, escript::ASM_ptr(),      Assemble_getAssembleParameters(nodes, elements, escript::ASM_ptr(),
48                                        lumpedMat, reducedIntegrationOrder, &p);                                        lumpedMat, reducedIntegrationOrder, &p);
49    
# Line 95  void Assemble_LumpedSystem(Dudley_NodeFi Line 86  void Assemble_LumpedSystem(Dudley_NodeFi
86                  for (index_t e=0; e<elements->numElements; e++) {                  for (index_t e=0; e<elements->numElements; e++) {
87                      if (elements->Color[e]==color) {                      if (elements->Color[e]==color) {
88                          const double* D_p = D.getSampleDataRO(e);                          const double* D_p = D.getSampleDataRO(e);
89                          Dudley_Util_AddScatter(1,                          util::addScatter(1,
90                                        &p.row_DOF[elements->Nodes[INDEX2(0,e,p.NN)]],                                        &p.row_DOF[elements->Nodes[INDEX2(0,e,p.NN)]],
91                                        p.numEqu, D_p, lumpedMat_p,                                        p.numEqu, D_p, lumpedMat_p,
92                                        p.row_DOF_UpperBound);                                        p.row_DOF_UpperBound);
# Line 153  void Assemble_LumpedSystem(Dudley_NodeFi Line 144  void Assemble_LumpedSystem(Dudley_NodeFi
144                                  }                                  }
145                                  for (int q = 0; q < p.numShapes; q++)                                  for (int q = 0; q < p.numShapes; q++)
146                                      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)]];
147                                  Dudley_Util_AddScatter(p.numShapes, &row_index[0],                                  util::addScatter(p.numShapes, &row_index[0],
148                                         p.numEqu, &EM_lumpedMat[0], lumpedMat_p,                                         p.numEqu, &EM_lumpedMat[0], lumpedMat_p,
149                                         p.row_DOF_UpperBound);                                         p.row_DOF_UpperBound);
150                              } // end color check                              } // end color check
# Line 195  void Assemble_LumpedSystem(Dudley_NodeFi Line 186  void Assemble_LumpedSystem(Dudley_NodeFi
186                                  }                                  }
187                                  for (int q = 0; q < p.numShapes; q++)                                  for (int q = 0; q < p.numShapes; q++)
188                                      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)]];
189                                  Dudley_Util_AddScatter(p.numShapes, &row_index[0],                                  util::addScatter(p.numShapes, &row_index[0],
190                                         p.numEqu, &EM_lumpedMat[0], lumpedMat_p,                                         p.numEqu, &EM_lumpedMat[0], lumpedMat_p,
191                                         p.row_DOF_UpperBound);                                         p.row_DOF_UpperBound);
192                              } // end color check                              } // end color check
# Line 250  void Assemble_LumpedSystem(Dudley_NodeFi Line 241  void Assemble_LumpedSystem(Dudley_NodeFi
241                                  }                                  }
242                                  for (int q = 0; q < p.numShapes; q++)                                  for (int q = 0; q < p.numShapes; q++)
243                                      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)]];
244                                  Dudley_Util_AddScatter(p.numShapes, &row_index[0],                                  util::addScatter(p.numShapes, &row_index[0],
245                                         p.numEqu, &EM_lumpedMat[0], lumpedMat_p,                                         p.numEqu, &EM_lumpedMat[0], lumpedMat_p,
246                                         p.row_DOF_UpperBound);                                         p.row_DOF_UpperBound);
247                              } // end color check                              } // end color check
# Line 296  void Assemble_LumpedSystem(Dudley_NodeFi Line 287  void Assemble_LumpedSystem(Dudley_NodeFi
287                                  }                                  }
288                                  for (int q = 0; q < p.numShapes; q++)                                  for (int q = 0; q < p.numShapes; q++)
289                                      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)]];
290                                  Dudley_Util_AddScatter(p.numShapes, &row_index[0],                                  util::addScatter(p.numShapes, &row_index[0],
291                                         p.numEqu, &EM_lumpedMat[0], lumpedMat_p,                                         p.numEqu, &EM_lumpedMat[0], lumpedMat_p,
292                                         p.row_DOF_UpperBound);                                         p.row_DOF_UpperBound);
293                              } // end color check                              } // end color check

Legend:
Removed from v.6078  
changed lines
  Added in v.6079

  ViewVC Help
Powered by ViewVC 1.1.26