Changeset 300


Ignore:
Timestamp:
05/07/09 12:05:55 (16 years ago)
Author:
Eric.Larour
Message:

Added hutter, stokes, surafce slope compute and bed slope compute in ModelProcessor. Just skeletton for now

Location:
issm/trunk/src/c/ModelProcessorx
Files:
17 added
12 edited

Legend:

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

    r128 r300  
    2323        else if (strcmp(model->analysis_type,"diagnostic_vert")==0){
    2424                CreateConstraintsDiagnosticVert(pconstraints,model,model_handle);
    25         }/*
     25        }
     26        else if (strcmp(model->analysis_type,"diagnostic_stokes")==0){
     27                CreateConstraintsDiagnosticStokes(pconstraints,model,model_handle);
     28        }
     29        else if (strcmp(model->analysis_type,"diagnostic_hutter")==0){
     30                CreateConstraintsDiagnosticHutter(pconstraints,model,model_handle);
     31        }
     32        else if (strcmp(model->analysis_type,"surface_slope_compute")==0){
     33                CreateConstraintsSurfaceSlopeCompute(pconstraints,model,model_handle);
     34        }
     35        else if (strcmp(model->analysis_type,"bed_slope_compute")==0){
     36                CreateConstraintsBedSlopeCompute(pconstraints,model,model_handle);
     37        }
     38        /*
    2639        else if (strcmp(model->analysis_type,"melting")==0){
    2740                CreateConstraintsMelting(pconstraints,model,model_handle);
  • issm/trunk/src/c/ModelProcessorx/CreateElementsNodesAndMaterials.cpp

    r128 r300  
    2929       
    3030        }
     31        else if ((strcmp(model->analysis_type,"diagnostic_stokes")==0)){
     32
     33                CreateElementsNodesAndMaterialsDiagnosticStokes(pelements,pnodes,pmaterials, model,model_handle);
     34       
     35        }
     36        else if ((strcmp(model->analysis_type,"diagnostic_hutter")==0)){
     37
     38                CreateElementsNodesAndMaterialsDiagnosticHutter(pelements,pnodes,pmaterials, model,model_handle);
     39       
     40        }
     41        else if ((strcmp(model->analysis_type,"surface_slope_compute")==0)){
     42
     43                CreateElementsNodesAndMaterialsSurfaceSlopeCompute(pelements,pnodes,pmaterials, model,model_handle);
     44       
     45        }
     46        else if ((strcmp(model->analysis_type,"bed_slope_compute")==0)){
     47
     48                CreateElementsNodesAndMaterialsBedSlopeCompute(pelements,pnodes,pmaterials, model,model_handle);
     49       
     50        }
    3151        /*
    3252        else if (strcmp(model->analysis_type,"melting")==0){
  • issm/trunk/src/c/ModelProcessorx/CreateLoads.cpp

    r128 r300  
    2525
    2626                CreateLoadsDiagnosticVert(ploads,model,model_handle);
    27         }/*
     27        }
     28        else if (strcmp(model->analysis_type,"diagnostic_stokes")==0){
     29
     30                CreateLoadsDiagnosticStokes(ploads,model,model_handle);
     31        }
     32        else if (strcmp(model->analysis_type,"diagnostic_hutter")==0){
     33
     34                CreateLoadsDiagnosticHutter(ploads,model,model_handle);
     35        }
     36        else if (strcmp(model->analysis_type,"surface_slope_compute")==0){
     37
     38                CreateLoadsSurfaceSlopeCompute(ploads,model,model_handle);
     39        }
     40        else if (strcmp(model->analysis_type,"bed_slope_compute")==0){
     41
     42                CreateLoadsBedSlopeCompute(ploads,model,model_handle);
     43        }
     44        /*
    2845        else if (strcmp(model->analysis_type,"melting")==0){
    2946
  • issm/trunk/src/c/ModelProcessorx/CreateParameters.cpp

    r209 r300  
    2222        int      analysis_type;
    2323        int      numberofdofspernode;
    24 
    25         double* fit=NULL;
    26         double* optscal=NULL;
    27         double* maxiter=NULL;
    28         double* control_parameter=NULL;
    29         double* vx=NULL;
    30         double* vy=NULL;
    31         double* vz=NULL;
    32        
     24        int      dim;
     25
    3326        /*Initialize dataset: */
    3427        parameters   = new DataSet(ParametersEnum());
     
    4235        parameters->AddObject(param);
    4336
    44        
     37        //dimension 2d or 3d:
     38        if (strcmp(model->meshtype,"2d")==0)dim=2;
     39        else dim=3;
     40
     41        count++;
     42        param= new Param(count,"dim",INTEGER);
     43        param->SetInteger(dim);
     44        parameters->AddObject(param);
     45
     46        //elements types
     47        count++;
     48        param= new Param(count,"ishutter",INTEGER);
     49        param->SetInteger(model->ishutter);
     50        parameters->AddObject(param);
     51
     52        count++;
     53        param= new Param(count,"ismacayealpattyn",INTEGER);
     54        param->SetInteger(model->ismacayealpattyn);
     55        parameters->AddObject(param);
     56
     57
     58        count++;
     59        param= new Param(count,"isstokes",INTEGER);
     60        param->SetInteger(model->isstokes);
     61        parameters->AddObject(param);
     62
    4563        /*debug: */
    4664        param= new Param(count,"debug",INTEGER);
     
    174192                CreateParametersControl(parameters,model,model_handle,&count);
    175193        }
    176 
    177         /*Diagnostic: */
    178         /*Get vx and vy: */
    179         ModelFetchData((void**)&vx,NULL,NULL,model_handle,"vx","Matrix","Mat");
    180         ModelFetchData((void**)&vy,NULL,NULL,model_handle,"vy","Matrix","Mat");
    181         ModelFetchData((void**)&vz,NULL,NULL,model_handle,"vz","Matrix","Mat");
    182 
    183         if(vx) for(i=0;i<model->numberofnodes;i++)vx[i]=vx[i]/model->yts;
    184         if(vy) for(i=0;i<model->numberofnodes;i++)vy[i]=vy[i]/model->yts;
    185         if(vz) for(i=0;i<model->numberofnodes;i++)vz[i]=vz[i]/model->yts;
    186 
    187         count++;
    188         param= new Param(count,"vx",DOUBLEVEC);
    189         if(vx) param->SetDoubleVec(vx,model->numberofnodes);
    190         else param->SetDoubleVec(vx,0);
    191         parameters->AddObject(param);
    192 
    193         count++;
    194         param= new Param(count,"vy",DOUBLEVEC);
    195         if(vy) param->SetDoubleVec(vy,model->numberofnodes);
    196         else param->SetDoubleVec(vy,0);
    197         parameters->AddObject(param);
    198 
    199         count++;
    200         param= new Param(count,"vz",DOUBLEVEC);
    201         if(vz) param->SetDoubleVec(vz,model->numberofnodes);
    202         else param->SetDoubleVec(vz,0);
    203         parameters->AddObject(param);
    204 
    205         xfree((void**)&vx);
    206         xfree((void**)&vy);
    207         xfree((void**)&vz);
    208 
     194        if (analysis_type==DiagnosticHorizAnalysisEnum()){
     195                CreateParametersDiagnosticHoriz(parameters,model,model_handle,&count);
     196        }
     197
     198       
    209199        /*All our datasets are already ordered by ids. Set presort flag so that later on, when sorting is requested on these
    210200         * datasets, it will not be redone: */
  • issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp

    r117 r300  
    3434        /*Create constraints: */
    3535        constraints = new DataSet(ConstraintsEnum());
     36
     37        /*Now, is the flag macayaealpattyn on? otherwise, do nothing: */
     38        if (!model->ismacayealpattyn)goto cleanup_and_return;
    3639
    3740        /*Fetch data: */
     
    8083        constraints->Presort();
    8184
     85       
     86        cleanup_and_return:
    8287        /*Free data: */
    8388        xfree((void**)&gridondirichlet_diag);
    8489        xfree((void**)&dirichletvalues_diag);
    85 
     90       
    8691        /*Assign output pointer: */
    8792        *pconstraints=constraints;
  • issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateElementsNodesAndMaterialsDiagnosticHoriz.cpp

    r239 r300  
    150150        int     grid_id;
    151151
    152         /*Get analysis_type: */
    153         analysis_type=AnalysisTypeAsEnum(model->analysis_type);
    154152
    155153        /*First create the elements, nodes and material properties: */
     
    157155        nodes     = new DataSet(NodesEnum());
    158156        materials = new DataSet(MaterialsEnum());
     157
     158        /*Now, is the flag macayaealpattyn on? otherwise, do nothing: */
     159        if (!model->ismacayealpattyn)goto cleanup_and_return;
     160
     161        /*Get analysis_type: */
     162        analysis_type=AnalysisTypeAsEnum(model->analysis_type);
    159163
    160164        /*Width of elements: */
  • issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp

    r211 r300  
    7171        /*Create loads: */
    7272        loads   = new DataSet(LoadsEnum());
     73
     74        /*Now, is the flag macayaealpattyn on? otherwise, do nothing: */
     75        if (!model->ismacayealpattyn)goto cleanup_and_return;
    7376       
    7477        /*Create pressure loads as boundary conditions. Pay attention to the partitioning if we are running in parallel (the grids
     
    262265        loads->Presort();
    263266
     267        cleanup_and_return:
     268
    264269        /*Free ressources:*/
    265270        xfree((void**)&riftsnumpenaltypairs);
  • issm/trunk/src/c/ModelProcessorx/DiagnosticVert/CreateConstraintsDiagnosticVert.cpp

    r128 r300  
    2222        constraints = new DataSet(ConstraintsEnum());
    2323
     24        /*Now, is the model running in 3d? : */
     25        if (strcmp(model->meshtype,"2d")==0)goto cleanup_and_return;
     26       
     27        cleanup_and_return:     
     28       
    2429        /*Assign output pointer: */
    2530        *pconstraints=constraints;
  • issm/trunk/src/c/ModelProcessorx/DiagnosticVert/CreateElementsNodesAndMaterialsDiagnosticVert.cpp

    r128 r300  
    131131       
    132132
    133         /*Get analysis_type: */
    134         analysis_type=AnalysisTypeAsEnum(model->analysis_type);
    135133
    136134        /*First create the elements, nodes and material properties: */
     
    138136        nodes     = new DataSet(NodesEnum());
    139137        materials = new DataSet(MaterialsEnum());
     138
     139        /*Now, is the model running in 3d? : */
     140        if (strcmp(model->meshtype,"2d")==0)goto cleanup_and_return;
     141
     142        /*Get analysis_type: */
     143        analysis_type=AnalysisTypeAsEnum(model->analysis_type);
    140144
    141145        /*Width of elements: */
  • issm/trunk/src/c/ModelProcessorx/DiagnosticVert/CreateLoadsDiagnosticVert.cpp

    r128 r300  
    2020        /*Create loads: */
    2121        loads   = new DataSet(LoadsEnum());
     22
     23        /*Now, is the model running in 3d? : */
     24        if (strcmp(model->meshtype,"2d")==0)goto cleanup_and_return;
     25
     26        cleanup_and_return:
    2227       
    2328        /*Assign output pointer: */
  • issm/trunk/src/c/ModelProcessorx/Model.cpp

    r117 r300  
    150150        model->melting=NULL;
    151151        model->accumulation=NULL;
     152
     153        /*elements type: */
     154        model->ishutter=0;
     155        model->ismacayealpattyn=0;
     156        model->isstokes=0;
    152157
    153158        return model;
     
    283288                ModelFetchData((void**)&model->numlayers,NULL,NULL,model_handle,"numlayers","Integer",NULL);
    284289        }
    285        
     290
     291        /*elements type: */
     292        ModelFetchData((void**)&model->ishutter,NULL,NULL,model_handle,"ishutter","Integer",NULL);
     293        ModelFetchData((void**)&model->ismacayealpattyn,NULL,NULL,model_handle,"ismacayealpattyn","Integer",NULL);
     294        ModelFetchData((void**)&model->isstokes,NULL,NULL,model_handle,"isstokes","Integer",NULL);
     295
    286296        /*!Get drag_type, drag and p,q: */
    287297        ModelFetchData((void**)&model->drag_type,NULL,NULL,model_handle,"drag_type","Integer",NULL);
  • issm/trunk/src/c/ModelProcessorx/Model.h

    r128 r300  
    3535        double* uppernodes;
    3636
     37        /*elements type: */
     38        int     ishutter;
     39        int     ismacayealpattyn;
     40        int     isstokes;
    3741
    3842        /*results: */
     
    174178        void    CreateConstraintsDiagnosticHoriz(DataSet** pconstraints,Model* model,ConstDataHandle model_handle);
    175179        void    CreateLoadsDiagnosticHoriz(DataSet** ploads, Model* model, ConstDataHandle model_handle);
     180        void    CreateParametersDiagnosticHoriz(DataSet* parameters,Model* model,ConstDataHandle model_handle,int* pcount);
    176181
    177182        /*diagnostic vertical*/
     
    179184        void    CreateConstraintsDiagnosticVert(DataSet** pconstraints,Model* model,ConstDataHandle model_handle);
    180185        void    CreateLoadsDiagnosticVert(DataSet** ploads, Model* model, ConstDataHandle model_handle);
    181        
     186        void    CreateParametersDiagnosticVert(DataSet* parameters,Model* model,ConstDataHandle model_handle,int* pcount);
     187
     188        /*diagnostic hutter*/
     189        void    CreateElementsNodesAndMaterialsDiagnosticHutter(DataSet** pelements,DataSet** pnodes, DataSet** pmaterials, Model* model,ConstDataHandle model_handle);
     190        void    CreateConstraintsDiagnosticHutter(DataSet** pconstraints,Model* model,ConstDataHandle model_handle);
     191        void    CreateLoadsDiagnosticHutter(DataSet** ploads, Model* model, ConstDataHandle model_handle);
     192        void    CreateParametersDiagnosticHutter(DataSet* parameters,Model* model,ConstDataHandle model_handle,int* pcount);
     193
     194        /*diagnostic stokes*/
     195        void    CreateElementsNodesAndMaterialsDiagnosticStokes(DataSet** pelements,DataSet** pnodes, DataSet** pmaterials, Model* model,ConstDataHandle model_handle);
     196        void    CreateConstraintsDiagnosticStokes(DataSet** pconstraints,Model* model,ConstDataHandle model_handle);
     197        void    CreateLoadsDiagnosticStokes(DataSet** ploads, Model* model, ConstDataHandle model_handle);
     198        void    CreateParametersDiagnosticStokes(DataSet* parameters,Model* model,ConstDataHandle model_handle,int* pcount);
     199
     200        /*surface slope compute*/
     201        void    CreateElementsNodesAndMaterialsSurfaceSlopeCompute(DataSet** pelements,DataSet** pnodes, DataSet** pmaterials, Model* model,ConstDataHandle model_handle);
     202        void    CreateConstraintsSurfaceSlopeCompute(DataSet** pconstraints,Model* model,ConstDataHandle model_handle);
     203        void    CreateLoadsSurfaceSlopeCompute(DataSet** ploads, Model* model, ConstDataHandle model_handle);
     204        void    CreateParametersSurfaceSlopeCompute(DataSet* parameters,Model* model,ConstDataHandle model_handle,int* pcount);
     205
     206        /*bed slope compute*/
     207        void    CreateElementsNodesAndMaterialsBedSlopeCompute(DataSet** pelements,DataSet** pnodes, DataSet** pmaterials, Model* model,ConstDataHandle model_handle);
     208        void    CreateConstraintsBedSlopeCompute(DataSet** pconstraints,Model* model,ConstDataHandle model_handle);
     209        void    CreateLoadsBedSlopeCompute(DataSet** ploads, Model* model, ConstDataHandle model_handle);
     210        void    CreateParametersBedSlopeCompute(DataSet* parameters,Model* model,ConstDataHandle model_handle,int* pcount);
     211
    182212        /*control:*/
    183213        void    CreateParametersControl(DataSet* parameters,Model* model,ConstDataHandle model_handle,int* pcount);
Note: See TracChangeset for help on using the changeset viewer.