Changeset 17584


Ignore:
Timestamp:
03/27/14 17:59:12 (11 years ago)
Author:
Mathieu Morlighem
Message:

NEW: fixing constraints at the bed for grounded free surface bed

Location:
issm/trunk-jpl
Files:
2 edited

Legend:

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

    r17555 r17584  
    366366}/*}}}*/
    367367void FreeSurfaceBaseAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
    368         /*Default, do nothing*/
    369         return;
    370 }/*}}}*/
     368
     369        /*Intermediary*/
     370        IssmDouble phi,isonbed,base;
     371
     372        for(int i=0;i<femmodel->elements->Size();i++){
     373
     374                Element* element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i));
     375                if(!element->IsOnBed()) continue;
     376
     377                int             numnodes = element->GetNumberOfNodes();
     378                Input* groundedice_input = element->GetInput(MaskGroundediceLevelsetEnum);  _assert_(groundedice_input);
     379                Input* onbed_input       = element->GetInput(MeshVertexonbedEnum);          _assert_(onbed_input);
     380                Input* base_input        = element->GetInput(BaseEnum);                     _assert_(base_input);
     381
     382                Gauss* gauss=element->NewGauss();
     383                for(int iv=0;iv<numnodes;iv++){
     384                        gauss->GaussNode(element->GetElementType(),iv);
     385                        onbed_input->GetInputValue(&isonbed,gauss);
     386                        if(isonbed==1.){
     387                                groundedice_input->GetInputValue(&phi,gauss);
     388                                if(phi>=0.){
     389                                        base_input->GetInputValue(&base,gauss);
     390                                        element->nodes[iv]->ApplyConstraint(1,base);
     391                                }
     392                        }
     393                }
     394                delete gauss;
     395        }
     396}/*}}}*/
Note: See TracChangeset for help on using the changeset viewer.