Changeset 17182


Ignore:
Timestamp:
01/28/14 11:38:03 (11 years ago)
Author:
Mathieu Morlighem
Message:

NEW: enabeling extrudefrombase for 3d meshes

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

Legend:

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

    r17181 r17182  
    145145        Input* vx_input=basalelement->GetInput(VxEnum); _assert_(vx_input);
    146146        Input* vy_input=NULL;
    147         if(dim>1){basalelement->GetInput(VyEnum); _assert_(vy_input);}
     147        if(dim>1){vy_input = basalelement->GetInput(VyEnum); _assert_(vy_input);}
    148148        h = basalelement->CharacteristicLength();
    149149
  • issm/trunk-jpl/src/c/analyses/FreeSurfaceTopAnalysis.cpp

    r17181 r17182  
    154154        Input* vx_input=topelement->GetInput(VxEnum); _assert_(vx_input);
    155155        Input* vy_input=NULL;
    156         if(dim>1){topelement->GetInput(VyEnum); _assert_(vy_input);}
     156        if(dim>1){vy_input = topelement->GetInput(VyEnum); _assert_(vy_input);}
    157157        h = topelement->CharacteristicLength();
    158158
  • issm/trunk-jpl/src/c/classes/Elements/Penta.cpp

    r17172 r17182  
    30533053}
    30543054/*}}}*/
     3055/*FUNCTION Penta::UpdateConstraintsExtrudeFromBase{{{*/
     3056void  Penta::UpdateConstraintsExtrudeFromBase(void){
     3057
     3058        if(!IsOnBed()) return;
     3059
     3060        int        extrusioninput;
     3061        IssmDouble value,isonbed;
     3062
     3063        this->parameters->FindParam(&extrusioninput,InputToExtrudeEnum);
     3064        Input* input = inputs->GetInput(extrusioninput);      _assert_(extrusioninput);
     3065        Input* onbed = inputs->GetInput(MeshVertexonbedEnum); _assert_(onbed);
     3066
     3067        GaussPenta* gauss=new GaussPenta();
     3068        for(int iv=0;iv<this->NumberofNodes();iv++){
     3069                gauss->GaussNode(this->element_type,iv);
     3070                onbed->GetInputValue(&isonbed,gauss);
     3071                if(isonbed==1.){
     3072                        input->GetInputValue(&value,gauss);
     3073                        this->nodes[iv]->ApplyConstraint(1,value);
     3074                }
     3075        }
     3076        delete gauss;
     3077
     3078}
     3079/*}}}*/
     3080/*FUNCTION Penta::UpdateConstraintsExtrudeFromTop{{{*/
     3081void  Penta::UpdateConstraintsExtrudeFromTop(void){
     3082
     3083        if(!IsOnSurface()) return;
     3084
     3085        int extrusioninput;
     3086        int indices[3]={3,4,5};
     3087        IssmDouble value;
     3088
     3089        this->parameters->FindParam(&extrusioninput,InputToExtrudeEnum);
     3090        Input* input = inputs->GetInput(extrusioninput); _assert_(extrusioninput);
     3091
     3092        GaussPenta* gauss=new GaussPenta();
     3093        for(int i=0;i<3;i++){
     3094                gauss->GaussNode(P1Enum,indices[i]);
     3095                input->GetInputValue(&value,gauss);
     3096                this->nodes[indices[i]]->ApplyConstraint(1,value);
     3097        }
     3098        delete gauss;
     3099
     3100}
     3101/*}}}*/
    30553102/*FUNCTION Penta::ValueP1OnGauss{{{*/
    30563103void Penta::ValueP1OnGauss(IssmDouble* pvalue,IssmDouble* values,Gauss* gauss){
  • issm/trunk-jpl/src/c/classes/Elements/Penta.h

    r17172 r17182  
    270270                #endif
    271271
    272                 void           UpdateConstraintsExtrudeFromBase(void){_error_("not implemented yet");};
    273                 void           UpdateConstraintsExtrudeFromTop(void){_error_("not implemented yet");};
     272                void           UpdateConstraintsExtrudeFromBase(void);
     273                void           UpdateConstraintsExtrudeFromTop(void);
    274274                /*}}}*/
    275275};
  • issm/trunk-jpl/src/c/cores/masstransport_core.cpp

    r17085 r17182  
    4848                femmodel->SetCurrentConfiguration(FreeSurfaceBaseAnalysisEnum);
    4949                solutionsequence_linear(femmodel);
    50                 if(meshtype==Mesh2DverticalEnum){
     50                if(meshtype!=Mesh2DhorizontalEnum){
    5151                        femmodel->parameters->SetParam(BedEnum,InputToExtrudeEnum);
    5252                        extrudefrombase_core(femmodel);
     
    5454                femmodel->SetCurrentConfiguration(FreeSurfaceTopAnalysisEnum);
    5555                solutionsequence_linear(femmodel);
    56                 if(meshtype==Mesh2DverticalEnum){
     56                if(meshtype!=Mesh2DhorizontalEnum){
    5757                        femmodel->parameters->SetParam(SurfaceEnum,InputToExtrudeEnum);
    5858                        extrudefromtop_core(femmodel);
Note: See TracChangeset for help on using the changeset viewer.