Changeset 16442


Ignore:
Timestamp:
10/17/13 10:41:16 (11 years ago)
Author:
Mathieu Morlighem
Message:

CHG: added extrusion solution

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

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/Makefile.am

    r16415 r16442  
    397397                                                                ./modules/ModelProcessorx/FreeSurfaceBase/CreateConstraintsFreeSurfaceBase.cpp\
    398398                                                                ./modules/ModelProcessorx/FreeSurfaceBase/CreateLoadsFreeSurfaceBase.cpp\
    399                                                                 ./analyses/masstransport_core.cpp
     399                                                                ./modules/ModelProcessorx/ExtrudeFromBase/UpdateElementsExtrudeFromBase.cpp\
     400                                                                ./modules/ModelProcessorx/ExtrudeFromBase/CreateNodesExtrudeFromBase.cpp \
     401                                                                ./modules/ModelProcessorx/ExtrudeFromBase/CreateConstraintsExtrudeFromBase.cpp\
     402                                                                ./modules/ModelProcessorx/ExtrudeFromBase/CreateLoadsExtrudeFromBase.cpp\
     403                                                                ./modules/ModelProcessorx/ExtrudeFromTop/UpdateElementsExtrudeFromTop.cpp\
     404                                                                ./modules/ModelProcessorx/ExtrudeFromTop/CreateNodesExtrudeFromTop.cpp \
     405                                                                ./modules/ModelProcessorx/ExtrudeFromTop/CreateConstraintsExtrudeFromTop.cpp\
     406                                                                ./modules/ModelProcessorx/ExtrudeFromTop/CreateLoadsExtrudeFromTop.cpp\
     407                                                                ./analyses/masstransport_core.cpp\
     408                                                                ./analyses/extrudefrombase_core.cpp\
     409                                                                ./analyses/extrudefromtop_core.cpp
    400410
    401411#}}}
  • issm/trunk-jpl/src/c/analyses/AnalysisConfiguration.cpp

    r16181 r16442  
    121121
    122122                case TransientSolutionEnum:
    123                         numanalyses=11;
     123                        numanalyses=13;
    124124                        analyses=xNew<int>(numanalyses);
    125125                        analyses[ 0]=StressbalanceAnalysisEnum;
     
    134134                        analyses[ 9]=FreeSurfaceBaseAnalysisEnum;
    135135                        analyses[10]=FreeSurfaceTopAnalysisEnum;
     136                        analyses[11]=ExtrudeFromBaseAnalysisEnum;
     137                        analyses[12]=ExtrudeFromTopAnalysisEnum;
    136138                        break;
    137139
  • issm/trunk-jpl/src/c/analyses/analyses.h

    r16371 r16442  
    3030void controltao_core(FemModel* femmodel);
    3131void masstransport_core(FemModel* femmodel);
     32void extrudefrombase_core(FemModel* femmodel);
     33void extrudefromtop_core(FemModel* femmodel);
    3234void balancethickness_core(FemModel* femmodel);
    3335void balancevelocity_core(FemModel* femmodel);
  • issm/trunk-jpl/src/c/analyses/masstransport_core.cpp

    r16363 r16442  
    1313
    1414        /*parameters: */
    15         int   i;
    16         bool  save_results;
    17         bool  issmbgradients,ispdd,isdelta18o,isFS,isfreesurface,dakota_analysis;
    18         int   solution_type;
     15        int    i;
     16        int    numoutputs,meshtype;
     17        bool   save_results;
     18        bool   issmbgradients,ispdd,isdelta18o,isFS,isfreesurface,dakota_analysis;
     19        int    solution_type;
    1920        char** requested_outputs = NULL;
    20         int   numoutputs        = 0;
    2121
    2222        /*activate configuration*/
     
    3333        femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
    3434        femmodel->parameters->FindParam(&numoutputs,MasstransportNumRequestedOutputsEnum);
     35        femmodel->parameters->FindParam(&meshtype,MeshTypeEnum);
    3536        if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,MasstransportRequestedOutputsEnum);
    3637
     
    5960                femmodel->SetCurrentConfiguration(FreeSurfaceBaseAnalysisEnum);
    6061                solutionsequence_linear(femmodel);
     62                if(meshtype==Mesh2DverticalEnum){
     63                        femmodel->parameters->SetParam(BedEnum,InputToExtrudeEnum);
     64                        extrudefrombase_core(femmodel);
     65                }
    6166                femmodel->SetCurrentConfiguration(FreeSurfaceTopAnalysisEnum);
    6267                solutionsequence_linear(femmodel);
     68                if(meshtype==Mesh2DverticalEnum){
     69                        femmodel->parameters->SetParam(SurfaceEnum,InputToExtrudeEnum);
     70                        extrudefromtop_core(femmodel);
     71                }
    6372        }
    6473        else{
     
    7887
    7988        /*Free ressources:*/
    80         if(numoutputs){ for (i=0;i<numoutputs;i++){char* string=requested_outputs[i];xDelete<char>(string);} xDelete<char*>(requested_outputs);}
     89        if(numoutputs){for(int i=0;i<numoutputs;i++){char* string=requested_outputs[i];xDelete<char>(string);} xDelete<char*>(requested_outputs);}
    8190}
  • issm/trunk-jpl/src/c/classes/Elements/Element.h

    r16388 r16442  
    127127                #endif
    128128
     129                virtual void UpdateConstraintsExtrudeFromBase(void)=0;
     130                virtual void UpdateConstraintsExtrudeFromTop(void)=0;
     131
    129132                #ifdef _HAVE_THERMAL_
    130133                virtual void UpdateBasalConstraintsEnthalpy(void)=0;
    131134                virtual void ComputeBasalMeltingrate(void)=0;
    132         virtual void DrainWaterfraction(void)=0;
     135                virtual void DrainWaterfraction(void)=0;
    133136                #endif
    134137
  • issm/trunk-jpl/src/c/classes/Elements/Penta.h

    r16388 r16442  
    330330                #endif
    331331
     332                void           UpdateConstraintsExtrudeFromBase(void){_error_("not implemented yet");};
     333                void           UpdateConstraintsExtrudeFromTop(void){_error_("not implemented yet");};
    332334                #ifdef _HAVE_THERMAL_
    333335                ElementMatrix* CreateKMatrixEnthalpy(void);
  • issm/trunk-jpl/src/c/classes/Elements/Seg.h

    r16434 r16442  
    124124                void        Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finitelement){_error_("not implemented yet");};
    125125                IssmDouble  TimeAdapt(){_error_("not implemented yet");};
     126                void UpdateConstraintsExtrudeFromBase(){_error_("not implemented");};
     127                void UpdateConstraintsExtrudeFromTop(){_error_("not implemented");};
    126128
    127129#ifdef _HAVE_RESPONSES_
  • issm/trunk-jpl/src/c/classes/Elements/Tria.cpp

    r16434 r16442  
    281281                        }
    282282                        break;
     283                case ExtrudeFromBaseAnalysisEnum: case ExtrudeFromTopAnalysisEnum:
     284                        return CreateKMatrixExtrusion();
    283285                #endif
    284286                #ifdef _HAVE_HYDROLOGY_
     
    493495                        }
    494496                        break;
     497                case ExtrudeFromBaseAnalysisEnum: case ExtrudeFromTopAnalysisEnum:
     498                        return NULL;
     499                        break;
    495500                #endif
    496501                #ifdef _HAVE_HYDROLOGY_
     
    17891794
    17901795        /*retrive parameters: */
    1791         int analysis_type;
     1796        int analysis_type,extrusioninput;
    17921797        parameters->FindParam(&analysis_type,AnalysisTypeEnum);
    17931798
     
    18711876                        InputUpdateFromSolutionOneDof(solution,BedEnum);
    18721877                        break;
     1878                case ExtrudeFromBaseAnalysisEnum: case ExtrudeFromTopAnalysisEnum:
     1879                        this->parameters->FindParam(&extrusioninput,InputToExtrudeEnum);
     1880                        InputUpdateFromSolutionOneDof(solution,extrusioninput);
     1881                        break;
    18731882                default:
    18741883                        _error_("analysis " << analysis_type << " (" << EnumToStringx(analysis_type) << ") not supported yet");
     
    29012910        /*Fill with IoModel*/
    29022911        this->InputUpdateFromIoModel(index,iomodel);
     2912}
     2913/*}}}*/
     2914/*FUNCTION Tria::UpdateConstraintsExtrudeFromBase{{{*/
     2915void  Tria::UpdateConstraintsExtrudeFromBase(void){
     2916
     2917        if(!HasEdgeOnBed()) return;
     2918
     2919        int extrusioninput;
     2920        int indices[2];
     2921        IssmDouble value;
     2922
     2923        this->parameters->FindParam(&extrusioninput,InputToExtrudeEnum);
     2924        Input* input = inputs->GetInput(extrusioninput); _assert_(extrusioninput);
     2925        this->EdgeOnBedIndices(&indices[0],&indices[1]);
     2926
     2927        GaussTria* gauss=new GaussTria();
     2928        for(int i=0;i<2;i++){
     2929                gauss->GaussNode(P1Enum,indices[i]);
     2930                input->GetInputValue(&value,gauss);
     2931                this->nodes[indices[i]]->ApplyConstraint(1,value);
     2932        }
     2933
     2934}
     2935/*}}}*/
     2936/*FUNCTION Tria::UpdateConstraintsExtrudeFromTop{{{*/
     2937void  Tria::UpdateConstraintsExtrudeFromTop(void){
     2938
     2939        if(!HasEdgeOnSurface()) return;
     2940
     2941        int extrusioninput;
     2942        int indices[2];
     2943        IssmDouble value;
     2944
     2945        this->parameters->FindParam(&extrusioninput,InputToExtrudeEnum);
     2946        Input* input = inputs->GetInput(extrusioninput); _assert_(extrusioninput);
     2947        this->EdgeOnSurfaceIndices(&indices[0],&indices[1]);
     2948
     2949        GaussTria* gauss=new GaussTria();
     2950        for(int i=0;i<2;i++){
     2951                gauss->GaussNode(P1Enum,indices[i]);
     2952                input->GetInputValue(&value,gauss);
     2953                this->nodes[indices[i]]->ApplyConstraint(1,value);
     2954        }
     2955
    29032956}
    29042957/*}}}*/
     
    72567309
    72577310#ifdef _HAVE_MASSTRANSPORT_
     7311/*FUNCTION Tria::CreateKMatrixExtrusion {{{*/
     7312ElementMatrix* Tria::CreateKMatrixExtrusion(void){
     7313
     7314        /*compute all stiffness matrices for this element*/
     7315        ElementMatrix* Ke1=CreateKMatrixExtrusionVolume();
     7316        ElementMatrix* Ke2=CreateKMatrixExtrusionSurface();
     7317        ElementMatrix* Ke3=CreateKMatrixExtrusionBed();
     7318        ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2,Ke3);
     7319
     7320        /*clean-up and return*/
     7321        delete Ke1;
     7322        delete Ke2;
     7323        delete Ke3;
     7324        return Ke;
     7325
     7326}
     7327/*}}}*/
     7328/*FUNCTION Tria::CreateKMatrixExtrusionVolume {{{*/
     7329ElementMatrix* Tria::CreateKMatrixExtrusionVolume(void){
     7330
     7331        /*Intermediaries */
     7332        IssmDouble  Jdet;
     7333        IssmDouble  xyz_list[NUMVERTICES][3];
     7334        IssmDouble  B[NDOF1][NUMVERTICES];
     7335        IssmDouble  Bprime[NDOF1][NUMVERTICES];
     7336        IssmDouble  DL_scalar;
     7337        GaussTria  *gauss=NULL;
     7338
     7339        /*Initialize Element matrix*/
     7340        ElementMatrix* Ke=new ElementMatrix(nodes,NUMVERTICES,this->parameters,NoneApproximationEnum);
     7341
     7342        /*Retrieve all inputs and parameters*/
     7343        GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
     7344
     7345        /* Start  looping on the number of gaussian points: */
     7346        gauss=new GaussTria(2);
     7347        for(int ig=gauss->begin();ig<gauss->end();ig++){
     7348
     7349                gauss->GaussPoint(ig);
     7350
     7351                GetJacobianDeterminant(&Jdet, &xyz_list[0][0],gauss);
     7352                GetBExtrusion(&B[0][0], &xyz_list[0][0], gauss);
     7353                GetNodalFunctions(&Bprime[0][0],gauss);
     7354
     7355                DL_scalar=gauss->weight*Jdet;
     7356
     7357                TripleMultiply(&B[0][0],1,NUMVERTICES,1,
     7358                                        &DL_scalar,1,1,0,
     7359                                        &Bprime[0][0],1,NUMVERTICES,0,
     7360                                        &Ke->values[0],1);
     7361        }
     7362
     7363        /*Clean up and return*/
     7364        delete gauss;
     7365        return Ke;
     7366}
     7367/*}}}*/
     7368/*FUNCTION Tria::CreateKMatrixExtrusionSurface {{{*/
     7369ElementMatrix* Tria::CreateKMatrixExtrusionSurface(void){
     7370
     7371        if (!HasEdgeOnSurface()) return NULL;
     7372
     7373        /*Constants*/
     7374        const int numdof=NDOF1*NUMVERTICES;
     7375
     7376        /*Intermediaries */
     7377        int indices[2];
     7378        IssmDouble xyz_list[NUMVERTICES][3];
     7379        IssmDouble xyz_list_seg[NUMVERTICES1D][3];
     7380        IssmDouble normal[3];
     7381        IssmDouble Jdet,DL_scalar;
     7382        IssmDouble basis[NUMVERTICES];
     7383        GaussTria *gauss=NULL;
     7384
     7385        /*Initialize Element matrix*/
     7386        ElementMatrix* Ke=new ElementMatrix(nodes,NUMVERTICES,this->parameters,NoneApproximationEnum);
     7387
     7388        /*Retrieve all inputs and parameters*/
     7389        GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
     7390
     7391        /*Get vertex indices that lie on bed*/
     7392        this->EdgeOnSurfaceIndices(&indices[0],&indices[1]);
     7393        for(int i=0;i<NUMVERTICES1D;i++) for(int j=0;j<2;j++) xyz_list_seg[i][j]=xyz_list[indices[i]][j];
     7394        GetSegmentNormal(&normal[0],xyz_list_seg);
     7395
     7396        /* Start  looping on the number of gaussian points: */
     7397        gauss=new GaussTria(indices[0],indices[1],2);
     7398        for(int ig=gauss->begin();ig<gauss->end();ig++){
     7399
     7400                gauss->GaussPoint(ig);
     7401
     7402                GetSegmentJacobianDeterminant(&Jdet,&xyz_list_seg[0][0],gauss);
     7403                GetNodalFunctions(&basis[0], gauss);
     7404
     7405                DL_scalar= - gauss->weight*Jdet*normal[1];
     7406
     7407                TripleMultiply( basis,1,numdof,1,
     7408                                        &DL_scalar,1,1,0,
     7409                                        basis,1,numdof,0,
     7410                                        &Ke->values[0],1);
     7411        }
     7412
     7413        /*Clean up and return*/
     7414        delete gauss;
     7415        return Ke;
     7416}
     7417/*}}}*/
     7418/*FUNCTION Tria::CreateKMatrixExtrusionBed {{{*/
     7419ElementMatrix* Tria::CreateKMatrixExtrusionBed(void){
     7420
     7421        if (!HasEdgeOnBed()) return NULL;
     7422
     7423        /*Constants*/
     7424        const int numdof=NDOF1*NUMVERTICES;
     7425
     7426        /*Intermediaries */
     7427        int indices[2];
     7428        IssmDouble xyz_list[NUMVERTICES][3];
     7429        IssmDouble xyz_list_seg[NUMVERTICES1D][3];
     7430        IssmDouble normal[3];
     7431        IssmDouble Jdet,DL_scalar;
     7432        IssmDouble basis[NUMVERTICES];
     7433        GaussTria *gauss=NULL;
     7434
     7435        /*Initialize Element matrix*/
     7436        ElementMatrix* Ke=new ElementMatrix(nodes,NUMVERTICES,this->parameters,NoneApproximationEnum);
     7437
     7438        /*Retrieve all inputs and parameters*/
     7439        GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
     7440
     7441        /*Get vertex indices that lie on bed*/
     7442        this->EdgeOnBedIndices(&indices[0],&indices[1]);
     7443        for(int i=0;i<NUMVERTICES1D;i++) for(int j=0;j<2;j++) xyz_list_seg[i][j]=xyz_list[indices[i]][j];
     7444        GetSegmentNormal(&normal[0],xyz_list_seg);
     7445
     7446        /* Start  looping on the number of gaussian points: */
     7447        gauss=new GaussTria(indices[0],indices[1],2);
     7448        for(int ig=gauss->begin();ig<gauss->end();ig++){
     7449
     7450                gauss->GaussPoint(ig);
     7451
     7452                GetSegmentJacobianDeterminant(&Jdet,&xyz_list_seg[0][0],gauss);
     7453                GetNodalFunctions(&basis[0], gauss);
     7454
     7455                DL_scalar= - gauss->weight*Jdet*normal[1];
     7456
     7457                TripleMultiply( basis,1,numdof,1,
     7458                                        &DL_scalar,1,1,0,
     7459                                        basis,1,numdof,0,
     7460                                        &Ke->values[0],1);
     7461        }
     7462
     7463        /*Clean up and return*/
     7464        delete gauss;
     7465        return Ke;
     7466}
     7467/*}}}*/
    72587468/*FUNCTION Tria::CreateKMatrixMasstransport {{{*/
    72597469ElementMatrix* Tria::CreateKMatrixMasstransport(void){
  • issm/trunk-jpl/src/c/classes/Elements/Tria.h

    r16434 r16442  
    193193                ElementMatrix* CreateKMatrixMasstransport_CG(void);
    194194                ElementMatrix* CreateKMatrixMasstransport_DG(void);
     195                ElementMatrix* CreateKMatrixExtrusion(void);
     196                ElementMatrix* CreateKMatrixExtrusionVolume(void);
     197                ElementMatrix* CreateKMatrixExtrusionSurface(void);
     198                ElementMatrix* CreateKMatrixExtrusionBed(void);
    195199                ElementMatrix* CreateKMatrixFreeSurfaceTop(void);
    196200                ElementMatrix* CreateKMatrixFreeSurfaceTop1D(void);
     
    278282                #endif
    279283
     284                void UpdateConstraintsExtrudeFromBase(void);
     285                void UpdateConstraintsExtrudeFromTop(void);
    280286                #ifdef _HAVE_THERMAL_
    281287                void UpdateBasalConstraintsEnthalpy(void){_error_("not implemented yet");};
  • issm/trunk-jpl/src/c/classes/Elements/TriaRef.cpp

    r16399 r16442  
    198198        /*Clean-up*/
    199199        xDelete<IssmDouble>(basis);
     200}
     201/*}}}*/
     202/*FUNCTION TriaRef::GetBExtrusion{{{*/
     203void TriaRef::GetBExtrusion(IssmDouble* B, IssmDouble* xyz_list, GaussTria* gauss){
     204        /*      Compute B  matrix. B=[dh1/dz dh2/dz dh3/dz dh4/dz dh5/dz dh6/dz];
     205                where hi is the interpolation function for node i.*/
     206
     207        /*Fetch number of nodes for this finite element*/
     208        int numnodes = this->NumberofNodes();
     209
     210        /*Get nodal functions derivatives*/
     211        IssmDouble* dbasis=xNew<IssmDouble>(2*numnodes);
     212        GetNodalFunctionsDerivatives(dbasis,xyz_list,gauss);
     213
     214        /*Build B: */
     215        for(int i=0;i<numnodes;i++){
     216                B[i] = dbasis[1*numnodes+i]; 
     217        }
     218
     219        /*Clean-up*/
     220        xDelete<IssmDouble>(dbasis);
    200221}
    201222/*}}}*/
  • issm/trunk-jpl/src/c/classes/Elements/TriaRef.h

    r16387 r16442  
    2323
    2424                /*Numerics*/
     25                void GetBExtrusion(IssmDouble* B_prime, IssmDouble* xyz_list, GaussTria* gauss);
    2526                void GetBFS(IssmDouble* B_prime, IssmDouble* xyz_list, GaussTria* gauss);
    2627                void GetBSSA(IssmDouble* B, IssmDouble* xyz_list, GaussTria* gauss);
  • issm/trunk-jpl/src/c/classes/FemModel.cpp

    r16388 r16442  
    587587}
    588588/*}}}*/
     589void FemModel::UpdateConstraintsExtrudeFromBasex(void){ /*{{{*/
     590
     591        for(int i=0;i<elements->Size();i++){
     592                Element* element=dynamic_cast<Element*>(elements->GetObjectByOffset(i));
     593                element->UpdateConstraintsExtrudeFromBase();
     594        }
     595
     596}
     597/*}}}*/
     598void FemModel::UpdateConstraintsExtrudeFromTopx(void){ /*{{{*/
     599
     600        for(int i=0;i<elements->Size();i++){
     601                Element* element=dynamic_cast<Element*>(elements->GetObjectByOffset(i));
     602                element->UpdateConstraintsExtrudeFromTop();
     603        }
     604
     605}
     606/*}}}*/
    589607#ifdef _HAVE_RESPONSES_
    590608void FemModel::MassFluxx(IssmDouble* pmass_flux){/*{{{*/
  • issm/trunk-jpl/src/c/classes/FemModel.h

    r16363 r16442  
    9696                void UpdateConstraintsx(void);
    9797                int  UpdateVertexPositionsx(void);
     98                void UpdateConstraintsExtrudeFromBasex();
     99                void UpdateConstraintsExtrudeFromTopx();
    98100                #ifdef _HAVE_HYDROLOGY_
    99101                void HydrologyTransferx(void);
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateDataSets.cpp

    r16228 r16442  
    175175                        CreateLoadsFreeSurfaceBase(ploads,iomodel);
    176176                        UpdateElementsFreeSurfaceBase(elements,iomodel,analysis_counter,analysis_type);
     177                        break;
     178                case ExtrudeFromBaseAnalysisEnum:
     179                        CreateNodesExtrudeFromBase(pnodes, iomodel);
     180                        CreateConstraintsExtrudeFromBase(pconstraints,iomodel);
     181                        CreateLoadsExtrudeFromBase(ploads,iomodel);
     182                        UpdateElementsExtrudeFromBase(elements,iomodel,analysis_counter,analysis_type);
     183                        break;
     184                case ExtrudeFromTopAnalysisEnum:
     185                        CreateNodesExtrudeFromTop(pnodes, iomodel);
     186                        CreateConstraintsExtrudeFromTop(pconstraints,iomodel);
     187                        CreateLoadsExtrudeFromTop(ploads,iomodel);
     188                        UpdateElementsExtrudeFromTop(elements,iomodel,analysis_counter,analysis_type);
    177189                        break;
    178190                #endif
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/DistributeNumDofs.cpp

    r16343 r16442  
    125125                        numdofs=1;
    126126                        break;
     127                case ExtrudeFromBaseAnalysisEnum:
     128                        numdofs=1;
     129                        break;
     130                case ExtrudeFromTopAnalysisEnum:
     131                        numdofs=1;
     132                        break;
    127133                case GiaAnalysisEnum:
    128134                        numdofs=1;
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.h

    r16388 r16442  
    6464void CreateParametersDamage(Parameters** pparameters,IoModel* iomodel,int solution_type,int analysis_type);
    6565#endif
     66
     67/*Extrude from base*/
     68void CreateNodesExtrudeFromBase(Nodes** pnodes,IoModel* iomodel);
     69void CreateConstraintsExtrudeFromBase(Constraints** pconstraints,IoModel* iomodel);
     70void CreateLoadsExtrudeFromBase(Loads** ploads, IoModel* iomodel);
     71void UpdateElementsExtrudeFromBase(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
     72
     73/*Extrude from top*/
     74void CreateNodesExtrudeFromTop(Nodes** pnodes,IoModel* iomodel);
     75void CreateConstraintsExtrudeFromTop(Constraints** pconstraints,IoModel* iomodel);
     76void CreateLoadsExtrudeFromTop(Loads** ploads, IoModel* iomodel);
     77void UpdateElementsExtrudeFromTop(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
    6678
    6779/*bed slope*/
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r16415 r16442  
    320320        FreeSurfaceBaseAnalysisEnum,
    321321        FreeSurfaceTopAnalysisEnum,
     322        ExtrudeFromBaseAnalysisEnum,
     323        ExtrudeFromTopAnalysisEnum,
    322324        SteadystateSolutionEnum,
    323325        SurfaceSlopeAnalysisEnum,
     
    379381        InputEnum,
    380382        IntInputEnum,
     383        InputToExtrudeEnum,
    381384        IntParamEnum,
    382385        IntVecParamEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r16415 r16442  
    326326                case FreeSurfaceBaseAnalysisEnum : return "FreeSurfaceBaseAnalysis";
    327327                case FreeSurfaceTopAnalysisEnum : return "FreeSurfaceTopAnalysis";
     328                case ExtrudeFromBaseAnalysisEnum : return "ExtrudeFromBaseAnalysis";
     329                case ExtrudeFromTopAnalysisEnum : return "ExtrudeFromTopAnalysis";
    328330                case SteadystateSolutionEnum : return "SteadystateSolution";
    329331                case SurfaceSlopeAnalysisEnum : return "SurfaceSlopeAnalysis";
     
    379381                case InputEnum : return "Input";
    380382                case IntInputEnum : return "IntInput";
     383                case InputToExtrudeEnum : return "InputToExtrude";
    381384                case IntParamEnum : return "IntParam";
    382385                case IntVecParamEnum : return "IntVecParam";
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r16415 r16442  
    332332              else if (strcmp(name,"FreeSurfaceBaseAnalysis")==0) return FreeSurfaceBaseAnalysisEnum;
    333333              else if (strcmp(name,"FreeSurfaceTopAnalysis")==0) return FreeSurfaceTopAnalysisEnum;
     334              else if (strcmp(name,"ExtrudeFromBaseAnalysis")==0) return ExtrudeFromBaseAnalysisEnum;
     335              else if (strcmp(name,"ExtrudeFromTopAnalysis")==0) return ExtrudeFromTopAnalysisEnum;
    334336              else if (strcmp(name,"SteadystateSolution")==0) return SteadystateSolutionEnum;
    335337              else if (strcmp(name,"SurfaceSlopeAnalysis")==0) return SurfaceSlopeAnalysisEnum;
     
    381383              else if (strcmp(name,"Element")==0) return ElementEnum;
    382384              else if (strcmp(name,"ElementResult")==0) return ElementResultEnum;
    383               else if (strcmp(name,"ExternalResult")==0) return ExternalResultEnum;
    384               else if (strcmp(name,"FileParam")==0) return FileParamEnum;
    385385         else stage=4;
    386386   }
    387387   if(stage==4){
    388               if (strcmp(name,"Input")==0) return InputEnum;
     388              if (strcmp(name,"ExternalResult")==0) return ExternalResultEnum;
     389              else if (strcmp(name,"FileParam")==0) return FileParamEnum;
     390              else if (strcmp(name,"Input")==0) return InputEnum;
    389391              else if (strcmp(name,"IntInput")==0) return IntInputEnum;
     392              else if (strcmp(name,"InputToExtrude")==0) return InputToExtrudeEnum;
    390393              else if (strcmp(name,"IntParam")==0) return IntParamEnum;
    391394              else if (strcmp(name,"IntVecParam")==0) return IntVecParamEnum;
     
    503506              else if (strcmp(name,"QmuTemperature")==0) return QmuTemperatureEnum;
    504507              else if (strcmp(name,"HydrologyWaterVx")==0) return HydrologyWaterVxEnum;
    505               else if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum;
    506               else if (strcmp(name,"StressTensor")==0) return StressTensorEnum;
    507               else if (strcmp(name,"StressTensorxx")==0) return StressTensorxxEnum;
    508508         else stage=5;
    509509   }
    510510   if(stage==5){
    511               if (strcmp(name,"StressTensorxy")==0) return StressTensorxyEnum;
     511              if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum;
     512              else if (strcmp(name,"StressTensor")==0) return StressTensorEnum;
     513              else if (strcmp(name,"StressTensorxx")==0) return StressTensorxxEnum;
     514              else if (strcmp(name,"StressTensorxy")==0) return StressTensorxyEnum;
    512515              else if (strcmp(name,"StressTensorxz")==0) return StressTensorxzEnum;
    513516              else if (strcmp(name,"StressTensoryy")==0) return StressTensoryyEnum;
Note: See TracChangeset for help on using the changeset viewer.