Changeset 1997


Ignore:
Timestamp:
08/27/09 07:51:42 (15 years ago)
Author:
Mathieu Morlighem
Message:

enabling CM in steady state

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/parallel/steadystate.cpp

    r1901 r1997  
    2525        int   numberofnodes;
    2626        int   qmu_analysis=0;
     27        int   control_analysis=0;
     28        char* control_type=NULL;
    2729
    2830        /*Model: */
     
    3840        double* u_g_initial=NULL;
    3941        double* p_g_initial=NULL;
     42        double* u_g_obs=NULL;
    4043        double  dt;
    4144        Param*  param=NULL;
     
    9194        /*recover parameters: */
    9295        model->FindParam(&waitonlock,"waitonlock");
     96        model->FindParam(&control_analysis,"control_analysis");
    9397        model->FindParam(&qmu_analysis,"qmu_analysis");
    9498
     
    104108        inputs->Add("pressure",p_g_initial,1,numberofnodes);
    105109        inputs->Add("dt",dt);
     110        if(control_analysis){
     111                inputs->Add("velocity_obs",u_g_obs,2,numberofnodes);
     112        }
    106113       
    107114        _printf_("initialize results:\n");
     
    111118        if(!qmu_analysis){
    112119
    113                 /*run diagnostic analysis: */
    114                 _printf_("call computational core:\n");
    115                 steadystate_core(results,model,inputs);
    116 
     120                if(!control_analysis){
     121                        /*run diagnostic analysis: */
     122                        _printf_("call computational core:\n");
     123                        steadystate_core(results,model,inputs);
     124                }
     125                else{
     126                        /*run control analysis: */
     127                        _printf_("call computational core:\n");
     128                        control_core(results,model,inputs);
     129                }
    117130        }
    118131        else{
     
    127140        }
    128141
    129         /*Add analysis_type to results: */
    130         result=new Result(results->Size()+1,0,1,"analysis_type","steadystate");
    131         results->AddObject(result);
     142        if(!control_analysis){
     143                /*Add analysis_type to results: */
     144                result=new Result(results->Size()+1,0,1,"analysis_type","steadystate");
     145                results->AddObject(result);
    132146
    133         _printf_("process results:\n");
    134         ProcessResults(&results,model,SteadystateAnalysisEnum());
     147                _printf_("process results:\n");
     148                ProcessResults(&results,model,SteadystateAnalysisEnum());
     149        }
     150        else{
     151                /*Add analysis_type and control_type to results: */
     152                result=new Result(results->Size()+1,0,1,"analysis_type","steadystate");
     153                results->AddObject(result);
     154
     155                model->FindParam(&control_type,"control_type");
     156                result=new Result(results->Size()+1,0,1,"control_type",control_type);
     157                results->AddObject(result);
     158
     159                _printf_("process results:\n");
     160                ProcessResults(&results,model,ControlAnalysisEnum());
     161        }
    135162
    136163        _printf_("write results to disk:\n");
Note: See TracChangeset for help on using the changeset viewer.