Ignore:
Timestamp:
06/01/10 14:51:09 (15 years ago)
Author:
Eric.Larour
Message:

First attempt at fusioning all models together

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/modules/ModelProcessorx/CreateDataSets.cpp

    r3982 r3984  
    1616
    1717
    18 void CreateDataSets(DataSet** pelements,DataSet** pnodes, DataSet** pvertices, DataSet** pmaterials, DataSet** pconstraints, DataSet** ploads,Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_type){
     18void CreateDataSets(DataSet** pelements,DataSet** pnodes, DataSet** pvertices, DataSet** pmaterials, DataSet** pconstraints, DataSet** ploads,Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_type,int nummodels,int analysis_counter){
    1919
    20         /*First, partition elements and vertices. Nodes will partitioned on a per analysis_type basis: */
    21         VerticesPartitioning(&iomodel->my_elements, &iomodel->my_vertices, &iomodel->my_bordervertices, iomodel, iomodel_handle);
     20        bool continuous=true;
     21        DataSet* elements=NULL;
     22                       
     23        /*Create elements, vertices and materials, independent of analysis_type: */
     24        CreateElementsVerticesAndMaterials(pelements, pvertices, pmaterials, iomodel,iomodel_handle,nummodels);
    2225
    23         /*create parameters common to all solutions: */
     26        /*Recover elements, for future update: */
     27        elements=*pelements;
     28
     29        /*Now, branch onto analysis dependent model generation: */
     30        switch(analysis_type){
     31                case  DiagnosticHorizAnalysisEnum:
     32                        CreateNodesDiagnosticHoriz(pnodes, iomodel,iomodel_handle);
     33                        CreateConstraintsDiagnosticHoriz(pconstraints,iomodel,iomodel_handle);
     34                        CreateLoadsDiagnosticHoriz(ploads,iomodel,iomodel_handle);
     35                        UpdateElementsDiagnosticHoriz(elements,iomodel,iomodel_handle,analysis_counter);
     36                        break;
     37               
     38                case  DiagnosticVertAnalysisEnum:
     39                        CreateNodesDiagnosticVert(pnodes, iomodel,iomodel_handle);
     40                        CreateConstraintsDiagnosticVert(pconstraints,iomodel,iomodel_handle);
     41                        CreateLoadsDiagnosticVert(ploads,iomodel,iomodel_handle);
     42                        UpdateElementsDiagnosticVert(elements,iomodel,iomodel_handle,analysis_counter);
     43                        break;
     44       
     45                case DiagnosticStokesAnalysisEnum:
     46                        CreateNodesDiagnosticStokes(pnodes, iomodel,iomodel_handle);
     47                        CreateConstraintsDiagnosticStokes(pconstraints,iomodel,iomodel_handle);
     48                        CreateLoadsDiagnosticStokes(ploads,iomodel,iomodel_handle);
     49                        UpdateElementsDiagnosticStokes(elements,iomodel,iomodel_handle,analysis_counter);
     50                        break;
     51       
     52                case DiagnosticHutterAnalysisEnum:
     53                        CreateNodesDiagnosticHutter(pnodes, iomodel,iomodel_handle);
     54                        CreateConstraintsDiagnosticHutter(pconstraints,iomodel,iomodel_handle);
     55                        CreateLoadsDiagnosticHutter(ploads,iomodel,iomodel_handle);
     56                        UpdateElementsDiagnosticHutter(elements,iomodel,iomodel_handle,analysis_counter);
     57                        break;
     58
     59                case SlopecomputeAnalysisEnum:
     60                        CreateNodesSlopeCompute(pnodes, iomodel,iomodel_handle);
     61                        CreateConstraintsSlopeCompute(pconstraints,iomodel,iomodel_handle);
     62                        CreateLoadsSlopeCompute(ploads,iomodel,iomodel_handle);
     63                        UpdateElementsSlopeCompute(elements,iomodel,iomodel_handle,analysis_counter);
     64                        break;
     65
     66                case ThermalAnalysisEnum:
     67                        CreateNodesThermal(pnodes, iomodel,iomodel_handle);
     68                        CreateConstraintsThermal(pconstraints,iomodel,iomodel_handle);
     69                        CreateLoadsThermal(ploads,iomodel,iomodel_handle);
     70                        UpdateElementsThermal(elements,iomodel,iomodel_handle,analysis_counter);
     71                        break;
     72
     73                case MeltingAnalysisEnum:
     74                        CreateNodesMelting(pnodes, iomodel,iomodel_handle);
     75                        CreateConstraintsMelting(pconstraints,iomodel,iomodel_handle);
     76                        CreateLoadsMelting(ploads,iomodel,iomodel_handle);
     77                        UpdateElementsMelting(elements,iomodel,iomodel_handle,analysis_counter);
     78                        break;
     79
     80                case PrognosticAnalysisEnum:
     81                        CreateNodesPrognostic(pnodes, iomodel,iomodel_handle);
     82                        CreateConstraintsPrognostic(pconstraints,iomodel,iomodel_handle);
     83                        CreateLoadsPrognostic(ploads,iomodel,iomodel_handle);
     84                        UpdateElementsPrognostic(elements,iomodel,iomodel_handle,analysis_counter);
     85                        break;
     86
     87                case Prognostic2AnalysisEnum:
     88                        CreateNodesPrognostic2(pnodes, iomodel,iomodel_handle);
     89                        CreateConstraintsPrognostic2(pconstraints,iomodel,iomodel_handle);
     90                        CreateLoadsPrognostic2(ploads,iomodel,iomodel_handle);
     91                        UpdateElementsPrognostic2(elements,iomodel,iomodel_handle,analysis_counter);
     92                        break;
     93
     94                case BalancedthicknessAnalysisEnum:
     95                        CreateNodesBalancedthickness(pnodes, iomodel,iomodel_handle);
     96                        CreateConstraintsBalancedthickness(pconstraints,iomodel,iomodel_handle);
     97                        CreateLoadsBalancedthickness(ploads,iomodel,iomodel_handle);
     98                        UpdateElementsBalancedthickness(elements,iomodel,iomodel_handle,analysis_counter);
     99                        break;
     100
     101                case Balancedthickness2AnalysisEnum:
     102                        CreateNodesBalancedthickness2(pnodes, iomodel,iomodel_handle);
     103                        CreateConstraintsBalancedthickness2(pconstraints,iomodel,iomodel_handle);
     104                        CreateLoadsBalancedthickness2(ploads,iomodel,iomodel_handle);
     105                        UpdateElementsBalancedthickness2(elements,iomodel,iomodel_handle,analysis_counter);
     106                        break;
     107                case BalancedvelocitiesAnalysisEnum:
     108                        CreateNodesBalancedvelocities(pnodes, iomodel,iomodel_handle);
     109                        CreateConstraintsBalancedvelocities(pconstraints,iomodel,iomodel_handle);
     110                        CreateLoadsBalancedvelocities(ploads,iomodel,iomodel_handle);
     111                        UpdateElementsBalancedvelocities(elements,iomodel,iomodel_handle,analysis_counter);
     112                        break;
     113                default:
     114                        ISSMERROR("%s%s%s"," analysis_type: ",EnumAsString(analysis_type)," not supported yet!");
     115        }
     116       
     117        /*Generate objects that are not dependent on any analysis_type: */
    24118        CreateParameters(pparameters,iomodel,iomodel_handle);
    25        
    26119        CreateParametersControl(pparameters,iomodel,iomodel_handle);
    27 
    28         /*This is just a high level driver: */
    29         if (analysis_type==DiagnosticHorizAnalysisEnum){
    30                 CreateElementsNodesAndMaterialsDiagnosticHoriz(pelements,pnodes, pvertices, pmaterials, iomodel,iomodel_handle);
    31                 CreateConstraintsDiagnosticHoriz(pconstraints,iomodel,iomodel_handle);
    32                 CreateLoadsDiagnosticHoriz(ploads,iomodel,iomodel_handle);
    33         }
    34         else if (analysis_type==DiagnosticVertAnalysisEnum){
    35 
    36                 CreateElementsNodesAndMaterialsDiagnosticVert(pelements,pnodes, pvertices, pmaterials, iomodel,iomodel_handle);
    37                 CreateConstraintsDiagnosticVert(pconstraints,iomodel,iomodel_handle);
    38                 CreateLoadsDiagnosticVert(ploads,iomodel,iomodel_handle);
    39         }
    40         else if (analysis_type==DiagnosticStokesAnalysisEnum){
    41 
    42                 CreateElementsNodesAndMaterialsDiagnosticStokes(pelements,pnodes, pvertices, pmaterials, iomodel,iomodel_handle);
    43                 CreateConstraintsDiagnosticStokes(pconstraints,iomodel,iomodel_handle);
    44                 CreateLoadsDiagnosticStokes(ploads,iomodel,iomodel_handle);
    45         }
    46         else if (analysis_type==DiagnosticHutterAnalysisEnum){
    47 
    48                 CreateElementsNodesAndMaterialsDiagnosticHutter(pelements,pnodes,pvertices, pmaterials, iomodel,iomodel_handle);
    49                 CreateConstraintsDiagnosticHutter(pconstraints,iomodel,iomodel_handle);
    50                 CreateLoadsDiagnosticHutter(ploads,iomodel,iomodel_handle);
    51         }
    52         else if (analysis_type==SlopecomputeAnalysisEnum){
    53 
    54                 CreateElementsNodesAndMaterialsSlopeCompute(pelements,pnodes, pvertices,pmaterials, iomodel,iomodel_handle);
    55                 CreateConstraintsSlopeCompute(pconstraints,iomodel,iomodel_handle);
    56                 CreateLoadsSlopeCompute(ploads,iomodel,iomodel_handle);
    57         }
    58         else if (analysis_type==ThermalAnalysisEnum){
    59 
    60                 CreateElementsNodesAndMaterialsThermal(pelements,pnodes,pvertices, pmaterials, iomodel,iomodel_handle);
    61                 CreateConstraintsThermal(pconstraints,iomodel,iomodel_handle);
    62                 CreateLoadsThermal(ploads,iomodel,iomodel_handle);
    63 
    64         }
    65         else if (analysis_type==MeltingAnalysisEnum){
    66 
    67                 CreateElementsNodesAndMaterialsMelting(pelements,pnodes,pvertices, pmaterials, iomodel,iomodel_handle);
    68                 CreateConstraintsMelting(pconstraints,iomodel,iomodel_handle);
    69                 CreateLoadsMelting(ploads,iomodel,iomodel_handle);
    70         }
    71         else if (analysis_type==PrognosticAnalysisEnum){
    72 
    73                 CreateElementsNodesAndMaterialsPrognostic(pelements,pnodes,pvertices, pmaterials, iomodel,iomodel_handle);
    74                 CreateConstraintsPrognostic(pconstraints,iomodel,iomodel_handle);
    75                 CreateLoadsPrognostic(ploads,iomodel,iomodel_handle);
    76         }
    77         else if (analysis_type==Prognostic2AnalysisEnum){
    78 
    79                 CreateElementsNodesAndMaterialsPrognostic2(pelements,pnodes,pvertices, pmaterials, iomodel,iomodel_handle);
    80                 CreateConstraintsPrognostic2(pconstraints,iomodel,iomodel_handle);
    81                 CreateLoadsPrognostic2(ploads,iomodel,iomodel_handle);
    82         }
    83         else if (analysis_type==BalancedthicknessAnalysisEnum){
    84 
    85                 CreateElementsNodesAndMaterialsBalancedthickness(pelements,pnodes,pvertices, pmaterials, iomodel,iomodel_handle);
    86                 CreateConstraintsBalancedthickness(pconstraints,iomodel,iomodel_handle);
    87                 CreateLoadsBalancedthickness(ploads,iomodel,iomodel_handle);
    88         }
    89         else if (analysis_type==Balancedthickness2AnalysisEnum){
    90 
    91                 CreateElementsNodesAndMaterialsBalancedthickness2(pelements,pnodes,pvertices, pmaterials, iomodel,iomodel_handle);
    92                 CreateConstraintsBalancedthickness2(pconstraints,iomodel,iomodel_handle);
    93                 CreateLoadsBalancedthickness2(ploads,iomodel,iomodel_handle);
    94         }
    95         else if (analysis_type==BalancedvelocitiesAnalysisEnum){
    96 
    97                 CreateElementsNodesAndMaterialsBalancedvelocities(pelements,pnodes,pvertices,pmaterials, iomodel,iomodel_handle);
    98                 CreateConstraintsBalancedvelocities(pconstraints,iomodel,iomodel_handle);
    99                 CreateLoadsBalancedvelocities(ploads,iomodel,iomodel_handle);
    100         }
    101         else{
    102                 ISSMERROR("%s%i%s%i%s"," analysis_type: ",analysis_type," analysis_type: ",analysis_type," not supported yet!");
    103 
    104         }
    105120        CreateParametersQmu(pparameters,iomodel,iomodel_handle);
    106 
    107121}
Note: See TracChangeset for help on using the changeset viewer.