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

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

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

revision 1720 by gross, Fri Aug 22 00:24:35 2008 UTC revision 1722 by gross, Fri Aug 22 04:20:30 2008 UTC
# Line 73  void Finley_Mesh_optimizeDOFDistribution Line 73  void Finley_Mesh_optimizeDOFDistribution
73       if (!(Finley_checkPtr(partition) || Finley_checkPtr(xyz) || Finley_checkPtr(partition_count) || Finley_checkPtr(partition_count) || Finley_checkPtr(newGlobalDOFID) || Finley_checkPtr(setNewDOFId))) {       if (!(Finley_checkPtr(partition) || Finley_checkPtr(xyz) || Finley_checkPtr(partition_count) || Finley_checkPtr(partition_count) || Finley_checkPtr(newGlobalDOFID) || Finley_checkPtr(setNewDOFId))) {
74           dim_t *recvbuf=TMPMEMALLOC(mpiSize*mpiSize,dim_t);           dim_t *recvbuf=TMPMEMALLOC(mpiSize*mpiSize,dim_t);
75    
76           /* set the coordinates: *?           /* set the coordinates: */
77           /* it is assumed that at least one node on this processor provides a coordinate */           /* it is assumed that at least one node on this processor provides a coordinate */
78           #pragma omp parallel for private(i,j,k)           #pragma omp parallel for private(i,j,k)
79           for (i=0;i<in->Nodes->numNodes;++i) {           for (i=0;i<in->Nodes->numNodes;++i) {
# Line 96  void Finley_Mesh_optimizeDOFDistribution Line 96  void Finley_Mesh_optimizeDOFDistribution
96                }                }
97            /* ksteube build CSR format */            /* ksteube build CSR format */
98                /*  insert contributions from element matrices into colums index index_list: */                /*  insert contributions from element matrices into colums index index_list: */
99                Finley_IndexList_insertElementsWithRowRange(index_list, myFirstVertex, myLastVertex,                Finley_IndexList_insertElementsWithRowRangeNoMainDiagonal(index_list, myFirstVertex, myLastVertex,
100                                                            in->Elements,in->Nodes->globalDegreesOfFreedom,                                                                          in->Elements,in->Nodes->globalDegreesOfFreedom,
101                                                            in->Nodes->globalDegreesOfFreedom);                                                                          in->Nodes->globalDegreesOfFreedom);
102                Finley_IndexList_insertElementsWithRowRange(index_list, myFirstVertex, myLastVertex,                Finley_IndexList_insertElementsWithRowRangeNoMainDiagonal(index_list, myFirstVertex, myLastVertex,
103                                                            in->FaceElements,in->Nodes->globalDegreesOfFreedom,                                                                          in->FaceElements,in->Nodes->globalDegreesOfFreedom,
104                                                            in->Nodes->globalDegreesOfFreedom);                                                                          in->Nodes->globalDegreesOfFreedom);
105                Finley_IndexList_insertElementsWithRowRange(index_list, myFirstVertex, myLastVertex,                Finley_IndexList_insertElementsWithRowRangeNoMainDiagonal(index_list, myFirstVertex, myLastVertex,
106                                                            in->ContactElements,in->Nodes->globalDegreesOfFreedom,                                                                          in->ContactElements,in->Nodes->globalDegreesOfFreedom,
107                                                            in->Nodes->globalDegreesOfFreedom);                                                                          in->Nodes->globalDegreesOfFreedom);
108                Finley_IndexList_insertElementsWithRowRange(index_list, myFirstVertex, myLastVertex,                Finley_IndexList_insertElementsWithRowRangeNoMainDiagonal(index_list, myFirstVertex, myLastVertex,
109                                                            in->Points,in->Nodes->globalDegreesOfFreedom,                                                                          in->Points,in->Nodes->globalDegreesOfFreedom,
110                                                            in->Nodes->globalDegreesOfFreedom);                                                                          in->Nodes->globalDegreesOfFreedom);
111             }             }
112                        
113             /* create the local matrix pattern */             /* create the local matrix pattern */
# Line 118  void Finley_Mesh_optimizeDOFDistribution Line 118  void Finley_Mesh_optimizeDOFDistribution
118                #pragma omp parallel for private(i)                #pragma omp parallel for private(i)
119                for(i=0;i<myNumVertices;++i) Finley_IndexList_free(index_list[i].extension);                for(i=0;i<myNumVertices;++i) Finley_IndexList_free(index_list[i].extension);
120             }             }
121    {
122    int s=0, s0;
123    for (i=0;i<myNumVertices;++i) {
124        s0=s;
125        for (j=pattern->ptr[i];j<pattern->ptr[i+1];++j) {
126            if (pattern->index[j] != myFirstVertex+i) {
127                pattern->index[s]=pattern->index[j];
128                s++;
129            }
130         }
131         pattern->ptr[i]=s0;
132    }
133    pattern->ptr[myNumVertices]=s;
134    }
135    
136    
137             if (Finley_noError()) {             if (Finley_noError()) {
138    
# Line 134  void Finley_Mesh_optimizeDOFDistribution Line 149  void Finley_Mesh_optimizeDOFDistribution
149           float *ubvec = TMPMEMALLOC(ncon,float);           float *ubvec = TMPMEMALLOC(ncon,float);
150           for (i=0; i<ncon*mpiSize; i++) tpwgts[i] = 1.0/(float)mpiSize;           for (i=0; i<ncon*mpiSize; i++) tpwgts[i] = 1.0/(float)mpiSize;
151           for (i=0; i<ncon; i++) ubvec[i] = 1.05;           for (i=0; i<ncon; i++) ubvec[i] = 1.05;
152           options[0] = 0;           options[0] = 3;
153           options[1] = 15;           options[1] = 15;
154           ParMETIS_V3_PartGeomKway(distribution,           ParMETIS_V3_PartGeomKway(distribution,
155                                   pattern->ptr,                                   pattern->ptr,

Legend:
Removed from v.1720  
changed lines
  Added in v.1722

  ViewVC Help
Powered by ViewVC 1.1.26