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

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

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

revision 730 by bcumming, Mon May 15 04:03:49 2006 UTC revision 964 by gross, Tue Feb 13 05:10:26 2007 UTC
# Line 35  void  Finley_Mesh_resolveNodeIds(Finley_ Line 35  void  Finley_Mesh_resolveNodeIds(Finley_
35    dim_t k,len,numDim,newNumNodes,n;    dim_t k,len,numDim,newNumNodes,n;
36    index_t min_id,max_id,min_id2,max_id2,*maskNodes=NULL,*maskElements=NULL,*index=NULL;    index_t min_id,max_id,min_id2,max_id2,*maskNodes=NULL,*maskElements=NULL,*index=NULL;
37    Finley_NodeFile *newNodeFile=NULL;    Finley_NodeFile *newNodeFile=NULL;
38    
39    Finley_resetError();    Finley_resetError();
40    numDim=Finley_Mesh_getDim(in);    numDim=Finley_Mesh_getDim(in);
41      
42    /*   find the minimum and maximum id used: */    /*   find the minimum and maximum id used: */
     
43    min_id=INDEX_T_MAX;    min_id=INDEX_T_MAX;
44    max_id=-INDEX_T_MAX;    max_id=-INDEX_T_MAX;
45    Finley_NodeFile_setIdRange(&min_id2,&max_id2,in->Nodes);    Finley_NodeFile_setIdRange(&min_id2,&max_id2,in->Nodes);
46    if (min_id2==INDEX_T_MAX || max_id2==-INDEX_T_MAX) {    if (min_id2==INDEX_T_MAX || max_id2==-INDEX_T_MAX) {
47      Finley_setError(VALUE_ERROR,"__FILE__: Mesh has not been defined completely.");      Finley_setError(VALUE_ERROR,"Finley_Mesh_resolveNodeIds: Mesh has not been defined completely.");
48      goto clean;      goto clean;
49    }    }
50    
51    
52    max_id=MAX(max_id,max_id2);    max_id=MAX(max_id,max_id2);
53    min_id=MIN(min_id,min_id2);    min_id=MIN(min_id,min_id2);
54    Finley_ElementFile_setNodeRange(&min_id2,&max_id2,in->Elements);    Finley_ElementFile_setNodeRange(&min_id2,&max_id2,in->Elements);
# Line 67  void  Finley_Mesh_resolveNodeIds(Finley_ Line 68  void  Finley_Mesh_resolveNodeIds(Finley_
68    #endif    #endif
69        
70    /*  allocate a new node file used to gather existing node file: */    /*  allocate a new node file used to gather existing node file: */
71      
72    len=max_id-min_id+1;    len=max_id-min_id+1;
73  #ifndef PASO_MPI  #ifndef PASO_MPI
74    newNodeFile=Finley_NodeFile_alloc(numDim);    newNodeFile=Finley_NodeFile_alloc(numDim);
# Line 108  void  Finley_Mesh_resolveNodeIds(Finley_ Line 109  void  Finley_Mesh_resolveNodeIds(Finley_
109    for (k=0;k<len;k++) {    for (k=0;k<len;k++) {
110       /* if a node is refered by an element is there a node defined ?*/       /* if a node is refered by an element is there a node defined ?*/
111       if (maskElements[k]>=0 && maskNodes[k]<0) {       if (maskElements[k]>=0 && maskNodes[k]<0) {
112         sprintf(error_msg,"__FILE__:Node id %d is referenced by element but is not defined.",k+min_id);         sprintf(error_msg,"Finley_Mesh_resolveNodeIds:Node id %d is referenced by element but is not defined.",k+min_id);
113         Finley_setError(VALUE_ERROR,error_msg);         Finley_setError(VALUE_ERROR,error_msg);
114       }       }
115    }    }
116    
   Finley_NodeFile_allocTable(newNodeFile,len);  
117    if (! Finley_noError() ) goto clean;    if (! Finley_noError() ) goto clean;
118      Finley_NodeFile_allocTable(newNodeFile,len);
119    
120    if (Finley_noError()) {    if (Finley_noError()) {
     
121        /*  scatter the nodefile in->nodes into newNodeFile using index; */        /*  scatter the nodefile in->nodes into newNodeFile using index; */
122        #pragma omp parallel for private(k) schedule(static)        #pragma omp parallel for private(k) schedule(static)
123        for (k=0;k<in->Nodes->numNodes;k++)        for (k=0;k<in->Nodes->numNodes;k++)
# Line 141  void  Finley_Mesh_resolveNodeIds(Finley_ Line 141  void  Finley_Mesh_resolveNodeIds(Finley_
141    
142        /*  relable nodes of the elements: */        /*  relable nodes of the elements: */
143        Finley_Mesh_relableElementNodes(maskElements,min_id,in);        Finley_Mesh_relableElementNodes(maskElements,min_id,in);
   
144    }    }
145    
146    /*  clean-up: */    /*  clean-up: */
# Line 152  void  Finley_Mesh_resolveNodeIds(Finley_ Line 151  void  Finley_Mesh_resolveNodeIds(Finley_
151           Finley_NodeFile_deallocTable(newNodeFile);           Finley_NodeFile_deallocTable(newNodeFile);
152           Finley_NodeFile_dealloc(newNodeFile);           Finley_NodeFile_dealloc(newNodeFile);
153  }  }
   
 /*  
 * $Log$  
 * Revision 1.6  2005/09/15 03:44:23  jgs  
 * Merge of development branch dev-02 back to main trunk on 2005-09-15  
 *  
 * Revision 1.5.2.1  2005/09/07 06:26:20  gross  
 * the solver from finley are put into the standalone package paso now  
 *  
 * Revision 1.5  2005/07/08 04:07:54  jgs  
 * Merge of development branch back to main trunk on 2005-07-08  
 *  
 * Revision 1.4  2004/12/15 07:08:33  jgs  
 * *** empty log message ***  
 * Revision 1.1.1.1.2.2  2005/06/29 02:34:53  gross  
 * some changes towards 64 integers in finley  
 *  
 * Revision 1.1.1.1.2.1  2004/11/24 01:37:14  gross  
 * some changes dealing with the integer overflow in memory allocation. Finley solves 4M unknowns now  
 *  
 *  
 *  
 */  
   

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

  ViewVC Help
Powered by ViewVC 1.1.26