Changeset 5017


Ignore:
Timestamp:
08/06/10 10:53:27 (15 years ago)
Author:
seroussi
Message:

added ContrainMin function to avoid thickness to be lower than 1m in update geometry

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

Legend:

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

    r4995 r5017  
    348348}
    349349/*}}}*/
     350/*FUNCTION Inputs::ConstrainMin{{{1*/
     351void  Inputs::ConstrainMin(int constrain_enum, double minimum){
     352           
     353        Input* constrain_input=NULL;
     354        /*Find x and y inputs: */
     355        constrain_input=(Input*)this->GetInput(constrain_enum);
     356
     357        /*some checks: */
     358        if(!constrain_input) ISSMERROR(" input %s could not be found!",EnumAsString(constrain_enum));
     359
     360        /*Apply ContrainMin: */
     361        constrain_input->ConstrainMin(minimum);
     362}
     363/*}}}*/
    350364/*FUNCTION Inputs::GetInput{{{1*/
    351365Input* Inputs::GetInput(int enum_name){
  • issm/trunk/src/c/Container/Inputs.h

    r4967 r5017  
    3030                int     AddInput(Input* in_input);
    3131                void    ChangeEnum(int enumtype,int new_enumtype);
     32                void    ConstrainMin(int constrain_enum, double minimum);
    3233                int     DeleteInput(int enum_type);
    3334                void    DuplicateInput(int original_enum,int new_enum);
  • issm/trunk/src/c/objects/Elements/Penta.cpp

    r5016 r5017  
    19321932        double rho_ice,rho_water;
    19331933
     1934        /*Correct thickness*/
     1935        this->inputs->ConstrainMin(ThicknessEnum,1.0);
     1936
    19341937        /*If shelf: hydrostatic equilibrium*/
    19351938        if (this->GetShelf()){
     
    35033506
    35043507                        //compute ub
    3505                         constant_part=-1.58*pow((double)10.0,-(double)10.0)*rho_ice*gravity*thickness;
     3508                        constant_part=-0*1.58*pow((double)10.0,-(double)10.0)*rho_ice*gravity*thickness;
    35063509                        ub=constant_part*slope[0];
    35073510                        vb=constant_part*slope[1];
  • issm/trunk/src/c/objects/Elements/Tria.cpp

    r5016 r5017  
    22872287        double rho_ice,rho_water;
    22882288
     2289        /*Correct thickness*/
     2290        this->inputs->ConstrainMin(ThicknessEnum,1.0);
     2291
    22892292        /*If shelf: hydrostatic equilibrium*/
    22902293        if (this->GetShelf()){
  • issm/trunk/src/c/objects/Inputs/BoolInput.h

    r4927 r5017  
    5959                void ChangeEnum(int newenumtype);
    6060                void SquareMin(double* psquaremin, bool process_units,Parameters* parameters);
     61                void ConstrainMin(double minimum){ISSMERROR("not implemented yet");};
    6162                void Scale(double scale_factor);
    6263                void AXPY(Input* xinput,double scalar);
  • issm/trunk/src/c/objects/Inputs/DoubleInput.cpp

    r4931 r5017  
    205205}
    206206/*}}}*/
     207/*FUNCTION DoubleInput::ConstrainMin{{{1*/
     208void DoubleInput::ConstrainMin(double minimum){
     209        if (value<minimum) value=minimum;
     210}
     211/*}}}*/
    207212/*FUNCTION DoubleInput::AXPY{{{1*/
    208213void DoubleInput::AXPY(Input* xinput,double scalar){
  • issm/trunk/src/c/objects/Inputs/DoubleInput.h

    r4931 r5017  
    5858                void ChangeEnum(int newenumtype);
    5959                void SquareMin(double* psquaremin, bool process_units,Parameters* parameters);
     60                void ConstrainMin(double minimum);
    6061                void Scale(double scale_factor);
    6162                void AXPY(Input* xinput,double scalar);
  • issm/trunk/src/c/objects/Inputs/Input.h

    r4927 r5017  
    4141                virtual ElementResult* SpawnResult(int step, double time)=0;
    4242                virtual void SquareMin(double* psquaremin, bool process_units,Parameters* parameters)=0;
     43                virtual void ConstrainMin(double minimum)=0;
    4344                virtual void Scale(double scale_factor)=0;
    4445                virtual void AXPY(Input* xinput,double scalar)=0;
  • issm/trunk/src/c/objects/Inputs/IntInput.h

    r4927 r5017  
    5959                void ChangeEnum(int newenumtype);
    6060                void SquareMin(double* psquaremin, bool process_units,Parameters* parameters);
     61                void ConstrainMin(double minimum){ISSMERROR("not implemented yet");};
    6162                void Scale(double scale_factor);
    6263                void AXPY(Input* xinput,double scalar);
  • issm/trunk/src/c/objects/Inputs/PentaVertexInput.cpp

    r4927 r5017  
    429429}
    430430/*}}}*/
     431/*FUNCTION PentaVertexInput::ConstrainMin{{{1*/
     432void PentaVertexInput::ConstrainMin(double minimum){
     433       
     434        int i;
     435        const int numgrids=6;
     436
     437        for(i=0;i<numgrids;i++) if (values[i]<minimum) values[i]=minimum;
     438}
     439/*}}}*/
    431440/*FUNCTION PentaVertexInput::Scale{{{1*/
    432441void PentaVertexInput::Scale(double scale_factor){
  • issm/trunk/src/c/objects/Inputs/PentaVertexInput.h

    r4927 r5017  
    6060
    6161                void SquareMin(double* psquaremin, bool process_units,Parameters* parameters);
     62                void ConstrainMin(double minimum);
    6263                void Scale(double scale_factor);
    6364                void AXPY(Input* xinput,double scalar);
  • issm/trunk/src/c/objects/Inputs/TriaVertexInput.cpp

    r4927 r5017  
    281281}
    282282/*}}}*/
     283/*FUNCTION TriaVertexInput::ContrainMin{{{1*/
     284void TriaVertexInput::ConstrainMin(double minimum){
     285       
     286        int i;
     287        const int numgrids=3;
     288
     289        for(i=0;i<numgrids;i++) if (values[i]<minimum) values[i]=minimum;
     290}
     291/*}}}*/
    283292/*FUNCTION TriaVertexInput::Scale{{{1*/
    284293void TriaVertexInput::Scale(double scale_factor){
  • issm/trunk/src/c/objects/Inputs/TriaVertexInput.h

    r4927 r5017  
    6060
    6161                void SquareMin(double* psquaremin, bool process_units,Parameters* parameters);
     62                void ConstrainMin(double minimum);
    6263                void Scale(double scale_factor);
    6364                void AXPY(Input* xinput,double scalar);
Note: See TracChangeset for help on using the changeset viewer.