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

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

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

revision 1220 by btully, Thu Aug 2 04:46:20 2007 UTC revision 1645 by phornby, Tue Jul 15 05:26:38 2008 UTC
# Line 1  Line 1 
 /*  
  ************************************************************  
  *          Copyright 2006,2007 by ACcENULLNULL MNRF              *  
  *                                                          *  
  *              http://www.access.edu.au                    *  
  *       Primary Business: Queensland, Australia            *  
  *  Licensed under the Open NULLoftware License version 3.0    *  
  *     http://www.opensource.org/licenses/osl-3.0.php       *  
  *                                                          *  
  ************************************************************  
 */  
1    
2    /* $Id$ */
3    
4    /*******************************************************
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    
# Line 21  Line 23 
23    
24  /**************************************************************/  /**************************************************************/
25    
 /*  Author: gross@access.edu.au */  
 /*  Version: $Id$ */  
   
 /**************************************************************/  
   
26  #include "Assemble.h"  #include "Assemble.h"
27  #include "Util.h"  #include "Util.h"
28  #ifdef _OPENMP  #ifdef _OPENMP
# Line 33  Line 30 
30  #endif  #endif
31    
32    
33  #define NEW_LUMPING /* */  /* Disabled until the tests pass */
34    /* #define NEW_LUMPING */ /* */
35    
36  /**************************************************************/  /**************************************************************/
37    
# Line 43  void Finley_Assemble_LumpedSystem(Finley Line 41  void Finley_Assemble_LumpedSystem(Finley
41    bool_t reducedIntegrationOrder=FALSE, expandedD;    bool_t reducedIntegrationOrder=FALSE, expandedD;
42    char error_msg[LenErrorMsg_MAX];    char error_msg[LenErrorMsg_MAX];
43    Assemble_Parameters p;    Assemble_Parameters p;
   double time0;  
44    dim_t dimensions[ESCRIPT_MAX_DATA_RANK], k, e, len_EM_lumpedMat, q, s;    dim_t dimensions[ESCRIPT_MAX_DATA_RANK], k, e, len_EM_lumpedMat, q, s;
45    type_t funcspace;    type_t funcspace;
46    index_t color,*row_index=NULL;    index_t color,*row_index=NULL;
47    double *S=NULL, *EM_lumpedMat=NULL, *Vol=NULL, *D_p=NULL, *lumpedMat_p=NULL;    double *S=NULL, *EM_lumpedMat=NULL, *Vol=NULL, *D_p=NULL, *lumpedMat_p=NULL;
48    register double rtmp, m_t, diagS;    register double rtmp;
49    size_t len_EM_lumpedMat_size;    size_t len_EM_lumpedMat_size;
50    
51    #ifdef NEW_LUMPING
52      register double m_t, diagS;
53    #endif
54    
55    Finley_resetError();    Finley_resetError();
56    
57    if (nodes==NULL || elements==NULL) return;    if (nodes==NULL || elements==NULL) return;
# Line 118  void Finley_Assemble_LumpedSystem(Finley Line 119  void Finley_Assemble_LumpedSystem(Finley
119         if ( !Finley_checkPtr(EM_lumpedMat) && !Finley_checkPtr(row_index) ) {         if ( !Finley_checkPtr(EM_lumpedMat) && !Finley_checkPtr(row_index) ) {
120            if (p.numEqu == 1) {            if (p.numEqu == 1) {
121               if (expandedD) {               if (expandedD) {
                  #ifndef PASO_MPI  
122                   for (color=elements->minColor;color<=elements->maxColor;color++) {                   for (color=elements->minColor;color<=elements->maxColor;color++) {
123                      /*  open loop over all elements: */                      /*  open loop over all elements: */
124                      #pragma omp for private(e) schedule(static)                      #pragma omp for private(e) schedule(static)
125                      for(e=0;e<elements->numElements;e++){                      for(e=0;e<elements->numElements;e++){
126                         if (elements->Color[e]==color) {                         if (elements->Color[e]==color) {
                  #else  
                  {  
                     for(e=0;e<elements->numElements;e++) {  
                        {  
                  #endif  
127                            Vol=&(p.row_jac->volume[INDEX2(0,e,p.numQuad)]);                            Vol=&(p.row_jac->volume[INDEX2(0,e,p.numQuad)]);
128                            memset(EM_lumpedMat,0,len_EM_lumpedMat_size);                            memset(EM_lumpedMat,0,len_EM_lumpedMat_size);
129                            D_p=getSampleData(D,e);                            D_p=getSampleData(D,e);
# Line 167  void Finley_Assemble_LumpedSystem(Finley Line 162  void Finley_Assemble_LumpedSystem(Finley
162                      } /* end element loop */                      } /* end element loop */
163                    } /* end color loop */                    } /* end color loop */
164               } else  {               } else  {
                  #ifndef PASO_MPI  
165                   for (color=elements->minColor;color<=elements->maxColor;color++) {                   for (color=elements->minColor;color<=elements->maxColor;color++) {
166                   /*  open loop over all elements: */                   /*  open loop over all elements: */
167                   #pragma omp for private(e) schedule(static)                   #pragma omp for private(e) schedule(static)
168                   for(e=0;e<elements->numElements;e++){                   for(e=0;e<elements->numElements;e++){
169                      if (elements->Color[e]==color) {                      if (elements->Color[e]==color) {
                  #else  
                  {  
                     for(e=0;e<elements->numElements;e++) {  
                        {  
                  #endif  
170                            Vol=&(p.row_jac->volume[INDEX2(0,e,p.numQuad)]);                            Vol=&(p.row_jac->volume[INDEX2(0,e,p.numQuad)]);
171                            memset(EM_lumpedMat,0,len_EM_lumpedMat_size);                            memset(EM_lumpedMat,0,len_EM_lumpedMat_size);
172                            D_p=getSampleData(D,e);                            D_p=getSampleData(D,e);
# Line 218  void Finley_Assemble_LumpedSystem(Finley Line 207  void Finley_Assemble_LumpedSystem(Finley
207               }               }
208            } else {            } else {
209               if (expandedD) {               if (expandedD) {
                  #ifndef PASO_MPI  
210                   for (color=elements->minColor;color<=elements->maxColor;color++) {                   for (color=elements->minColor;color<=elements->maxColor;color++) {
211                      /*  open loop over all elements: */                      /*  open loop over all elements: */
212                      #pragma omp for private(e) schedule(static)                      #pragma omp for private(e) schedule(static)
213                      for(e=0;e<elements->numElements;e++){                      for(e=0;e<elements->numElements;e++){
214                         if (elements->Color[e]==color) {                         if (elements->Color[e]==color) {
                  #else  
                  {  
                     for(e=0;e<elements->numElements;e++) {  
                        {  
                  #endif  
215                            Vol=&(p.row_jac->volume[INDEX2(0,e,p.numQuad)]);                            Vol=&(p.row_jac->volume[INDEX2(0,e,p.numQuad)]);
216                            memset(EM_lumpedMat,0,len_EM_lumpedMat_size);                            memset(EM_lumpedMat,0,len_EM_lumpedMat_size);
217                            D_p=getSampleData(D,e);                            D_p=getSampleData(D,e);
# Line 271  void Finley_Assemble_LumpedSystem(Finley Line 254  void Finley_Assemble_LumpedSystem(Finley
254                      } /* end element loop */                      } /* end element loop */
255                  } /* end color loop */                  } /* end color loop */
256               } else {               } else {
257                   #ifndef PASO_MPI                   /*  open loop over all elements: */
258                   for (color=elements->minColor;color<=elements->maxColor;color++) {                   for (color=elements->minColor;color<=elements->maxColor;color++) {
                     /*  open loop over all elements: */  
259                      #pragma omp for private(e) schedule(static)                      #pragma omp for private(e) schedule(static)
260                      for(e=0;e<elements->numElements;e++){                      for(e=0;e<elements->numElements;e++){
261                         if (elements->Color[e]==color) {                         if (elements->Color[e]==color) {
                  #else  
                  {  
                     for(e=0;e<elements->numElements;e++) {  
                        {  
                  #endif  
262                            Vol=&(p.row_jac->volume[INDEX2(0,e,p.numQuad)]);                            Vol=&(p.row_jac->volume[INDEX2(0,e,p.numQuad)]);
263                            memset(EM_lumpedMat,0,len_EM_lumpedMat_size);                            memset(EM_lumpedMat,0,len_EM_lumpedMat_size);
264                            D_p=getSampleData(D,e);                            D_p=getSampleData(D,e);
# Line 328  void Finley_Assemble_LumpedSystem(Finley Line 305  void Finley_Assemble_LumpedSystem(Finley
305         THREAD_MEMFREE(row_index);         THREAD_MEMFREE(row_index);
306      } /* end parallel region */      } /* end parallel region */
307    }    }
   #ifdef Finley_TRACE  
   printf("timing: assemblage lumped PDE: %.4e sec\n",Finley_timer()-time0);  
   #endif  
308  }  }

Legend:
Removed from v.1220  
changed lines
  Added in v.1645

  ViewVC Help
Powered by ViewVC 1.1.26