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

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

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

revision 6089 by caltinay, Tue Mar 22 06:58:00 2016 UTC revision 6090 by caltinay, Wed Mar 23 06:35:54 2016 UTC
# Line 22  Line 22 
22    
23        d_dirac_{k,m} u_m and y_dirac_k        d_dirac_{k,m} u_m and y_dirac_k
24    
25    u has p.numComp components in a 3D domain.    u has p.numEqu components in a 3D domain.
26    The shape functions for test and solution must be identical and    The shape functions for test and solution must be identical and
27    row_NS == row_NN.    row_NS == row_NN.
28    
29    Shape of the coefficients:    Shape of the coefficients:
30    
31        d_dirac = p.numEqu x p.numComp        d_dirac = p.numEqu x p.numEqu
32        y_dirac = p.numEqu        y_dirac = p.numEqu
33    
34    
# Line 51  void Assemble_PDE_Points(const AssembleP Line 51  void Assemble_PDE_Points(const AssembleP
51    
52  #pragma omp parallel  #pragma omp parallel
53      {      {
54            std::vector<index_t> rowIndex(1);
55            std::vector<double> values(p.numEqu*p.numEqu);
56    
57          for (index_t color = p.elements->minColor; color <= p.elements->maxColor; color++) {          for (index_t color = p.elements->minColor; color <= p.elements->maxColor; color++) {
58              // loop over all elements              // loop over all elements
59  #pragma omp for  #pragma omp for
60              for(index_t e = 0; e < p.elements->numElements; e++) {              for (index_t e = 0; e < p.elements->numElements; e++) {
61                  if (p.elements->Color[e] == color) {                  if (p.elements->Color[e] == color) {
62                      const index_t row_index = p.DOF[p.elements->Nodes[INDEX2(0,e,p.NN)]];                      rowIndex[0] = p.DOF[p.elements->Nodes[INDEX2(0,e,p.NN)]];
63                      if (!y_dirac.isEmpty()) {                      if (!y_dirac.isEmpty()) {
64                          const double* y_dirac_p = y_dirac.getSampleDataRO(e);                          const double* y_dirac_p = y_dirac.getSampleDataRO(e);
65                          util::addScatter(1, &row_index, p.numEqu,                          util::addScatter(1, &rowIndex[0], p.numEqu,
66                                           y_dirac_p, F_p, p.DOF_UpperBound);                                           y_dirac_p, F_p, p.DOF_UpperBound);
67                      }                      }
68                                        
69                      if (!d_dirac.isEmpty()) {                      if (!d_dirac.isEmpty()) {
70                          const double* d_dirac_p = d_dirac.getSampleDataRO(e);                          const double* EM_S = d_dirac.getSampleDataRO(e);
71                          Assemble_addToSystemMatrix(p.S, 1, &row_index,                          values.assign(EM_S, EM_S+p.numEqu*p.numEqu);
72                                 p.numEqu, 1, &row_index, p.numComp, d_dirac_p);                          Assemble_addToSystemMatrix(p.S, rowIndex, p.numEqu,
73                                                       values);
74                      }                      }
75                  } // end color check                  } // end color check
76              } // end element loop              } // end element loop

Legend:
Removed from v.6089  
changed lines
  Added in v.6090

  ViewVC Help
Powered by ViewVC 1.1.26