Changeset 16833


Ignore:
Timestamp:
11/19/13 15:23:57 (11 years ago)
Author:
seroussi
Message:

CHG: added function to figure out if an element includes zero level set values

Location:
issm/trunk-jpl/src/c/classes/Elements
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/classes/Elements/Element.h

    r16832 r16833  
    151151                virtual int    VelocityInterpolation()=0;
    152152                virtual int    PressureInterpolation()=0;
     153                virtual bool   IsZeroLevelset(int levelset_enum)=0;
    153154
    154155                #ifdef _HAVE_RESPONSES_
  • issm/trunk-jpl/src/c/classes/Elements/Penta.cpp

    r16832 r16833  
    35393539int Penta::PressureInterpolation(void){
    35403540        return PentaRef::PressureInterpolation();
     3541}
     3542/*}}}*/
     3543/*FUNCTION Penta::IsZeroLevelset{{{*/
     3544bool Penta::IsZeroLevelset(int levelset_enum){
     3545
     3546        bool        iszerols;
     3547        IssmDouble  ls[NUMVERTICES];
     3548
     3549        /*Retrieve all inputs and parameters*/
     3550        GetInputListOnVertices(&ls[0],levelset_enum);
     3551
     3552        /*If the level set is awlays <=0, there is no ice front here*/
     3553        iszerols = false;
     3554        if(ls[0]>0. || ls[1]>0. || ls[2]>0.){
     3555                if(ls[0]*ls[1]<0. || ls[0]*ls[2]<0. || (ls[0]*ls[1]+ls[0]*ls[2]+ls[1]*ls[2]==0.)){
     3556                        iszerols = true;
     3557                }
     3558        }
     3559        return iszerols;
    35413560}
    35423561/*}}}*/
     
    87308749
    87318750        /*Intermediaries */
    8732         IssmDouble  ls[NUMVERTICES];
    87338751        IssmDouble  xyz_list[NUMVERTICES][3];
    87348752        bool        isfront;
    87358753
    8736         /*Retrieve all inputs and parameters*/
    8737         GetInputListOnVertices(&ls[0],MaskIceLevelsetEnum);
    8738 
    8739         /*If the level set is awlays <=0, there is no ice front here*/
    8740         isfront = false;
    8741         if(ls[0]>0. || ls[1]>0. || ls[2]>0.){
    8742                 if(ls[0]*ls[1]<0. || ls[0]*ls[2]<0. || (ls[0]*ls[1]+ls[0]*ls[2]+ls[1]*ls[2]==0.)){
    8743                         isfront = true;
    8744                 }
    8745         }
     8754        isfront=IsZeroLevelset(MaskIceLevelsetEnum);
    87468755
    87478756        /*If no front, return NULL*/
     
    88358844        /*Intermediaries */
    88368845        int         i;
    8837         IssmDouble  ls[NUMVERTICES];
    88388846        IssmDouble  xyz_list[NUMVERTICES][3];
    88398847        bool        isfront;
    88408848
    88418849        /*Retrieve all inputs and parameters*/
    8842         GetInputListOnVertices(&ls[0],MaskIceLevelsetEnum);
    8843 
    8844         /*If the level set is awlays <=0, there is no ice front here*/
    8845         isfront = false;
    8846         if(ls[0]>0. || ls[1]>0. || ls[2]>0.){
    8847                 if(ls[0]*ls[1]<0. || ls[0]*ls[2]<0. || (ls[0]*ls[1]+ls[0]*ls[2]+ls[1]*ls[2]==0.)){
    8848                         isfront = true;
    8849                 }
    8850         }
     8850        isfront=IsZeroLevelset(MaskIceLevelsetEnum);
    88518851
    88528852        /*If no front, return NULL*/
  • issm/trunk-jpl/src/c/classes/Elements/Penta.h

    r16832 r16833  
    113113                IssmDouble PureIceEnthalpy(IssmDouble pressure);
    114114                int    PressureInterpolation();
     115                bool   IsZeroLevelset(int levelset_enum);
    115116
    116117                void   ResultInterpolation(int* pinterpolation,int output_enum);
  • issm/trunk-jpl/src/c/classes/Elements/Seg.h

    r16832 r16833  
    146146                ElementVector* NewElementVector(int approximation_enum){_error_("not implemented yet");};
    147147                ElementMatrix* NewElementMatrix(int approximation_enum){_error_("not implemented yet");};
    148                 void           ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){_error_("not implemented yet");};
    149                 void           ViscosityFS(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){_error_("not implemented");};
    150                 void           ViscosityHO(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){_error_("not implemented");};
    151                 void           ViscositySSA(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){_error_("not implemented");};
     148                void        ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){_error_("not implemented yet");};
     149                void        ViscosityFS(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){_error_("not implemented");};
     150                void        ViscosityHO(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){_error_("not implemented");};
     151                void        ViscositySSA(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){_error_("not implemented");};
     152                bool        IsZeroLevelset(int levelset_enum){_error_("not implemented");};
     153
    152154                #ifdef _HAVE_THERMAL_
    153155                void UpdateBasalConstraintsEnthalpy(void){_error_("not implemented yet");};
  • issm/trunk-jpl/src/c/classes/Elements/Tria.cpp

    r16832 r16833  
    29592959}
    29602960/*}}}*/
     2961/*FUNCTION Tria::IsZeroLevelset{{{*/
     2962bool Tria::IsZeroLevelset(int levelset_enum){
     2963
     2964        bool iszerols;
     2965        IssmDouble ls[NUMVERTICES];
     2966
     2967        /*Retrieve all inputs and parameters*/
     2968        GetInputListOnVertices(&ls[0],levelset_enum);
     2969
     2970        /*If the level set is awlays <0, there is no ice front here*/
     2971        iszerols= false;
     2972        if(ls[0]>0. || ls[1]>0. || ls[2]>0.){
     2973                if(ls[0]*ls[1]<0. || ls[0]*ls[2]<0. || (ls[0]*ls[1]+ls[0]*ls[2]+ls[1]*ls[2]==0.)){
     2974                        iszerols= true;
     2975                }
     2976        }
     2977
     2978        return iszerols;
     2979}
     2980/*}}}*/
    29612981
    29622982#ifdef _HAVE_RESPONSES_
     
    39043924        /*Intermediaries */
    39053925        int         i;
    3906         IssmDouble  ls[NUMVERTICES];
    39073926        IssmDouble  xyz_list[NUMVERTICES][3];
    39083927        bool        isfront;
    39093928
    3910         /*Retrieve all inputs and parameters*/
    3911         GetInputListOnVertices(&ls[0],MaskIceLevelsetEnum);
    3912 
    39133929        /*If the level set is awlays <=0, there is no ice front here*/
    3914         isfront = false;
    3915         if(ls[0]>0. || ls[1]>0. || ls[2]>0.){
    3916                 if(ls[0]*ls[1]<0. || ls[0]*ls[2]<0. || (ls[0]*ls[1]+ls[0]*ls[2]+ls[1]*ls[2]==0.)){
    3917                         isfront = true;
    3918                 }
    3919         }
     3930        isfront=IsZeroLevelset(MaskIceLevelsetEnum);
    39203931
    39213932        /*If no front, return NULL*/
     
    41894200
    41904201        /*Intermediaries */
    4191         IssmDouble  ls[NUMVERTICES];
    41924202        IssmDouble  xyz_list[NUMVERTICES][3];
    41934203        bool        isfront;
    41944204
    4195         /*Retrieve all inputs and parameters*/
    4196         GetInputListOnVertices(&ls[0],MaskIceLevelsetEnum);
    4197 
    4198         /*If the level set is awlays <0, there is no ice front here*/
    4199         isfront = false;
    4200         if(ls[0]>0. || ls[1]>0. || ls[2]>0.){
    4201                 if(ls[0]*ls[1]<0. || ls[0]*ls[2]<0. || (ls[0]*ls[1]+ls[0]*ls[2]+ls[1]*ls[2]==0.)){
    4202                         isfront = true;
    4203                 }
    4204         }
     4205        /*Determine if there is an icefront in this element*/
     4206        isfront=IsZeroLevelset(MaskIceLevelsetEnum);
    42054207
    42064208        /*If no front, return NULL*/
  • issm/trunk-jpl/src/c/classes/Elements/Tria.h

    r16832 r16833  
    135135                void        Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finitelement);
    136136                IssmDouble  TimeAdapt();
     137                bool        IsZeroLevelset(int levelset_enum);
    137138
    138139                #ifdef _HAVE_RESPONSES_
Note: See TracChangeset for help on using the changeset viewer.