Changeset 17431


Ignore:
Timestamp:
03/14/14 11:22:55 (11 years ago)
Author:
jbondzio
Message:

ADD: coupling LSM - SIA flow model. Use this as a template for coupling LSM to an analysis.

File:
1 edited

Legend:

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

    r17348 r17431  
    1919        /*Fetch data needed: */
    2020        bool   isSIA;
     21        bool   islevelset;
    2122        iomodel->Constant(&isSIA,FlowequationIsSIAEnum);
     23        iomodel->Constant(&islevelset,TransientIslevelsetEnum);
    2224
    2325        /*Now, is the flag SIA on? otherwise, do nothing: */
     
    3840        iomodel->FetchDataToInput(elements,ThicknessEnum);
    3941        iomodel->FetchDataToInput(elements,FrictionCoefficientEnum);
     42        if(islevelset){
     43                iomodel->FetchDataToInput(elements,IceMaskNodeActivationEnum);
     44                if(iomodel->meshtype!=Mesh2DhorizontalEnum)
     45                        iomodel->FetchDataToInput(elements,MeshVertexonbedEnum); // required for updating active nodes
     46        }
    4047
    4148        /*Free data: */
     
    150157}/*}}}*/
    151158ElementMatrix* StressbalanceSIAAnalysis::CreateKMatrix(Element* element){/*{{{*/
     159
     160        /* Check if ice in element */
     161        if(!element->IsIceInElement()) return NULL;
     162
    152163        int meshtype;
    153164        element->FindParam(&meshtype,MeshTypeEnum);
     
    162173ElementMatrix* StressbalanceSIAAnalysis::CreateKMatrix2D(Element* element){/*{{{*/
    163174
     175        /* Check if ice in element */
     176        if(!element->IsIceInElement()) return NULL;
     177
    164178        /*Intermediaries */
    165179        IssmDouble connectivity;
     
    180194}/*}}}*/
    181195ElementMatrix* StressbalanceSIAAnalysis::CreateKMatrix3D(Element* element){/*{{{*/
     196
     197        /* Check if ice in element */
     198        if(!element->IsIceInElement()) return NULL;
    182199
    183200        /*Intermediaries */
     
    244261ElementVector* StressbalanceSIAAnalysis::CreatePVector(Element* element){/*{{{*/
    245262
     263        /* Check if ice in element */
     264        if(!element->IsIceInElement()) return NULL;
     265
    246266        int meshtype;
    247267        element->FindParam(&meshtype,MeshTypeEnum);
     
    255275}/*}}}*/
    256276ElementVector* StressbalanceSIAAnalysis::CreatePVector2D(Element* element){/*{{{*/
     277
     278        /* Check if ice in element */
     279        if(!element->IsIceInElement()) return NULL;
    257280
    258281        /*Intermediaries */
     
    326349}/*}}}*/
    327350ElementVector* StressbalanceSIAAnalysis::CreatePVector3D(Element* element){/*{{{*/
     351
     352        /* Check if ice in element */
     353        if(!element->IsIceInElement()) return NULL;
    328354
    329355        /*Intermediaries */
     
    550576}/*}}}*/
    551577void StressbalanceSIAAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
    552         /*Default, do nothing*/
     578
     579        bool islevelset;
     580        femmodel->parameters->FindParam(&islevelset,TransientIslevelsetEnum);
     581        if(islevelset){
     582                _printf0_("   Updating active and non-active nodes for StressbalanceSIAAnalysis \n");
     583                SetActiveNodesLSMx(femmodel);
     584        }
    553585        return;
    554586}/*}}}*/
Note: See TracChangeset for help on using the changeset viewer.