Changeset 23582


Ignore:
Timestamp:
12/30/18 19:41:34 (6 years ago)
Author:
Mathieu Morlighem
Message:

CHG: fixing vertex pairing and splitting CreateElementsVerticesAndMaterials.cpp

Location:
issm/trunk-jpl/src/c/modules/ModelProcessorx
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp

    r23559 r23582  
    422422        vertices->common_recv_ids=common_recv_ids;
    423423}/*}}}*/
    424 
    425 void CreateElementsVerticesAndMaterials(Elements* elements,Vertices* vertices,Materials* materials,IoModel* iomodel,const int nummodels,int solution_type){/*{{{*/
    426 
    427         CreateElements(elements,iomodel,nummodels);
    428         CreateMaterials(elements,materials,iomodel,nummodels);
    429         CreateVertices(elements,vertices,iomodel,solution_type);
    430 
    431 }/*}}}*/
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp

    r23514 r23582  
    101101        }
    102102
    103         /*We might have vertex_pairing in which case, some vertices have to be cloned:
    104          * penpair has 2 nodes that are poointing toward 2 vertices.
    105          * The 2 vertices must be in the same cpu as the penpair*/
    106         int *vertex_pairing = NULL;
    107         iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,"md.stressbalance.vertex_pairing");
    108         for(int i=0;i<numvertex_pairing;i++){
    109                 if(my_vertices[vertex_pairing[2*i+0]-1] && !my_vertices[vertex_pairing[2*i+1]-1]){
    110                         my_vertices[vertex_pairing[2*i+1]-1]=true;
     103        /*We might have vertex_pairing in which case, some vertices have to be
     104         * cloned: penpair has 2 nodes that are poointing toward 2 vertices.
     105         * The 2 vertices must be in the same cpu as the penpair (only do this in non AMR mode, i.e. fid!=NULL)*/
     106        //if(!iomodel->dummy){
     107                int *vertex_pairing = NULL;
     108                iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,"md.stressbalance.vertex_pairing");
     109                for(int i=0;i<numvertex_pairing;i++){
     110                        if(my_vertices[vertex_pairing[2*i+0]-1] && !my_vertices[vertex_pairing[2*i+1]-1]){
     111                                my_vertices[vertex_pairing[2*i+1]-1]=true;
     112                        }
    111113                }
    112         }
    113         xDelete<int>(vertex_pairing);
    114         iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,"md.masstransport.vertex_pairing");
    115         for(int i=0;i<numvertex_pairing;i++){
    116                 if(my_vertices[vertex_pairing[2*i+0]-1] && !my_vertices[vertex_pairing[2*i+1]-1]){
    117                         my_vertices[vertex_pairing[2*i+1]-1]=true;
     114                xDelete<int>(vertex_pairing);
     115                iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,"md.masstransport.vertex_pairing");
     116                for(int i=0;i<numvertex_pairing;i++){
     117                        if(my_vertices[vertex_pairing[2*i+0]-1] && !my_vertices[vertex_pairing[2*i+1]-1]){
     118                                my_vertices[vertex_pairing[2*i+1]-1]=true;
     119                        }
    118120                }
    119         }
    120         xDelete<int>(vertex_pairing);
     121                xDelete<int>(vertex_pairing);
     122        //}
    121123
    122124        /*Assign pointers to iomodel*/
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp

    r23557 r23582  
    1414
    1515void ModelProcessorx(Elements** pelements, Nodes*** pnodes, Vertices** pvertices, Materials** pmaterials, Constraints*** pconstraints, Loads*** ploads, Parameters** pparameters,IoModel* iomodel,FILE* toolkitfile, char* rootpath,const int solution_enum,const int nummodels,const int* analysis_enum_list){
     16        _assert_(nummodels>0);
    1617
    1718        /*Set Verbosity once for all*/
     
    2021        SetVerbosityLevel(verbose);
    2122
    22         /*Some sanity checks*/
    23         _assert_(nummodels>0);
     23        if(VerboseMProcessor()) _printf0_("   starting model processor \n");
    2424
    2525        /*Initialize datasets*/
    26         Elements    *elements    = new Elements();
    27         Vertices    *vertices    = new Vertices();
    28         Materials   *materials   = new Materials();
    29         Parameters  *parameters  = new Parameters();
    30 
     26        Elements    *elements     = new Elements();
     27        Vertices    *vertices     = new Vertices();
     28        Materials   *materials    = new Materials();
     29        Parameters  *parameters   = new Parameters();
    3130        Constraints **constraints = xNew<Constraints*>(nummodels);
    32         for(int i=0;i<nummodels;i++) constraints[i] = new Constraints();
    33         Loads **loads = xNew<Loads*>(nummodels);
    34         for(int i=0;i<nummodels;i++) loads[i] = new Loads();
    35         Nodes **nodes = xNew<Nodes*>(nummodels);
    36         for(int i=0;i<nummodels;i++) nodes[i] = new Nodes();
    37 
    38 
    39         if(VerboseMProcessor()) _printf0_("   starting model processor \n");
     31        Loads       **loads       = xNew<Loads*>(nummodels);
     32        Nodes       **nodes       = xNew<Nodes*>(nummodels);
     33        for(int i = 0;i<nummodels;i++) constraints[i] = new Constraints();
     34        for(int i = 0;i<nummodels;i++) loads[i]       = new Loads();
     35        for(int i = 0;i<nummodels;i++) nodes[i]       = new Nodes();
    4036
    4137        /*Partition Elements and Nodes*/
     
    4339
    4440        /*Create elements, vertices and materials, independent of analysis_enum: */
    45         CreateElementsVerticesAndMaterials(elements,vertices,materials,iomodel,nummodels,solution_enum);
    46 
    47         /*Create Parameters*/
     41        CreateElements(elements,iomodel,nummodels);
     42        CreateMaterials(elements,materials,iomodel,nummodels);
     43        CreateVertices(elements,vertices,iomodel,solution_enum);
    4844        CreateParameters(parameters,iomodel,rootpath,toolkitfile,solution_enum);
    4945
     46        /*Update datasets based on each analysis (and add nodes, constrains and loads)*/
    5047        for(int i=0;i<nummodels;i++){
    5148
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.h

    r23576 r23582  
    1212
    1313/*Creation of fem datasets: general drivers*/
    14 void CreateElementsVerticesAndMaterials(Elements* elements,Vertices* vertices,Materials* materials, IoModel* iomodel,const int nummodels,int solution_type);
     14void CreateElements(Elements* elements,IoModel* iomodel,int nummodels);
     15void CreateMaterials(Elements* elements,Materials* materials,IoModel* iomodel,int nummodels);
     16void CreateVertices(Elements* elements,Vertices* vertices,IoModel* iomodel,int solution_type);
    1517void CreateParameters(Parameters*parameters,IoModel* iomodel,char* rootpath,FILE* toolkitfile,const int solution_type);
    1618void CreateParametersAutodiff(Parameters* parameters,IoModel* iomodel);
Note: See TracChangeset for help on using the changeset viewer.