Changeset 9370


Ignore:
Timestamp:
08/22/11 15:14:19 (14 years ago)
Author:
Mathieu Morlighem
Message:

extending new IoModel interface to other analyses in model processor

Location:
issm/trunk/src/c
Files:
31 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/modules/ModelProcessorx/BedSlope/CreateNodesBedSlope.cpp

    r9362 r9370  
    3636       
    3737        /*First fetch data: */
    38         iomodel->FetchData(&iomodel->nodeonbed,NULL,NULL,NodeOnBedEnum);
    39         iomodel->FetchData(&iomodel->nodeonsurface,NULL,NULL,NodeOnSurfaceEnum);
    40         iomodel->FetchData(&iomodel->nodeonicesheet,NULL,NULL,NodeOnIceSheetEnum);
    41         iomodel->FetchData(&iomodel->nodeoniceshelf,NULL,NULL,NodeOnIceShelfEnum);
    42         iomodel->FetchData(&iomodel->vertices_type,NULL,NULL,VerticesTypeEnum);
    43         iomodel->FetchData(&iomodel->nodeonwater,NULL,NULL,NodeOnWaterEnum);
     38        iomodel->FetchData(6,NodeOnBedEnum,NodeOnSurfaceEnum,NodeOnIceSheetEnum,NodeOnIceShelfEnum,VerticesTypeEnum,NodeOnWaterEnum);
    4439
    4540        for (i=0;i<numberofvertices;i++){
    46 
    4741                if(iomodel->my_vertices[i]){
    4842                       
     
    5448
    5549        /*Clean fetched data: */
    56         xfree((void**)&iomodel->nodeonbed);
    57         xfree((void**)&iomodel->nodeonsurface);
    58         xfree((void**)&iomodel->nodeonicesheet);
    59         xfree((void**)&iomodel->nodeonwater);
    60         xfree((void**)&iomodel->nodeoniceshelf);
    61         xfree((void**)&iomodel->vertices_type);
     50        iomodel->DeleteData(6,NodeOnBedEnum,NodeOnSurfaceEnum,NodeOnIceSheetEnum,NodeOnIceShelfEnum,VerticesTypeEnum,NodeOnWaterEnum);
    6251       
    6352        /*Assign output pointer: */
  • issm/trunk/src/c/modules/ModelProcessorx/BedSlope/UpdateElementsBedSlope.cpp

    r9362 r9370  
    2121        /*Fetch data needed: */
    2222        iomodel->constants->FindParam(&dim,DimEnum);
    23         iomodel->FetchData(&iomodel->elements,NULL,NULL,ElementsEnum);
    2423        iomodel->constants->FindParam(&numberofelements,NumberOfElementsEnum);
     24        iomodel->FetchData(1,ElementsEnum);
    2525
    2626        /*Update elements: */
     
    4444       
    4545        /*Free data: */
    46         xfree((void**)&iomodel->elements);
    47 
     46        iomodel->DeleteData(1,ElementsEnum);
    4847}
  • issm/trunk/src/c/modules/ModelProcessorx/Control/CreateParametersControl.cpp

    r9356 r9370  
    1515       
    1616        int         i;
    17         Parameters* parameters=NULL;
    18         bool        control_analysis=false;
     17        Parameters *parameters       = NULL;
     18        bool        control_analysis = false;
    1919        int         nsteps;
    2020        int         num_control_type;
    2121        int         num_cm_responses;
    22         int*        control_type=NULL;
     22        int        *control_type     = NULL;
     23        double     *cm_responses     = NULL;
     24        double     *cm_jump          = NULL;
     25        double     *optscal          = NULL;
     26        double     *maxiter          = NULL;
    2327
    2428        /*Get parameters: */
     
    2933
    3034        if(control_analysis){
    31 
    32                 /*What control type?*/
    33                 iomodel->FetchData(&control_type,&num_control_type,NULL,ControlTypeEnum);
    34                 parameters->AddObject(new IntVecParam(ControlTypeEnum,control_type,num_control_type));
    35                 xfree((void**)&control_type);
    3635
    3736                /*What solution type?*/
     
    4443
    4544                /*Now, recover fit, optscal and maxiter as vectors: */
    46                 iomodel->FetchData(&iomodel->cm_responses,&nsteps,&num_control_type,CmResponsesEnum);
    47                 iomodel->FetchData(&iomodel->cm_jump,&nsteps,&num_cm_responses,CmJumpEnum);
    48                 iomodel->FetchData(&iomodel->optscal,NULL,NULL,OptscalEnum);
    49                 iomodel->FetchData(&iomodel->maxiter,NULL,NULL,MaxiterEnum);
     45                iomodel->FetchData(&control_type,&num_control_type,NULL,ControlTypeEnum);
     46                iomodel->FetchData(&cm_responses,&nsteps,&num_control_type,CmResponsesEnum);
     47                iomodel->FetchData(&cm_jump,&nsteps,&num_cm_responses,CmJumpEnum);
     48                iomodel->FetchData(&optscal,NULL,NULL,OptscalEnum);
     49                iomodel->FetchData(&maxiter,NULL,NULL,MaxiterEnum);
    5050
    51                 parameters->AddObject(new DoubleMatParam(OptscalEnum,iomodel->optscal,nsteps,num_control_type));
    52                 parameters->AddObject(new DoubleMatParam(CmResponsesEnum,iomodel->cm_responses,nsteps,num_cm_responses));
    53                 parameters->AddObject(new DoubleVecParam(CmJumpEnum,iomodel->cm_jump,nsteps));
    54                 parameters->AddObject(new DoubleVecParam(MaxiterEnum,iomodel->maxiter,nsteps));
     51                parameters->AddObject(new IntVecParam(ControlTypeEnum,control_type,num_control_type));
     52                parameters->AddObject(new DoubleMatParam(OptscalEnum,optscal,nsteps,num_control_type));
     53                parameters->AddObject(new DoubleMatParam(CmResponsesEnum,cm_responses,nsteps,num_cm_responses));
     54                parameters->AddObject(new DoubleVecParam(CmJumpEnum,cm_jump,nsteps));
     55                parameters->AddObject(new DoubleVecParam(MaxiterEnum,maxiter,nsteps));
    5556
    56                 xfree((void**)&iomodel->cm_responses);
    57                 xfree((void**)&iomodel->cm_jump);
    58                 xfree((void**)&iomodel->optscal);
    59                 xfree((void**)&iomodel->maxiter);
     57                xfree((void**)&control_type);
     58                xfree((void**)&cm_responses);
     59                xfree((void**)&cm_jump);
     60                xfree((void**)&optscal);
     61                xfree((void**)&maxiter);
    6062        }
    6163
  • issm/trunk/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp

    r9362 r9370  
    3535
    3636        /*Fetch data needed: */
    37         iomodel->FetchData(&iomodel->elements,NULL,NULL,ElementsEnum);
     37        iomodel->FetchData(1,ElementsEnum);
    3838        iomodel->FetchDataToInput(elements,VxObsEnum);
    3939        iomodel->FetchDataToInput(elements,VyObsEnum);
    4040        iomodel->FetchDataToInput(elements,ThicknessObsEnum);
    4141
    42         iomodel->FetchData(&iomodel->control_type,NULL,NULL,ControlTypeEnum);
    43         iomodel->FetchData(&iomodel->weights,NULL,NULL,WeightsEnum);
    44         iomodel->FetchData(&iomodel->cm_min,NULL,NULL,CmMinEnum);
    45         iomodel->FetchData(&iomodel->cm_max,NULL,NULL,CmMaxEnum);
     42        iomodel->FetchData(4,ControlTypeEnum,WeightsEnum,CmMinEnum,CmMaxEnum);
    4643        for(i=0;i<num_control_type;i++){
    47                 switch((int)iomodel->control_type[i]){
    48                         case DhdtEnum:
    49                                 iomodel->FetchData(&iomodel->dhdt,NULL,NULL,DhdtEnum);
    50                                 break;
    51                         case VxEnum:
    52                                 iomodel->FetchData(&iomodel->vx,NULL,NULL,VxEnum);
    53                                 break;
    54                         case VyEnum:
    55                                 iomodel->FetchData(&iomodel->vy,NULL,NULL,VyEnum);
    56                                 break;
    57                         case DragCoefficientEnum:
    58                                 iomodel->FetchData(&iomodel->drag_coefficient,NULL,NULL,DragCoefficientEnum);
    59                                 break;
    60                         case RheologyBbarEnum:
    61                                 iomodel->FetchData(&iomodel->rheology_B,NULL,NULL,RheologyBEnum);
    62                                 break;
    63                         default:
    64                                 _error_("Control %s not implemented yet",EnumToStringx((int)iomodel->control_type[i]));
     44                switch((int)iomodel->f(ControlTypeEnum)[i]){
     45                        case DhdtEnum: iomodel->FetchData(1,DhdtEnum); break;
     46                        case VxEnum:   iomodel->FetchData(1,VxEnum); break;
     47                        case VyEnum:   iomodel->FetchData(1,VyEnum); break;
     48                        case DragCoefficientEnum: iomodel->FetchData(1,DragCoefficientEnum); break;
     49                        case RheologyBbarEnum:    iomodel->FetchData(1,RheologyBEnum); break;
     50                        default: _error_("Control %s not implemented yet",EnumToStringx((int)iomodel->f(ControlTypeEnum)[i]));
    6551                }
    6652        }
     
    8066       
    8167        /*Free data: */
    82         xfree((void**)&iomodel->elements);
    83         xfree((void**)&iomodel->weights);
    84         xfree((void**)&iomodel->cm_min);
    85         xfree((void**)&iomodel->cm_max);
    86         xfree((void**)&iomodel->control_type);
    87         xfree((void**)&iomodel->dhdt);
    88         xfree((void**)&iomodel->vx);
    89         xfree((void**)&iomodel->vy);
    90         xfree((void**)&iomodel->drag_coefficient);
    91         xfree((void**)&iomodel->rheology_B);
     68        iomodel->DeleteData(1+4+5,ElementsEnum,ControlTypeEnum,WeightsEnum,CmMinEnum,CmMaxEnum,DhdtEnum,VxEnum,VyEnum,DragCoefficientEnum,RheologyBEnum);
    9269}
  • issm/trunk/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp

    r9362 r9370  
    1717        /*Intermediary*/
    1818        int i,j,k,n;
    19         int    dim;
    20         int    numberofelements;
    21         int    numberofvertices;
     19        int dim;
     20        int numberofelements;
     21        int numberofvertices;
    2222
    2323        /*DataSets: */
     
    4343       
    4444        /*Fetch data needed: */
    45         iomodel->FetchData(9,ElementsEnum,ElementconnectivityEnum,UpperelementsEnum,LowerelementsEnum,RheologyBEnum,RheologyNEnum,ControlTypeEnum,CmMinEnum,CmMaxEnum);
     45        iomodel->FetchData(9,ElementsEnum,ElementconnectivityEnum,UpperelementsEnum,LowerelementsEnum,
     46                                RheologyBEnum,RheologyNEnum,ControlTypeEnum,CmMinEnum,CmMaxEnum);
    4647       
    4748        /*Create elements and materials: */
     
    6061       
    6162        /*Free data: */
    62         iomodel->DeleteData(9,ElementsEnum,ElementconnectivityEnum,UpperelementsEnum,LowerelementsEnum,RheologyBEnum,RheologyNEnum,ControlTypeEnum,CmMinEnum,CmMaxEnum);
     63        iomodel->DeleteData(9,ElementsEnum,ElementconnectivityEnum,UpperelementsEnum,LowerelementsEnum,
     64                                RheologyBEnum,RheologyNEnum,ControlTypeEnum,CmMinEnum,CmMaxEnum);
    6365
    6466        /*Add new constrant material property tgo materials, at the end: */
  • issm/trunk/src/c/modules/ModelProcessorx/CreateSingleNodeToElementConnectivity.cpp

    r9362 r9370  
    2727        /*output*/
    2828        int* connectivity=NULL;
     29
     30        /*Return if connectivity already present*/
     31        if(iomodel->singlenodetoelementconnectivity) return;
    2932
    3033        /*Fetch parameters: */
  • issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp

    r9362 r9370  
    1414
    1515        /*Intermediary*/
    16         int i,j;
    17         int count;
    18         double yts;
    19         double g;
    20         double rho_ice;
    21         double stokesreconditioning;
    22         bool   isstokes,ismacayealpattyn;
     16        int     i,j;
     17        int     count;
     18        double  yts;
     19        double  g;
     20        double  rho_ice;
     21        double  stokesreconditioning;
     22        bool    isstokes,ismacayealpattyn;
     23        double *spcvx           = NULL;
     24        double *spcvy           = NULL;
     25        double *spcvz           = NULL;
     26        double *nodeonhutter    = NULL;
     27        double *nodeonmacayeal  = NULL;
     28        double *nodeonpattyn    = NULL;
     29        double *nodeonstokes    = NULL;
     30        double *vertices_type   = NULL;
     31        double *surface         = NULL;
     32        double *z               = NULL;
    2333       
    2434        /*Output*/
     
    4656       
    4757        /*Now, is the flag macayaealpattyn on? otherwise, do nothing: */
    48         if (!ismacayealpattyn & !isstokes)goto cleanup_and_return;
     58        if (!ismacayealpattyn & !isstokes){
     59                *pconstraints=constraints;
     60                return;
     61        }
    4962       
    5063        /*Constraints: fetch data: */
    51         iomodel->FetchData(&iomodel->spcvx,NULL,NULL,SpcvxEnum);
    52         iomodel->FetchData(&iomodel->spcvy,NULL,NULL,SpcvyEnum);
    53         iomodel->FetchData(&iomodel->spcvz,NULL,NULL,SpcvzEnum);
    54         iomodel->FetchData(&iomodel->nodeonhutter,NULL,NULL,NodeOnHutterEnum);
    55         iomodel->FetchData(&iomodel->nodeonmacayeal,NULL,NULL,NodeOnMacayealEnum);
    56         if(dim==3)iomodel->FetchData(&iomodel->nodeonpattyn,NULL,NULL,NodeOnPattynEnum);
    57         if(dim==3)iomodel->FetchData(&iomodel->nodeonstokes,NULL,NULL,NodeOnStokesEnum);
    58         iomodel->FetchData(&iomodel->vertices_type,NULL,NULL,VerticesTypeEnum);
    59         iomodel->FetchData(&iomodel->surface,NULL,NULL,SurfaceEnum);
    60         iomodel->FetchData(&iomodel->z,NULL,NULL,ZEnum);
     64        iomodel->FetchData(&spcvx,NULL,NULL,SpcvxEnum);
     65        iomodel->FetchData(&spcvy,NULL,NULL,SpcvyEnum);
     66        iomodel->FetchData(&spcvz,NULL,NULL,SpcvzEnum);
     67        iomodel->FetchData(&nodeonhutter,NULL,NULL,NodeOnHutterEnum);
     68        iomodel->FetchData(&nodeonmacayeal,NULL,NULL,NodeOnMacayealEnum);
     69        if(dim==3)iomodel->FetchData(&nodeonpattyn,NULL,NULL,NodeOnPattynEnum);
     70        if(dim==3)iomodel->FetchData(&nodeonstokes,NULL,NULL,NodeOnStokesEnum);
     71        iomodel->FetchData(&vertices_type,NULL,NULL,VerticesTypeEnum);
     72        iomodel->FetchData(&surface,NULL,NULL,SurfaceEnum);
     73        iomodel->FetchData(&z,NULL,NULL,ZEnum);
    6174
    6275        /*Initialize counter: */
     
    6881
    6982                        /*Start with adding spcs of coupling: zero at the border macayeal/pattyn for the appropriate dofs*/
    70                         if ((int)iomodel->vertices_type[i]==MacAyealPattynApproximationEnum){
     83                        if ((int)vertices_type[i]==MacAyealPattynApproximationEnum){
    7184                                /*If grionmacayeal, spc pattyn dofs: 3 & 4*/
    72                                         if ((int)iomodel->nodeonpattyn[i]){
     85                                        if ((int)nodeonpattyn[i]){
    7386                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    7487                                                count++;
    7588                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    7689                                                count++;
    77                                                 if (!isnan(iomodel->spcvx[i])){
    78                                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,iomodel->spcvx[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    79                                                         count++;
    80                                                 }
    81                                                 if (!isnan(iomodel->spcvy[i])){
    82                                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,iomodel->spcvy[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    83                                                         count++;
    84                                                 }
    85 
    86                                         }
    87                                         else if ((int)iomodel->nodeonmacayeal[i]){
     90                                                if (!isnan(spcvx[i])){
     91                                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvx[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     92                                                        count++;
     93                                                }
     94                                                if (!isnan(spcvy[i])){
     95                                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,spcvy[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     96                                                        count++;
     97                                                }
     98
     99                                        }
     100                                        else if ((int)nodeonmacayeal[i]){
    88101                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    89102                                                count++;
    90103                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    91104                                                count++;
    92                                                 if (!isnan(iomodel->spcvx[i])){
    93                                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,iomodel->spcvx[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    94                                                         count++;
    95                                                 }
    96                                                 if (!isnan(iomodel->spcvy[i])){
    97                                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,iomodel->spcvy[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     105                                                if (!isnan(spcvx[i])){
     106                                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvx[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     107                                                        count++;
     108                                                }
     109                                                if (!isnan(spcvy[i])){
     110                                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvy[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    98111                                                        count++;
    99112                                                }
     
    103116                        }
    104117                        /*Also add spcs of coupling: zero at the border pattyn/stokes for the appropriate dofs*/
    105                         else if ((int)iomodel->vertices_type[i]==PattynStokesApproximationEnum){
     118                        else if ((int)vertices_type[i]==PattynStokesApproximationEnum){
    106119                                /*If grion,pattyn spc stokes dofs: 3 4 & 5*/
    107                                         if ((int)iomodel->nodeonpattyn[i]){
     120                                        if ((int)nodeonpattyn[i]){
    108121                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    109122                                                count++;
     
    112125                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    113126                                                count++;
    114                                                 if (!isnan(iomodel->spcvx[i])){
    115                                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,iomodel->spcvx[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    116                                                         count++;
    117                                                 }
    118                                                 if (!isnan(iomodel->spcvy[i])){
    119                                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,iomodel->spcvy[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    120                                                         count++;
    121                                                 }
    122 
    123                                         }
    124                                         else if ((int)iomodel->nodeonstokes[i]){ //spc pattyn nodes: 1 & 2
     127                                                if (!isnan(spcvx[i])){
     128                                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvx[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     129                                                        count++;
     130                                                }
     131                                                if (!isnan(spcvy[i])){
     132                                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvy[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     133                                                        count++;
     134                                                }
     135
     136                                        }
     137                                        else if ((int)nodeonstokes[i]){ //spc pattyn nodes: 1 & 2
    125138                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    126139                                                count++;
    127140                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    128141                                                count++;
    129                                                 if (!isnan(iomodel->spcvx[i])){
    130                                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,iomodel->spcvx[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    131                                                         count++;
    132                                                 }
    133                                                 if (!isnan(iomodel->spcvy[i])){
    134                                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,iomodel->spcvy[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    135                                                         count++;
    136                                                 }
    137                                                 if (!isnan(iomodel->spcvz[i])){
    138                                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,iomodel->spcvz[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     142                                                if (!isnan(spcvx[i])){
     143                                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvx[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     144                                                        count++;
     145                                                }
     146                                                if (!isnan(spcvy[i])){
     147                                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,spcvy[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     148                                                        count++;
     149                                                }
     150                                                if (!isnan(spcvz[i])){
     151                                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,spcvz[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    139152                                                        count++;
    140153                                                }
     
    143156                        }
    144157                        /*Also add spcs of coupling: zero at the border pattyn/stokes for the appropriate dofs*/
    145                         else if ((int)iomodel->vertices_type[i]==MacAyealStokesApproximationEnum){
     158                        else if ((int)vertices_type[i]==MacAyealStokesApproximationEnum){
    146159                                /*If grion,pattyn spc stokes dofs: 3 4 & 5*/
    147                                         if ((int)iomodel->nodeonmacayeal[i]){
     160                                        if ((int)nodeonmacayeal[i]){
    148161                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    149162                                                count++;
     
    152165                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    153166                                                count++;
    154                                                 if (!isnan(iomodel->spcvx[i])){
    155                                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,iomodel->spcvx[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    156                                                         count++;
    157                                                 }
    158                                                 if (!isnan(iomodel->spcvy[i])){
    159                                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,iomodel->spcvy[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    160                                                         count++;
    161                                                 }
    162 
    163                                         }
    164                                         else if ((int)iomodel->nodeonstokes[i]){ //spc macayeal nodes: 1 & 2
     167                                                if (!isnan(spcvx[i])){
     168                                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvx[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     169                                                        count++;
     170                                                }
     171                                                if (!isnan(spcvy[i])){
     172                                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvy[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     173                                                        count++;
     174                                                }
     175
     176                                        }
     177                                        else if ((int)nodeonstokes[i]){ //spc macayeal nodes: 1 & 2
    165178                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    166179                                                count++;
    167180                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    168181                                                count++;
    169                                                 if (!isnan(iomodel->spcvx[i])){
    170                                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,iomodel->spcvx[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    171                                                         count++;
    172                                                 }
    173                                                 if (!isnan(iomodel->spcvy[i])){
    174                                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,iomodel->spcvy[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    175                                                         count++;
    176                                                 }
    177                                                 if (!isnan(iomodel->spcvz[i])){
    178                                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,iomodel->spcvz[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     182                                                if (!isnan(spcvx[i])){
     183                                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvx[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     184                                                        count++;
     185                                                }
     186                                                if (!isnan(spcvy[i])){
     187                                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,spcvy[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     188                                                        count++;
     189                                                }
     190                                                if (!isnan(spcvz[i])){
     191                                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,spcvz[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    179192                                                        count++;
    180193                                                }
     
    184197                        /*Now add the regular spcs*/
    185198                        else{
    186                                 if (!isnan(iomodel->spcvx[i])){
    187                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,iomodel->spcvx[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    188                                         count++;
    189                                 }
    190                                 else if (iomodel->nodeonhutter[i]){
     199                                if (!isnan(spcvx[i])){
     200                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvx[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     201                                        count++;
     202                                }
     203                                else if (nodeonhutter[i]){
    191204                                        constraints->AddObject(new SpcDynamic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,DiagnosticHorizAnalysisEnum));
    192205                                        count++;
    193206                                }
    194207                               
    195                                 if (!isnan(iomodel->spcvy[i])){
    196                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,iomodel->spcvy[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vy.
    197                                         count++;
    198                                 }
    199                                 else if (iomodel->nodeonhutter[i]){
     208                                if (!isnan(spcvy[i])){
     209                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvy[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vy.
     210                                        count++;
     211                                }
     212                                else if (nodeonhutter[i]){
    200213                                        constraints->AddObject(new SpcDynamic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,DiagnosticHorizAnalysisEnum));
    201214                                        count++;
    202215                                }
    203216
    204                                 if (!isnan(iomodel->spcvz[i]) && ((int)iomodel->vertices_type[i]==StokesApproximationEnum ||  ((int)iomodel->vertices_type[i]==NoneApproximationEnum))){
    205                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,iomodel->spcvz[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy
    206                                         count++;
    207                                 }
    208                                 if ((int)iomodel->vertices_type[i]==NoneApproximationEnum){
    209                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,g*rho_ice*(iomodel->surface[i]-iomodel->z[i])/stokesreconditioning,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy
     217                                if (!isnan(spcvz[i]) && ((int)vertices_type[i]==StokesApproximationEnum ||  ((int)vertices_type[i]==NoneApproximationEnum))){
     218                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvz[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy
     219                                        count++;
     220                                }
     221                                if ((int)vertices_type[i]==NoneApproximationEnum){
     222                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,g*rho_ice*(surface[i]-z[i])/stokesreconditioning,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy
    210223                                        count++;
    211224                                }
     
    215228         
    216229        /*Free data: */
    217         xfree((void**)&iomodel->spcvx);
    218         xfree((void**)&iomodel->spcvy);
    219         xfree((void**)&iomodel->spcvz);
    220         xfree((void**)&iomodel->nodeonhutter);
    221         xfree((void**)&iomodel->nodeonmacayeal);
    222         xfree((void**)&iomodel->nodeonpattyn);
    223         xfree((void**)&iomodel->nodeonstokes);
    224         xfree((void**)&iomodel->vertices_type);
    225         xfree((void**)&iomodel->surface);
    226         xfree((void**)&iomodel->z);
    227 
    228         cleanup_and_return:
     230        xfree((void**)&spcvx);
     231        xfree((void**)&spcvy);
     232        xfree((void**)&spcvz);
     233        xfree((void**)&nodeonhutter);
     234        xfree((void**)&nodeonmacayeal);
     235        xfree((void**)&nodeonpattyn);
     236        xfree((void**)&nodeonstokes);
     237        xfree((void**)&vertices_type);
     238        xfree((void**)&surface);
     239        xfree((void**)&z);
    229240
    230241        /*Assign output pointer: */
  • issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp

    r9362 r9370  
    2929        bool ismacayealpattyn,isstokes;
    3030        int  numpenalties,numberofpressureloads,numrifts;
     31        double *pressureload   = NULL;
     32        double *elements_type  = NULL;
     33        double *thickness      = NULL;
     34        double *bed            = NULL;
     35        double *nodeoniceshelf = NULL;
     36        double *riftinfo       = NULL;
     37        double *surface        = NULL;
     38        double *nodeonbed      = NULL;
     39        double *nodeonstokes   = NULL;
     40        double *nodeonicesheet = NULL;
     41        double *elements       = NULL;
     42        double *spcvx          = NULL;
     43        double *spcvy          = NULL;
     44        double *spcvz          = NULL;
     45        double *vertices_type  = NULL;
     46        double *penalties      = NULL;
     47
    3148
    3249        /*Fetch parameters: */
     
    4360
    4461        /*Now, is the flag macayaealpattyn on? otherwise, do nothing: */
    45         if (!ismacayealpattyn & !isstokes)goto cleanup_and_return;
     62        if (!ismacayealpattyn & !isstokes){
     63                *ploads=loads;
     64                return;
     65        }
    4666       
    4767        /*Create pressure loads as boundary conditions. Pay attention to the partitioning if we are running in parallel (the nodes
    4868         * referenced by a certain load must belong to the cluster node): */
    49         iomodel->FetchData(&iomodel->pressureload,&numberofpressureloads,NULL,PressureloadEnum);
    50         iomodel->FetchData(&iomodel->elements_type,NULL,NULL,ElementsTypeEnum);
    51         iomodel->FetchData(&iomodel->thickness,NULL,NULL,ThicknessEnum);
    52         iomodel->FetchData(&iomodel->bed,NULL,NULL,BedEnum);
     69        iomodel->FetchData(&pressureload,&numberofpressureloads,NULL,PressureloadEnum);
     70        iomodel->FetchData(&elements_type,NULL,NULL,ElementsTypeEnum);
     71        iomodel->FetchData(&thickness,NULL,NULL,ThicknessEnum);
     72        iomodel->FetchData(&bed,NULL,NULL,BedEnum);
    5373
    5474        /*Initialize counter: */
     
    6181                if (dim==2) segment_width=4;
    6282                else segment_width=6;
    63                 element=(int)(*(iomodel->pressureload+segment_width*i+segment_width-2)-1); //element is in the penultimate column (node1 node2 ... elem fill)
     83                element=(int)(*(pressureload+segment_width*i+segment_width-2)-1); //element is in the penultimate column (node1 node2 ... elem fill)
    6484
    6585                /*Now, if this element is not in the partition, pass: */
     
    6787               
    6888                /*Do not create ice front if Hutter or Stokes elements*/
    69                 if ((int)*(iomodel->elements_type+element)==HutterApproximationEnum) continue;
     89                if ((int)*(elements_type+element)==HutterApproximationEnum) continue;
    7090
    7191                /*Create and  add load: */
    72                 if ((int)*(iomodel->elements_type+element)==(MacAyealApproximationEnum) && dim==2){
     92                if ((int)*(elements_type+element)==(MacAyealApproximationEnum) && dim==2){
    7393                        loads->AddObject(new Icefront(iomodel->loadcounter+count+1,i,iomodel,MacAyeal2dIceFrontEnum,DiagnosticHorizAnalysisEnum));
    7494                        count++;
    7595                }
    76                 else if ((int)*(iomodel->elements_type+element)==(MacAyealApproximationEnum) && dim==3){
     96                else if ((int)*(elements_type+element)==(MacAyealApproximationEnum) && dim==3){
    7797                        loads->AddObject(new Icefront(iomodel->loadcounter+count+1,i,iomodel,MacAyeal3dIceFrontEnum,DiagnosticHorizAnalysisEnum));
    7898                        count++;
    7999                }
    80                 else if ((int)*(iomodel->elements_type+element)==(PattynApproximationEnum)){
     100                else if ((int)*(elements_type+element)==(PattynApproximationEnum)){
    81101                        loads->AddObject(new Icefront(iomodel->loadcounter+count+1,i,iomodel,PattynIceFrontEnum,DiagnosticHorizAnalysisEnum));
    82102                        count++;
    83103                }
    84                 else if ((int)*(iomodel->elements_type+element)==(StokesApproximationEnum)){
     104                else if ((int)*(elements_type+element)==(StokesApproximationEnum)){
    85105                        loads->AddObject(new Icefront(iomodel->loadcounter+count+1,i,iomodel,StokesIceFrontEnum,DiagnosticHorizAnalysisEnum));
    86106                        count++;
    87107                }
    88                 else if ((int)*(iomodel->elements_type+element)==(MacAyealPattynApproximationEnum)){
     108                else if ((int)*(elements_type+element)==(MacAyealPattynApproximationEnum)){
    89109                        loads->AddObject(new Icefront(iomodel->loadcounter+count+1,i,iomodel,MacAyeal3dIceFrontEnum,DiagnosticHorizAnalysisEnum));
    90110                        count++;
     
    92112                        count++;
    93113                }
    94                 else if ((int)*(iomodel->elements_type+element)==(PattynStokesApproximationEnum)){
     114                else if ((int)*(elements_type+element)==(PattynStokesApproximationEnum)){
    95115                        loads->AddObject(new Icefront(iomodel->loadcounter+count+1,i,iomodel,PattynIceFrontEnum,DiagnosticHorizAnalysisEnum));
    96116                        count++;
     
    98118                        count++;
    99119                }
    100                 else if ((int)*(iomodel->elements_type+element)==(MacAyealStokesApproximationEnum)){
     120                else if ((int)*(elements_type+element)==(MacAyealStokesApproximationEnum)){
    101121                        loads->AddObject(new Icefront(iomodel->loadcounter+count+1,i,iomodel,MacAyeal3dIceFrontEnum,DiagnosticHorizAnalysisEnum));
    102122                        count++;
     
    107127
    108128        /*Free data: */
    109         xfree((void**)&iomodel->pressureload);
    110         xfree((void**)&iomodel->elements_type);
    111         xfree((void**)&iomodel->thickness);
    112         xfree((void**)&iomodel->bed);
     129        xfree((void**)&pressureload);
     130        xfree((void**)&elements_type);
     131        xfree((void**)&thickness);
     132        xfree((void**)&bed);
    113133
    114134        /*create penalties for nodes on the base of icesheet. We must have wb=ub*db/dx+vb*db/dy */
    115         iomodel->FetchData(&iomodel->nodeonbed,NULL,NULL,NodeOnBedEnum);
    116         iomodel->FetchData(&iomodel->nodeonicesheet,NULL,NULL,NodeOnIceSheetEnum);
    117         iomodel->FetchData(&iomodel->nodeonstokes,NULL,NULL,NodeOnStokesEnum);
    118         iomodel->FetchData(&iomodel->elements,NULL,NULL,ElementsEnum);
    119         iomodel->FetchData(&iomodel->spcvx,NULL,NULL,SpcvxEnum);
    120         iomodel->FetchData(&iomodel->spcvy,NULL,NULL,SpcvyEnum);
    121         iomodel->FetchData(&iomodel->spcvz,NULL,NULL,SpcvzEnum);
    122         iomodel->FetchData(&iomodel->vertices_type,NULL,NULL,VerticesTypeEnum);
     135        iomodel->FetchData(&nodeonbed,NULL,NULL,NodeOnBedEnum);
     136        iomodel->FetchData(&nodeonicesheet,NULL,NULL,NodeOnIceSheetEnum);
     137        iomodel->FetchData(&nodeonstokes,NULL,NULL,NodeOnStokesEnum);
     138        iomodel->FetchData(&elements,NULL,NULL,ElementsEnum);
     139        iomodel->FetchData(&spcvx,NULL,NULL,SpcvxEnum);
     140        iomodel->FetchData(&spcvy,NULL,NULL,SpcvyEnum);
     141        iomodel->FetchData(&spcvz,NULL,NULL,SpcvzEnum);
     142        iomodel->FetchData(&vertices_type,NULL,NULL,VerticesTypeEnum);
    123143        CreateSingleNodeToElementConnectivity(iomodel);
    124144       
     
    127147                if(iomodel->my_vertices[i]==1 && iomodel->singlenodetoelementconnectivity[i]!=0){
    128148
    129                         //if ((iomodel->nodeonbed[i]) && (iomodel->nodeonstokes[i])){
    130                         if ((iomodel->nodeonbed[i]) && (iomodel->nodeonicesheet[i]) && (iomodel->nodeonstokes[i])){
     149                        //if ((nodeonbed[i]) && (nodeonstokes[i])){
     150                        if ((nodeonbed[i]) && (nodeonicesheet[i]) && (nodeonstokes[i])){
    131151                               
    132152                                loads->AddObject(new Pengrid(iomodel->loadcounter+count+1,i,iomodel,DiagnosticHorizAnalysisEnum));
     
    136156        }
    137157
    138         xfree((void**)&iomodel->nodeonbed);
    139         xfree((void**)&iomodel->nodeonstokes);
    140         xfree((void**)&iomodel->nodeonicesheet);
    141         xfree((void**)&iomodel->elements);
    142         xfree((void**)&iomodel->spcvx);
    143         xfree((void**)&iomodel->spcvy);
    144         xfree((void**)&iomodel->spcvz);
    145         xfree((void**)&iomodel->vertices_type);
    146         xfree((void**)&iomodel->singlenodetoelementconnectivity);
     158        xfree((void**)&nodeonbed);
     159        xfree((void**)&nodeonstokes);
     160        xfree((void**)&nodeonicesheet);
     161        xfree((void**)&elements);
     162        xfree((void**)&spcvx);
     163        xfree((void**)&spcvy);
     164        xfree((void**)&spcvz);
     165        xfree((void**)&vertices_type);
    147166
    148167        /*Create Penpair for penalties: */
    149         iomodel->FetchData(&iomodel->penalties,&numpenalties,NULL,PenaltiesEnum);
     168        iomodel->FetchData(&penalties,&numpenalties,NULL,PenaltiesEnum);
    150169       
    151170        for(i=0;i<numpenalties;i++){
    152171
    153                 if(iomodel->my_vertices[(int)iomodel->penalties[2*i+0]-1]){
     172                if(iomodel->my_vertices[(int)penalties[2*i+0]-1]){
    154173
    155174                        /*In debugging mode, check that the second node is in the same cpu*/
    156                         _assert_(iomodel->my_vertices[(int)iomodel->penalties[2*i+1]-1]);
     175                        _assert_(iomodel->my_vertices[(int)penalties[2*i+1]-1]);
    157176
    158177                        /*Get node ids*/
    159                         penpair_ids[0]=iomodel->nodecounter+(int)iomodel->penalties[2*i+0];
    160                         penpair_ids[1]=iomodel->nodecounter+(int)iomodel->penalties[2*i+1];
     178                        penpair_ids[0]=iomodel->nodecounter+(int)penalties[2*i+0];
     179                        penpair_ids[1]=iomodel->nodecounter+(int)penalties[2*i+1];
    161180
    162181                        /*Create Load*/
     
    167186
    168187        /*free ressources: */
    169         xfree((void**)&iomodel->penalties);
     188        xfree((void**)&penalties);
    170189
    171190        /*Create Riffront loads for rifts: */
    172         iomodel->FetchData(&iomodel->riftinfo,&numrifts,NULL,RiftinfoEnum);
    173         iomodel->FetchData(&iomodel->thickness,NULL,NULL,ThicknessEnum);
    174         iomodel->FetchData(&iomodel->bed,NULL,NULL,BedEnum);
    175         iomodel->FetchData(&iomodel->surface,NULL,NULL,SurfaceEnum);
    176         iomodel->FetchData(&iomodel->nodeoniceshelf,NULL,NULL,NodeOnIceShelfEnum);
    177 
    178        
     191        iomodel->FetchData(&riftinfo,&numrifts,NULL,RiftinfoEnum);
     192        iomodel->FetchData(&thickness,NULL,NULL,ThicknessEnum);
     193        iomodel->FetchData(&bed,NULL,NULL,BedEnum);
     194        iomodel->FetchData(&surface,NULL,NULL,SurfaceEnum);
     195        iomodel->FetchData(&nodeoniceshelf,NULL,NULL,NodeOnIceShelfEnum);
     196
    179197        for(i=0;i<numrifts;i++){
    180 
    181                 if(iomodel->my_elements[(int)*(iomodel->riftinfo+RIFTINFOSIZE*i+2)-1]){
     198                if(iomodel->my_elements[(int)*(riftinfo+RIFTINFOSIZE*i+2)-1]){
    182199                        loads->AddObject(new Riftfront(iomodel->loadcounter+count+1,i,iomodel,DiagnosticHorizAnalysisEnum));
    183200                        count++;
     
    186203                               
    187204        /*free ressources: */
    188         xfree((void**)&iomodel->riftinfo);
    189         xfree((void**)&iomodel->thickness);
    190         xfree((void**)&iomodel->bed);
    191         xfree((void**)&iomodel->surface);
    192         xfree((void**)&iomodel->nodeoniceshelf);
    193 
    194         cleanup_and_return:
     205        xfree((void**)&riftinfo);
     206        xfree((void**)&thickness);
     207        xfree((void**)&bed);
     208        xfree((void**)&surface);
     209        xfree((void**)&nodeoniceshelf);
    195210
    196211        /*Assign output pointer: */
  • issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateNodesDiagnosticHoriz.cpp

    r9362 r9370  
    3636       
    3737        /*Now, is the flag macayaealpattyn on? otherwise, do nothing: */
    38         if (!ismacayealpattyn & !isstokes)goto cleanup_and_return;
     38        if(!ismacayealpattyn & !isstokes){
     39                *pnodes=nodes;
     40                return;
     41        }
    3942
    4043        /*Continuous Galerkin partition of nodes: */
     
    4245
    4346        /*Create nodes: */
    44         iomodel->FetchData(&iomodel->nodeonbed,NULL,NULL,NodeOnBedEnum);
    45         iomodel->FetchData(&iomodel->nodeonsurface,NULL,NULL,NodeOnSurfaceEnum);
    46         iomodel->FetchData(&iomodel->nodeonhutter,NULL,NULL,NodeOnHutterEnum);
    47         iomodel->FetchData(&iomodel->nodeonmacayeal,NULL,NULL,NodeOnMacayealEnum);
    48         iomodel->FetchData(&iomodel->nodeonstokes,NULL,NULL,NodeOnStokesEnum);
    49         iomodel->FetchData(&iomodel->nodeonicesheet,NULL,NULL,NodeOnIceSheetEnum);
    50         iomodel->FetchData(&iomodel->nodeoniceshelf,NULL,NULL,NodeOnIceShelfEnum);
    51         iomodel->FetchData(&iomodel->nodeonwater,NULL,NULL,NodeOnWaterEnum);
    52         iomodel->FetchData(&iomodel->vertices_type,NULL,NULL,VerticesTypeEnum);
    53         iomodel->FetchData(&iomodel->diagnostic_ref,NULL,NULL,DiagnosticRefEnum);
     47        iomodel->FetchData(10,NodeOnBedEnum,NodeOnSurfaceEnum,NodeOnHutterEnum,NodeOnMacayealEnum,NodeOnStokesEnum,
     48                                NodeOnIceSheetEnum,NodeOnIceShelfEnum,NodeOnWaterEnum,VerticesTypeEnum,DiagnosticRefEnum);
    5449       
    5550        for (i=0;i<numberofvertices;i++){
     
    6358
    6459        /*Clean fetched data: */
    65         xfree((void**)&iomodel->nodeonbed);
    66         xfree((void**)&iomodel->nodeonsurface);
    67         xfree((void**)&iomodel->nodeonhutter);
    68         xfree((void**)&iomodel->nodeonmacayeal);
    69         xfree((void**)&iomodel->nodeonstokes);
    70         xfree((void**)&iomodel->nodeonicesheet);
    71         xfree((void**)&iomodel->nodeoniceshelf);
    72         xfree((void**)&iomodel->nodeonwater);
    73         xfree((void**)&iomodel->vertices_type);
    74         xfree((void**)&iomodel->diagnostic_ref);       
    75 
    76         cleanup_and_return:
     60        iomodel->DeleteData(10,NodeOnBedEnum,NodeOnSurfaceEnum,NodeOnHutterEnum,NodeOnMacayealEnum,NodeOnStokesEnum,
     61                                NodeOnIceSheetEnum,NodeOnIceShelfEnum,NodeOnWaterEnum,VerticesTypeEnum,DiagnosticRefEnum);
    7762
    7863        /*Assign output pointer: */
    7964        *pnodes=nodes;
    80 
    8165}
  • issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp

    r9362 r9370  
    2222        bool   control_analysis;
    2323        bool   qmu_analysis;
    24                
    25         /*Fetch data needed: */
    26         iomodel->FetchData(&iomodel->elements,NULL,NULL,ElementsEnum);
    27         iomodel->FetchData(&iomodel->elements_type,NULL,NULL,ElementsTypeEnum);
    2824
     25        /*Fetch constants needed: */
    2926        iomodel->constants->FindParam(&isstokes,IsstokesEnum);
    3027        iomodel->constants->FindParam(&ismacayealpattyn,IsmacayealpattynEnum);
     
    3431        iomodel->constants->FindParam(&qmu_analysis,QmuAnalysisEnum);
    3532
     33        /*Now, is the flag macayaealpattyn on? otherwise, do nothing: */
     34        if(!ismacayealpattyn & !isstokes) return;
    3635
    37         /*Now, is the flag macayaealpattyn on? otherwise, do nothing: */
    38         if (!ismacayealpattyn & !isstokes) return;
     36        /*Fetch data needed: */
     37        iomodel->FetchData(2,ElementsEnum,ElementsTypeEnum);
    3938
    4039        /*Update elements: */
     
    8281
    8382        /*Post-process: */
    84 
    8583        elements->InputDuplicate(VxEnum,VxPicardEnum);
    8684        elements->InputDuplicate(VxEnum,VxObsEnum);
     
    9896       
    9997        /*Free data: */
    100         xfree((void**)&iomodel->elements);
    101         xfree((void**)&iomodel->elements_type);
     98        iomodel->DeleteData(2,ElementsEnum,ElementsTypeEnum);
    10299}
  • issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHutter/CreateConstraintsDiagnosticHutter.cpp

    r9362 r9370  
    3636
    3737        /*Now, is the flag ishutter on? otherwise, do nothing: */
    38         if (!ishutter) goto cleanup_and_return;
     38        if (!ishutter){
     39                *pconstraints=constraints;
     40                return;
     41        }
    3942
    4043        /*Fetch data: */
    41         iomodel->FetchData(&iomodel->spcvx,NULL,NULL,SpcvxEnum);
    42         iomodel->FetchData(&iomodel->spcvy,NULL,NULL,SpcvyEnum);
    43         iomodel->FetchData(&iomodel->nodeonhutter,NULL,NULL,NodeOnHutterEnum);
     44        iomodel->FetchData(3,SpcvxEnum,SpcvyEnum,NodeOnHutterEnum);
    4445
    4546        /*Initialize conunter*/
     
    5051                /*keep only this partition's nodes:*/
    5152                if((iomodel->my_vertices[i])){
    52                         if (!(int)iomodel->nodeonhutter[i]){
     53                        if (!(int)iomodel->f(NodeOnHutterEnum)[i]){
    5354
    5455                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,DiagnosticHutterAnalysisEnum));
     
    5960                        }
    6061                        else{
    61                                 if (!isnan(iomodel->spcvx[i])){
    62                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,iomodel->spcvx[i]/yts,DiagnosticHutterAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     62                                if (!isnan(iomodel->f(SpcvxEnum)[i])){
     63                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,iomodel->f(SpcvxEnum)[i]/yts,DiagnosticHutterAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    6364                                        count++;
    6465                                }
    6566
    66                                 if (!isnan(iomodel->spcvy[i])){
    67                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,iomodel->spcvy[i]/yts,DiagnosticHutterAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy
     67                                if (!isnan(iomodel->f(SpcvyEnum)[i])){
     68                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,iomodel->f(SpcvyEnum)[i]/yts,DiagnosticHutterAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy
    6869                                        count++;
    6970                                }
    7071                        }
    71                 } //if((my_vertices[i]))
     72                }
    7273        }
    7374
    7475        /*Free data: */
    75         xfree((void**)&iomodel->nodeonhutter);
    76         xfree((void**)&iomodel->spcvx);
    77         xfree((void**)&iomodel->spcvy);
    78 
    79         cleanup_and_return:
     76        iomodel->DeleteData(3,SpcvxEnum,SpcvyEnum,NodeOnHutterEnum);
    8077       
    8178        /*Assign output pointer: */
  • issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHutter/CreateNodesDiagnosticHutter.cpp

    r9362 r9370  
    3535
    3636        /*Now, is the flag ishutter on? otherwise, do nothing: */
    37         if (!ishutter)goto cleanup_and_return;
     37        if(!ishutter){
     38                *pnodes=nodes;
     39                return;
     40        }
    3841
    3942        /*Continuous Galerkin partition of nodes: */
     
    4144
    4245        /*First fetch data: */
    43         iomodel->FetchData(&iomodel->nodeonbed,NULL,NULL,NodeOnBedEnum);
    44         iomodel->FetchData(&iomodel->nodeonsurface,NULL,NULL,NodeOnSurfaceEnum);
    45         iomodel->FetchData(&iomodel->nodeonhutter,NULL,NULL,NodeOnHutterEnum);
    46         iomodel->FetchData(&iomodel->nodeonicesheet,NULL,NULL,NodeOnIceSheetEnum);
    47         iomodel->FetchData(&iomodel->nodeoniceshelf,NULL,NULL,NodeOnIceShelfEnum);
    48         iomodel->FetchData(&iomodel->elements,NULL,NULL,ElementsEnum);
    49         iomodel->FetchData(&iomodel->vertices_type,NULL,NULL,VerticesTypeEnum);
    50         iomodel->FetchData(&iomodel->nodeonwater,NULL,NULL,NodeOnWaterEnum);
    51 
     46        iomodel->FetchData(8,NodeOnBedEnum,NodeOnSurfaceEnum,NodeOnHutterEnum,NodeOnIceSheetEnum,NodeOnIceShelfEnum,ElementsEnum,VerticesTypeEnum,NodeOnWaterEnum);
    5247        CreateNumberNodeToElementConnectivity(iomodel);
    5348
    5449        for (i=0;i<numberofvertices;i++){
    55 
    5650                if(iomodel->my_vertices[i]){
    5751
     
    6357
    6458        /*Clean fetched data: */
    65         xfree((void**)&iomodel->nodeonbed);
    66         xfree((void**)&iomodel->nodeonsurface);
    67         xfree((void**)&iomodel->nodeonhutter);
    68         xfree((void**)&iomodel->nodeonicesheet);
    69         xfree((void**)&iomodel->nodeoniceshelf);
    70         xfree((void**)&iomodel->elements);
    71         xfree((void**)&iomodel->nodeonwater);
    72         xfree((void**)&iomodel->numbernodetoelementconnectivity);
    73         xfree((void**)&iomodel->vertices_type);
    74 
    75         cleanup_and_return:
     59        iomodel->DeleteData(8,NodeOnBedEnum,NodeOnSurfaceEnum,NodeOnHutterEnum,NodeOnIceSheetEnum,NodeOnIceShelfEnum,ElementsEnum,VerticesTypeEnum,NodeOnWaterEnum);
    7660
    7761        /*Assign output pointer: */
  • issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHutter/UpdateElementsDiagnosticHutter.cpp

    r9362 r9370  
    2121       
    2222        /*Fetch data needed: */
    23         iomodel->FetchData(&iomodel->elements,NULL,NULL,ElementsEnum);
    24         iomodel->FetchData(&iomodel->elements_type,NULL,NULL,ElementsTypeEnum);
    2523        iomodel->constants->FindParam(&numberofelements,NumberOfElementsEnum);
    2624        iomodel->constants->FindParam(&ishutter,IshutterEnum);
     
    2826        /*Now, is the flag hutter on? otherwise, do nothing: */
    2927        if (!ishutter)return;
     28
     29        iomodel->FetchData(2,ElementsEnum,ElementsTypeEnum);
    3030
    3131        /*Update elements: */
     
    4444       
    4545        /*Free data: */
    46         xfree((void**)&iomodel->elements);
    47 
     46        iomodel->DeleteData(2,ElementsEnum,ElementsTypeEnum);
    4847}
  • issm/trunk/src/c/modules/ModelProcessorx/DiagnosticVert/CreateConstraintsDiagnosticVert.cpp

    r9362 r9370  
    2626        iomodel->constants->FindParam(&dim,DimEnum);
    2727        iomodel->constants->FindParam(&yts,YtsEnum);
     28        iomodel->constants->FindParam(&numberofvertices,NumberOfVerticesEnum);
    2829
    2930        /*Recover pointer: */
     
    3435
    3536        /*return if 2d mesh*/
    36         if (dim==2) goto cleanup_and_return;
     37        if(dim==2){
     38                *pconstraints=constraints;
     39                return;
     40        }
    3741
    3842        /*Fetch data: */
    39         iomodel->FetchData(&iomodel->spcvz,NULL,NULL,SpcvzEnum);
    40         iomodel->FetchData(&iomodel->nodeonstokes,NULL,NULL,NodeOnStokesEnum);
    41         iomodel->constants->FindParam(&numberofvertices,NumberOfVerticesEnum);
     43        iomodel->FetchData(2,SpcvzEnum,NodeOnStokesEnum);
    4244
    4345        /*Initialize counter*/
     
    5052                if(iomodel->my_vertices[i]){
    5153
    52                         if ((int)iomodel->nodeonstokes[i]){
     54                        if ((int)iomodel->f(NodeOnStokesEnum)[i]){
    5355                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,DiagnosticVertAnalysisEnum)); //spc to zero as vertical velocity is done in Horiz for Stokes
    5456                                count++;
    5557                        }
    56                         else if (!isnan(iomodel->spcvz[i])){
     58                        else if (!isnan(iomodel->f(SpcvzEnum)[i])){
    5759                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,
    58                                                                 iomodel->spcvz[i]/yts,DiagnosticVertAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     60                                                                iomodel->f(SpcvzEnum)[i]/yts,DiagnosticVertAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    5961                                count++;
    6062
     
    6466
    6567        /*Free data: */
    66         xfree((void**)&iomodel->spcvz);
    67         xfree((void**)&iomodel->nodeonstokes);
     68        iomodel->DeleteData(2,SpcvzEnum,NodeOnStokesEnum);
    6869
    6970        cleanup_and_return:
  • issm/trunk/src/c/modules/ModelProcessorx/DiagnosticVert/CreateNodesDiagnosticVert.cpp

    r9362 r9370  
    3535
    3636        /*Now, is the flag macayaealpattyn on? otherwise, do nothing: */
    37         if (dim==2)goto cleanup_and_return;
     37        if (dim==2){
     38                *pnodes=nodes;
     39                return;
     40        }
    3841
    3942        /*Continuous Galerkin partition of nodes: */
     
    4144       
    4245        /*First fetch data: */
    43         iomodel->FetchData(&iomodel->nodeonbed,NULL,NULL,NodeOnBedEnum);
    44         iomodel->FetchData(&iomodel->nodeonsurface,NULL,NULL,NodeOnSurfaceEnum);
    45         iomodel->FetchData(&iomodel->nodeonicesheet,NULL,NULL,NodeOnIceSheetEnum);
    46         iomodel->FetchData(&iomodel->nodeoniceshelf,NULL,NULL,NodeOnIceShelfEnum);
    47         iomodel->FetchData(&iomodel->vertices_type,NULL,NULL,VerticesTypeEnum);
    48         iomodel->FetchData(&iomodel->nodeonwater,NULL,NULL,NodeOnWaterEnum);
     46        iomodel->FetchData(6,NodeOnBedEnum,NodeOnSurfaceEnum,NodeOnIceSheetEnum,NodeOnIceShelfEnum,VerticesTypeEnum,NodeOnWaterEnum);
    4947
    5048        for (i=0;i<numberofvertices;i++){
    51 
    5249                if(iomodel->my_vertices[i]){
    5350
     
    5956
    6057        /*Clean fetched data: */
    61         xfree((void**)&iomodel->nodeonbed);
    62         xfree((void**)&iomodel->nodeonsurface);
    63         xfree((void**)&iomodel->nodeonicesheet);
    64         xfree((void**)&iomodel->nodeoniceshelf);
    65         xfree((void**)&iomodel->nodeonwater);
    66         xfree((void**)&iomodel->vertices_type);
     58        iomodel->DeleteData(6,NodeOnBedEnum,NodeOnSurfaceEnum,NodeOnIceSheetEnum,NodeOnIceShelfEnum,VerticesTypeEnum,NodeOnWaterEnum);
    6759       
    68         cleanup_and_return:
    69 
    7060        /*Assign output pointer: */
    7161        *pnodes=nodes;
  • issm/trunk/src/c/modules/ModelProcessorx/DiagnosticVert/UpdateElementsDiagnosticVert.cpp

    r9362 r9370  
    2727
    2828        /*Fetch data needed: */
    29         iomodel->FetchData(&iomodel->elements,NULL,NULL,ElementsEnum);
     29        iomodel->FetchData(1,ElementsEnum);
    3030
    3131        /*Update elements: */
     
    5555
    5656        /*Free data: */
    57         xfree((void**)&iomodel->elements);
     57        iomodel->DeleteData(1,ElementsEnum);
    5858       
    5959}
  • issm/trunk/src/c/modules/ModelProcessorx/SurfaceSlope/CreateNodesSurfaceSlope.cpp

    r9362 r9370  
    3636       
    3737        /*First fetch data: */
    38         iomodel->FetchData(&iomodel->nodeonbed,NULL,NULL,NodeOnBedEnum);
    39         iomodel->FetchData(&iomodel->nodeonsurface,NULL,NULL,NodeOnSurfaceEnum);
    40         iomodel->FetchData(&iomodel->nodeonicesheet,NULL,NULL,NodeOnIceSheetEnum);
    41         iomodel->FetchData(&iomodel->nodeoniceshelf,NULL,NULL,NodeOnIceShelfEnum);
    42         iomodel->FetchData(&iomodel->vertices_type,NULL,NULL,VerticesTypeEnum);
    43         iomodel->FetchData(&iomodel->nodeonwater,NULL,NULL,NodeOnWaterEnum);
     38        iomodel->FetchData(6,NodeOnBedEnum,NodeOnSurfaceEnum,NodeOnIceSheetEnum,NodeOnIceShelfEnum,VerticesTypeEnum,NodeOnWaterEnum);
    4439
    4540        for (i=0;i<numberofvertices;i++){
     
    5449
    5550        /*Clean fetched data: */
    56         xfree((void**)&iomodel->nodeonbed);
    57         xfree((void**)&iomodel->nodeonsurface);
    58         xfree((void**)&iomodel->nodeonicesheet);
    59         xfree((void**)&iomodel->nodeoniceshelf);
    60         xfree((void**)&iomodel->nodeonwater);
    61         xfree((void**)&iomodel->vertices_type);
     51        iomodel->DeleteData(6,NodeOnBedEnum,NodeOnSurfaceEnum,NodeOnIceSheetEnum,NodeOnIceShelfEnum,VerticesTypeEnum,NodeOnWaterEnum);
    6252       
    6353        /*Assign output pointer: */
  • issm/trunk/src/c/modules/ModelProcessorx/SurfaceSlope/UpdateElementsSurfaceSlope.cpp

    r9362 r9370  
    2121        /*Fetch data needed: */
    2222        iomodel->constants->FindParam(&dim,DimEnum);
    23         iomodel->FetchData(&iomodel->elements,NULL,NULL,ElementsEnum);
    2423        iomodel->constants->FindParam(&numberofelements,NumberOfElementsEnum);
     24        iomodel->FetchData(1,ElementsEnum);
    2525
    2626        /*Update elements: */
     
    4444       
    4545        /*Free data: */
    46         xfree((void**)&iomodel->elements);
    47 
     46        iomodel->DeleteData(1,ElementsEnum);
    4847}
  • issm/trunk/src/c/modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp

    r9362 r9370  
    2929
    3030        /*Fetch data needed: */
    31         iomodel->FetchData(&iomodel->elements,NULL,NULL,ElementsEnum);
     31        iomodel->FetchData(1,ElementsEnum);
    3232
    3333        /*Update elements: */
     
    6565
    6666        /*Free data: */
    67         xfree((void**)&iomodel->elements);
    68 
    69        
     67        iomodel->DeleteData(1,ElementsEnum);
    7068}
  • issm/trunk/src/c/objects/Bamg/AdjacentTriangle.h

    r9320 r9370  
    1818
    1919                        //Constructors
    20                         AdjacentTriangle():a(0),t(NULL) {};
     20                        AdjacentTriangle(){};
    2121                        AdjacentTriangle(Triangle* tt,int  aa): t(tt),a(aa &3) {};
    2222
  • issm/trunk/src/c/objects/Bamg/EigenMetric.cpp

    r9320 r9370  
    1010        /*Constructor*/
    1111        /*FUNCTION EigenMetric::EigenMetric(const Metric M){{{1*/
    12         EigenMetric::EigenMetric(const Metric& M){
     12        EigenMetric::EigenMetric(const Metric M){
    1313                /*From a metric (a11,a21,a22), get eigen values lambda1 and lambda2 and one eigen vector v*/
    1414
     
    9090        /*}}}1*/
    9191        /*FUNCTION EigenMetric::EigenMetric(double r1,double r2,const D2 vp1){{{1*/
    92         EigenMetric::EigenMetric(double r1,double r2,const D2& vp1): lambda1(r1),lambda2(r2),v(vp1){
     92        EigenMetric::EigenMetric(double r1,double r2,const D2 vp1): lambda1(r1),lambda2(r2),v(vp1){
    9393
    9494        }/*}}}*/
  • issm/trunk/src/c/objects/Bamg/Metric.cpp

    r9320 r9370  
    1414
    1515        /*Constructor/Destructor*/
    16         /*FUNCTION Metric::Metric(){{{1*/
     16        Metric::Metric(){ };
    1717        /*FUNCTION Metric::Metric(double a){{{1*/
    1818        Metric::Metric(double a): a11(1/(a*a)),a21(0),a22(1/(a*a)){
     
    2424        }/*}}}*/
    2525        /*FUNCTION Metric::Metric(const double  a[3],const  Metric& m0, const  Metric& m1,const  Metric&  m2 ){{{1*/
    26         Metric::Metric(const double  a[3],const  Metric& m0, const  Metric& m1,const  Metric& m2 ){
     26        Metric::Metric(const double  a[3],const  Metric m0, const  Metric m1,const  Metric m2 ){
    2727                /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/Metric)*/
    2828
     
    4545        /*}}}1*/
    4646        /*FUNCTION Metric::Metric(double  a,const  Metric& ma, double  b,const  Metric& mb){{{1*/
    47         Metric::Metric(double  a,const  Metric& ma, double  b,const  Metric& mb) {
     47        Metric::Metric(double  a,const  Metric ma, double  b,const  Metric mb) {
    4848                /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/EigenMetric)*/
    4949
     
    139139        /*Intermediary*/
    140140        /*FUNCTION LengthInterpole{{{1*/
    141         double LengthInterpole(const Metric& Ma,const  Metric& Mb, R2 AB) {
     141        double LengthInterpole(const Metric Ma,const  Metric Mb, R2 AB) {
    142142                /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/LengthInterpole)*/
    143143
     
    310310        /*}}}1*/
    311311        /*FUNCTION abscisseInterpole{{{1*/
    312         double abscisseInterpole(const Metric& Ma,const  Metric& Mb, R2 AB,double s,int optim) {
     312        double abscisseInterpole(const Metric Ma,const  Metric Mb, R2 AB,double s,int optim) {
    313313                /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/abscisseInterpole)*/
    314314
  • issm/trunk/src/c/objects/Bamg/Metric.h

    r9320 r9370  
    2525
    2626                        //functions
    27                         Metric():a11(0),a21(0),a22(0){};
    28                         Metric(const EigenMetric&);
     27                        Metric();
     28                        Metric(const EigenMetric);
    2929                        Metric(double a);
    3030                        Metric(double a,double b,double c);
    31                         Metric( double  a,const  Metric& ma, double  b,const  Metric& mb);
    32                         Metric(const double  a[3],const  Metric& m0,const  Metric& m1,const  Metric& m2 );
     31                        Metric( double  a,const  Metric ma, double  b,const  Metric mb);
     32                        Metric(const double  a[3],const  Metric m0,const  Metric m1,const  Metric m2 );
    3333                        void        Echo();
    3434                        R2          mul(const R2 x)const;
     
    6262
    6363                        //functions
    64                         EigenMetric(const Metric& );
    65                         EigenMetric(double r1,double r2,const D2& vp1);
     64                        EigenMetric(const Metric );
     65                        EigenMetric(double r1,double r2,const D2 vp1);
    6666                        void   Echo();
    6767                        void   Abs();
     
    9797        //Functions
    9898        void  SimultaneousMatrixReduction( Metric M1,  Metric M2,D2xD2 &V);
    99         double LengthInterpole(const Metric& Ma,const  Metric& Mb, R2 AB);
    100         double abscisseInterpole(const Metric& Ma,const  Metric& Mb, R2 AB,double s,int optim=0);
     99        double LengthInterpole(const Metric Ma,const  Metric Mb, R2 AB);
     100        double abscisseInterpole(const Metric Ma,const  Metric Mb, R2 AB,double s,int optim=0);
    101101
    102102        //inlines
     
    115115                }
    116116        }
    117         inline Metric::Metric(const EigenMetric& M) {
     117        inline Metric::Metric(const EigenMetric M) {
    118118                double v00=M.v.x*M.v.x;
    119119                double v11=M.v.y*M.v.y;
  • issm/trunk/src/c/objects/Bamg/R2.h

    r9320 r9370  
    6868                          P2<R,RR>    ty() {return P2<R,RR>(x.y,y.y);}
    6969                          //Operators
    70                           P2<R,RR>     operator*(const P2<R,RR>& c) const {return P2<R,RR>(x.x*c.x + x.y*c.y, y.x*c.x + y.y*c.y);}
     70                          P2<R,RR>     operator*(const P2<R,RR> c) const {return P2<R,RR>(x.x*c.x + x.y*c.y, y.x*c.x + y.y*c.y);}
    7171                          P2xP2<R,RR>  operator*(P2xP2<R,RR> c) const{
    7272                                  return  P2xP2<R,RR>(x.x*c.x.x + x.y*c.y.x,
  • issm/trunk/src/c/objects/Bamg/Triangle.cpp

    r9320 r9370  
    99
    1010        /*Constructors/Destructors*/
    11         /*FUNCTION Triangle(){{{1*/
    12         Triangle::Triangle(void){
    13 
    14         }
    15         /*}}}*/
    1611        /*FUNCTION Triangle(Mesh *Th,long i,long j,long k) {{{1*/
    1712        Triangle::Triangle(Mesh *Th,long i,long j,long k) {
  • issm/trunk/src/c/objects/Bamg/Triangle.h

    r9320 r9370  
    2929
    3030                        //Constructors/Destructors
    31                         Triangle();
     31                        Triangle(){}
    3232                        Triangle(Mesh *Th,long i,long j,long k);
    3333                        Triangle(BamgVertex *v0,BamgVertex *v1,BamgVertex *v2);
  • issm/trunk/src/c/objects/Bamg/VertexOnEdge.h

    r9326 r9370  
    1919
    2020                        //Constructors
    21                         VertexOnEdge(BamgVertex * w, Edge *bw,double s) :v(w),be(bw),abcisse(s) {};
    22                         VertexOnEdge(){};
     21                        VertexOnEdge(BamgVertex * w, Edge *bw,double s) :v(w),be(bw),abcisse(s) {}
     22                        VertexOnEdge(){}
    2323
    2424                        //Operators
  • issm/trunk/src/c/objects/Bamg/VertexOnGeom.cpp

    r9320 r9370  
    1616                curvilincoord=0;
    1717                gv=0;
    18                 ge=0;
     18                //ge=0;
    1919        }
    2020        /*}}}*/
     
    2424                curvilincoord=-1;
    2525                gv=&g;
    26                 ge=0;
     26                //ge=0;
    2727        }
    2828        /*}}}*/
     
    3232                curvilincoord=s;
    3333                ge=&g;
    34                 gv=0;
     34                //gv=0;
    3535        }
    3636        /*}}}*/
  • issm/trunk/src/c/objects/Bamg/VertexOnVertex.cpp

    r9320 r9370  
    1212        /*FUNCTION VertexOnVertex::VertexOnVertex(){{{1*/
    1313        VertexOnVertex::VertexOnVertex() {
    14                 v=NULL;
    15                 bv=NULL;
     14                //v=NULL;
     15                //bv=NULL;
    1616        };/*}}}*/
    1717        /*FUNCTION VertexOnVertex::VertexOnVertex(BamgVertex * w,BamgVertex *bw){{{1*/
  • issm/trunk/src/c/objects/IoModel.cpp

    r9362 r9370  
    482482void  IoModel::FetchData(int num,...){
    483483
    484 
    485484        va_list ap;
    486485        int     dataenum;
     
    493492       
    494493        va_start(ap,num);
    495 
    496         for(i = 0; i <num; i++){
     494        for(i=0; i<num; i++){
    497495               
    498                 dataenum=va_arg(ap, int);
     496                dataenum=va_arg(ap, int); _assert_(this->data->Exist(dataenum)==false);
    499497                this->FetchData(&matrix,&M,&N,dataenum);
    500498
     
    521519       
    522520        va_start(ap,num);
    523 
    524521        for(i = 0; i <num; i++){
    525                
    526522                dataenum=va_arg(ap, int);
    527        
    528523                parameter=(DoubleMatParam*)this->data->FindParamObject(dataenum);
    529524                if(parameter){
     
    538533}
    539534/*}}}*/
    540 /*FUNCTION IoModel::get(int dataenum){{{1*/
     535/*FUNCTION IoModel::f(int dataenum){{{1*/
    541536double* IoModel::f(int dataenum){
    542537
     
    544539               
    545540        parameter=(DoubleMatParam*)this->data->FindParamObject(dataenum);
    546 
    547         if (parameter==NULL)return NULL; //might be legitimate
    548         else{
    549                 return parameter->GetPointer();
    550         }
     541        if (parameter==NULL) _error_("Field of enum %s has not been loaded in iomodel",EnumToStringx(dataenum));
     542        return parameter->GetPointer();
    551543}
    552544/*}}}*/
     
    763755        extern int num_procs;
    764756       
    765        
    766757        int found=0;
    767758        int record_enum;
     
    821812/*FUNCTION IoModel::FetchDataToInput(Elements* elements,IoModel* iomodel,int vector_enum,int default_vector_enum,double default_value{{{1*/
    822813void IoModel::FetchDataToInput(Elements* elements,int vector_enum,int default_vector_enum,double default_value){
    823        
    824814
    825815        /*intermediary: */
  • issm/trunk/src/c/objects/IoModel.h

    r9362 r9370  
    2020
    2121        public:
    22                 Parameters* constants; //this dataset holds all double, int, bool and char* parameters read in from the input file.*
    23                 Parameters* data; //this dataset holds temporary data, memory intensive.
     22                Parameters *constants;   //this dataset holds all double, int, bool and char*parameters read in from the input file.*
     23                Parameters *data;        //this dataset holds temporary data, memory intensive.
    2424
    2525                /*This data needs to stay memory resident at all time, even if it's memory intensive: */
    26                 bool*   my_elements;
    27                 bool*   my_nodes;
    28                 int*    my_vertices;
    29                 int*    singlenodetoelementconnectivity;
    30                 int*    numbernodetoelementconnectivity;
     26                bool *my_elements;
     27                bool *my_nodes;
     28                int  *my_vertices;
     29                int  *singlenodetoelementconnectivity;
     30                int  *numbernodetoelementconnectivity;
    3131
    3232                /*Data to synchronize through low level object drivers: */
    33                 int     nodecounter; //keep track of how many nodes are being created in each analysis type
    34                 int     loadcounter; //keep track of how many loads are being created in each analysis type
    35                 int     constraintcounter; //keep track of how many constraints are being created in each analysis type
     33                int nodecounter;        //keep track of how many nodes are being created in each analysis type
     34                int loadcounter;        //keep track of how many loads are being created in each analysis type
     35                int constraintcounter;  //keep track of how many constraints are being created in each analysis type
    3636
    3737                /*Methods: {{{1*/
Note: See TracChangeset for help on using the changeset viewer.