Changeset 26784


Ignore:
Timestamp:
01/14/22 10:53:05 (3 years ago)
Author:
Mathieu Morlighem
Message:

CHG: added new fake calving law that is proportional to ice speed

Location:
issm/trunk-jpl/src/c
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp

    r26640 r26784  
    116116                        iomodel->FetchDataToInput(inputs,elements,"md.calving.stress_threshold_floatingice",CalvingStressThresholdFloatingiceEnum);
    117117                        break;
     118                case CalvingTestEnum:
     119                        break;
    118120                default:
    119121                        _error_("Calving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
     
    167169                case CalvingDev2Enum:
    168170                        parameters->AddObject(iomodel->CopyConstantObject("md.calving.height_above_floatation",CalvingHeightAboveFloatationEnum));
     171                        break;
     172                case CalvingTestEnum:
     173                        parameters->AddObject(iomodel->CopyConstantObject("md.calving.speedfactor",CalvingTestSpeedfactorEnum));
    169174                        break;
    170175                default:
  • issm/trunk-jpl/src/c/classes/Elements/Element.h

    r26615 r26784  
    228228                virtual void             BasalNodeIndices(int* pnumindices,int** pindices,int finiteelement){_error_("not implemented yet");};
    229229                virtual void       CalvingRateVonmises(void){_error_("not implemented yet");};
     230                virtual void       CalvingRateTest(void){_error_("not implemented yet");};
    230231                virtual void       CalvingCrevasseDepth(void){_error_("not implemented yet");};
    231232                virtual void        CalvingRateLevermann(void)=0;
  • issm/trunk-jpl/src/c/classes/Elements/Tria.cpp

    r26780 r26784  
    398398        this->AddInput(CalvingCalvingrateEnum,&calvingrate[0],P1DGEnum);
    399399        this->AddInput(SigmaVMEnum,&sigma_vm[0],P1DGEnum);
     400}
     401/*}}}*/
     402void       Tria::CalvingRateTest(){/*{{{*/
     403
     404        IssmDouble  calvingratex[NUMVERTICES];
     405        IssmDouble  calvingratey[NUMVERTICES];
     406        IssmDouble  calvingrate[NUMVERTICES];
     407        IssmDouble  vx,vy;
     408
     409        /*Retrieve all inputs and parameters we will need*/
     410        IssmDouble coeff = parameters->FindParam(CalvingTestSpeedfactorEnum);
     411        Input* vx_input = this->GetInput(VxEnum); _assert_(vx_input);
     412        Input* vy_input = this->GetInput(VyEnum); _assert_(vy_input);
     413
     414        /* Start looping on the number of vertices: */
     415        GaussTria gauss;
     416        for(int iv=0;iv<NUMVERTICES;iv++){
     417                gauss.GaussVertex(iv);
     418
     419                /*Get velocity components and thickness*/
     420                vx_input->GetInputValue(&vx,&gauss);
     421                vy_input->GetInputValue(&vy,&gauss);
     422
     423                calvingratex[iv]= coeff*vx;
     424                calvingratey[iv]= coeff*vy;
     425                calvingrate[iv] = sqrt(calvingratex[iv]*calvingratex[iv] + calvingratey[iv]*calvingratey[iv]);
     426
     427        }
     428
     429        /*Add input*/
     430        this->AddInput(CalvingratexEnum,&calvingratex[0],P1DGEnum);
     431        this->AddInput(CalvingrateyEnum,&calvingratey[0],P1DGEnum);
     432        this->AddInput(CalvingCalvingrateEnum,&calvingrate[0],P1DGEnum);
    400433}
    401434/*}}}*/
     
    41944227                        meltingrate_input = this->GetInput(CalvingMeltingrateEnum);     _assert_(meltingrate_input);
    41954228                        break;
     4229                case CalvingTestEnum:
     4230                        calvingratex_input=this->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
     4231                        calvingratey_input=this->GetInput(CalvingrateyEnum); _assert_(calvingratey_input);
     4232                        break;
    41964233                default:
    41974234                        _error_("Calving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
     
    43514388                                        break;
    43524389                                  }
     4390                        case CalvingTestEnum:
     4391                                calvingratex_input->GetInputValue(&c[0],&gauss);
     4392                                if(dim==2) calvingratey_input->GetInputValue(&c[1],&gauss);
     4393                                for(i=0;i<dim;i++) m[i]=0.;
     4394                                break;
    43534395
    43544396                        default:
  • issm/trunk-jpl/src/c/classes/Elements/Tria.h

    r26487 r26784  
    5555                void        AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part);
    5656                void                    CalvingRateVonmises();
     57                void                    CalvingRateTest();
    5758                void        CalvingCrevasseDepth();
    5859                void                    CalvingRateLevermann();
  • issm/trunk-jpl/src/c/modules/Calvingx/Calvingx.cpp

    r25840 r26784  
    3535                        femmodel->ElementOperationx(&Element::CalvingRateVonmises);
    3636                        break;
     37                case CalvingTestEnum:
     38                        femmodel->ElementOperationx(&Element::CalvingRateTest);
     39                        break;
    3740                default:
    3841                        _error_("Caving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
  • issm/trunk-jpl/src/c/shared/Enum/Enum.vim

    r26750 r26784  
    105105syn keyword cConstant CalvingLawEnum
    106106syn keyword cConstant CalvingMinthicknessEnum
     107syn keyword cConstant CalvingTestSpeedfactorEnum
    107108syn keyword cConstant ConfigurationTypeEnum
    108109syn keyword cConstant ConstantsGEnum
     
    12211222syn keyword cConstant CalvingHabEnum
    12221223syn keyword cConstant CalvingLevermannEnum
     1224syn keyword cConstant CalvingTestEnum
    12231225syn keyword cConstant CalvingVonmisesEnum
    12241226syn keyword cConstant CfdragcoeffabsgradEnum
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r26750 r26784  
    9999        CalvingLawEnum,
    100100        CalvingMinthicknessEnum,
     101        CalvingTestSpeedfactorEnum,
    101102        ConfigurationTypeEnum,
    102103        ConstantsGEnum,
     
    12201221        CalvingHabEnum,
    12211222        CalvingLevermannEnum,
     1223        CalvingTestEnum,
    12221224        CalvingVonmisesEnum,
    12231225        CfdragcoeffabsgradEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r26750 r26784  
    107107                case CalvingLawEnum : return "CalvingLaw";
    108108                case CalvingMinthicknessEnum : return "CalvingMinthickness";
     109                case CalvingTestSpeedfactorEnum : return "CalvingTestSpeedfactor";
    109110                case ConfigurationTypeEnum : return "ConfigurationType";
    110111                case ConstantsGEnum : return "ConstantsG";
     
    12231224                case CalvingHabEnum : return "CalvingHab";
    12241225                case CalvingLevermannEnum : return "CalvingLevermann";
     1226                case CalvingTestEnum : return "CalvingTest";
    12251227                case CalvingVonmisesEnum : return "CalvingVonmises";
    12261228                case CfdragcoeffabsgradEnum : return "Cfdragcoeffabsgrad";
  • issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim

    r26750 r26784  
    9898syn keyword juliaConstC CalvingLawEnum
    9999syn keyword juliaConstC CalvingMinthicknessEnum
     100syn keyword juliaConstC CalvingTestSpeedfactorEnum
    100101syn keyword juliaConstC ConfigurationTypeEnum
    101102syn keyword juliaConstC ConstantsGEnum
     
    12141215syn keyword juliaConstC CalvingHabEnum
    12151216syn keyword juliaConstC CalvingLevermannEnum
     1217syn keyword juliaConstC CalvingTestEnum
    12161218syn keyword juliaConstC CalvingVonmisesEnum
    12171219syn keyword juliaConstC CfdragcoeffabsgradEnum
  • issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp

    r26495 r26784  
    267267                case 6: return CalvingCrevasseDepthEnum;
    268268                case 7: return CalvingDev2Enum;
     269                case 8: return CalvingTestEnum;
    269270                default: _error_("Marshalled Calving law code \""<<enum_in<<"\" not supported yet");
    270271        }
Note: See TracChangeset for help on using the changeset viewer.