Changeset 786


Ignore:
Timestamp:
06/04/09 17:09:02 (16 years ago)
Author:
Mathieu Morlighem
Message:

Added RGB for MacAyeal-Pattyn (not working yet)

Location:
issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp

    r653 r786  
    1717
    1818
    19         int i;
     19        int i,j;
    2020        int count;
    2121       
    2222        DataSet* constraints = NULL;
    2323        Spc*    spc  = NULL;
     24        Rgb*    rgb  = NULL;
    2425
    2526        /*spc intermediary data: */
     
    2829        int spc_dof;
    2930        double spc_value;
     31
     32        /*rgb constructor data: */
     33        int rgb_id;
     34        int rgb_dof;
     35        int rgb_nodeid1;
     36        int rgb_nodeid2;
     37        int grid1,grid2;
    3038       
    3139        double* dirichletvalues_diag=NULL;
     
    8189        }
    8290
     91        /*Create penalties loads for linking of collapsed formulation grids with non collapsed grids: */
     92
     93        /*First fetch penalties: */
     94        if (strcmp(model->meshtype,"3d")==0){
     95                ModelFetchData((void**)&model->penalties,&model->numpenalties,NULL,model_handle,"penalties","Matrix","Mat");
     96        }
     97
     98        count=0;
     99        if(model->numpenalties){
     100
     101                /*First deal with internal grids: */
     102                for (i=0;i<model->numpenalties;i++){
     103                        if (model->penaltypartitioning[i]>=0){ //this penalty belongs to at least this CPU
     104
     105                                for(j=1;j<model->numlayers;j++){
     106                                        /*We are pairing grids along a vertical profile.*/
     107                                        grid1=(int)*(model->penalties+model->numlayers*i);
     108                                        grid2=(int)*(model->penalties+model->numlayers*i+j);
     109
     110                                        rgb_id=count+1; //matlab indexing
     111                                        rgb_dof=1;
     112                                        rgb_nodeid1=grid1;
     113                                        rgb_nodeid2=grid2;
     114                                        rgb= new Rgb(rgb_id,rgb_nodeid1,rgb_nodeid2,rgb_dof);
     115                                        constraints->AddObject(rgb);
     116                                        count++;
     117
     118                                        rgb_id=count+1; //matlab indexing
     119                                        rgb_dof=2;
     120                                        rgb_nodeid1=grid1;
     121                                        rgb_nodeid2=grid2;
     122                                        rgb= new Rgb(rgb_id,rgb_nodeid1,rgb_nodeid2,rgb_dof);
     123                                        constraints->AddObject(rgb);
     124                                        count++;
     125                                } //for ( i=0; i<numpenalties; i++)
     126                        }
     127                }
     128        }
     129
     130        /*Free data: */
     131        xfree((void**)&model->penalties);
     132
    83133        /*All our datasets are already order by ids. Set presort flag so that later on, when sorting is requested on these
    84134         * datasets, it will not be redone: */
    85135        constraints->Presort();
    86 
    87136       
    88137        /*Free data: */
  • issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateElementsNodesAndMaterialsDiagnosticHoriz.cpp

    r748 r786  
    7878       
    7979        /*penta constructor input: */
    80 
    8180        int penta_id;
    8281        int penta_mid;
  • issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp

    r586 r786  
    153153        xfree((void**)&model->bed);
    154154
    155                
    156         /*Create penalties loads for linking of collapsed formulation grids with non collapsed grids: */
    157 
    158         /*First fetch penalties: */
    159         if (strcmp(model->meshtype,"3d")==0){
    160                 ModelFetchData((void**)&model->penalties,&model->numpenalties,NULL,model_handle,"penalties","Matrix","Mat");
    161         }
    162 
    163155        counter=0;
    164         if(model->numpenalties){
    165 
    166                 /*First deal with internal grids: */
    167                 for (i=0;i<model->numpenalties;i++){
    168                         if (model->penaltypartitioning[i]>=0){ //this penalty belongs to at least this CPU
    169 
    170                                 for(j=0;j<model->numlayers-1;j++){
    171 
    172                                         /*We are pairing grids along a vertical profile.*/
    173                                         grid1=(int)*(model->penalties+model->numlayers*i+j);
    174                                         grid2=(int)*(model->penalties+model->numlayers*i+j+1);
    175 
    176                                         penpair_id=counter+1; //matlab indexing
    177                                         penpair_dof=1;
    178                                         penpair_node_ids[0]=grid1;
    179                                         penpair_node_ids[1]=grid2;
    180                                         penpair_penalty_offset=model->penalty_offset;
    181                                         penpair_numdofs=1;
    182 
    183                                         penpair= new Penpair(penpair_id,penpair_penalty_offset,penpair_penalty_lock,penpair_numdofs,penpair_node_ids,penpair_dof,
    184                                                                 penpair_element_ids,penpair_friction,penpair_fill,penpair_normal,penpair_length);
    185                                         loads->AddObject(penpair);
    186 
    187 
    188                                         counter++;
    189 
    190                                         penpair_id=counter+1; //matlab indexing
    191                                         penpair_dof=2;
    192                                         penpair_node_ids[0]=grid1;
    193                                         penpair_node_ids[1]=grid2;
    194                                         penpair_penalty_offset=model->penalty_offset;
    195                                         penpair_numdofs=1;
    196 
    197                                         penpair= new Penpair(penpair_id,penpair_penalty_offset,penpair_penalty_lock,penpair_numdofs,penpair_node_ids,penpair_dof,
    198                                                                 penpair_element_ids,penpair_friction,penpair_fill,penpair_normal,penpair_length);
    199                                         loads->AddObject(penpair);
    200 
    201 
    202                                         counter++;
    203 
    204                                 } //for ( i=0; i<numpenalties; i++)
    205                         }
    206                 }
    207         }
    208 
    209         /*Free data: */
    210         xfree((void**)&model->penalties);
    211        
     156
    212157        /*Create penpair loads also for rift grids, so that they don't penetrate one another, if needed: */
    213158        /*First fetch rifts: */
Note: See TracChangeset for help on using the changeset viewer.