Changeset 14652


Ignore:
Timestamp:
04/19/13 09:43:49 (12 years ago)
Author:
seroussi
Message:

NEW: added grounding line with more gauss points

Location:
issm/trunk-jpl/src
Files:
1 added
12 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h

    r14645 r14652  
    503503        SoftMigrationEnum,
    504504        SubelementMigrationEnum,
     505        SubelementMigration2Enum,
    505506        GLlevelsetEnum,
    506507        /*}}}*/
  • issm/trunk-jpl/src/c/classes/objects/Elements/Tria.cpp

    r14650 r14652  
    21672167        GetInputListOnVertices(&b[0],BedEnum);
    21682168        GetInputListOnVertices(&ba[0],BathymetryEnum);
    2169         if(migration_style==SubelementMigrationEnum) GetInputListOnVertices(&phi[0],GLlevelsetEnum);
     2169        if(migration_style==SubelementMigrationEnum || migration_style==SubelementMigration2Enum) GetInputListOnVertices(&phi[0],GLlevelsetEnum);
    21702170        rho_water=matpar->GetRhoWater();
    21712171        rho_ice=matpar->GetRhoIce();
     
    21892189                        if (bed_hydro>ba[i]){
    21902190                                /*Unground only if the element is connected to the ice shelf*/
    2191                                 if(migration_style==AgressiveMigrationEnum || migration_style==SubelementMigrationEnum){
     2191                                if(migration_style==AgressiveMigrationEnum || migration_style==SubelementMigrationEnum || migration_style==SubelementMigration2Enum){
    21922192                                        s[i]=(1-density)*h[i];
    21932193                                        b[i]=-density*h[i];
     
    22092209
    22102210        /*SubelementMigrationEnum: if one grounded, all grounded*/
    2211         if(migration_style==SubelementMigrationEnum){
     2211        if(migration_style==SubelementMigrationEnum || migration_style==SubelementMigration2Enum){
    22122212                for(i=0;i<NUMVERTICES;i++){
    22132213                        if(nodes[i]->IsGrounded()){
     
    22402240
    22412241        /*Recalculate phi*/
    2242         if(migration_style==SubelementMigrationEnum){
     2242        if(migration_style==SubelementMigrationEnum || migration_style==SubelementMigration2Enum){
    22432243                for(i=0;i<NUMVERTICES;i++) phi[i]=h[i]+ba[i]/density;
    22442244                this->inputs->AddInput(new TriaP1Input(GLlevelsetEnum,&phi[0]));
     
    31923192        int        i,j;
    31933193        int        analysis_type,migration_style;
     3194        int        gausspoints=2;
    31943195        IssmDouble MAXSLOPE  = .06; // 6 %
    31953196        IssmDouble MOUNTAINKEXPONENT = 10;
     
    32013202        IssmDouble DL_scalar;
    32023203        IssmDouble slope[2]  = {0.0,0.0};
     3204        IssmDouble gllevelset;
    32033205        IssmDouble xyz_list[NUMVERTICES][3];
    32043206        Friction  *friction = NULL;
     
    32163218        Input* vy_input=inputs->GetInput(VyEnum);                 _assert_(vy_input);
    32173219        Input* vz_input=inputs->GetInput(VzEnum);                 _assert_(vz_input);
     3220        Input* gllevelset_input=NULL;
    32183221        parameters->FindParam(&analysis_type,AnalysisTypeEnum);
    32193222
     
    32233226        /*Recover portion of element that is grounded*/
    32243227        if(migration_style==SubelementMigrationEnum) phi=this->GetGroundedPortion(&xyz_list[0][0]);
     3228        if(migration_style==SubelementMigration2Enum){
     3229                gllevelset_input=inputs->GetInput(GLlevelsetEnum); _assert_(gllevelset_input);
     3230                gausspoints=20;
     3231        }
    32253232
    32263233        /* Start  looping on the number of gaussian points: */
    3227         gauss=new GaussTria(2);
     3234        gauss=new GaussTria(gausspoints);
    32283235        for(int ig=gauss->begin();ig<gauss->end();ig++){
    32293236
     
    32373244                else friction->GetAlpha2(&alpha2, gauss,VxEnum,VyEnum,VzEnum);
    32383245                if(migration_style==SubelementMigrationEnum) alpha2=phi*alpha2;
     3246                if(migration_style==SubelementMigration2Enum){
     3247                        gllevelset_input->GetInputValue(&gllevelset, gauss);
     3248                        if(gllevelset<0) alpha2=0;
     3249                }
    32393250
    32403251                GetL(&L[0][0], &xyz_list[0][0], gauss,NDOF2);
  • issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp

    r14645 r14652  
    484484                case SoftMigrationEnum : return "SoftMigration";
    485485                case SubelementMigrationEnum : return "SubelementMigration";
     486                case SubelementMigration2Enum : return "SubelementMigration2";
    486487                case GLlevelsetEnum : return "GLlevelset";
    487488                case StokesSolverEnum : return "StokesSolver";
  • issm/trunk-jpl/src/c/modules/GroundinglineMigrationx/GroundinglineMigrationx.cpp

    r14378 r14652  
    2727
    2828        if(migration_style==NoneEnum) return;
    29         if(migration_style!=AgressiveMigrationEnum && migration_style!=SoftMigrationEnum && migration_style!=SubelementMigrationEnum) _error_(EnumToStringx(migration_style) << " not supported yet!");
     29        if(migration_style!=AgressiveMigrationEnum && migration_style!=SoftMigrationEnum && migration_style!=SubelementMigrationEnum && migration_style!=SubelementMigration2Enum) _error_(EnumToStringx(migration_style) << " not supported yet!");
    3030
    3131        if(migration_style==SoftMigrationEnum){
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/Transient/UpdateElementsTransient.cpp

    r14367 r14652  
    2626        iomodel->Constant(&migration_style,GroundinglineMigrationEnum);
    2727
    28         if(isgl==1 && migration_style==SubelementMigrationEnum){
     28        if(isgl==1 && (migration_style==SubelementMigrationEnum || migration_style==SubelementMigration2Enum)){
    2929
    3030                /*get parameters and constants: */
  • issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp

    r14645 r14652  
    494494              else if (strcmp(name,"SoftMigration")==0) return SoftMigrationEnum;
    495495              else if (strcmp(name,"SubelementMigration")==0) return SubelementMigrationEnum;
     496              else if (strcmp(name,"SubelementMigration2")==0) return SubelementMigration2Enum;
    496497              else if (strcmp(name,"GLlevelset")==0) return GLlevelsetEnum;
    497498              else if (strcmp(name,"StokesSolver")==0) return StokesSolverEnum;
     
    506507              else if (strcmp(name,"GroundinglineMigration")==0) return GroundinglineMigrationEnum;
    507508              else if (strcmp(name,"Gset")==0) return GsetEnum;
    508               else if (strcmp(name,"Index")==0) return IndexEnum;
    509509         else stage=5;
    510510   }
    511511   if(stage==5){
    512               if (strcmp(name,"Indexed")==0) return IndexedEnum;
     512              if (strcmp(name,"Index")==0) return IndexEnum;
     513              else if (strcmp(name,"Indexed")==0) return IndexedEnum;
    513514              else if (strcmp(name,"Intersect")==0) return IntersectEnum;
    514515              else if (strcmp(name,"Nodal")==0) return NodalEnum;
  • issm/trunk-jpl/src/c/solutions/transient_core.cpp

    r14538 r14652  
    156156                                InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,SurfaceforcingsPrecipitationEnum);
    157157                        }
    158                         if(isgroundingline && groundingline_migration==SubelementMigrationEnum){
     158                        if(isgroundingline && (groundingline_migration==SubelementMigrationEnum || groundingline_migration==SubelementMigration2Enum)){
    159159                                InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,GLlevelsetEnum);
    160160                        }
  • issm/trunk-jpl/src/m/classes/constants.m

    r14640 r14652  
    3333                function md = checkconsistency(obj,md,solution,analyses) % {{{
    3434
    35                         md = checkfield(md,'constants.g','>',0,'size',[1 1]);
     35%                       md = checkfield(md,'constants.g','>',0,'size',[1 1]);
    3636                        md = checkfield(md,'constants.yts','>',0,'size',[1 1]);
    3737                        md = checkfield(md,'constants.referencetemperature','size',[1 1]);
  • issm/trunk-jpl/src/m/classes/groundingline.m

    r14640 r14652  
    2929                function md = checkconsistency(obj,md,solution,analyses) % {{{
    3030
    31                         md = checkfield(md,'groundingline.migration','values',{'None' 'AgressiveMigration' 'SoftMigration' 'SubelementMigration'});
     31                        md = checkfield(md,'groundingline.migration','values',{'None' 'AgressiveMigration' 'SoftMigration' 'SubelementMigration','SubelementMigration2'});
    3232
    3333
  • issm/trunk-jpl/src/m/classes/groundingline.py

    r14640 r14652  
    4242        def checkconsistency(self,md,solution,analyses):    # {{{
    4343
    44                 md = checkfield(md,'groundingline.migration','values',['None','AgressiveMigration','SoftMigration','SubelementMigration'])
     44                md = checkfield(md,'groundingline.migration','values',['None','AgressiveMigration','SoftMigration','SubelementMigration','SubelementMigration2'])
    4545
    4646                if not strcmp(self.migration,'None'):
  • issm/trunk-jpl/src/m/enum/EnumDefinitions.py

    r14646 r14652  
    46794679        return StringToEnum('SubelementMigration')[0]
    46804680
     4681def SubelementMigration2Enum():
     4682        """
     4683        SUBELEMENTMIGRATION2ENUM - Enum of SubelementMigration2
     4684
     4685           Usage:
     4686              macro=SubelementMigration2Enum()
     4687        """
     4688
     4689        return StringToEnum('SubelementMigration2')[0]
     4690
    46814691def GLlevelsetEnum():
    46824692        """
     
    51275137        """
    51285138
    5129         return 511
    5130 
     5139        return 512
     5140
  • issm/trunk-jpl/src/m/enum/MaximumNumberOfEnums.m

    r14646 r14652  
    99%      macro=MaximumNumberOfEnums()
    1010
    11 macro=511;
     11macro=512;
Note: See TracChangeset for help on using the changeset viewer.