Changeset 4008


Ignore:
Timestamp:
06/03/10 08:18:26 (15 years ago)
Author:
Mathieu Morlighem
Message:

Updated CreateConstraints

Location:
issm/trunk/src/c/modules/ModelProcessorx
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/modules/ModelProcessorx/Balancedthickness/CreateConstraintsBalancedthickness.cpp

    r3913 r4008  
    1313void    CreateConstraintsBalancedthickness(DataSet** pconstraints, IoModel* iomodel,ConstDataHandle iomodel_handle){
    1414
     15        /*Intermediary*/
    1516        int i;
    16         int count=0;
     17        int count;
     18
     19        /*Output*/
    1720        DataSet* constraints = NULL;
    1821
    19         /*Create constraints: */
    20         constraints = new DataSet(ConstraintsEnum);
     22        /*Recover pointer: */
     23        constraints=*pconstraints;
     24
     25        /*Create constraints if they do not exist yet*/
     26        if(!constraints) constraints = new DataSet(ConstraintsEnum);
    2127
    2228        /*Fetch data: */
    2329        IoModelFetchData(&iomodel->spcthickness,NULL,NULL,iomodel_handle,"spcthickness");
    2430
    25         count=1; //matlab indexing
     31        /*Initialize counter*/
     32        count=0;
     33
    2634        /*Create spcs from x,y,z, as well as the spc values on those spcs: */
    2735        for (i=0;i<iomodel->numberofvertices;i++){
     
    3038                        if ((int)iomodel->spcthickness[2*i]){
    3139               
    32                                 constraints->AddObject(new Spc(count,i+1,1,*(iomodel->spcthickness+2*i+1)));//we enforce first translation degree of freedom, for temperature
     40                                constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,
     41                                                                *(iomodel->spcthickness+2*i+1),BalancedthicknessAnalysisEnum));//we enforce first translation degree of freedom, for temperature
    3342                                count++;
    3443                        }
     
    3948        xfree((void**)&iomodel->spcthickness);
    4049
    41         /*All our datasets are already order by ids. Set presort flag so that later on, when sorting is requested on these
    42          * datasets, it will not be redone: */
    43         constraints->Presort();
    44 
    45         cleanup_and_return:
    46        
    4750        /*Assign output pointer: */
    4851        *pconstraints=constraints;
  • issm/trunk/src/c/modules/ModelProcessorx/Balancedthickness2/CreateConstraintsBalancedthickness2.cpp

    r3913 r4008  
    1313void    CreateConstraintsBalancedthickness2(DataSet** pconstraints, IoModel* iomodel,ConstDataHandle iomodel_handle){
    1414       
     15        /*Output*/
    1516        DataSet* constraints = NULL;
    1617       
    17         /*Create constraints: */
    18         constraints = new DataSet(ConstraintsEnum);
     18        /*Recover pointer: */
     19        constraints=*pconstraints;
     20
     21        /*Create constraints if they do not exist yet*/
     22        if(!constraints) constraints = new DataSet(ConstraintsEnum);
    1923       
    2024        /*Assign output pointer: */
  • issm/trunk/src/c/modules/ModelProcessorx/Balancedvelocities/CreateConstraintsBalancedvelocities.cpp

    r3913 r4008  
    1313void    CreateConstraintsBalancedvelocities(DataSet** pconstraints, IoModel* iomodel,ConstDataHandle iomodel_handle){
    1414
     15        /*Intermediary*/
    1516        int i;
    16         int count=1;
     17        int count=0;
    1718       
     19        /*Output*/
    1820        DataSet* constraints = NULL;
    1921        Spc*    spc  = NULL;
    2022
    21         /*Create constraints: */
    22         constraints = new DataSet(ConstraintsEnum);
     23        /*Recover pointer: */
     24        constraints=*pconstraints;
     25
     26        /*Create constraints if they do not exist yet*/
     27        if(!constraints) constraints = new DataSet(ConstraintsEnum);
    2328
    2429        /*Fetch data: */
     
    3439
    3540                                /*This grid needs to be spc'd: */
    36                                 constraints->AddObject(new Spc(count,i+1,1,pow( pow(*(iomodel->spcvelocity+6*i+4),2.0) + pow(*(iomodel->spcvelocity+6*i+5),2.0) ,0.5)));
     41                                constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,
     42                                                                pow( pow(*(iomodel->spcvelocity+6*i+4),2.0) + pow(*(iomodel->spcvelocity+6*i+5),2.0) ,0.5),BalancedvelocitiesAnalysisEnum));
    3743                                count++;
    3844                        }
    39 
    4045                } //if((my_vertices[i]==1))
    4146        }
     
    4449        xfree((void**)&iomodel->spcvelocity);
    4550       
    46         /*All our datasets are already order by ids. Set presort flag so that later on, when sorting is requested on these
    47          * datasets, it will not be redone: */
    48         constraints->Presort();
    49 
    50         cleanup_and_return:
    51        
    5251        /*Assign output pointer: */
    5352        *pconstraints=constraints;
  • issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp

    r4003 r4008  
    1111#include "../ModelProcessorx.h"
    1212
    13 
    1413void    CreateConstraintsDiagnosticHoriz(DataSet** pconstraints, IoModel* iomodel,ConstDataHandle iomodel_handle){
    1514
    16 
     15        /*Intermediary*/
    1716        int i,j;
    18         int count=0;
     17        int count;
    1918       
     19        /*Output*/
    2020        DataSet* constraints = NULL;
    2121        Spc*    spc  = NULL;
     
    6262        IoModelFetchData(&iomodel->penalties,&iomodel->numpenalties,NULL,iomodel_handle,"penalties");
    6363       
    64         count=1; //matlab indexing
     64        /*Initilize counter*/
     65        count=0;
     66
    6567        if(iomodel->numpenalties){
    6668
  • issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHutter/CreateConstraintsDiagnosticHutter.cpp

    r3913 r4008  
    1313void    CreateConstraintsDiagnosticHutter(DataSet** pconstraints, IoModel* iomodel,ConstDataHandle iomodel_handle){
    1414
     15        /*Intermediary*/
    1516        int i;
    16         int count=0;
     17        int count;
    1718
     19        /*Output*/
    1820        DataSet* constraints = NULL;
    1921        Spc*    spc  = NULL;
    2022
    21         /*Create constraints: */
    22         constraints = new DataSet(ConstraintsEnum);
     23        /*Recover pointer: */
     24        constraints=*pconstraints;
     25
     26        /*Create constraints if they do not exist yet*/
     27        if(!constraints) constraints = new DataSet(ConstraintsEnum);
    2328
    2429        /*Now, is the flag ishutter on? otherwise, do nothing: */
     
    2833        IoModelFetchData(&iomodel->gridonhutter,NULL,NULL,iomodel_handle,"gridonhutter");
    2934
    30         count=1; //matlab indexing
     35        /*Initialize conunter*/
     36        count=0;
     37
    3138        /*vx and vy are spc'd if we are not on gridonhutter: */
    3239        for (i=0;i<iomodel->numberofvertices;i++){
     
    3542                        if (!(int)iomodel->gridonhutter[i]){
    3643
    37                                 constraints->AddObject(new Spc(count,i+1,1,0));
     44                                constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,DiagnosticHutterAnalysisEnum));
    3845                                count++;
    3946
    40                                 constraints->AddObject(new Spc(count,i+1,2,0));
     47                                constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,0,DiagnosticHutterAnalysisEnum));
    4148                                count++;
    4249                        }
     
    4754        xfree((void**)&iomodel->gridonhutter);
    4855
    49         /*All our datasets are already order by ids. Set presort flag so that later on, when sorting is requested on these
    50          * datasets, it will not be redone: */
    51         constraints->Presort();
    52 
    5356        cleanup_and_return:
    5457       
  • issm/trunk/src/c/modules/ModelProcessorx/DiagnosticStokes/CreateConstraintsDiagnosticStokes.cpp

    r3913 r4008  
    1313void    CreateConstraintsDiagnosticStokes(DataSet** pconstraints, IoModel* iomodel,ConstDataHandle iomodel_handle){
    1414
     15        /*Intermediary*/
    1516        int i;
     17        Spc*    spc  = NULL;
     18        int count;
     19
     20        /*Intermediary*/
    1621        DataSet* constraints = NULL;
    17         Spc*    spc  = NULL;
    18         int count=0;
    1922
    20         /*Create constraints: */
    21         constraints = new DataSet(ConstraintsEnum);
     23        /*Recover pointer: */
     24        constraints=*pconstraints;
     25
     26        /*Create constraints if they do not exist yet*/
     27        if(!constraints) constraints = new DataSet(ConstraintsEnum);
    2228
    2329        /*Now, is the flag ishutter on? otherwise, do nothing: */
     
    2733        IoModelFetchData(&iomodel->gridonstokes,NULL,NULL,iomodel_handle,"gridonstokes");
    2834
    29         count=1; //matlab indexing
     35        /*Initialize counter*/
     36        count=0;
     37
    3038        /*Create spcs from x,y,z, as well as the spc values on those spcs: */
    3139        for (i=0;i<iomodel->numberofvertices;i++){
     
    3644
    3745                                /*This grid will see its vx,vy and vz dofs spc'd to pattyn velocities: */
    38                                 constraints->AddObject(new Spc(count,i+1,1,0));
     46                                constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,DiagnosticStokesAnalysisEnum));
    3947                                count++;
    4048
    41                                 constraints->AddObject(new Spc(count,i+1,2,0));
     49                                constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,0,DiagnosticStokesAnalysisEnum));
    4250                                count++;
    4351
    44                                 constraints->AddObject(new Spc(count,i+1,3,0));
     52                                constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,0,DiagnosticStokesAnalysisEnum));
    4553                                count++;
    4654                        }
     
    5159        xfree((void**)&iomodel->gridonstokes);
    5260
    53         /*All our datasets are already order by ids. Set presort flag so that later on, when sorting is requested on these
    54          * datasets, it will not be redone: */
    55         constraints->Presort();
    56 
    5761        cleanup_and_return:
    5862
  • issm/trunk/src/c/modules/ModelProcessorx/DiagnosticVert/CreateConstraintsDiagnosticVert.cpp

    r3984 r4008  
    1313void    CreateConstraintsDiagnosticVert(DataSet** pconstraints, IoModel* iomodel,ConstDataHandle iomodel_handle){
    1414
     15        /*Intermediary*/
    1516        int i;
     17        int count;
     18
     19        /*Output*/
    1620        DataSet* constraints = NULL;
    17         int count=0;
    1821
    19         /*Create constraints: */
    20         constraints = new DataSet(ConstraintsEnum);
     22        /*Recover pointer: */
     23        constraints=*pconstraints;
     24
     25        /*Create constraints if they do not exist yet*/
     26        if(!constraints) constraints = new DataSet(ConstraintsEnum);
    2127
    2228        /*return if 2d mesh*/
    23         if (iomodel->dim==2)goto cleanup_and_return;
     29        if (iomodel->dim==2) goto cleanup_and_return;
    2430
    2531        /*Fetch data: */
    2632        IoModelFetchData(&iomodel->spcvelocity,NULL,NULL,iomodel_handle,"spcvelocity");
    2733
     34        /*Initialize counter*/
     35        count=0;
     36
    2837        /*Create spcs from x,y,z, as well as the spc values on those spcs: */
    29         count=1;
    3038        for (i=0;i<iomodel->numberofvertices;i++){
    3139
     
    3442
    3543                        if ((int)iomodel->spcvelocity[6*i+2]){
    36                                 constraints->AddObject(new Spc(count,i+1,1,*(iomodel->spcvelocity+6*i+5)/iomodel->yts)); //add count'th spc, on node i+1, setting dof 1 to vx.
     44                                constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,
     45                                                                *(iomodel->spcvelocity+6*i+5)/iomodel->yts,DiagnosticVertAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    3746                                count++;
    3847
     
    4150        }
    4251
    43         /*All our datasets are already order by ids. Set presort flag so that later on, when sorting is requested on these
    44          * datasets, it will not be redone: */
    45         constraints->Presort();
     52        /*Free data: */
     53        xfree((void**)&iomodel->spcvelocity);
    4654
    4755        cleanup_and_return:
    48         /*Free data: */
    49         xfree((void**)&iomodel->spcvelocity);
    5056
    5157        /*Assign output pointer: */
  • issm/trunk/src/c/modules/ModelProcessorx/Melting/CreateConstraintsMelting.cpp

    r3913 r4008  
    1313void    CreateConstraintsMelting(DataSet** pconstraints, IoModel* iomodel,ConstDataHandle iomodel_handle){
    1414
     15        /*Intermediary*/
    1516        int i;
    1617        int count;
    1718       
     19        /*Intermediary*/
    1820        DataSet* constraints = NULL;
    1921
    20         /*Create constraints: */
    21         constraints = new DataSet(ConstraintsEnum);
     22        /*Recover pointer: */
     23        constraints=*pconstraints;
    2224
    23         /*All our datasets are already order by ids. Set presort flag so that later on, when sorting is requested on these
    24          * datasets, it will not be redone: */
    25         constraints->Presort();
     25        /*Create constraints if they do not exist yet*/
     26        if(!constraints) constraints = new DataSet(ConstraintsEnum);
    2627
    2728        /*Assign output pointer: */
  • issm/trunk/src/c/modules/ModelProcessorx/Prognostic/CreateConstraintsPrognostic.cpp

    r3913 r4008  
    1313void    CreateConstraintsPrognostic(DataSet** pconstraints, IoModel* iomodel,ConstDataHandle iomodel_handle){
    1414
     15        /*Intermediary*/
    1516        int i;
    16         int count=0;
     17        int count;
    1718       
     19        /*Output*/
    1820        DataSet* constraints = NULL;
    1921        Spc*    spc  = NULL;
    2022
    21         /*Create constraints: */
    22         constraints = new DataSet(ConstraintsEnum);
     23        /*Recover pointer: */
     24        constraints=*pconstraints;
     25
     26        /*Create constraints if they do not exist yet*/
     27        if(!constraints) constraints = new DataSet(ConstraintsEnum);
    2328
    2429        /*Fetch data: */
    2530        IoModelFetchData(&iomodel->spcthickness,NULL,NULL,iomodel_handle,"spcthickness");
    2631
    27         count=1;//matlab indexing
     32        /*Initialize counter*/
     33        count=0;
     34
    2835        /*Create spcs from x,y,z, as well as the spc values on those spcs: */
    2936        for (i=0;i<iomodel->numberofvertices;i++){
     
    3340                        if ((int)iomodel->spcthickness[2*i]){
    3441
    35                                 constraints->AddObject(new Spc(count,i+1,1,*(iomodel->spcthickness+2*i+1)));
     42                                constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,*(iomodel->spcthickness+2*i+1),PrognosticAnalysisEnum));
    3643                                count++;
    3744                        }
     
    4249        xfree((void**)&iomodel->spcthickness);
    4350       
    44         /*All our datasets are already order by ids. Set presort flag so that later on, when sorting is requested on these
    45          * datasets, it will not be redone: */
    46         constraints->Presort();
    47 
    48         cleanup_and_return:
    49        
    5051        /*Assign output pointer: */
    5152        *pconstraints=constraints;
  • issm/trunk/src/c/modules/ModelProcessorx/Prognostic2/CreateConstraintsPrognostic2.cpp

    r3913 r4008  
    1313void    CreateConstraintsPrognostic2(DataSet** pconstraints, IoModel* iomodel,ConstDataHandle iomodel_handle){
    1414       
     15        /*Output*/
    1516        DataSet* constraints = NULL;
    1617       
    17         /*Create constraints: */
    18         constraints = new DataSet(ConstraintsEnum);
     18        /*Recover pointer: */
     19        constraints=*pconstraints;
     20
     21        /*Create constraints if they do not exist yet*/
     22        if(!constraints) constraints = new DataSet(ConstraintsEnum);
    1923       
    2024        /*Assign output pointer: */
  • issm/trunk/src/c/modules/ModelProcessorx/SlopeCompute/CreateConstraintsSlopeCompute.cpp

    r3913 r4008  
    1313void    CreateConstraintsSlopeCompute(DataSet** pconstraints, IoModel* iomodel,ConstDataHandle iomodel_handle){
    1414
     15        /*Output*/
    1516        DataSet* constraints = NULL;
     17       
     18        /*Recover pointer: */
     19        constraints=*pconstraints;
    1620
    17         /*Create constraints: */
    18         constraints = new DataSet(ConstraintsEnum);
    19        
     21        /*Create constraints if they do not exist yet*/
     22        if(!constraints) constraints = new DataSet(ConstraintsEnum);
     23
    2024        /*Assign output pointer: */
    2125        *pconstraints=constraints;
  • issm/trunk/src/c/modules/ModelProcessorx/Thermal/CreateConstraintsThermal.cpp

    r3984 r4008  
    1313void    CreateConstraintsThermal(DataSet** pconstraints, IoModel* iomodel,ConstDataHandle iomodel_handle){
    1414
     15        /*Intermediary*/
    1516        int i;
    16         int count=0;
     17        int count;
    1718       
     19        /*Output*/
    1820        DataSet* constraints = NULL;
    1921        Spc*    spc  = NULL;
    2022
    21         /*Create constraints: */
    22         constraints = new DataSet(ConstraintsEnum);
     23        /*Recover pointer: */
     24        constraints=*pconstraints;
     25
     26        /*Create constraints if they do not exist yet*/
     27        if(!constraints) constraints = new DataSet(ConstraintsEnum);
    2328
    2429        /*return if 2d mesh*/
    25         if (iomodel->dim==2)goto cleanup_and_return;
     30        if (iomodel->dim==2) goto cleanup_and_return;
    2631
    2732        /*Fetch data: */
    2833        IoModelFetchData(&iomodel->spctemperature,NULL,NULL,iomodel_handle,"spctemperature");
    2934
    30         count=1;
     35        /*Initialize counter*/
     36        count=0;
    3137
    3238        /*Create spcs from x,y,z, as well as the spc values on those spcs: */
     
    3743                        if ((int)iomodel->spctemperature[2*i]){
    3844
    39                                 constraints->AddObject(new Spc(count,i+1,1,iomodel->spctemperature[2*i+1]));
     45                                constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,iomodel->spctemperature[2*i+1],ThermalAnalysisEnum));
    4046                                count++;
    4147
     
    4854        xfree((void**)&iomodel->spctemperature);
    4955
    50         /*All our datasets are already order by ids. Set presort flag so that later on, when sorting is requested on these
    51          * datasets, it will not be redone: */
    52         constraints->Presort();
    53 
    5456        cleanup_and_return:
    5557       
Note: See TracChangeset for help on using the changeset viewer.