Changeset 3030


Ignore:
Timestamp:
02/16/10 08:39:48 (15 years ago)
Author:
Eric.Larour
Message:

Added misfit response

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/Qmux/DakotaResponses.cpp

    r2333 r3030  
    1313#include "../EnumDefinitions/EnumDefinitions.h"
    1414#include "../MassFluxx/MassFluxx.h"
     15#include "../Misfitx/Misfitx.h"
    1516
    1617#undef __FUNCT__
     
    221222                        /*Free ressources:*/
    222223                        xfree((void**)&vz);
     224                }
     225                else if(strcmp(response_descriptor,"misfit")==0){
     226                       
     227                        int isstokes,ismacayealpattyn,ishutter;
     228                        FemModel* femmodel=NULL;
     229                        ParameterInputs* inputs=NULL; //needed to plug velocity into elements.
     230                        double J=0;
     231                        int analysis_type,sub_analysis_type;
     232                        int numberofdofspernode,numberofnodes;
     233                        Vec u_g=NULL;
     234
     235                        /*retrieve active fem model: */
     236                        model->FindParam(&isstokes,"isstokes");
     237                        model->FindParam(&ismacayealpattyn,"ismacayealpattyn");
     238                        model->FindParam(&ishutter,"ishutter");
     239
     240                        if(isstokes){
     241                                femmodel=model->GetFormulation(DiagnosticAnalysisEnum(),StokesAnalysisEnum());
     242                        }
     243                        if(ismacayealpattyn){
     244                                femmodel=model->GetFormulation(DiagnosticAnalysisEnum(),HorizAnalysisEnum());
     245                        }
     246                        if(ishutter){
     247                                femmodel=model->GetFormulation(DiagnosticAnalysisEnum(),HutterAnalysisEnum());
     248                        }       
     249
     250
     251                        /*Recover analysis_type: */
     252                        femmodel->parameters->FindParam(&analysis_type,"analysis_type");
     253                        femmodel->parameters->FindParam(&sub_analysis_type,"sub_analysis_type");
     254                        femmodel->parameters->FindParam(&numberofdofspernode,"numberofdofspernode");
     255                        femmodel->parameters->FindParam(&numberofnodes,"numberofnodes");
     256       
     257                        /*Recover velocity: */
     258                        found=results->FindResult(&u_g,"u_g");
     259                        if(!found)throw ErrorException(__FUNCT__," could not find velocity to compute misfit");
     260
     261                        /*Add to inputs: */
     262                        inputs=new ParameterInputs;
     263                        inputs->Add("velocity",u_g,numberofdofspernode,numberofnodes);
     264
     265                        /*Compute misfit: */
     266                        Misfitx( &J, femmodel->elements,femmodel->nodes, femmodel->loads, femmodel->materials, femmodel->parameters,inputs,analysis_type,sub_analysis_type);
     267                       
     268       
     269                        if(my_rank==0)responses[i]=J;
     270
     271                        /*Some cleanup: */
     272                        VecFree(&u_g);
     273                        delete inputs;
    223274
    224275                }
Note: See TracChangeset for help on using the changeset viewer.