Changeset 21747
- Timestamp:
- 05/26/17 19:48:03 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Misfit.h
r21738 r21747 19 19 /*}}}*/ 20 20 IssmDouble OutputDefinitionsResponsex(FemModel* femmodel,int output_enum); 21 void GetVectorFromInputsx( IssmDouble** pvector,FemModel* femmodel,int name,int type); 22 21 void GetVectorFromInputsx( IssmDouble** pvector, int* pvector_size, FemModel* femmodel,int name); 23 22 24 23 class Misfit: public Object, public Definition{ … … 175 174 IssmDouble* observation= NULL; 176 175 IssmDouble* weights= NULL; 176 int msize,osize,wsize; 177 177 178 178 /*Are we transient?:*/ … … 181 181 182 182 /*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); 186 186 187 187 int count=0; 188 for (int i=0;i< femmodel->vertices->NumberOfVertices();i++){188 for (int i=0;i<msize;i++){ 189 189 misfit_t += pow(model[i]-observation[i],2)*weights[i]; 190 190 if (weights[i]!=0)count++; 191 191 } 192 misfit=sqrt(misfit_t )/count;192 misfit=sqrt(misfit_t/count); 193 193 194 194 /*Free ressources:*/ … … 209 209 210 210 /*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 215 215 int count=0; 216 for (int i=0;i< femmodel->vertices->NumberOfVertices();i++){216 for (int i=0;i<msize;i++){ 217 217 misfit_t += pow(model[i]-observation[i],2)*weights[i]; 218 218 if (weights[i]!=0)count++; 219 219 } 220 misfit=sqrt(misfit_t/count); 220 221 221 222 /*Add this time's contribution to curent misfit: */
Note:
See TracChangeset
for help on using the changeset viewer.