Changeset 15613


Ignore:
Timestamp:
07/25/13 10:40:20 (12 years ago)
Author:
Mathieu Morlighem
Message:

CHG: UpdateElement provides the type of finite element

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

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/classes/Elements/Element.h

    r15433 r15613  
    6363                virtual void   ListResultsInfo(int** results_enums,int** results_size,IssmDouble** results_times,int** results_steps,int* num_results)=0;
    6464                virtual void   DeleteResults(void)=0;
    65                 virtual void   Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type)=0;
     65                virtual void   Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finite_element)=0;
    6666                virtual void   InputToResult(int enum_type,int step,IssmDouble time)=0;
    6767                virtual void   InputDuplicate(int original_enum,int new_enum)=0;
  • issm/trunk-jpl/src/c/classes/Elements/Penta.cpp

    r15595 r15613  
    30903090        return dt;
    30913091}/*}}}*/
    3092 /*FUNCTION Penta::Update(int index,IoModel* iomodel,int analysis_counter,int analysis_type) {{{*/
    3093 void Penta::Update(int index,IoModel* iomodel,int analysis_counter,int analysis_type){
     3092/*FUNCTION Penta::Update {{{*/
     3093void Penta::Update(int index,IoModel* iomodel,int analysis_counter,int analysis_type,int finiteelement_type){
    30943094
    30953095        /*Intermediaries*/
    30963096        int        i;
    3097         int        penta_type;
    30983097        int        penta_node_ids[6];
    30993098        int        penta_vertex_ids[6];
     
    31213120        /*}}}*/
    31223121
    3123         /*Recover element type*/
    3124         if ((analysis_type==PrognosticAnalysisEnum || analysis_type==BalancethicknessAnalysisEnum) && stabilization==3){
    3125                 /*P1 Discontinuous Galerkin*/
    3126                 penta_type=P1DGEnum;
    3127         }
    3128         else{
    3129                 /*P1 Continuous Galerkin*/
    3130                 penta_type=P1Enum;
    3131         }
    3132         this->SetElementType(penta_type,analysis_counter);
     3122        this->SetElementType(finiteelement_type,analysis_counter);
    31333123
    31343124        /*Recover vertices ids needed to initialize inputs*/
  • issm/trunk-jpl/src/c/classes/Elements/Penta.h

    r15567 r15613  
    112112                void   SmbGradients();
    113113                IssmDouble SurfaceArea(void);
    114                 void   Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type);
     114                void   Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finitelement);
    115115                int    NodalValue(IssmDouble* pvalue, int index, int natureofdataenum);
    116116                IssmDouble TimeAdapt();
  • issm/trunk-jpl/src/c/classes/Elements/Tria.cpp

    r15611 r15613  
    23192319}
    23202320/*}}}*/
    2321 /*FUNCTION Tria::Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type){{{*/
    2322 void Tria::Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type){ //i is the element index
     2321/*FUNCTION Tria::Update{{{*/
     2322void Tria::Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finitelement_type){
    23232323
    23242324        /*Intermediaries*/
    23252325        int        i,j;
    23262326        int        tria_vertex_ids[3];
    2327         int        tria_type;
    23282327        IssmDouble nodeinputs[3];
    23292328        IssmDouble yts;
     
    23472346
    23482347        /*Recover element type*/
    2349         if ((analysis_type==PrognosticAnalysisEnum && progstabilization==3) || (analysis_type==BalancethicknessAnalysisEnum && balancestabilization==3)){
    2350                 tria_type=P1DGEnum;
    2351         }
    2352         else if(analysis_type==DiagnosticHorizAnalysisEnum && fe_ssa==1){
    2353                 tria_type=P2Enum;
    2354         }
    2355         else{
    2356                 tria_type=P1Enum;
    2357         }
    2358         this->SetElementType(tria_type,analysis_counter);
     2348        this->SetElementType(finitelement_type,analysis_counter);
    23592349
    23602350        /*Recover vertices ids needed to initialize inputs*/
     
    23642354
    23652355        /*Recover nodes ids needed to initialize the node hook.*/
    2366         switch(tria_type){
     2356        switch(finitelement_type){
    23672357                case P1Enum:
    23682358                        numnodes        = 3;
     
    23902380                        break;
    23912381                default:
    2392                         _error_("Finite element "<<EnumToStringx(tria_type)<<" not supported yet");
     2382                        _error_("Finite element "<<EnumToStringx(finitelement_type)<<" not supported yet");
    23932383        }
    23942384
  • issm/trunk-jpl/src/c/classes/Elements/Tria.h

    r15567 r15613  
    112112                void     SmbGradients();
    113113                IssmDouble SurfaceArea(void);
    114                 void   Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type);
     114                void   Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finitelement);
    115115                IssmDouble TimeAdapt();
    116116
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/Balancethickness/UpdateElementsBalancethickness.cpp

    r15428 r15613  
    1111void    UpdateElementsBalancethickness(Elements* elements, IoModel* iomodel,int analysis_counter,int analysis_type){
    1212
     13        int    stabilization,finiteelement;
     14
     15        /*Fetch data needed: */
     16        iomodel->Constant(&stabilization,BalancethicknessStabilizationEnum);
     17
     18        /*Finite element type*/
     19        finiteelement = P1Enum;
     20        if(stabilization==3){
     21                finiteelement = P1DGEnum;
     22        }
     23
    1324        /*Update elements: */
    1425        int counter=0;
     
    1627                if(iomodel->my_elements[i]){
    1728                        Element* element=(Element*)elements->GetObjectByOffset(counter);
    18                         element->Update(i,iomodel,analysis_counter,analysis_type); //we need i to index into elements.
     29                        element->Update(i,iomodel,analysis_counter,analysis_type,finiteelement);
    1930                        counter++;
    2031                }
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/BedSlope/UpdateElementsBedSlope.cpp

    r15428 r15613  
    1616                if(iomodel->my_elements[i]){
    1717                        Element* element=(Element*)elements->GetObjectByOffset(counter);
    18                         element->Update(i,iomodel,analysis_counter,analysis_type); //we need i to index into elements.
     18                        element->Update(i,iomodel,analysis_counter,analysis_type,P1Enum);
    1919                        counter++;
    2020                }
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp

    r15595 r15613  
    1616void    UpdateElementsDiagnosticHoriz(Elements* elements, IoModel* iomodel,int analysis_counter,int analysis_type){
    1717
    18         int    materials_type;
    19         bool   isSSA,isL1L2,isHO,isFS;
     18        int    materials_type,finiteelement,temp;
     19        bool   isSSA,isL1L2,isHO,isFS,iscoupling;
    2020        bool   control_analysis;
    2121        bool   dakota_analysis;
     
    3333        if(!isSSA & !isL1L2 & !isHO & !isFS) return;
    3434
     35        /*Do we have coupling*/
     36        if( (isSSA?1.:0.) + (isL1L2?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)
     37         iscoupling = true;
     38        else
     39         iscoupling = false;
     40
     41        /*Get finite element type*/
     42        finiteelement = P1Enum;
     43        if(!iscoupling){
     44                if(isSSA){
     45                        iomodel->Constant(&temp,FlowequationFeSSAEnum);
     46                        switch(temp){
     47                                case 0 : finiteelement = P1Enum; break;
     48                                case 1 : finiteelement = P2Enum; break;
     49                                default: _error_("finite element "<<temp<<" not supported");
     50                        }
     51                }
     52                else if(isL1L2){
     53                        finiteelement = P1Enum;
     54                }
     55                else if(isHO){
     56                        finiteelement = P1Enum;
     57                }
     58                else if(isFS){
     59                        finiteelement = P1Enum;
     60                }
     61        }
     62
    3563        /*Fetch data needed: */
    3664        iomodel->FetchData(1,FlowequationElementEquationEnum);
     
    4169                if(iomodel->my_elements[i]){
    4270                        Element* element=(Element*)elements->GetObjectByOffset(counter);
    43                         element->Update(i,iomodel,analysis_counter,analysis_type); //we need i to index into elements.
     71                        element->Update(i,iomodel,analysis_counter,analysis_type,finiteelement);
    4472                        counter++;
    4573                }
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHutter/UpdateElementsDiagnosticHutter.cpp

    r15564 r15613  
    2525                if(iomodel->my_elements[i]){
    2626                        Element* element=(Element*)elements->GetObjectByOffset(counter);
    27                         element->Update(i,iomodel,analysis_counter,analysis_type); //we need i to index into elements.
     27                        element->Update(i,iomodel,analysis_counter,analysis_type,P1Enum);
    2828                        counter++;
    2929                }
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticVert/UpdateElementsDiagnosticVert.cpp

    r15428 r15613  
    1919                if(iomodel->my_elements[i]){
    2020                        Element* element=(Element*)elements->GetObjectByOffset(counter);
    21                         element->Update(i,iomodel,analysis_counter,analysis_type); //we need i to index into elements.
     21                        element->Update(i,iomodel,analysis_counter,analysis_type,P1Enum);
    2222                        counter++;
    2323                }
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/Enthalpy/UpdateElementsEnthalpy.cpp

    r15450 r15613  
    2222                if(iomodel->my_elements[i]){
    2323                        Element* element=(Element*)elements->GetObjectByOffset(counter);
    24                         element->Update(i,iomodel,analysis_counter,analysis_type); //we need i to index into elements.
     24                        element->Update(i,iomodel,analysis_counter,analysis_type,P1Enum);
    2525                        counter++;
    2626                }
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/Gia/UpdateElementsGia.cpp

    r15428 r15613  
    1616                if(iomodel->my_elements[i]){
    1717                        Element* element=(Element*)elements->GetObjectByOffset(counter);
    18                         element->Update(i,iomodel,analysis_counter,analysis_type); //we need i to index into elements.
     18                        element->Update(i,iomodel,analysis_counter,analysis_type,P1Enum);
    1919                        counter++;
    2020                }
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyDCEfficient/UpdateElementsHydrologyDCEfficient.cpp

    r15428 r15613  
    2727                if(iomodel->my_elements[i]){
    2828                        Element* element=(Element*)elements->GetObjectByOffset(counter);
    29                         element->Update(i,iomodel,analysis_counter,analysis_type); //we need i to index into elements.
     29                        element->Update(i,iomodel,analysis_counter,analysis_type,P1Enum);
    3030                        counter++;
    3131                }
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyDCInefficient/UpdateElementsHydrologyDCInefficient.cpp

    r15428 r15613  
    2828                if(iomodel->my_elements[i]){
    2929                        Element* element=(Element*)elements->GetObjectByOffset(counter);
    30                         element->Update(i,iomodel,analysis_counter,analysis_type); //we need i to index into elements.
     30                        element->Update(i,iomodel,analysis_counter,analysis_type,P1Enum);
    3131                        counter++;
    3232                }
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyShreve/UpdateElementsHydrologyShreve.cpp

    r15428 r15613  
    2424                if(iomodel->my_elements[i]){
    2525                        Element* element=(Element*)elements->GetObjectByOffset(counter);
    26                         element->Update(i,iomodel,analysis_counter,analysis_type); //we need i to index into elements.
     26                        element->Update(i,iomodel,analysis_counter,analysis_type,P1Enum);
    2727                        counter++;
    2828                }
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/Melting/UpdateElementsMelting.cpp

    r15428 r15613  
    1919                if(iomodel->my_elements[i]){
    2020                        Element* element=(Element*)elements->GetObjectByOffset(counter);
    21                         element->Update(i,iomodel,analysis_counter,analysis_type); //we need i to index into elements.
     21                        element->Update(i,iomodel,analysis_counter,analysis_type,P1Enum);
    2222                        counter++;
    2323                }
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp

    r15450 r15613  
    1111void    UpdateElementsPrognostic(Elements* elements, IoModel* iomodel,int analysis_counter,int analysis_type){
    1212
    13         int    stabilization;
     13        int    stabilization,finiteelement;
    1414        bool   dakota_analysis;
    1515        bool   issmbgradients;
     
    2424        iomodel->Constant(&issmbgradients,SurfaceforcingsIssmbgradientsEnum);
    2525
     26        /*Finite element type*/
     27        finiteelement = P1Enum;
     28        if(stabilization==3){
     29                finiteelement = P1DGEnum;
     30        }
     31
    2632        /*Update elements: */
    2733        int counter=0;
     
    2935                if(iomodel->my_elements[i]){
    3036                        Element* element=(Element*)elements->GetObjectByOffset(counter);
    31                         element->Update(i,iomodel,analysis_counter,analysis_type); //we need i to index into elements.
     37                        element->Update(i,iomodel,analysis_counter,analysis_type,finiteelement);
    3238                        counter++;
    3339                }
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/SurfaceSlope/UpdateElementsSurfaceSlope.cpp

    r15428 r15613  
    1616                if(iomodel->my_elements[i]){
    1717                        Element* element=(Element*)elements->GetObjectByOffset(counter);
    18                         element->Update(i,iomodel,analysis_counter,analysis_type); //we need i to index into elements.
     18                        element->Update(i,iomodel,analysis_counter,analysis_type,P1Enum);
    1919                        counter++;
    2020                }
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp

    r15428 r15613  
    1919                if(iomodel->my_elements[i]){
    2020                        Element* element=(Element*)elements->GetObjectByOffset(counter);
    21                         element->Update(i,iomodel,analysis_counter,analysis_type); //we need i to index into elements.
     21                        element->Update(i,iomodel,analysis_counter,analysis_type,P1Enum);
    2222                        counter++;
    2323                }
Note: See TracChangeset for help on using the changeset viewer.