Changeset 21747


Ignore:
Timestamp:
05/26/17 19:48:03 (8 years ago)
Author:
Eric.Larour
Message:

CHG: added element discrete integrtaion.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/classes/Misfit.h

    r21738 r21747  
    1919/*}}}*/
    2020IssmDouble OutputDefinitionsResponsex(FemModel* femmodel,int output_enum);
    21 void    GetVectorFromInputsx( IssmDouble** pvector,FemModel* femmodel,int name,int type);
    22 
     21void    GetVectorFromInputsx( IssmDouble** pvector, int* pvector_size, FemModel* femmodel,int name);
    2322
    2423class Misfit: public Object, public Definition{
     
    175174                                 IssmDouble* observation= NULL;
    176175                                 IssmDouble* weights= NULL;
     176                                 int msize,osize,wsize;
    177177                                 
    178178                                 /*Are we transient?:*/
     
    181181                                         
    182182                                         /*get global vectors: */
    183                                          GetVectorFromInputsx(&model,femmodel,model_enum,VertexSIdEnum);
    184                                          GetVectorFromInputsx(&observation,femmodel,observation_enum,VertexSIdEnum);
    185                                          GetVectorFromInputsx(&weights,femmodel,weights_enum,VertexSIdEnum);
     183                                         GetVectorFromInputsx(&model,&msize,femmodel,model_enum);
     184                                         GetVectorFromInputsx(&observation,&osize,femmodel,observation_enum);_assert_(msize==osize);
     185                                         GetVectorFromInputsx(&weights,&wsize,femmodel,weights_enum); _assert_(wsize==msize);
    186186
    187187                                         int count=0;
    188                                          for (int i=0;i<femmodel->vertices->NumberOfVertices();i++){
     188                                         for (int i=0;i<msize;i++){
    189189                                                 misfit_t += pow(model[i]-observation[i],2)*weights[i];
    190190                                                 if (weights[i]!=0)count++;
    191191                                         }
    192                                          misfit=sqrt(misfit_t)/count;
     192                                         misfit=sqrt(misfit_t/count);
    193193
    194194                                         /*Free ressources:*/
     
    209209
    210210                                         /*get global vectors: */
    211                                          GetVectorFromInputsx(&model,femmodel,model_enum,VertexSIdEnum);
    212                                          GetVectorFromInputsx(&observation,femmodel,observation_enum,VertexSIdEnum);
    213                                          GetVectorFromInputsx(&weights,femmodel,weights_enum,VertexSIdEnum);
    214 
     211                                         GetVectorFromInputsx(&model,&msize,femmodel,model_enum);
     212                                         GetVectorFromInputsx(&observation,&osize,femmodel,observation_enum);_assert_(msize==osize);
     213                                         GetVectorFromInputsx(&weights,&wsize,femmodel,weights_enum); _assert_(wsize==msize);
     214                                         
    215215                                         int count=0;
    216                                          for (int i=0;i<femmodel->vertices->NumberOfVertices();i++){
     216                                         for (int i=0;i<msize;i++){
    217217                                                 misfit_t += pow(model[i]-observation[i],2)*weights[i];
    218218                                                 if (weights[i]!=0)count++;
    219219                                         }
     220                                         misfit=sqrt(misfit_t/count);
    220221
    221222                                         /*Add this time's contribution to curent misfit: */
Note: See TracChangeset for help on using the changeset viewer.