Changeset 5660


Ignore:
Timestamp:
09/03/10 08:38:03 (15 years ago)
Author:
Mathieu Morlighem
Message:

Deleted ComputePressure
Deleted GetParameterValues, now use GetParameterOnVertices more robust

Location:
issm/trunk/src
Files:
2 deleted
21 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/Container/Inputs.cpp

    r5659 r5660  
    209209}
    210210/*}}}*/
    211 /*FUNCTION Inputs::GetParameterValues(double* values,double* gauss_pointers, int numgauss,int enum_type){{{1*/
    212 void Inputs::GetParameterValues(double* values,double* gauss_pointers, int numgauss,int enum_type){
    213 
    214         vector<Object*>::iterator object;
    215         Input* input=NULL;
    216         bool   found=false;
    217 
    218         /*Go through inputs and check whether any input with the same name is already in: */
    219         for ( object=objects.begin() ; object < objects.end(); object++ ){
    220 
    221                 input=(Input*)(*object);
    222                 if (input->EnumType()==enum_type){
    223                         found=true;
    224                         break;
    225                 }
    226         }
    227 
    228         if (!found){
    229                 /*we could not find an input with the correct enum type. No defaults values were provided,
    230                  * error out: */
    231                 ISSMERROR("could not find input with enum type %i (%s)",enum_type,EnumToString(enum_type));
    232         }
    233 
    234         /*Ok, we have an input if we made it here, request the input to return the values: */
    235         input->GetParameterValues(values,gauss_pointers,numgauss);
    236 
    237 }
    238 /*}}}*/
    239 /*FUNCTION Inputs::GetParameterValues(double* values,double* gauss_pointers, int numgauss,int enum_type,double* defaultvalues){{{1*/
    240 void Inputs::GetParameterValues(double* values,double* gauss_pointers, int numgauss,int enum_type,double* defaultvalues){
    241 
    242         int i;
    243         vector<Object*>::iterator object;
    244         Input* input=NULL;
    245         bool   found=false;
    246 
    247         /*Go through inputs and check whether any input with the same name is already in: */
    248         for ( object=objects.begin() ; object < objects.end(); object++ ){
    249 
    250                 input=(Input*)(*object);
    251                 if (input->EnumType()==enum_type){
    252                         found=true;
    253                         break;
    254                 }
    255         }
    256 
    257         if (!found){
    258                 /*we could not find an input with the correct enum type. Return the default values: */
    259                 for(i=0;i<numgauss;i++) values[i]=defaultvalues[i];
    260         }
    261         else{
    262                 input->GetParameterValues(values,gauss_pointers,numgauss);
    263         }
    264 
    265 }
    266 /*}}}*/
    267211/*FUNCTION Inputs::GetParameterAverage{{{1*/
    268212void Inputs::GetParameterAverage(double* pvalue,int enum_type){
  • issm/trunk/src/c/Container/Inputs.h

    r5659 r5660  
    5050                void GetParameterValue(double* pvalue,GaussTria* gauss,int enum_type);
    5151                void GetParameterValue(double* pvalue,double* gauss,int enum_type,double defaultvalue);
    52                 void GetParameterValues(double* values,double* gauss_pointers, int numgauss,int enum_type);
    53                 void GetParameterValues(double* values,double* gauss_pointers, int numgauss,int enum_type,double* defaultvalues);
    5452                void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss,int enum_type);
    5553                /*}}}*/
  • issm/trunk/src/c/Makefile.am

    r5641 r5660  
    480480                                        ./modules/ComputeBasalStressx/ComputeBasalStressx.h\
    481481                                        ./modules/ComputeBasalStressx/ComputeBasalStressx.cpp\
    482                                         ./modules/ComputePressurex/ComputePressurex.h\
    483                                         ./modules/ComputePressurex/ComputePressurex.cpp\
    484482                                        ./modules/ComputeStrainRatex/ComputeStrainRatex.h\
    485483                                        ./modules/ComputeStrainRatex/ComputeStrainRatex.cpp\
     
    10341032                                        ./modules/ComputeBasalStressx/ComputeBasalStressx.h\
    10351033                                        ./modules/ComputeBasalStressx/ComputeBasalStressx.cpp\
    1036                                         ./modules/ComputePressurex/ComputePressurex.h\
    1037                                         ./modules/ComputePressurex/ComputePressurex.cpp\
    10381034                                        ./modules/ComputeStrainRatex/ComputeStrainRatex.h\
    10391035                                        ./modules/ComputeStrainRatex/ComputeStrainRatex.cpp\
  • issm/trunk/src/c/modules/modules.h

    r5578 r5660  
    1515#include "./Chacox/Chacox.h"
    1616#include "./ComputeBasalStressx/ComputeBasalStressx.h"
    17 #include "./ComputePressurex/ComputePressurex.h"
    1817#include "./ComputeStrainRatex/ComputeStrainRatex.h"
    1918#include "./ConfigureObjectsx/ConfigureObjectsx.h"
  • issm/trunk/src/c/objects/Elements/Element.h

    r5635 r5660  
    5151                virtual void   InputDepthAverageAtBase(int enum_type,int average_enum_type,int object_enum)=0;
    5252                virtual void   ComputeBasalStress(Vec sigma_b)=0;
    53                 virtual void   ComputePressure(Vec p_g)=0;
    5453                virtual void   ComputeStrainRate(Vec eps)=0;
    5554                virtual double MassFlux(double* segment,bool process_units)=0;
  • issm/trunk/src/c/objects/Elements/Penta.cpp

    r5659 r5660  
    611611        /*Add value to output*/
    612612        VecSetValue(sigma_b,id-1,(const double)value,INSERT_VALUES);
    613 }
    614 /*}}}*/
    615 /*FUNCTION Penta::ComputePressure {{{1*/
    616 void  Penta::ComputePressure(Vec pg){
    617 
    618         int i;
    619         const int numgrids=6;
    620         int    doflist[numgrids];
    621         double pressure[numgrids];
    622         double rho_ice,g;
    623         double surface[numgrids];
    624         double xyz_list[numgrids][3];
    625         double gauss[numgrids][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
    626 
    627         /*inputs: */
    628         bool onwater;
    629         Input* surface_input=NULL;
    630 
    631         /*retrieve inputs :*/
    632         inputs->GetParameterValue(&onwater,ElementOnWaterEnum);
    633 
    634         /*If on water, skip: */
    635         if(onwater)return;
    636 
    637         /*Get node data: */
    638         GetVerticesCoordinates(&xyz_list[0][0], nodes, numgrids);
    639 
    640         /*pressure is lithostatic: */
    641         //md.pressure=md.rho_ice*md.g*(md.surface-md.z); a la matlab
    642 
    643         /*Get dof list on which we will plug the pressure values: */
    644         GetDofList1(&doflist[0]);
    645 
    646         /*Retrieve all inputs we will be needing: */
    647         surface_input->GetParameterValues(&surface[0],&gauss[0][0],6);
    648 
    649         /*pressure is lithostatic: */
    650         rho_ice=matpar->GetRhoIce();
    651         g=matpar->GetG();
    652         for(i=0;i<numgrids;i++){
    653                 pressure[i]=rho_ice*g*(surface[i]-xyz_list[i][2]);
    654         }
    655 
    656         /*plug local pressure values into global pressure vector: */
    657         VecSetValues(pg,numgrids,doflist,(const double*)pressure,INSERT_VALUES);
    658 
    659613}
    660614/*}}}*/
     
    44834437        const int  numvertices = 6;
    44844438        double     value[numvertices];
    4485         double     gauss[numvertices][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
     4439        GaussPenta *gauss              = NULL;
    44864440
    44874441        /*Recover input*/
     
    44934447
    44944448        /* Start looping on the number of vertices: */
     4449        gauss=new GaussPenta();
    44954450        for (int iv=0;iv<numvertices;iv++){
    4496                 input->GetParameterValue(&pvalue[iv],&gauss[iv][0]);
     4451                gauss->GaussVertex(iv);
     4452                input->GetParameterValue(&pvalue[iv],gauss);
    44974453        }
    44984454
    44994455        /*clean-up*/
     4456        delete gauss;
    45004457}
    45014458/*}}}*/
     
    45064463        const int  numvertices = 6;
    45074464        double     value[numvertices];
    4508         double     gauss[numvertices][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
     4465        GaussPenta *gauss              = NULL;
    45094466
    45104467        /*Recover input*/
     
    45154472
    45164473        /* Start looping on the number of vertices: */
    4517         if (input)
    4518          for (int iv=0;iv<numvertices;iv++) input->GetParameterValue(&pvalue[iv],&gauss[iv][0]);
    4519         else
    4520          for (int iv=0;iv<numvertices;iv++) pvalue[iv]=defaultvalue;
     4474        if (input){
     4475                gauss=new GaussPenta();
     4476                for (int iv=0;iv<numvertices;iv++){
     4477                        gauss->GaussVertex(iv);
     4478                        input->GetParameterValue(&pvalue[iv],gauss);
     4479                }
     4480        }
     4481        else{
     4482                for (int iv=0;iv<numvertices;iv++) pvalue[iv]=defaultvalue;
     4483        }
    45214484
    45224485        /*clean-up*/
    4523         //delete gauss;
     4486        delete gauss;
    45244487}
    45254488/*}}}*/
     
    52935256
    52945257                /*Now compute pressure*/
    5295                 penta->inputs->GetParameterValues(&surface[0],&gauss[0][0],6,SurfaceEnum);
    5296                 for(i=0;i<numvertices;i++){
    5297                         pressure[i]=rho_ice*g*(surface[i]-xyz_list[i][2]);
    5298                 }
     5258                GetParameterListOnVertices(&surface[0],SurfaceEnum);
     5259                for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i][2]);
    52995260
    53005261                /*Now, we have to move the previous Vx and Vy inputs  to old
     
    53995360        rho_ice=matpar->GetRhoIce();
    54005361        g=matpar->GetG();
    5401         inputs->GetParameterValues(&surface[0],&gauss[0][0],6,SurfaceEnum);
    5402 
    5403         for(i=0;i<numvertices;i++){
    5404                 pressure[i]=rho_ice*g*(surface[i]-xyz_list[i][2]);
    5405         }
     5362        GetParameterListOnVertices(&surface[0],SurfaceEnum);
     5363        for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i][2]);
     5364
    54065365        /*Now, we have to move the previous Vx and Vy inputs  to old
    54075366         * status, otherwise, we'll wipe them off: */
     
    54825441        rho_ice=matpar->GetRhoIce();
    54835442        g=matpar->GetG();
    5484         inputs->GetParameterValues(&surface[0],&gauss[0][0],6,SurfaceEnum);
    5485 
    5486         for(i=0;i<numvertices;i++){
    5487                 pressure[i]=rho_ice*g*(surface[i]-xyz_list[i][2]);
    5488         }
     5443        GetParameterListOnVertices(&surface[0],SurfaceEnum);
     5444        for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i][2]);
     5445
    54895446        /*Now, we have to move the previous Vx and Vy inputs  to old
    54905447         * status, otherwise, we'll wipe them off: */
     
    55655522        rho_ice=matpar->GetRhoIce();
    55665523        g=matpar->GetG();
    5567         inputs->GetParameterValues(&surface[0],&gauss[0][0],6,SurfaceEnum);
    5568        
    5569         for(i=0;i<numvertices;i++){
    5570                 pressure[i]=rho_ice*g*(surface[i]-xyz_list[i][2]);
    5571         }
     5524        GetParameterListOnVertices(&surface[0],SurfaceEnum);
     5525        for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i][2]);
     5526
    55725527        /*Now, we have to move the previous Vx and Vy inputs  to old
    55735528         * status, otherwise, we'll wipe them off: */
     
    56535608        rho_ice=matpar->GetRhoIce();
    56545609        g=matpar->GetG();
    5655         inputs->GetParameterValues(&surface[0],&gauss[0][0],6,SurfaceEnum);
    5656 
    5657         for(i=0;i<numvertices;i++){
    5658                 pressure[i]=rho_ice*g*(surface[i]-xyz_list[i][2]);
    5659         }
     5610        GetParameterListOnVertices(&surface[0],SurfaceEnum);
     5611        for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i][2]);
     5612
    56605613        /*Now, we have to move the previous Vz inputs to old
    56615614         * status, otherwise, we'll wipe them off: */
  • issm/trunk/src/c/objects/Elements/Penta.h

    r5651 r5660  
    7171                void   AverageOntoPartition(Vec partition_contributions,Vec partition_areas,double* vertex_response,double* qmu_part);
    7272                void   ComputeBasalStress(Vec sigma_b);
    73                 void   ComputePressure(Vec p_g);
    7473                void   ComputeStrainRate(Vec eps);
    7574                void   Configure(Elements* elements,Loads* loads,DataSet* nodes,Materials* materials,Parameters* parameters);
  • issm/trunk/src/c/objects/Elements/Tria.cpp

    r5659 r5660  
    575575}
    576576/*}}}*/
    577 /*FUNCTION Tria::ComputePressure {{{1*/
    578 void  Tria::ComputePressure(Vec pg){
    579 
    580         const int numvertices= 3;
    581         int       doflist[numvertices];
    582         double    pressure[numvertices];
    583         double    thickness[numvertices];
    584         double    rho_ice,g;
    585        
    586         /*Get dof list on which we will plug the pressure values: */
    587         GetDofList1(&doflist[0]);
    588 
    589         /*pressure is lithostatic: */
    590         rho_ice=matpar->GetRhoIce();
    591         g=matpar->GetG();
    592         GetParameterListOnVertices(&thickness[0],ThicknessEnum);
    593 
    594         for(int i=0;i<numvertices;i++) pressure[i]=rho_ice*g*thickness[i];
    595 
    596         /*plug local pressure values into global pressure vector: */
    597         VecSetValues(pg,numvertices,doflist,(const double*)pressure,INSERT_VALUES);
    598 
    599 }
    600 /*}}}*/
    601577/*FUNCTION Tria::ComputeStrainRate {{{1*/
    602578void  Tria::ComputeStrainRate(Vec eps){
     
    56145590        /* Start looping on the number of vertices: */
    56155591        gauss=new GaussTria();
    5616         for (int iv=0;iv<3;iv++){
     5592        for (int iv=0;iv<numvertices;iv++){
    56175593                gauss->GaussVertex(iv);
    56185594                input->GetParameterValue(&pvalue[iv],gauss);
  • issm/trunk/src/c/objects/Elements/Tria.h

    r5635 r5660  
    6868                void   AverageOntoPartition(Vec partition_contributions,Vec partition_areas,double* vertex_response,double* qmu_part);
    6969                void   ComputeBasalStress(Vec sigma_b);
    70                 void   ComputePressure(Vec p_g);
    7170                void   ComputeStrainRate(Vec eps);
    7271                void   Configure(Elements* elements,Loads* loads,DataSet* nodes,Materials* materials,Parameters* parameters);
  • issm/trunk/src/c/objects/Inputs/BoolInput.cpp

    r5647 r5660  
    175175void BoolInput::GetParameterValue(double* pvalue,GaussPenta* gauss){ISSMERROR(" not supported yet!");}
    176176/*}}}*/
    177 /*FUNCTION BoolInput::GetParameterValues{{{1*/
    178 void BoolInput::GetParameterValues(double* values,double* gauss_pointers, int numgauss){ISSMERROR(" not supported yet!");}
    179 /*}}}*/
    180177/*FUNCTION BoolInput::GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss){{{1*/
    181178void BoolInput::GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss){ISSMERROR(" not supported yet!");}
  • issm/trunk/src/c/objects/Inputs/BoolInput.h

    r5659 r5660  
    5050                void GetParameterValue(double* pvalue,GaussTria* gauss);
    5151                void GetParameterValue(double* pvalue,GaussPenta* gauss);
    52                 void GetParameterValues(double* values,double* gauss_pointers, int numgauss);
    5352                void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss);
    5453                void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, GaussTria* gauss);
  • issm/trunk/src/c/objects/Inputs/DoubleInput.cpp

    r5659 r5660  
    188188void DoubleInput::GetParameterValue(double* pvalue,GaussPenta* gauss){ISSMERROR(" not supported yet!");}
    189189/*}}}*/
    190 /*FUNCTION DoubleInput::GetParameterValues{{{1*/
    191 void DoubleInput::GetParameterValues(double* values,double* gauss_pointers, int numgauss){ISSMERROR(" not supported yet!");}
    192 /*}}}*/
    193190/*FUNCTION DoubleInput::GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss){{{1*/
    194191void DoubleInput::GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss){ISSMERROR(" not supported yet!");}
  • issm/trunk/src/c/objects/Inputs/DoubleInput.h

    r5659 r5660  
    4949                void GetParameterValue(double* pvalue,GaussTria* gauss);
    5050                void GetParameterValue(double* pvalue,GaussPenta* gauss);
    51                 void GetParameterValues(double* values,double* gauss_pointers, int numgauss);
    5251                void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss);
    5352                void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, GaussTria* gauss);
  • issm/trunk/src/c/objects/Inputs/Input.h

    r5659 r5660  
    2828                virtual void GetParameterValue(double* pvalue,GaussTria* gauss)=0;
    2929                virtual void GetParameterValue(double* pvalue,GaussPenta* gauss)=0;
    30                 virtual void GetParameterValues(double* values,double* gauss_pointers, int numgauss)=0;
    3130                virtual void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss)=0;
    3231                virtual void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, GaussTria* gauss)=0;
  • issm/trunk/src/c/objects/Inputs/IntInput.cpp

    r5647 r5660  
    176176void IntInput::GetParameterValue(double* pvalue,GaussPenta* gauss){ISSMERROR(" not supported yet!");}
    177177/*}}}*/
    178 /*FUNCTION IntInput::GetParameterValues{{{1*/
    179 void IntInput::GetParameterValues(double* values,double* gauss_pointers, int numgauss){ISSMERROR(" not supported yet!");}
    180 /*}}}*/
    181178/*FUNCTION IntInput::GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss){{{1*/
    182179void IntInput::GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss){ISSMERROR(" not supported yet!");}
  • issm/trunk/src/c/objects/Inputs/IntInput.h

    r5659 r5660  
    5050                void GetParameterValue(double* pvalue,GaussTria* gauss);
    5151                void GetParameterValue(double* pvalue,GaussPenta* gauss);
    52                 void GetParameterValues(double* values,double* gauss_pointers, int numgauss);
    5352                void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss);
    5453                void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, GaussTria* gauss);
  • issm/trunk/src/c/objects/Inputs/PentaVertexInput.cpp

    r5659 r5660  
    192192}
    193193/*}}}*/
    194 /*FUNCTION PentaVertexInput::GetParameterValues{{{1*/
    195 void PentaVertexInput::GetParameterValues(double* values,double* gauss_pointers, int numgauss){
    196         /*It is assumed that output values has been correctly allocated*/
    197 
    198         int i,j;
    199         double gauss[4];
    200 
    201         for (i=0;i<numgauss;i++){
    202 
    203                 /*Get current Gauss point coordinates*/
    204                 for (j=0;j<4;j++) gauss[j]=gauss_pointers[i*4+j];
    205 
    206                 /*Assign parameter value*/
    207                 GetParameterValue(&values[i],&gauss[0]);
    208         }
    209 }
    210 /*}}}*/
    211194/*FUNCTION PentaVertexInput::GetParameterDerivativeValue(double* p, double* xyz_list, double* gauss){{{1*/
    212195void PentaVertexInput::GetParameterDerivativeValue(double* p, double* xyz_list, double* gauss){
  • issm/trunk/src/c/objects/Inputs/PentaVertexInput.h

    r5659 r5660  
    5050                void GetParameterValue(double* pvalue,GaussTria* gauss){ISSMERROR("not implemented yet");};
    5151                void GetParameterValue(double* pvalue,GaussPenta* gauss);
    52                 void GetParameterValues(double* values,double* gauss_pointers, int numgauss);
    5352                void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss);
    5453                void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, GaussTria* gauss){ISSMERROR("not implemented yet");};
  • issm/trunk/src/c/objects/Inputs/TriaVertexInput.cpp

    r5659 r5660  
    181181}
    182182/*}}}*/
    183 /*FUNCTION TriaVertexInput::GetParameterValues{{{1*/
    184 void TriaVertexInput::GetParameterValues(double* values,double* gauss_pointers, int numgauss){
    185         /*It is assumed that output values has been correctly allocated*/
    186 
    187         int i,j;
    188         double gauss[3];
    189 
    190         for (i=0;i<numgauss;i++){
    191 
    192                 /*Get current Gauss point coordinates*/
    193                 for (j=0;j<3;j++) gauss[j]=gauss_pointers[i*3+j];
    194 
    195                 /*Assign parameter value*/
    196                 GetParameterValue(&values[i],&gauss[0]);
    197         }
    198 
    199 }
    200 /*}}}*/
    201183/*FUNCTION TriaVertexInput::GetParameterDerivativeValue(double* p, double* xyz_list, double* gauss){{{1*/
    202184void TriaVertexInput::GetParameterDerivativeValue(double* p, double* xyz_list, double* gauss){
  • issm/trunk/src/c/objects/Inputs/TriaVertexInput.h

    r5659 r5660  
    5050                void GetParameterValue(double* pvalue,GaussTria* gauss);
    5151                void GetParameterValue(double* pvalue,GaussPenta* gauss){ISSMERROR("not implemented yet");};
    52                 void GetParameterValues(double* values,double* gauss_pointers, int numgauss);
    5352                void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss);
    5453                void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, GaussTria* gauss);
  • issm/trunk/src/mex/Makefile.am

    r5413 r5660  
    1212                                Chaco\
    1313                                ComputeBasalStress\
    14                                 ComputePressure\
    1514                                ConfigureObjects \
    1615                                ControlOptimization\
Note: See TracChangeset for help on using the changeset viewer.