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

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

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

revision 1311 by gross, Tue Mar 27 06:21:02 2007 UTC revision 1312 by ksteube, Mon Sep 24 06:18:44 2007 UTC
# Line 1  Line 1 
 /*  
  ************************************************************  
  *          Copyright 2006 by ACcESS MNRF                   *  
  *                                                          *  
  *              http://www.access.edu.au                    *  
  *       Primary Business: Queensland, Australia            *  
  *  Licensed under the Open Software License version 3.0    *  
  *     http://www.opensource.org/licenses/osl-3.0.php       *  
  *                                                          *  
  ************************************************************  
 */  
1    
2  /**************************************************************/  /* $Id$ */
3    
4  /*    assemblage routines: integrates data on quadrature points   */  /*******************************************************
5     *
6     *           Copyright 2003-2007 by ACceSS MNRF
7     *       Copyright 2007 by University of Queensland
8     *
9     *                http://esscc.uq.edu.au
10     *        Primary Business: Queensland, Australia
11     *  Licensed under the Open Software License version 3.0
12     *     http://www.opensource.org/licenses/osl-3.0.php
13     *
14     *******************************************************/
15    
16  /**************************************************************/  /**************************************************************/
17    
18  /*  Copyrights by ACcESS Australia 2003,2004,2005 */  /*    assemblage routines: integrates data on quadrature points   */
 /*  Author: gross@access.edu.au */  
 /*  version: $Id$ */  
19    
20  /**************************************************************/  /**************************************************************/
21    
# Line 37  void Finley_Assemble_integrate(Finley_No Line 34  void Finley_Assemble_integrate(Finley_No
34      type_t data_type=getFunctionSpaceType(data);      type_t data_type=getFunctionSpaceType(data);
35      dim_t numComps=getDataPointSize(data);      dim_t numComps=getDataPointSize(data);
36      Finley_ElementFile_Jacobeans* jac=NULL;      Finley_ElementFile_Jacobeans* jac=NULL;
37        Paso_MPI_rank my_mpi_rank;
38        
39      Finley_resetError();      Finley_resetError();
40      if (nodes==NULL || elements==NULL) return;      if (nodes==NULL || elements==NULL) return;
41        my_mpi_rank = nodes->MPIInfo->rank;
42      /* set some parameter */      /* set some parameter */
43      jac=Finley_ElementFile_borrowJacobeans(elements,nodes,FALSE,Finley_Assemble_reducedIntegrationOrder(data));      jac=Finley_ElementFile_borrowJacobeans(elements,nodes,FALSE,Finley_Assemble_reducedIntegrationOrder(data));
44      if (Finley_noError()) {      if (Finley_noError()) {
# Line 66  void Finley_Assemble_integrate(Finley_No Line 66  void Finley_Assemble_integrate(Finley_No
66                     if (isExpanded(data)) {                     if (isExpanded(data)) {
67                         #pragma omp for private(e) schedule(static)                         #pragma omp for private(e) schedule(static)
68                         for(e=0;e<elements->numElements;e++) {                         for(e=0;e<elements->numElements;e++) {
69                              if (elements->Owner[e] == my_mpi_rank) {
70                              data_array=getSampleData(data,e);                              data_array=getSampleData(data,e);
71                              for (q=0;q<jac->ReferenceElement->numQuadNodes;q++) {                              for (q=0;q<jac->ReferenceElement->numQuadNodes;q++) {
72                                    for (i=0;i<numComps;i++) out_local[i]+=data_array[INDEX2(i,q,numComps)]*jac->volume[INDEX2(q,e,jac->ReferenceElement->numQuadNodes)];                                    for (i=0;i<numComps;i++) out_local[i]+=data_array[INDEX2(i,q,numComps)]*jac->volume[INDEX2(q,e,jac->ReferenceElement->numQuadNodes)];
73                              }                              }
74                             }
75                         }                         }
76                     } else {                     } else {
77                        #pragma omp for private(e) schedule(static)                        #pragma omp for private(e) schedule(static)
78                        for(e=0;e<elements->numElements;e++) {                        for(e=0;e<elements->numElements;e++) {
79                              if (elements->Owner[e] == my_mpi_rank) {
80                             data_array=getSampleData(data,e);                             data_array=getSampleData(data,e);
81                             rtmp=0.;                             rtmp=0.;
82                             for (q=0;q<jac->ReferenceElement->numQuadNodes;q++) rtmp+=jac->volume[INDEX2(q,e,jac->ReferenceElement->numQuadNodes)];                             for (q=0;q<jac->ReferenceElement->numQuadNodes;q++) rtmp+=jac->volume[INDEX2(q,e,jac->ReferenceElement->numQuadNodes)];
83                             for (i=0;i<numComps;i++) out_local[i]+=data_array[i]*rtmp;                             for (i=0;i<numComps;i++) out_local[i]+=data_array[i]*rtmp;
84                              }
85                        }                        }
86                     }                     }
87                     /* add local results to global result */                     /* add local results to global result */

Legend:
Removed from v.1311  
changed lines
  Added in v.1312

  ViewVC Help
Powered by ViewVC 1.1.26