Changeset 5841


Ignore:
Timestamp:
09/16/10 10:32:45 (15 years ago)
Author:
Mathieu Morlighem
Message:

Prepared Penta for ElementMatrix

Location:
issm/trunk/src/c/objects/Elements
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified issm/trunk/src/c/objects/Elements/Penta.cpp

    r5823 r5841  
    687687void  Penta::CreateKMatrix(Mat Kgg, Mat Kff, Mat Kfs){
    688688
     689        /*retrive parameters: */
    689690        int analysis_type;
    690 
    691         /*retrive parameters: */
    692691        parameters->FindParam(&analysis_type,AnalysisTypeEnum);
    693692
    694         /*if debugging mode, check that all pointers exist*/
     693        /*Checks in debugging {{{2*/
    695694        ISSMASSERT(this->nodes && this->matice && this->matpar && this->neighbors && this->parameters && this->inputs);
     695        /*}}}*/
    696696
    697697        /*Just branch to the correct element stiffness matrix generator, according to the type of analysis we are carrying out: */
    698         if (analysis_type==DiagnosticHorizAnalysisEnum){
    699                 int approximation;
    700                 inputs->GetParameterValue(&approximation,ApproximationEnum);
    701                 if(approximation==MacAyealApproximationEnum){
    702                         CreateKMatrixDiagnosticMacAyeal( Kgg);
    703                 }
    704                 else if(approximation==PattynApproximationEnum){
    705                         CreateKMatrixDiagnosticPattyn( Kgg);
    706                 }
    707                 else if(approximation==StokesApproximationEnum){
    708                         CreateKMatrixDiagnosticStokes( Kgg);
    709                 }
    710                 else if(approximation==HutterApproximationEnum){
    711                         return;
    712                 }
    713                 else if(approximation==NoneApproximationEnum){
    714                         return;
    715                 }
    716                 else if(approximation==MacAyealPattynApproximationEnum){
    717                         CreateKMatrixDiagnosticMacAyeal( Kgg);
    718                         CreateKMatrixDiagnosticPattyn( Kgg);
    719                         CreateKMatrixCouplingMacAyealPattyn( Kgg);
    720                 }
    721                 else if(approximation==PattynStokesApproximationEnum){
    722                         CreateKMatrixDiagnosticPattyn( Kgg);
    723                         CreateKMatrixDiagnosticStokes( Kgg);
    724                         CreateKMatrixCouplingPattynStokes( Kgg);
    725                 }
    726                 else ISSMERROR("Approximation %s not supported yet",EnumToString(approximation));
    727         }
    728         else if (analysis_type==AdjointHorizAnalysisEnum){
    729                 /*Same as diagnostic*/
    730                 int approximation;
    731                 inputs->GetParameterValue(&approximation,ApproximationEnum);
    732                 if(approximation==MacAyealApproximationEnum){
    733                         CreateKMatrixDiagnosticMacAyeal( Kgg);
    734                 }
    735                 else if(approximation==PattynApproximationEnum){
    736                         CreateKMatrixDiagnosticPattyn( Kgg);
    737                 }
    738                 else if(approximation==StokesApproximationEnum){
    739                         CreateKMatrixDiagnosticStokes( Kgg);
    740                 }
    741                 else if(approximation==NoneApproximationEnum){
    742                         return;
    743                 }
    744                 else ISSMERROR("Approximation %s not supported yet",EnumToString(approximation));
    745         }
    746         else if (analysis_type==DiagnosticHutterAnalysisEnum){
    747                 CreateKMatrixDiagnosticHutter( Kgg);
    748         }
    749         else if (analysis_type==DiagnosticVertAnalysisEnum){
    750                 CreateKMatrixDiagnosticVert( Kgg);
    751         }
    752         else if (analysis_type==BedSlopeXAnalysisEnum || analysis_type==SurfaceSlopeXAnalysisEnum || analysis_type==BedSlopeYAnalysisEnum || analysis_type==SurfaceSlopeYAnalysisEnum){
    753                 CreateKMatrixSlope( Kgg);
    754         }
    755         else if (analysis_type==PrognosticAnalysisEnum){
    756                 CreateKMatrixPrognostic( Kgg);
    757         }
    758         else if (analysis_type==BalancedthicknessAnalysisEnum){
    759                 CreateKMatrixBalancedthickness( Kgg);
    760         }
    761         else if (analysis_type==BalancedvelocitiesAnalysisEnum){
    762                 CreateKMatrixBalancedvelocities( Kgg);
    763         }
    764         else if (analysis_type==ThermalAnalysisEnum){
    765                 CreateKMatrixThermal( Kgg);
    766         }
    767         else if (analysis_type==MeltingAnalysisEnum){
    768                 CreateKMatrixMelting( Kgg);
    769         }
    770         else ISSMERROR("analysis %i (%s) not supported yet",analysis_type,EnumToString(analysis_type));
    771 
     698        switch(analysis_type){
     699                case DiagnosticHorizAnalysisEnum: case AdjointHorizAnalysisEnum:
     700                        CreateKMatrixDiagnosticHoriz(Kgg);
     701                        break;
     702                case DiagnosticHutterAnalysisEnum:
     703                        CreateKMatrixDiagnosticHutter( Kgg);
     704                        break;
     705                case DiagnosticVertAnalysisEnum:
     706                        CreateKMatrixDiagnosticVert( Kgg);
     707                        break;
     708                case BedSlopeXAnalysisEnum: case SurfaceSlopeXAnalysisEnum: case BedSlopeYAnalysisEnum: case SurfaceSlopeYAnalysisEnum:
     709                        CreateKMatrixSlope( Kgg);
     710                        break;
     711                case PrognosticAnalysisEnum:
     712                        CreateKMatrixPrognostic( Kgg);
     713                        break;
     714                case BalancedthicknessAnalysisEnum:
     715                        CreateKMatrixBalancedthickness( Kgg);
     716                        break;
     717                case BalancedvelocitiesAnalysisEnum:
     718                        CreateKMatrixBalancedvelocities( Kgg);
     719                        break;
     720                case ThermalAnalysisEnum:
     721                        CreateKMatrixThermal( Kgg);
     722                        break;
     723                case MeltingAnalysisEnum:
     724                        CreateKMatrixMelting( Kgg);
     725                        break;
     726                default:
     727                        ISSMERROR("analysis %i (%s) not supported yet",analysis_type,EnumToString(analysis_type));
     728        }
    772729}
    773730/*}}}*/
     
    22282185}
    22292186/*}}}*/
     2187/*FUNCTION Penta::CreateKMatrixDiagnosticHoriz {{{1*/
     2188void  Penta::CreateKMatrixDiagnosticHoriz(Mat Kgg){
     2189
     2190        int approximation;
     2191        inputs->GetParameterValue(&approximation,ApproximationEnum);
     2192
     2193        switch(approximation){
     2194                case MacAyealApproximationEnum:
     2195                        CreateKMatrixDiagnosticMacAyeal( Kgg);
     2196                        break;
     2197                case PattynApproximationEnum:
     2198                        CreateKMatrixDiagnosticPattyn( Kgg);
     2199                        break;
     2200                case StokesApproximationEnum:
     2201                        CreateKMatrixDiagnosticStokes( Kgg);
     2202                        break;
     2203                case HutterApproximationEnum:
     2204                        break;
     2205                case NoneApproximationEnum:
     2206                        break;
     2207                case MacAyealPattynApproximationEnum:
     2208                        CreateKMatrixDiagnosticMacAyeal( Kgg);
     2209                        CreateKMatrixDiagnosticPattyn( Kgg);
     2210                        CreateKMatrixCouplingMacAyealPattyn( Kgg);
     2211                        break;
     2212                case PattynStokesApproximationEnum:
     2213                        CreateKMatrixDiagnosticPattyn( Kgg);
     2214                        CreateKMatrixDiagnosticStokes( Kgg);
     2215                        CreateKMatrixCouplingPattynStokes( Kgg);
     2216                        break;
     2217                default:
     2218                        ISSMERROR("Approximation %s not supported yet",EnumToString(approximation));
     2219        }
     2220}
     2221/*}}}*/
    22302222/*FUNCTION Penta::CreateKMatrixDiagnosticHutter{{{1*/
    22312223void  Penta::CreateKMatrixDiagnosticHutter(Mat Kgg){
  • TabularUnified issm/trunk/src/c/objects/Elements/Penta.h

    r5823 r5841  
    123123                void      CreateKMatrixCouplingMacAyealPattyn( Mat Kgg);
    124124                void      CreateKMatrixCouplingPattynStokes( Mat Kgg);
     125                void      CreateKMatrixDiagnosticHoriz( Mat Kgg);
    125126                void      CreateKMatrixDiagnosticHutter( Mat Kgg);
    126127                void      CreateKMatrixDiagnosticMacAyeal( Mat Kgg);
Note: See TracChangeset for help on using the changeset viewer.