Ignore:
Timestamp:
08/27/09 17:15:17 (16 years ago)
Author:
seroussi
Message:

fixed control stedy, but stokes not working yet

File:
1 edited

Legend:

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

    r2016 r2033  
    4141        int     analysis_type;
    4242        int     sub_analysis_type;
     43        int     control_steady;
    4344        Vec     u_g=NULL;
    4445        Vec     u_g_full=NULL;
     
    7172        femmodel->parameters->FindParam((void*)&analysis_type,"analysis_type");
    7273        femmodel->parameters->FindParam((void*)&sub_analysis_type,"sub_analysis_type");
     74        femmodel->parameters->FindParam((void*)&control_steady,"control_steady");
    7375        femmodel->parameters->FindParam((void*)&numberofnodes,"numberofnodes");
    7476        femmodel->parameters->FindParam((void*)&numberofdofspernode,"numberofdofspernode");
     
    8890        inputs->Add(control_type,param_g_copy,1,numberofnodes);
    8991
    90         if (analysis_type==DiagnosticAnalysisEnum()){
     92        if (control_steady==0){
    9193                //Run diagnostic with updated parameters.
    9294                diagnostic_core_nonlinear(&u_g,NULL,NULL,NULL,femmodel,inputs,DiagnosticAnalysisEnum(),sub_analysis_type);
    9395                VecToMPISerial(&u_g_double,u_g); VecFree(&u_g);
     96                inputs->Add("velocity",u_g_double,numberofdofspernode,numberofnodes);
    9497        }
    9598        else{
     
    102105                delete results_steadystate;
    103106
     107                VecToMPISerial(&u_g_double,u_g); VecFree(&u_g);
     108                if(!isstokes){
     109                        inputs->Add("velocity",u_g_double,3,numberofnodes);
     110                }
     111                else{
     112                        inputs->Add("velocity",u_g_double,4,numberofnodes);
     113                }
    104114                //extract the correct number of dofs (3 or 4)
    105                 VecDuplicatePatch(&u_g_full,u_g);VecFree(&u_g);
    106                 if(!isstokes){
    107                         xfree((void**)& dofset);dofset=dofsetgen(2,dofs01,3,numberofnodes*3); VecPartition(&u_g, u_g_full, dofset, numberofnodes*2);
    108                 }
    109                 VecFree(&u_g_full);
     115//              VecDuplicatePatch(&u_g_full,u_g);VecFree(&u_g);
     116//              if(!isstokes){
     117//                      xfree((void**)& dofset);
     118//                      dofset=dofsetgen(2,dofs01,3,numberofnodes*3);
     119//                      VecPartition(&u_g, u_g_full, dofset, numberofnodes*2);
     120//              }
     121//              VecFree(&u_g_full);
     122//              inputs->Add("velocity",u_g_double,numberofdofspernode,numberofnodes);
    110123        }
    111 
    112         inputs->Add("velocity",u_g_double,numberofdofspernode,numberofnodes);
    113124
    114125        //Compute misfit for this velocity field.
Note: See TracChangeset for help on using the changeset viewer.