Changeset 16534


Ignore:
Timestamp:
10/23/13 15:43:20 (11 years ago)
Author:
Mathieu Morlighem
Message:

NEW: added analyses class so that the code becomes physics oriented

Location:
issm/trunk-jpl/src/c
Files:
55 added
1 deleted
7 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/CMakeLists.txt

    r16518 r16534  
    167167                                        ./toolkits/ToolkitOptions.cpp
    168168                                        ./modules/ModelProcessorx/ModelProcessorx.cpp
    169                                         ./modules/ModelProcessorx/DistributeNumDofs.cpp
    170169                                        ./modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp
    171170                                        ./modules/ModelProcessorx/NodesPartitioning.cpp
  • issm/trunk-jpl/src/c/Makefile.am

    r16529 r16534  
    242242                                        ./modules/ModelProcessorx/ModelProcessorx.h\
    243243                                        ./modules/ModelProcessorx/ModelProcessorx.cpp\
    244                                         ./modules/ModelProcessorx/DistributeNumDofs.cpp\
    245244                                        ./modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp\
    246245                                        ./modules/ModelProcessorx/NodesPartitioning.cpp\
     
    338337                                        ./main/EnvironmentInit.cpp\
    339338                                        ./main/EnvironmentFinalize.cpp\
     339                                        ./analyses/EnumToAnalysis.h\
     340                                        ./analyses/EnumToAnalysis.cpp\
     341                                        ./analyses/Analysis.h\
    340342                                        ./solutionsequences/solutionsequence_linear.cpp\
    341343                                        ./solutionsequences/solutionsequence_nonlinear.cpp\
     
    394396                                                                ./modules/ModelProcessorx/ExtrudeFromTop/CreateConstraintsExtrudeFromTop.cpp\
    395397                                                                ./modules/ModelProcessorx/ExtrudeFromTop/CreateLoadsExtrudeFromTop.cpp\
     398                                                                ./analyses/ExtrudeFromBaseAnalysis.h\
     399                                                                ./analyses/ExtrudeFromBaseAnalysis.cpp\
     400                                                                ./analyses/ExtrudeFromTopAnalysis.h\
     401                                                                ./analyses/ExtrudeFromTopAnalysis.cpp\
     402                                                                ./analyses/MasstransportAnalysis.h\
     403                                                                ./analyses/MasstransportAnalysis.cpp\
     404                                                                ./analyses/FreeSurfaceBaseAnalysis.h\
     405                                                                ./analyses/FreeSurfaceBaseAnalysis.cpp\
     406                                                                ./analyses/FreeSurfaceTopAnalysis.h\
     407                                                                ./analyses/FreeSurfaceTopAnalysis.cpp\
    396408                                                                ./cores/masstransport_core.cpp\
    397409                                                                ./cores/extrudefrombase_core.cpp\
     
    414426                                           ./modules/PostprocessingEnthalpyx/PostprocessingEnthalpyx.h\
    415427                                           ./modules/PostprocessingEnthalpyx/PostprocessingEnthalpyx.cpp\
     428                                                ./analyses/ThermalAnalysis.h\
     429                                                ./analyses/ThermalAnalysis.cpp\
     430                                                ./analyses/EnthalpyAnalysis.h\
     431                                                ./analyses/EnthalpyAnalysis.cpp\
     432                                                ./analyses/MeltingAnalysis.h\
     433                                                ./analyses/MeltingAnalysis.cpp\
    416434                                           ./cores/thermal_core.cpp\
    417435                                           ./solutionsequences/solutionsequence_thermal_nonlinear.cpp
     
    467485                                          ./cores/adjointbalancethickness_core.cpp\
    468486                                          ./cores/AdjointCorePointerFromSolutionEnum.cpp\
     487                                          ./analyses/AdjointBalancethicknessAnalysis.h\
     488                                          ./analyses/AdjointBalancethicknessAnalysis.cpp\
     489                                          ./analyses/AdjointHorizAnalysis.h\
     490                                          ./analyses/AdjointHorizAnalysis.cpp\
    469491                                          ./solutionsequences/solutionsequence_adjoint_linear.cpp
    470492
     
    486508                                                        ./modules/ModelProcessorx/HydrologyDCEfficient/CreateLoadsHydrologyDCEfficient.cpp \
    487509                                                        ./modules/ModelProcessorx/HydrologyDCEfficient/CreateParametersHydrologyDCEfficient.cpp \
     510                                                        ./analyses/HydrologyDCEfficientAnalysis.h\
     511                                                        ./analyses/HydrologyDCEfficientAnalysis.cpp\
     512                                                        ./analyses/HydrologyDCInefficientAnalysis.h\
     513                                                        ./analyses/HydrologyDCInefficientAnalysis.cpp\
     514                                                        ./analyses/HydrologyShreveAnalysis.h\
     515                                                        ./analyses/HydrologyShreveAnalysis.cpp\
    488516                                                        ./cores/hydrology_core.cpp\
    489517                                                        ./solutionsequences/solutionsequence_hydro_nonlinear.cpp
     
    503531                                              ./modules/ModelProcessorx/StressbalanceSIA/CreateConstraintsStressbalanceSIA.cpp \
    504532                                                        ./modules/ModelProcessorx/StressbalanceSIA/CreateLoadsStressbalanceSIA.cpp \
     533                                                        ./analyses/StressbalanceAnalysis.h\
     534                                                        ./analyses/StressbalanceAnalysis.cpp\
     535                                                        ./analyses/StressbalanceSIAAnalysis.h\
     536                                                        ./analyses/StressbalanceSIAAnalysis.cpp\
     537                                                        ./analyses/StressbalanceVerticalAnalysis.h\
     538                                                        ./analyses/StressbalanceVerticalAnalysis.cpp\
    505539                                                        ./cores/stressbalance_core.cpp\
    506540                                                        ./solutionsequences/solutionsequence_stokescoupling_nonlinear.cpp
     
    515549                                                 ./modules/ModelProcessorx/Balancevelocity/CreateConstraintsBalancevelocity.cpp\
    516550                                                 ./modules/ModelProcessorx/Balancevelocity/CreateLoadsBalancevelocity.cpp\
     551                                                 ./analyses/BalancevelocityAnalysis.h\
     552                                                 ./analyses/BalancevelocityAnalysis.cpp\
     553                                                 ./analyses/SmoothedSurfaceSlopeXAnalysis.h\
     554                                                 ./analyses/SmoothedSurfaceSlopeXAnalysis.cpp\
     555                                                 ./analyses/SmoothedSurfaceSlopeYAnalysis.h\
     556                                                 ./analyses/SmoothedSurfaceSlopeYAnalysis.cpp\
     557                                                 ./analyses/BalancethicknessAnalysis.h\
     558                                                 ./analyses/BalancethicknessAnalysis.cpp\
     559                                                 ./analyses/BalancethicknessSoftAnalysis.h\
     560                                                 ./analyses/BalancethicknessSoftAnalysis.cpp\
    517561                                                 ./cores/balancethickness_core.cpp \
    518562                                                 ./cores/balancevelocity_core.cpp \
     
    528572                                          ./modules/ModelProcessorx/L2ProjectionTop/CreateConstraintsL2ProjectionTop.cpp\
    529573                                          ./modules/ModelProcessorx/L2ProjectionTop/CreateLoadsL2ProjectionTop.cpp\
     574                                          ./analyses/L2ProjectionBaseAnalysis.h\
     575                                          ./analyses/L2ProjectionBaseAnalysis.cpp\
    530576                                          ./cores/surfaceslope_core.cpp\
    531577                                          ./cores/bedslope_core.cpp
     
    536582                                          ./modules/ModelProcessorx/MeshDeformation/CreateConstraintsMeshDeformation.cpp\
    537583                                          ./modules/ModelProcessorx/MeshDeformation/CreateLoadsMeshDeformation.cpp\
     584                                          ./analyses/MeshdeformationAnalysis.h\
     585                                          ./analyses/MeshdeformationAnalysis.cpp\
    538586                                          ./cores/meshdeformation_core.cpp
    539587#}}}
    540588#Gia sources  {{{
    541589gia_sources =  ./cores/gia_core.cpp\
     590                                        ./analyses/GiaAnalysis.h\
     591                                        ./analyses/GiaAnalysis.cpp\
    542592                                        ./modules/ModelProcessorx/Gia/UpdateElementsGia.cpp\
    543593                                        ./modules/ModelProcessorx/Gia/CreateNodesGia.cpp \
     
    558608#Damage sources  {{{
    559609damage_sources =  ./cores/damage_core.cpp\
    560                                         ./modules/ModelProcessorx/Damage/UpdateElementsDamage.cpp\
    561                                         ./modules/ModelProcessorx/Damage/CreateNodesDamage.cpp \
    562                                         ./modules/ModelProcessorx/Damage/CreateConstraintsDamage.cpp\
    563                                         ./modules/ModelProcessorx/Damage/CreateParametersDamage.cpp\
    564                                         ./modules/ModelProcessorx/Damage/CreateLoadsDamage.cpp\
    565                                         ./solutionsequences/solutionsequence_damage_nonlinear.cpp
     610                                                ./analyses/DamageEvolutionAnalysis.h\
     611                                                ./analyses/DamageEvolutionAnalysis.cpp\
     612                                                ./modules/ModelProcessorx/Damage/UpdateElementsDamage.cpp\
     613                                                ./modules/ModelProcessorx/Damage/CreateNodesDamage.cpp \
     614                                                ./modules/ModelProcessorx/Damage/CreateConstraintsDamage.cpp\
     615                                                ./modules/ModelProcessorx/Damage/CreateParametersDamage.cpp\
     616                                                ./modules/ModelProcessorx/Damage/CreateLoadsDamage.cpp\
     617                                                ./solutionsequences/solutionsequence_damage_nonlinear.cpp
    566618
    567619#}}}
  • issm/trunk-jpl/src/c/classes/Node.cpp

    r16529 r16534  
    1313#include "shared/shared.h"
    1414#include "modules/ModelProcessorx/ModelProcessorx.h"
     15#include "../analyses/analyses.h"
    1516/*}}}*/
    1617
     
    2122}
    2223/*}}}*/
    23 /*FUNCTION Node::Node(int node_id,int node_sid,int node_lid,int io_index, IoModel* iomodel,int analysis_type,int approximation) {{{*/
    24 Node::Node(int node_id,int node_sid,int node_lid,int io_index, IoModel* iomodel,int analysis_type,int in_approximation){
     24/*FUNCTION Node::Node(int node_id,int node_sid,int node_lid,int io_index, IoModel* iomodel,int analysis_enum,int approximation) {{{*/
     25Node::Node(int node_id,int node_sid,int node_lid,int io_index, IoModel* iomodel,int analysis_enum,int in_approximation){
    2526
    2627        /*Intermediary*/
    2728        int k,l;
     29        int *doftypes = NULL;
    2830
    2931        /*id: */
     
    3133        this->sid           = node_sid;
    3234        this->lid           = node_lid;
    33         this->analysis_type = analysis_type;
     35        this->analysis_enum = analysis_enum;
    3436
    3537        /*Initialize coord_system: Identity matrix by default*/
     
    3941        /*indexing:*/
    4042        this->indexingupdate = true;
    41         DistributeNumDofs(&this->indexing,analysis_type,in_approximation,iomodel->meshtype); //number of dofs per node
    42 
    43         if(analysis_type==StressbalanceAnalysisEnum)
     43
     44        Analysis* analysis = EnumToAnalysis(analysis_enum);
     45        int numdofs        = analysis->DofsPerNode(&doftypes,iomodel->meshtype,in_approximation);
     46        indexing.Init(numdofs,doftypes);
     47        xDelete<int>(doftypes);
     48        delete analysis;
     49
     50        if(analysis_enum==StressbalanceAnalysisEnum)
    4451         this->approximation=in_approximation;
    4552        else
     
    4855        /*Stressbalance Horiz*/
    4956        #ifdef _HAVE_STRESSBALANCE_
    50         if(analysis_type==StressbalanceAnalysisEnum){
     57        if(analysis_enum==StressbalanceAnalysisEnum){
    5158
    5259                /*Coordinate system provided, convert to coord_system matrix*/
     
    8592        /*2d solutions in 3d, we need to constrain all the nodes that are not on base*/
    8693        if(
    87                                 analysis_type==FreeSurfaceBaseAnalysisEnum ||
    88                                 analysis_type==MasstransportAnalysisEnum ||
    89                                 analysis_type==MeltingAnalysisEnum ||
    90                                 analysis_type==L2ProjectionBaseAnalysisEnum ||
    91                                 analysis_type==BalancethicknessAnalysisEnum ||
    92                                 analysis_type==HydrologyDCInefficientAnalysisEnum ||
    93                                 analysis_type==DamageEvolutionAnalysisEnum ||
    94                                 analysis_type==HydrologyDCEfficientAnalysisEnum
     94                                analysis_enum==FreeSurfaceBaseAnalysisEnum ||
     95                                analysis_enum==MasstransportAnalysisEnum ||
     96                                analysis_enum==MeltingAnalysisEnum ||
     97                                analysis_enum==L2ProjectionBaseAnalysisEnum ||
     98                                analysis_enum==BalancethicknessAnalysisEnum ||
     99                                analysis_enum==HydrologyDCInefficientAnalysisEnum ||
     100                                analysis_enum==DamageEvolutionAnalysisEnum ||
     101                                analysis_enum==HydrologyDCEfficientAnalysisEnum
    95102                                ){
    96103                if(iomodel->meshtype==Mesh3DEnum || iomodel->meshtype==Mesh2DverticalEnum){
     
    103110        }
    104111        if(
    105                                 analysis_type==FreeSurfaceTopAnalysisEnum ||
    106                                 analysis_type==L2ProjectionTopAnalysisEnum
     112                                analysis_enum==FreeSurfaceTopAnalysisEnum ||
     113                                analysis_enum==L2ProjectionTopAnalysisEnum
    107114                                ){
    108115                if(iomodel->meshtype==Mesh3DEnum || iomodel->meshtype==Mesh2DverticalEnum){
     
    130137        _printf_("   id : " << id << "\n");
    131138        _printf_("   sid: " << sid << "\n");
    132         _printf_("   analysis_type: " << EnumToStringx(analysis_type) << "\n");
     139        _printf_("   analysis_enum: " << EnumToStringx(analysis_enum) << "\n");
    133140        _printf_("   approximation: " << EnumToStringx(approximation) << "\n");
    134141        _printf_("   indexingupdate: " << indexingupdate << "\n");
     
    143150        _printf_("   id: " << id << "\n");
    144151        _printf_("   sid: " << sid << "\n");
    145         _printf_("   analysis_type: " << EnumToStringx(analysis_type) << "\n");
     152        _printf_("   analysis_enum: " << EnumToStringx(analysis_enum) << "\n");
    146153        _printf_("   approximation: " << EnumToStringx(approximation) << "\n");
    147154        _printf_("   indexingupdate: " << indexingupdate << "\n");
     
    367374#endif
    368375/*FUNCTION Node::InAnalysis{{{*/
    369 bool Node::InAnalysis(int in_analysis_type){
    370         if (in_analysis_type==this->analysis_type) return true;
     376bool Node::InAnalysis(int in_analysis_enum){
     377        if (in_analysis_enum==this->analysis_enum) return true;
    371378        else return false;
    372379}
  • issm/trunk-jpl/src/c/classes/Node.h

    r16233 r16534  
    3636                bool         indexingupdate;
    3737                DofIndexing  indexing;
    38                 int          analysis_type;
     38                int          analysis_enum;
    3939                IssmDouble   coord_system[3][3];
    4040
    4141                /*Node constructors, destructors*/
    4242                Node();
    43                 Node(int node_id,int node_sid,int node_lid,int io_index, IoModel* iomodel,int analysis_type,int approximation_in);
     43                Node(int node_id,int node_sid,int node_lid,int io_index, IoModel* iomodel,int analysis_enum,int approximation_in);
    4444                ~Node();
    4545
     
    5959                void  GetCoordinateSystem(IssmDouble* coord_system_out);
    6060#endif
    61                 bool  InAnalysis(int analysis_type);
     61                bool  InAnalysis(int analysis_enum);
    6262                int   GetApproximation();
    6363                int   GetNumberOfDofs(int approximation_enum,int setenum);
  • issm/trunk-jpl/src/c/cores/cores.h

    r16518 r16534  
    33 */
    44
    5 #ifndef _ANALYSES_H_
    6 #define _ANALYSES_H_
     5#ifndef _CORES_H_
     6#define _CORES_H_
    77
    88/*forward declarations: */
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.h

    r16529 r16534  
    170170void UpdateCounters(IoModel* iomodel,Nodes** pnodes,Loads** ploads, Constraints** pconstraints);
    171171
    172 /*Distribution of dofs: */
    173 void DistributeNumDofs(DofIndexing* index,int analysis_type,int node_type,int mesh_type);
    174 
    175172#endif
  • issm/trunk-jpl/src/c/shared/Enum/Synchronize.sh

    r16367 r16534  
    104104END
    105105#}}}
     106##Build EnumToAnalysis.cpp {{{
     107##Header
     108#cat <<END > $ISSM_DIR/src/c/analyses/EnumToAnalysis.cpp
     109#/*
     110#* \file EnumToAnalysis.cpp
     111#* \brief: output class depending on enum
     112#*
     113#*   WARNING: DO NOT MODIFY THIS FILE
     114#*            this file has been automatically generated by Synchronize.sh
     115#*            Please read README for more information
     116#*/
     117#
     118##include "./analyses.h"
     119##include "../shared/shared.h"
     120#
     121#Analysis* EnumToAnalysis(int analysis_enum){
     122#
     123#       switch(analysis_enum){
     124#END
     125##core
     126#cat temp | grep [a-z]Analysis | \
     127#       grep -v DefaultAnalysis | grep -v FlaimAnalysis | grep -v SurfaceSlopeAnalysis | grep -v BedSlopeAnalysis | \
     128#       awk '{print "\t\t#ifdef _HAVE_"toupper(substr($1,1,length($1)-12))"_\n\t\t" "case " $1" : return new " substr($1,1,length($1)-4) "();\n\t\t#endif"}' \
     129#               >> $ISSM_DIR/src/c/analyses/EnumToAnalysis.cpp
     130#
     131##Footer
     132#cat <<END >> $ISSM_DIR/src/c/analyses/EnumToAnalysis.cpp
     133#default : _error_("enum provided not supported ("<<EnumToStringx(analysis_enum)<<")");
     134#       }
     135#}
     136#END
     137##}}}
    106138#Build EnumDefinitions.py{{{
    107139cat <<END > $ISSM_DIR/src/m/enum/EnumDefinitions.py
Note: See TracChangeset for help on using the changeset viewer.