Changeset 1184


Ignore:
Timestamp:
06/30/09 13:08:18 (16 years ago)
Author:
Mathieu Morlighem
Message:

moved u_g_obs to inputs

Location:
issm/trunk/src
Files:
32 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/DataSet/DataSet.cpp

    r962 r1184  
    12431243
    12441244
    1245 void  DataSet::Du(Vec du_g,double*  u_g,double* u_g_obs,void* inputs,int analysis_type,int sub_analysis_type){
     1245void  DataSet::Du(Vec du_g,double*  u_g,void* inputs,int analysis_type,int sub_analysis_type){
    12461246
    12471247
     
    12541254
    12551255                        element=(Element*)(*object);
    1256                         element->Du(du_g,u_g,u_g_obs,inputs,analysis_type,sub_analysis_type);
     1256                        element->Du(du_g,u_g,inputs,analysis_type,sub_analysis_type);
    12571257                }
    12581258        }
     
    12791279}               
    12801280               
    1281 void  DataSet::Misfit(double* pJ, double* u_g,double* u_g_obs,void* inputs,int analysis_type,int sub_analysis_type){
     1281void  DataSet::Misfit(double* pJ, double* u_g,void* inputs,int analysis_type,int sub_analysis_type){
    12821282
    12831283        double J=0;;
     
    12911291
    12921292                        element=(Element*)(*object);
    1293                         J+=element->Misfit(u_g,u_g_obs,inputs,analysis_type,sub_analysis_type);
     1293                        J+=element->Misfit(u_g,inputs,analysis_type,sub_analysis_type);
    12941294
    12951295                }
  • issm/trunk/src/c/DataSet/DataSet.h

    r848 r1184  
    7373                void  MeltingConstraints(int* pnum_unstable_constraints,void* inputs,int analysis_type,int sub_analysis_type);
    7474                DataSet* Copy(void);
    75                 void  Du(Vec du_g,double*  u_g,double* u_g_obs,void* inputs,int analysis_type,int sub_analysis_type);
     75                void  Du(Vec du_g,double*  u_g,void* inputs,int analysis_type,int sub_analysis_type);
    7676                void  Gradj(Vec grad_g,double*  u_g,double* lambda_g,void* inputs,int analysis_type,int sub_analysis_type,char* control_type);
    77                 void  Misfit(double* pJ, double* u_g,double* u_g_obs,void* inputs,int analysis_type,int sub_analysis_type);
     77                void  Misfit(double* pJ, double* u_g,void* inputs,int analysis_type,int sub_analysis_type);
    7878                void  FieldDepthAverageAtBase(Vec field,double* field_serial,char* fieldname);
    7979                int   DeleteObject(Object* object);
  • issm/trunk/src/c/Dux/Dux.cpp

    r465 r1184  
    1414
    1515void Dux( Vec* pdu_g, DataSet* elements,DataSet* nodes, DataSet* loads, DataSet* materials,
    16                 double* u_g, double* u_g_obs, ParameterInputs* inputs,int analysis_type,int sub_analysis_type){
     16                double* u_g,ParameterInputs* inputs,int analysis_type,int sub_analysis_type){
    1717
    1818        int i;
     
    3333
    3434        /*Compute velocity difference: */
    35         elements->Du(du_g, u_g,u_g_obs,inputs,analysis_type,sub_analysis_type);
     35        elements->Du(du_g, u_g,inputs,analysis_type,sub_analysis_type);
    3636
    3737        /*Assemble vector: */
  • issm/trunk/src/c/Dux/Dux.h

    r465 r1184  
    1010/* local prototypes: */
    1111void Dux( Vec* pdu_g, DataSet* elements,DataSet* nodes, DataSet* loads, DataSet* materials,
    12                 double* u_g, double* u_g_obs, ParameterInputs* inputs,int analysis_type,int sub_analysis_type);
     12                double* u_g,ParameterInputs* inputs,int analysis_type,int sub_analysis_type);
    1313
    1414#endif  /* _DUX_H */
  • issm/trunk/src/c/Misfitx/Misfitx.cpp

    r465 r1184  
    1414
    1515void Misfitx( double* pJ, DataSet* elements,DataSet* nodes, DataSet* loads, DataSet* materials,
    16                 double* u_g, double* u_g_obs, ParameterInputs* inputs,int analysis_type,int sub_analysis_type){
     16                double* u_g, ParameterInputs* inputs,int analysis_type,int sub_analysis_type){
    1717       
    1818        /*output: */
     
    2424
    2525        /*Compute gradients: */
    26         elements->Misfit(&J, u_g,u_g_obs,inputs,analysis_type,sub_analysis_type);
     26        elements->Misfit(&J, u_g,inputs,analysis_type,sub_analysis_type);
    2727
    2828        /*Sum all J from all cpus of the cluster:*/
  • issm/trunk/src/c/Misfitx/Misfitx.h

    r465 r1184  
    1010/* local prototypes: */
    1111void Misfitx( double* pJ, DataSet* elements,DataSet* nodes, DataSet* loads, DataSet* materials,
    12                 double* u_g, double* u_g_obs, ParameterInputs* inputs,int analysis_type,int sub_analysis_type);
     12                        double* u_g, ParameterInputs* inputs,int analysis_type,int sub_analysis_type);
    1313
    1414#endif  /* _MISFITX_H */
  • issm/trunk/src/c/objects/Beam.cpp

    r1104 r1184  
    566566#undef __FUNCT__
    567567#define __FUNCT__ "Beam::Du"
    568 void  Beam::Du(_p_Vec*, double*, double*, void*, int,int){
     568void  Beam::Du(_p_Vec*, double*, void*, int,int){
    569569        throw ErrorException(__FUNCT__," not supported yet!");
    570570}
     
    586586#undef __FUNCT__
    587587#define __FUNCT__ "Beam::Misfit"
    588 double Beam::Misfit(double*, double*, void*, int,int ){
     588double Beam::Misfit(double*, void*, int,int ){
    589589        throw ErrorException(__FUNCT__," not supported yet!");
    590590}
  • issm/trunk/src/c/objects/Beam.h

    r1104 r1184  
    7979                void  GetBedList(double*);
    8080                void  GetThicknessList(double* thickness_list);
    81                 void  Du(_p_Vec*, double*, double*, void*, int,int);
     81                void  Du(_p_Vec*, double*, void*, int,int);
    8282                void  Gradj(_p_Vec*, double*, double*, void*, int, int,char*);
    8383                void  GradjDrag(_p_Vec*, double*, double*, void*, int,int );
    8484                void  GradjB(_p_Vec*, double*, double*, void*, int,int );
    85                 double Misfit(double*, double*, void*, int,int );
     85                double Misfit(double*, void*, int,int );
    8686                void  GetNodalFunctions(double* l1l2, double gauss_coord);
    8787                void  GetParameterValue(double* pvalue, double* value_list,double gauss_coord);
  • issm/trunk/src/c/objects/Element.h

    r803 r1184  
    3434                virtual void  GetThicknessList(double* thickness_list)=0;
    3535                virtual void  GetBedList(double* bed_list)=0;
    36                 virtual void  Du(Vec du_g,double* u_g,double* u_g_obs,void* inputs,int analysis_type,int sub_analysis_type)=0;
     36                virtual void  Du(Vec du_g,double* u_g,void* inputs,int analysis_type,int sub_analysis_type)=0;
    3737                virtual void  Gradj(Vec grad_g,double* u_g,double* lambda_g,void* inputs,int analysis_type,int sub_analysis_type,char* control_type)=0;
    3838                virtual void  GradjDrag(Vec grad_g,double* u_g,double* lambda_g,void* inputs,int analysis_type,int sub_analysis_type)=0;
    3939                virtual void  GradjB(Vec grad_g,double* u_g,double* lambda_g,void* inputs,int analysis_type,int sub_analysis_type)=0;
    40         virtual double Misfit(double* u_g,double* u_g_obs,void* inputs,int analysis_type,int sub_analysis_type)=0;
    41         virtual void  ComputePressure(Vec p_g)=0;
     40                virtual double Misfit(double* u_g,void* inputs,int analysis_type,int sub_analysis_type)=0;
     41                virtual void  ComputePressure(Vec p_g)=0;
    4242
    4343                int           Enum();
  • issm/trunk/src/c/objects/OptArgs.h

    r758 r1184  
    1616        mxArray* inputs;
    1717        mxArray* param_g;
    18         mxArray* u_g_obs;
    1918        mxArray* grad_g;
    2019        mxArray* n;
     
    3231        FemModel* femmodel;
    3332        double* param_g;
    34         double* u_g_obs;
    3533        double* grad_g;
    3634        ParameterInputs* inputs;
  • issm/trunk/src/c/objects/Penta.cpp

    r1104 r1184  
    11761176#undef __FUNCT__
    11771177#define __FUNCT__ "Penta::Du"
    1178 void  Penta::Du(Vec du_g,double* u_g,double* u_g_obs,void* inputs,int analysis_type,int sub_analysis_type){
     1178void  Penta::Du(Vec du_g,double* u_g,void* inputs,int analysis_type,int sub_analysis_type){
    11791179
    11801180        int i;
     
    11921192                 * and compute Du*/
    11931193                tria=(Tria*)SpawnTria(0,1,2); //grids 0, 1 and 2 make the new tria (lower face).
    1194                 tria->Du(du_g,u_g,u_g_obs,inputs,analysis_type,sub_analysis_type);
     1194                tria->Du(du_g,u_g,inputs,analysis_type,sub_analysis_type);
    11951195                delete tria;
    11961196                return;
     
    11991199               
    12001200                tria=(Tria*)SpawnTria(3,4,5); //grids 3, 4 and 5 make the new tria (upper face).
    1201                 tria->Du(du_g,u_g,u_g_obs,inputs,analysis_type,sub_analysis_type);
     1201                tria->Du(du_g,u_g,inputs,analysis_type,sub_analysis_type);
    12021202                delete tria;
    12031203                return;
     
    12461246#undef __FUNCT__
    12471247#define __FUNCT__ "Penta::Misfit"
    1248 double Penta::Misfit(double* velocity,double* obs_velocity,void* inputs,int analysis_type,int sub_analysis_type){
     1248double Penta::Misfit(double* velocity,void* inputs,int analysis_type,int sub_analysis_type){
    12491249       
    12501250        double J;
     
    12621262                 * and compute Misfit*/
    12631263                tria=(Tria*)SpawnTria(0,1,2); //grids 0, 1 and 2 make the new tria (lower face).
    1264                 J=tria->Misfit( velocity,obs_velocity,inputs,analysis_type,sub_analysis_type);
     1264                J=tria->Misfit( velocity,inputs,analysis_type,sub_analysis_type);
    12651265                delete tria;
    12661266                return J;
     
    12691269
    12701270                tria=(Tria*)SpawnTria(3,4,5); //grids 3, 4 and 5 make the new tria (upper face).
    1271                 J=tria->Misfit( velocity,obs_velocity,inputs,analysis_type,sub_analysis_type);
     1271                J=tria->Misfit( velocity,inputs,analysis_type,sub_analysis_type);
    12721272                delete tria;
    12731273                return J;
  • issm/trunk/src/c/objects/Penta.h

    r1104 r1184  
    8686                void  GetNodes(void** nodes);
    8787                int   GetOnBed();
    88                 void  Du(Vec du_g,double* u_g,double* u_g_obs,void* inputs,int analysis_type,int sub_analysis_type);
     88                void  Du(Vec du_g,double* u_g,void* inputs,int analysis_type,int sub_analysis_type);
    8989                void  Gradj(Vec grad_g,double* u_g,double* lambda_g,void* inputs,int analysis_type,int sub_analysis_type,char* control_type);
    9090                void  GradjDrag(Vec grad_g,double* u_g,double* lambda_g,void* inputs,int analysis_type,int sub_analysis_type);
    9191                void  GradjB(Vec grad_g,double* u_g,double* lambda_g,void* inputs,int analysis_type,int sub_analysis_type);
    92         double Misfit(double* u_g,double* u_g_obs,void* inputs,int analysis_type,int sub_analysis_type);
     92                double Misfit(double* u_g,void* inputs,int analysis_type,int sub_analysis_type);
    9393               
    9494                void          GetThicknessList(double* thickness_list);
  • issm/trunk/src/c/objects/Sing.cpp

    r803 r1184  
    450450#undef __FUNCT__
    451451#define __FUNCT__ "Sing::Du"
    452 void  Sing::Du(_p_Vec*, double*, double*, void*, int,int){
     452void  Sing::Du(_p_Vec*, double*, void*, int,int){
    453453        throw ErrorException(__FUNCT__," not supported yet!");
    454454}
     
    470470#undef __FUNCT__
    471471#define __FUNCT__ "Sing::Misfit"
    472 double Sing::Misfit(double*, double*, void*, int,int){
     472double Sing::Misfit(double*, void*, int,int){
    473473        throw ErrorException(__FUNCT__," not supported yet!");
    474474}
  • issm/trunk/src/c/objects/Sing.h

    r803 r1184  
    7474                void  GetBedList(double*);
    7575                void  GetThicknessList(double* thickness_list);
    76                 void  Du(_p_Vec*, double*, double*, void*, int,int);
     76                void  Du(_p_Vec*, double*, void*, int,int);
    7777                void  Gradj(_p_Vec*, double*, double*, void*, int, int,char*);
    7878                void  GradjDrag(_p_Vec*, double*, double*, void*, int,int);
    7979                void  GradjB(_p_Vec*, double*, double*, void*, int,int);
    80                 double Misfit(double*, double*, void*, int,int);
     80                double Misfit(double*, void*, int,int);
    8181
    8282
  • issm/trunk/src/c/objects/Tria.cpp

    r1104 r1184  
    20072007#undef __FUNCT__
    20082008#define __FUNCT__ "Tria::Du"
    2009 void Tria::Du(Vec du_g,double* velocity,double* obs_velocity,void* vinputs,int analysis_type,int sub_analysis_type){
     2009void Tria::Du(Vec du_g,double* velocity,void* vinputs,int analysis_type,int sub_analysis_type){
    20102010
    20112011        int i;
     
    20182018        int          doflist[numdof];
    20192019        int          numberofdofspernode;
     2020        int          dofs2[2]={0,1};
    20202021
    20212022        /* grid data: */
     2023        double vxvy_list[numgrids][2];
    20222024        double vx_list[numgrids];
    20232025        double vy_list[numgrids];
     2026        double obs_vxvy_list[numgrids][2];
    20242027        double obs_vx_list[numgrids];
    20252028        double obs_vy_list[numgrids];
     
    20742077        /* Recover input data: */
    20752078        if(!inputs->Recover("fit",&fit)) throw ErrorException(__FUNCT__," missing fit input parameter");
     2079        if(!inputs->Recover("velocity_obs",&obs_vxvy_list[0][0],2,dofs2,numgrids,(void**)nodes)){
     2080                throw ErrorException(__FUNCT__,"missing velocity_obs input parameter");
     2081        }
     2082
     2083        for(i=0;i<numgrids;i++){
     2084                obs_vx_list[i]=obs_vxvy_list[i][0];
     2085                obs_vy_list[i]=obs_vxvy_list[i][1];
     2086        }
    20762087
    20772088        /*Initialize velocities: */
     
    20792090                vx_list[i]=velocity[doflist[i*numberofdofspernode+0]];
    20802091                vy_list[i]=velocity[doflist[i*numberofdofspernode+1]];
    2081                 obs_vx_list[i]=obs_velocity[doflist[i*numberofdofspernode+0]];
    2082                 obs_vy_list[i]=obs_velocity[doflist[i*numberofdofspernode+1]];
     2092                //obs_vx_list[i]=obs_velocity[doflist[i*numberofdofspernode+0]];
     2093                //obs_vy_list[i]=obs_velocity[doflist[i*numberofdofspernode+1]];
    20832094        }
    20842095
     
    25612572#undef __FUNCT__
    25622573#define __FUNCT__ "Tria::Misfit"
    2563 double Tria::Misfit(double* velocity,double* obs_velocity,void* vinputs,int analysis_type,int sub_analysis_type){
     2574double Tria::Misfit(double* velocity,void* vinputs,int analysis_type,int sub_analysis_type){
    25642575
    25652576        int i;
     
    25722583        const int    numdof=2*numgrids;
    25732584        const int    NDOF2=2;
     2585        int          dofs2[2]={0,1};
    25742586        double       xyz_list[numgrids][3];
    25752587        int          doflist[numdof];
     
    25772589
    25782590        /* grid data: */
     2591        double vxvy_list[numgrids][2];
    25792592        double vx_list[numgrids];
    25802593        double vy_list[numgrids];
     2594        double obs_vxvy_list[numgrids][2];
    25812595        double obs_vx_list[numgrids];
    25822596        double obs_vy_list[numgrids];
     
    26172631        /* Recover input data: */
    26182632        if(!inputs->Recover("fit",&fit)) throw ErrorException(__FUNCT__," missing fit input parameter");
     2633        if(!inputs->Recover("velocity_obs",&obs_vxvy_list[0][0],2,dofs2,numgrids,(void**)nodes)){
     2634                throw ErrorException(__FUNCT__,"missing velocity_obs input parameter");
     2635        }
     2636
     2637        for(i=0;i<numgrids;i++){
     2638                obs_vx_list[i]=obs_vxvy_list[i][0];
     2639                obs_vy_list[i]=obs_vxvy_list[i][1];
     2640        }
    26192641
    26202642        /*Initialize velocities: */
     
    26222644                vx_list[i]=velocity[doflist[i*numberofdofspernode+0]];
    26232645                vy_list[i]=velocity[doflist[i*numberofdofspernode+1]];
    2624                 obs_vx_list[i]=obs_velocity[doflist[i*numberofdofspernode+0]];
    2625                 obs_vy_list[i]=obs_velocity[doflist[i*numberofdofspernode+1]];
    26262646        }
    26272647       
  • issm/trunk/src/c/objects/Tria.h

    r1104 r1184  
    9393                void  GetJacobianInvert(double*  Jinv, double* xyz_list,double* gauss_l1l2l3);
    9494                void  GetJacobian(double* J, double* xyz_list,double* gauss_l1l2l3);
    95                 void  Du(Vec du_g,double* u_g,double* u_g_obs,void* inputs,int analysis_type,int sub_analysis_type);
     95                void  Du(Vec du_g,double* u_g,void* inputs,int analysis_type,int sub_analysis_type);
    9696                void  Gradj(Vec grad_g,double* u_g,double* lambda_g,void* inputs,int analysis_type,int sub_analysis_type,char* control_type);
    9797                void  GradjDrag(Vec grad_g,double* u_g,double* lambda_g,void* inputs,int analysis_type,int sub_analysis_type);
    9898                void  GradjB(Vec grad_g,double* u_g,double* lambda_g,void* inputs,int analysis_type,int sub_analysis_type);
    99         double Misfit(double* u_g,double* u_g_obs,void* inputs,int analysis_type,int sub_analysis_type);
     99                double Misfit(double* u_g,void* inputs,int analysis_type,int sub_analysis_type);
    100100
    101101                void  CreatePVectorDiagnosticHoriz(Vec pg,void* inputs,int analysis_type,int sub_analysis_type);
  • issm/trunk/src/c/parallel/GradJCompute.cpp

    r1046 r1184  
    1515#endif
    1616
    17 Vec GradJCompute(ParameterInputs* inputs,FemModel* femmodel,double* u_g_obs){
     17Vec GradJCompute(ParameterInputs* inputs,FemModel* femmodel){
    1818       
    1919       
     
    5454
    5555        _printf_("%s\n","      buid Du, difference between observed velocity and model velocity:");
    56         Dux( &du_g, femmodel->elements,femmodel->nodes,femmodel->loads,femmodel->materials,u_g_double,u_g_obs, inputs,analysis_type,sub_analysis_type);
     56        Dux( &du_g, femmodel->elements,femmodel->nodes,femmodel->loads,femmodel->materials,u_g_double,inputs,analysis_type,sub_analysis_type);
    5757
    5858        _printf_("%s\n","      reduce adjoint load from g-set to f-set:");
  • issm/trunk/src/c/parallel/control.cpp

    r1120 r1184  
    3636        /*Intermediary: */
    3737        double* u_g_initial=NULL;
     38        double* u_g_obs=NULL;
    3839        Param*  param=NULL;
    3940
     
    7273        _printf_("initialize inputs:\n");
    7374        femmodels[0].parameters->FindParam((void*)&u_g_initial,"u_g");
     75        femmodels[0].parameters->FindParam((void*)&u_g_obs,"u_g_obs");
    7476        femmodels[0].parameters->FindParam((void*)&numberofnodes,"numberofnodes");
    7577
    7678        inputs=new ParameterInputs;
    7779        inputs->Add("velocity",u_g_initial,3,numberofnodes);
     80        inputs->Add("velocity_obs",u_g_obs,2,numberofnodes);
    7881
    7982        /*erase velocities: */
    8083        param=(Param*)femmodels[0].parameters->FindParamObject("u_g");
     84        femmodels[0].parameters->DeleteObject((Object*)param);
     85
     86        param=(Param*)femmodels[0].parameters->FindParamObject("u_g_obs");
    8187        femmodels[0].parameters->DeleteObject((Object*)param);
    8288
  • issm/trunk/src/c/parallel/control_core.cpp

    r1120 r1184  
    2626        double* fit=NULL;
    2727        double* optscal=NULL;
    28         double* u_g_obs=NULL;
    2928        int     gsize;
    3029        double* maxiter=NULL;
     
    7776        fem_dh->parameters->FindParam((void*)&maxcontrolconstraint,"maxcontrolconstraint");
    7877        fem_dh->parameters->FindParam((void*)&param_g,"param_g");
    79         fem_dh->parameters->FindParam((void*)&u_g_obs,"u_g_obs");
    8078        fem_dh->parameters->FindParam((void*)&analysis_type,"analysis_type");
    8179        fem_dh->parameters->FindParam((void*)&sub_analysis_type,"sub_analysis_type");
     
    8886        /*erase useless parameters: */
    8987        param=(Param*)fem_dh->parameters->FindParamObject("param_g");
    90         fem_dh->parameters->DeleteObject((Object*)param);
    91 
    92         param=(Param*)fem_dh->parameters->FindParamObject("u_g_obs");
    9388        fem_dh->parameters->DeleteObject((Object*)param);
    9489
     
    107102
    108103                _printf_("%s\n","      computing gradJ...");
    109                 grad_g=GradJCompute(inputs,fem_dh,u_g_obs);
     104                grad_g=GradJCompute(inputs,fem_dh);
    110105                _printf_("%s\n","      done.");
    111106
     
    118113
    119114                _printf_("%s\n","      optimizing along gradient direction...");
    120                 optargs.femmodel=fem_dh; optargs.param_g=param_g; optargs.u_g_obs=u_g_obs; optargs.grad_g=grad_g_double; optargs.inputs=inputs;optargs.n=n;
     115                optargs.femmodel=fem_dh; optargs.param_g=param_g; optargs.grad_g=grad_g_double; optargs.inputs=inputs;optargs.n=n;
    121116                optpars.xmin=0; optpars.xmax=1; optpars.tolerance=tolx; optpars.maxiter=(int)maxiter[n];
    122117                BrentSearch(&search_scalar,J+n,&optpars,&objectivefunctionC,&optargs);
  • issm/trunk/src/c/parallel/objectivefunctionC.cpp

    r1046 r1184  
    2525        FemModel* femmodel=NULL;
    2626        double* param_g=NULL;
    27         double* u_g_obs=NULL;
    2827        double* grad_g=NULL;
    2928        ParameterInputs* inputs=NULL;
     
    4847        femmodel=optargs->femmodel;
    4948        param_g=optargs->param_g;
    50         u_g_obs=optargs->u_g_obs;
    5149        grad_g=optargs->grad_g;
    5250        inputs=optargs->inputs;
     
    8381        inputs->Add("fit",fit[n]);
    8482        Misfitx( &J, femmodel->elements,femmodel->nodes, femmodel->loads, femmodel->materials,
    85                 u_g_double,u_g_obs, inputs,analysis_type,sub_analysis_type);
     83                u_g_double,inputs,analysis_type,sub_analysis_type);
    8684
    8785        /*Free ressources:*/
  • issm/trunk/src/c/parallel/parallel.h

    r1037 r1184  
    99#include "../io/io.h"
    1010
    11 Vec GradJCompute(ParameterInputs* inputs,FemModel* femmodel,double* u_g_obs);
     11Vec GradJCompute(ParameterInputs* inputs,FemModel* femmodel);
    1212
    1313void diagnostic_core(DataSet* results,FemModel* fems, ParameterInputs* inputs);
  • issm/trunk/src/c/shared/Numerics/OptFunc.cpp

    r758 r1184  
    2323        double J;
    2424
    25         mxArray*   inputs[9];
     25        mxArray*   inputs[8];
    2626        mxArray*   psearch_scalar=NULL;
    2727        mxArray*   mxJ=NULL;
    28 
    2928
    3029        psearch_scalar=mxCreateDoubleScalar(scalar);
     
    3332        inputs[2]=optargs->inputs;
    3433        inputs[3]=optargs->param_g;
    35         inputs[4]=optargs->u_g_obs;
    36         inputs[5]=optargs->grad_g;
    37         inputs[6]=optargs->n;
    38         inputs[7]=optargs->analysis_type;
    39         inputs[8]=optargs->sub_analysis_type;
     34        inputs[4]=optargs->grad_g;
     35        inputs[5]=optargs->n;
     36        inputs[6]=optargs->analysis_type;
     37        inputs[7]=optargs->sub_analysis_type;
    4038
    41         mexCallMATLAB( 1, &mxJ, 9, (mxArray**)inputs, optargs->function_name);
     39        mexCallMATLAB( 1, &mxJ, 8, (mxArray**)inputs, optargs->function_name);
    4240
    4341        /*extract misfit from mxArray*/
  • issm/trunk/src/m/solutions/cielo/GradJCompute.m

    r1128 r1184  
    1 function [u_g grad_g]=GradJCompute(m,inputs, u_g_obs,analysis_type,sub_analysis_type);
     1function [u_g grad_g]=GradJCompute(m,inputs,analysis_type,sub_analysis_type);
    22
    33%Recover solution for this stiffness and right hand side:
     
    77%Buid Du, difference between observed velocity and model velocity.
    88displaystring(m.parameters.debug,'%s','          computing Du...');
    9 [Du_g]=Du(m.elements,m.nodes,m.loads,m.materials,m.parameters, u_g,u_g_obs,inputs,analysis_type,sub_analysis_type);
     9[Du_g]=Du(m.elements,m.nodes,m.loads,m.materials,m.parameters, u_g,inputs,analysis_type,sub_analysis_type);
    1010
    1111%Reduce adjoint load from g-set to f-set
  • issm/trunk/src/m/solutions/cielo/control.m

    r1039 r1184  
    3333        inputs=inputlist;
    3434        inputs=add(inputs,'velocity',models.dh.parameters.u_g,'doublevec',3,models.dh.parameters.numberofnodes);
     35        inputs=add(inputs,'velocity_obs',models.dh.parameters.u_g_obs,'doublevec',2,models.dh.parameters.numberofnodes);
    3536
    3637        %compute solution
  • issm/trunk/src/m/solutions/cielo/control_core.m

    r1128 r1184  
    1616isstokes=m_dh.parameters.isstokes;
    1717
    18 %initialize control parameters, gradients and observations
    19 u_g_obs=m_dh.parameters.u_g_obs;
     18%initialize control parameters
    2019param_g=models.dh.parameters.param_g;
    2120
     
    3837
    3938        displaystring(debug,'\n%s',['      computing gradJ...']);
    40         [u_g c(n).grad_g]=GradJCompute(m_dh,inputs,u_g_obs,'diagnostic','horiz');
     39        [u_g c(n).grad_g]=GradJCompute(m_dh,inputs,'diagnostic','horiz');
    4140        inputs=add(inputs,'velocity',u_g,'doublevec',2,m_dh.parameters.numberofnodes);
    4241
     
    5453
    5554        displaystring(debug,'\n%s',['      optimizing along gradient direction...']);
    56         [search_scalar c(n).J]=ControlOptimization('objectivefunctionC',0,1,options,m_dh,inputs,param_g,u_g_obs,c(n).grad_g,n,'diagnostic','horiz');
     55        [search_scalar c(n).J]=ControlOptimization('objectivefunctionC',0,1,options,m_dh,inputs,param_g,c(n).grad_g,n,'diagnostic','horiz');
    5756
    5857        displaystring(debug,'\n%s',['      updating parameter using optimized search scalar...']);
  • issm/trunk/src/m/solutions/cielo/objectivefunctionC.m

    r1046 r1184  
    1 function J =objectivefunctionC(search_scalar,m,inputs,p_g,u_g_obs,grad_g,n,analysis_type,sub_analysis_type);
     1function J =objectivefunctionC(search_scalar,m,inputs,p_g,grad_g,n,analysis_type,sub_analysis_type);
    22       
    33%recover some parameters
     
    1616
    1717%Compute misfit for this velocity field.
    18 J=Misfit(m.elements,m.nodes,m.loads,m.materials,m.parameters, u_g, u_g_obs,inputs,analysis_type,sub_analysis_type);
     18J=Misfit(m.elements,m.nodes,m.loads,m.materials,m.parameters, u_g,inputs,analysis_type,sub_analysis_type);
  • issm/trunk/src/mex/ControlOptimization/ControlOptimization.cpp

    r759 r1184  
    2626        mxArray* m=NULL;
    2727        mxArray* pg=NULL;
    28         mxArray* u_g_obs=NULL;
    2928        mxArray* grad_g=NULL;
    3029        mxArray* n=NULL;
     
    4746        optargs.param_g=PG;
    4847        optargs.inputs=INPUTS;
    49         optargs.u_g_obs=VELOBS;
    5048        optargs.grad_g=GRADIENT;
    5149        optargs.n=STEP;
     
    7472{
    7573        _printf_("\n");
    76         _printf_("   usage: [search_scalar J] = %s(function_name,xmin,xmax,options,m,inputs,p_g,u_g_obs,grad_g,step,analysis_type,sub_analysis_type)\n",__FUNCT__);
     74        _printf_("   usage: [search_scalar J] = %s(function_name,xmin,xmax,options,m,inputs,p_g,grad_g,step,analysis_type,sub_analysis_type)\n",__FUNCT__);
    7775        _printf_("\n");
    7876}
  • issm/trunk/src/mex/ControlOptimization/ControlOptimization.h

    r465 r1184  
    2424#define INPUTS (mxArray*)prhs[5]
    2525#define PG (mxArray*)prhs[6]
    26 #define VELOBS (mxArray*)prhs[7]
    27 #define GRADIENT (mxArray*)prhs[8]
    28 #define STEP (mxArray*)prhs[9]
    29 #define ANALYSIS (mxArray*)prhs[10]
    30 #define SUBANALYSIS (mxArray*)prhs[11]
     26#define GRADIENT (mxArray*)prhs[7]
     27#define STEP (mxArray*)prhs[8]
     28#define ANALYSIS (mxArray*)prhs[9]
     29#define SUBANALYSIS (mxArray*)prhs[10]
    3130
    3231/* serial output macros: */
     
    3837#define NLHS  2
    3938#undef NRHS
    40 #define NRHS  12
     39#define NRHS  11
    4140
    4241
  • issm/trunk/src/mex/Du/Du.cpp

    r465 r1184  
    1616        DataSet* materials=NULL;
    1717        double*  u_g=NULL;
    18         double*  u_g_obs=NULL;
    1918        ParameterInputs* inputs=NULL;
    2019        char*             analysis_type_string=NULL;
     
    3938        FetchData((void**)&materials,NULL,NULL,MATERIALS,"DataSet",NULL);
    4039        FetchData((void**)&u_g,NULL,NULL,UG,"Vector","Vec");
    41         FetchData((void**)&u_g_obs,NULL,NULL,UGOBS,"Vector","Vec");
    4240        FetchData((void**)&analysis_type_string,NULL,NULL,ANALYSIS,"String",NULL);
    4341        analysis_type=AnalysisTypeAsEnum(analysis_type_string);
     
    5048
    5149        /*!Call core code: */
    52         Dux(&du_g, elements,nodes,loads,materials,u_g,u_g_obs,inputs,analysis_type,sub_analysis_type);
     50        Dux(&du_g, elements,nodes,loads,materials,u_g,inputs,analysis_type,sub_analysis_type);
    5351
    5452        /*write output : */
     
    6159        delete materials;
    6260        xfree((void**)&u_g);
    63         xfree((void**)&u_g_obs);
    6461        VecFree(&du_g);
    6562        delete inputs;
     
    7471{
    7572        _printf_("\n");
    76         _printf_("   usage: [du_g] = %s(elements, nodes,loads, materials, parameters, u_g, u_g_obs,inputs);\n",__FUNCT__);
     73        _printf_("   usage: [du_g] = %s(lements, nodes,loads, materials, parameters, u_g,inputs);\n",__FUNCT__);
    7774        _printf_("\n");
    7875}
  • issm/trunk/src/mex/Du/Du.h

    r465 r1184  
    2323#define PARAMETERS (mxArray*)prhs[4]
    2424#define UG (mxArray*)prhs[5]
    25 #define UGOBS (mxArray*)prhs[6]
    26 #define INPUTS (mxArray*)prhs[7]
    27 #define ANALYSIS (mxArray*)prhs[8]
    28 #define SUBANALYSIS (mxArray*)prhs[9]
     25#define INPUTS (mxArray*)prhs[6]
     26#define ANALYSIS (mxArray*)prhs[7]
     27#define SUBANALYSIS (mxArray*)prhs[8]
    2928
    3029/* serial output macros: */
     
    3534#define NLHS  1
    3635#undef NRHS
    37 #define NRHS  10
     36#define NRHS  9
    3837
    3938
  • issm/trunk/src/mex/Misfit/Misfit.cpp

    r465 r1184  
    1616        DataSet* materials=NULL;
    1717        double*  u_g=NULL;
    18         double*  u_g_obs=NULL;
    1918        ParameterInputs* inputs=NULL;
    2019        char*             analysis_type_string=NULL;
     
    3837        FetchData((void**)&materials,NULL,NULL,MATERIALS,"DataSet",NULL);
    3938        FetchData((void**)&u_g,NULL,NULL,UG,"Vector","Vec");
    40         FetchData((void**)&u_g_obs,NULL,NULL,UGOBS,"Vector","Vec");
    4139        FetchData((void**)&analysis_type_string,NULL,NULL,ANALYSIS,"String",NULL);
    4240        analysis_type=AnalysisTypeAsEnum(analysis_type_string);
     
    4947
    5048        /*!Call core code: */
    51         Misfitx(&J, elements,nodes,loads,materials,u_g,u_g_obs,inputs,analysis_type,sub_analysis_type);
     49        Misfitx(&J, elements,nodes,loads,materials,u_g,inputs,analysis_type,sub_analysis_type);
    5250
    5351        /*write output : */
     
    6058        delete materials;
    6159        xfree((void**)&u_g);
    62         xfree((void**)&u_g_obs);
    6360        delete inputs;
    6461        xfree((void**)&analysis_type_string);
     
    7269{
    7370        _printf_("\n");
    74         _printf_("   usage: [J] = %s(elements, nodes,loads, materials, parameters, u_g, u_g_obs,inputs);\n",__FUNCT__);
     71        _printf_("   usage: [J] = %s(elements, nodes,loads, materials, parameters, u_g,inputs);\n",__FUNCT__);
    7572        _printf_("\n");
    7673}
  • issm/trunk/src/mex/Misfit/Misfit.h

    r465 r1184  
    2323#define PARAMETERS (mxArray*)prhs[4]
    2424#define UG (mxArray*)prhs[5]
    25 #define UGOBS (mxArray*)prhs[6]
    26 #define INPUTS (mxArray*)prhs[7]
    27 #define ANALYSIS (mxArray*)prhs[8]
    28 #define SUBANALYSIS (mxArray*)prhs[9]
     25#define INPUTS (mxArray*)prhs[6]
     26#define ANALYSIS (mxArray*)prhs[7]
     27#define SUBANALYSIS (mxArray*)prhs[8]
    2928
    3029/* serial output macros: */
     
    3534#define NLHS  1
    3635#undef NRHS
    37 #define NRHS  10
     36#define NRHS  9
    3837
    3938
Note: See TracChangeset for help on using the changeset viewer.