Changeset 3043


Ignore:
Timestamp:
02/16/10 14:22:28 (15 years ago)
Author:
Eric.Larour
Message:

Added parameters necessary for misfit computation in qmu_analysis=1.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/ModelProcessorx/Qmu/CreateParametersQmu.cpp

    r2333 r3043  
    4747        int num_qmu_mass_flux_segments=0;
    4848        int my_num_qmu_mass_flux_segments=0;
     49       
     50        /*parameters for misfit: */
     51        double* u_g_obs=NULL;
     52        double* vx_obs=NULL;
     53        double* vy_obs=NULL;
     54        double* fit=NULL;
    4955
    5056        #ifdef _SERIAL_
     
    272278                                xfree((void**)&my_qmu_mass_flux_segments);
    273279                        }
     280                        if (strcmp(descriptor,"misfit")==0){
     281
     282                                /*We need the observed velocity: */
     283                                IoModelFetchData(&vx_obs,NULL,NULL,iomodel_handle,"vx_obs");
     284                                IoModelFetchData(&vy_obs,NULL,NULL,iomodel_handle,"vy_obs");
     285
     286                                /*Now, recover fit: */
     287                                IoModelFetchData(&iomodel->fit,NULL,NULL,iomodel_handle,"fit");
     288
     289                                u_g_obs=(double*)xcalloc(iomodel->numberofnodes*2,sizeof(double));
     290                                if(vx_obs)for(i=0;i<iomodel->numberofnodes;i++)u_g_obs[2*i+0]=vx_obs[i]/iomodel->yts;
     291                                if(vy_obs)for(i=0;i<iomodel->numberofnodes;i++)u_g_obs[2*i+1]=vy_obs[i]/iomodel->yts;
     292
     293                                count++;
     294                                param= new Param(count,"velocity_obs",DOUBLEVEC);
     295                                param->SetDoubleVec(u_g_obs,2*iomodel->numberofnodes,2);
     296                                parameters->AddObject(param);
     297
     298                                count++;
     299                                param= new Param(count,"fit",DOUBLEVEC);
     300                                param->SetDoubleVec(iomodel->fit,iomodel->nsteps);
     301                                parameters->AddObject(param);
     302
     303                                xfree((void**)&u_g_obs);
     304                                xfree((void**)&vx_obs);
     305                                xfree((void**)&vy_obs);
     306                                xfree((void**)&fit);
     307                        }
    274308                }
    275309
Note: See TracChangeset for help on using the changeset viewer.