/[escript]/branches/domexper/dudley/src/ElementFile_markNodes.c
ViewVC logotype

Diff of /branches/domexper/dudley/src/ElementFile_markNodes.c

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

trunk/finley/src/ElementFile_markNodes.c revision 730 by bcumming, Mon May 15 04:03:49 2006 UTC branches/domexper/dudley/src/ElementFile_markNodes.c revision 3086 by jfenwick, Thu Aug 5 05:07:58 2010 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  /**************************************************************/  /*******************************************************
3    *
4  /*   Finley: ElementFile */  * Copyright (c) 2003-2010 by University of Queensland
5    * Earth Systems Science Computational Center (ESSCC)
6    * http://www.uq.edu.au/esscc
7    *
8    * Primary Business: Queensland, Australia
9    * Licensed under the Open Software License version 3.0
10    * http://www.opensource.org/licenses/osl-3.0.php
11    *
12    *******************************************************/
13    
 /*   mark the used nodes with offeset: */  
14    
15  /**************************************************************/  /**************************************************************/
16    
17  /*  Copyrights by ACcESS Australia 2003,2004,2005 */  /*   Dudley: ElementFile */
18  /*  Author: gross@access.edu.au */  
19  /*  Version: $Id$ */  /*   mark the used nodes with offeset: */
20    
21  /**************************************************************/  /**************************************************************/
22    
# Line 28  Line 24 
24    
25  /**************************************************************/  /**************************************************************/
26    
27  void Finley_ElementFile_markNodes(index_t* mask,index_t offset,Finley_ElementFile* in,bool_t useLinear) {  void Dudley_ElementFile_markNodes(index_t* mask,index_t offset,dim_t numNodes,Dudley_ElementFile* in,bool_t useLinear) {
28     dim_t i,NN,NN2,e;     dim_t i,NN,NN2,e;
29     index_t color,*lin_node;     index_t *lin_nodes;
30       Dudley_ReferenceElement* refElement=NULL;
31      
32     if (in!=NULL) {     if (in!=NULL) {
33       index_t id[in->ReferenceElement->Type->numNodes];           refElement=Dudley_ReferenceElementSet_borrowReferenceElement(in->referenceElementSet, FALSE);    
34       for (i=0;i<in->ReferenceElement->Type->numNodes;i++) id[i]=i;           NN2=in->numNodes;
35       if (useLinear) {           if (useLinear) {
36          NN=in->LinearReferenceElement->Type->numNodes;               NN=refElement->numLinearNodes;
37          lin_node=in->ReferenceElement->Type->linearNodes;               lin_nodes=refElement->Type->linearNodes;
38       } else {               #pragma omp parallel for private(e,i) schedule(static)
39          NN=in->ReferenceElement->Type->numNodes;               for (e=0;e<in->numElements;e++) {
40          lin_node=id;                   for (i=0;i<NN;i++) {
41       }                         mask[in->Nodes[INDEX2(lin_nodes[i],e,NN2)]-offset]=1;
42       NN2=in->ReferenceElement->Type->numNodes;                   }
43       if ((in->maxColor-in->minColor+1)*NN<in->numElements) {               }
44          #pragma omp parallel private(color)           } else {
45          {               NN=refElement->Type->numNodes;
46             for (color=in->minColor;color<=in->maxColor;color++) {               #pragma omp parallel for private(e,i) schedule(static)
47               #pragma omp for private(e,i) schedule(static)               for (e=0;e<in->numElements;e++) {
48               for (e=0;e<in->numElements;e++) {                   for (i=0;i<NN;i++) {
49                 if (in->Color[e]==color) {                       mask[in->Nodes[INDEX2(i,e,NN2)]-offset]=1;
50                    for (i=0;i<NN;i++)                   }
51                      mask[in->Nodes[INDEX2(lin_node[i],e,NN2)]-offset]=1;               }
52                 }           }
53               }      }
            }  
            #pragma omp barrier  
         }  
       } else {  
         #pragma omp parallel for private(e,i) schedule(static)  
         for (e=0;e<in->numElements;e++) {  
            for (i=0;i<NN;i++)  
              mask[in->Nodes[INDEX2(lin_node[i],e,NN2)]-offset]=1;  
         }  
       }  
    }  
54  }  }
55  /*  
56  * $Log$  void Dudley_ElementFile_markDOFsConnectedToRange(index_t* mask,index_t offset,index_t marker,index_t firstDOF,index_t lastDOF,index_t *dofIndex,Dudley_ElementFile*in ,bool_t useLinear)
57  * Revision 1.4  2005/09/15 03:44:22  jgs  {
58  * Merge of development branch dev-02 back to main trunk on 2005-09-15     dim_t i,NN,NN2,e,j;
59  *     index_t color,*lin_nodes;
60  * Revision 1.3.2.1  2005/09/07 06:26:18  gross     Dudley_ReferenceElement* refElement=NULL;
61  * the solver from finley are put into the standalone package paso now     register index_t k;
62  *    
63  * Revision 1.3  2005/07/22 03:53:08  jgs     if (in!=NULL) {
64  * Merge of development branch back to main trunk on 2005-07-22           refElement=Dudley_ReferenceElementSet_borrowReferenceElement(in->referenceElementSet, FALSE);    
65  *           NN2=in->numNodes;
66  * Revision 1.2  2005/07/08 04:07:50  jgs           if (useLinear) {
67  * Merge of development branch back to main trunk on 2005-07-08               NN=refElement->numLinearNodes;
68  *               lin_nodes=refElement->Type->linearNodes;
69  * Revision 1.1.1.1.2.2  2005/07/18 10:34:54  gross               for (color=in->minColor;color<=in->maxColor;color++) {
70  * some informance improvements when reading meshes                   #pragma omp parallel for private(e,i,j,k) schedule(static)
71  *                   for (e=0;e<in->numElements;e++) {
72  * Revision 1.1.1.1.2.1  2005/06/29 02:34:49  gross                       if (in->Color[e]==color) {
73  * some changes towards 64 integers in finley                           for (i=0;i<NN;i++) {
74  *                               k=dofIndex[in->Nodes[INDEX2(lin_nodes[i],e,NN2)]];
75  * Revision 1.1.1.1  2004/10/26 06:53:57  jgs                               if ( (firstDOF<=k) && (k<lastDOF) ) {
76  * initial import of project esys2                                   for (j=0;j<NN;j++) mask[dofIndex[in->Nodes[INDEX2(lin_nodes[j],e,NN2)]]-offset]=marker;
77  *                                   break;
78  * Revision 1.1.1.1  2004/06/24 04:00:40  johng                               }
79  * Initial version of eys using boost-python.                           }
80  *                       }
81  *                   }
82  */               }
83             } else {
84                 NN=refElement->Type->numNodes;
85                 for (color=in->minColor;color<=in->maxColor;color++) {
86                     #pragma omp parallel for private(e,i,j,k) schedule(static)
87                     for (e=0;e<in->numElements;e++) {
88                         if (in->Color[e]==color) {
89                             for (i=0;i<NN;i++) {
90                                 k=dofIndex[in->Nodes[INDEX2(i,e,NN2)]];
91                                 if ( (firstDOF<=k) && (k<lastDOF) ) {
92                                     for (j=0;j<NN;j++) mask[dofIndex[in->Nodes[INDEX2(j,e,NN2)]]-offset]=marker;
93                                     break;
94                                 }
95                             }
96                         }
97                     }
98                 }
99             }
100        }      
101    }
102    

Legend:
Removed from v.730  
changed lines
  Added in v.3086

  ViewVC Help
Powered by ViewVC 1.1.26