Changeset 2225


Ignore:
Timestamp:
09/14/09 07:35:36 (16 years ago)
Author:
Mathieu Morlighem
Message:

fixed nightly run

File:
1 edited

Legend:

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

    r2223 r2225  
    2525        Vec     u_g=NULL;
    2626        Vec     t_g=NULL;
     27        Vec     m_g=NULL;
    2728        double  search_scalar;
    2829        char*   control_type=NULL;
     
    9697                /*In case we are running a steady state control method, compute new temperature field using new parameter
    9798                 * distribution: */
    98                 steadystate_results=new DataSet(ResultsEnum());
    99                 steadystate_core(steadystate_results,model,inputs);
    100                 VecFree(&t_g); steadystate_results->FindResult(&t_g,"t_g");
    101                 delete steadystate_results;
    102                 inputs->Add("temperature",t_g,1,numberofnodes);
     99                if (control_steady){
     100                        steadystate_results=new DataSet(ResultsEnum());
     101                        steadystate_core(steadystate_results,model,inputs);
     102                        VecFree(&t_g); steadystate_results->FindResult(&t_g,"t_g");
     103                        delete steadystate_results;
     104                        inputs->Add("temperature",t_g,1,numberofnodes);
     105                }
    103106       
    104107                /*Update parameters: */
     
    133136                ControlConstrainx(param_g,numberofnodes,mincontrolconstraint,maxcontrolconstraint,control_type);
    134137                _printf_("%s\n","      done.");
    135 
    136        
    137138               
    138139                _printf_("%s%i%s%g\n","      value of misfit J after optimization #",n+1,": ",J[n]);
     
    174175        /*Write results to disk: */
    175176        _printf_("%s\n","      preparing final velocity solution...");
    176 
    177177        /*Launch diagnostic with the last parameter distribution*/
    178         inputs->Add(control_type,param_g,1,numberofnodes);
    179         diagnostic_results=new DataSet(ResultsEnum());
    180         diagnostic_core(diagnostic_results,model, inputs);
    181 
    182         //extract u_g from diagnostic_results, and erase diagnostic_results;
    183         diagnostic_results->FindResult(&u_g,"u_g");
    184         delete diagnostic_results;
     178        if (control_steady){
     179                inputs->Add(control_type,param_g,1,numberofnodes);
     180                steadystate_results=new DataSet(ResultsEnum());
     181                steadystate_core(steadystate_results,model,inputs);
     182
     183                //extract u_g ,t_g and m_g from steadystate results, and erase diagnostic_results;
     184                steadystate_results->FindResult(&u_g,"u_g");
     185                steadystate_results->FindResult(&m_g,"m_g");
     186                steadystate_results->FindResult(&t_g,"t_g");
     187                delete steadystate_results;
     188        }
     189        else{
     190                inputs->Add(control_type,param_g,1,numberofnodes);
     191                diagnostic_results=new DataSet(ResultsEnum());
     192                diagnostic_core(diagnostic_results,model, inputs);
     193
     194                //extract u_g from diagnostic_results, and erase diagnostic_results;
     195                diagnostic_results->FindResult(&u_g,"u_g");
     196                delete diagnostic_results;
     197        }
    185198
    186199        /*Plug results into output dataset: */
     
    191204        result=new Result(results->Size()+1,0,1,"J",J,nsteps);
    192205        results->AddObject(result);
     206        if (control_steady){
     207                result=new Result(results->Size()+1,0,1,"u_g",u_g);
     208                results->AddObject(result);
     209                result=new Result(results->Size()+1,0,1,"t_g",t_g);
     210                results->AddObject(result);
     211                result=new Result(results->Size()+1,0,1,"m_g",m_g);
     212                results->AddObject(result);
     213        }
    193214
    194215        /*Free ressources: */
Note: See TracChangeset for help on using the changeset viewer.