/[escript]/trunk/finley/src/Assemble_gradient.c
ViewVC logotype

Diff of /trunk/finley/src/Assemble_gradient.c

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

revision 781 by gross, Fri Jul 14 08:47:38 2006 UTC revision 853 by gross, Wed Sep 20 05:56:36 2006 UTC
# Line 120  void Finley_Assemble_gradient(Finley_Nod Line 120  void Finley_Assemble_gradient(Finley_Nod
120    /* now we can start */    /* now we can start */
121    
122    if (Finley_noError()) {    if (Finley_noError()) {
123        #pragma omp parallel        register dim_t e,q,l,s,n;
124          register double* data_array,  *grad_data_e;
125          #pragma omp parallel private(e,q,l,s,n,data_array,grad_data_e)
126        {        {
          register dim_t e,q,l,s,n;  
          register double* data_array,  *grad_data_e;  
127           if (data_type==FINLEY_NODES) {           if (data_type==FINLEY_NODES) {
128              if (jac->numDim==1) {              if (jac->numDim==1) {
129                  #define DIM 1                  #define DIM 1
# Line 166  void Finley_Assemble_gradient(Finley_Nod Line 166  void Finley_Assemble_gradient(Finley_Nod
166                  #undef DIM                  #undef DIM
167              } else if (jac->numDim==3) {              } else if (jac->numDim==3) {
168                  #define DIM 3                  #define DIM 3
169                  #pragma omp for schedule(static)                  #pragma omp for private(e,grad_data_e,s,n,data_array,q,l) schedule(static)
170              for (e=0;e<elements->numElements;e++) {              for (e=0;e<elements->numElements;e++) {
171                      grad_data_e=getSampleData(grad_data,e);                      grad_data_e=getSampleData(grad_data,e);
172                      for (q=0;q<DIM*(jac->ReferenceElement->numQuadNodes)*numComps; q++) grad_data_e[q]=0;                      for (q=0;q<DIM*(jac->ReferenceElement->numQuadNodes)*numComps; q++) grad_data_e[q]=0;
173                      for (s=0;s<jac->ReferenceElement->Type->numShapes;s++) {                      for (s=0;s<jac->ReferenceElement->Type->numShapes;s++) {
174                         n=elements->Nodes[INDEX2(dof_offset+s,e,NN)];                         n=elements->Nodes[INDEX2(dof_offset+s,e,NN)];
175                         data_array=getSampleData(data,n);                         data_array=getSampleData(data,n);
176                         for (q=0;q<jac->ReferenceElement->numQuadNodes;q++) {                         for (q=0;q<jac->ReferenceElement->numQuadNodes;q++) {
177                             for (l=0;l<numComps;l++) {                             for (l=0;l<numComps;l++) {
178                                 grad_data_e[INDEX3(l,0,q,numComps,DIM)]+=data_array[l]*                                 grad_data_e[INDEX3(l,0,q,numComps,DIM)]+=data_array[l]*
179                                      jac->DSDX[INDEX4(s_offset+s,0,q,e,jac->ReferenceElement->Type->numNodes,DIM,jac->ReferenceElement->numQuadNodes)];                                      jac->DSDX[INDEX4(s_offset+s,0,q,e,jac->ReferenceElement->Type->numNodes,DIM,jac->ReferenceElement->numQuadNodes)];
180                                 grad_data_e[INDEX3(l,1,q,numComps,DIM)]+=data_array[l]*                                 grad_data_e[INDEX3(l,1,q,numComps,DIM)]+=data_array[l]*
181                                      jac->DSDX[INDEX4(s_offset+s,1,q,e,jac->ReferenceElement->Type->numNodes,DIM,jac->ReferenceElement->numQuadNodes)];                                      jac->DSDX[INDEX4(s_offset+s,1,q,e,jac->ReferenceElement->Type->numNodes,DIM,jac->ReferenceElement->numQuadNodes)];
182                                 grad_data_e[INDEX3(l,2,q,numComps,DIM)]+=data_array[l]*                                 grad_data_e[INDEX3(l,2,q,numComps,DIM)]+=data_array[l]*
183                                      jac->DSDX[INDEX4(s_offset+s,2,q,e,jac->ReferenceElement->Type->numNodes,DIM,jac->ReferenceElement->numQuadNodes)];                                      jac->DSDX[INDEX4(s_offset+s,2,q,e,jac->ReferenceElement->Type->numNodes,DIM,jac->ReferenceElement->numQuadNodes)];
184                             }                             }
185                         }                         }
# Line 314  void Finley_Assemble_gradient(Finley_Nod Line 314  void Finley_Assemble_gradient(Finley_Nod
314                         }                         }
315                      }                      }
316                  }                  }
   
317                  #undef DIM                  #undef DIM
318              }              }
319           }           }

Legend:
Removed from v.781  
changed lines
  Added in v.853

  ViewVC Help
Powered by ViewVC 1.1.26