Changeset 1837


Ignore:
Timestamp:
08/24/09 17:55:07 (16 years ago)
Author:
Eric.Larour
Message:

Brachning back from issm.controlstatic, by hand

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/ModelProcessorx/Control/CreateParametersControl.cpp

    r1210 r1837  
    1111#include "../../objects/objects.h"
    1212#include "../../shared/shared.h"
    13 #include "../Model.h"
     13#include "../IoModel.h"
    1414
    15 void CreateParametersControl(DataSet** pparameters,Model* model,ConstDataHandle model_handle){
     15void CreateParametersControl(DataSet** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle){
    1616       
    1717        int i;
     
    4545        count++;
    4646        param= new Param(count,"control_type",STRING);
    47         param->SetString(model->control_type);
     47        param->SetString(iomodel->control_type);
    4848        parameters->AddObject(param);
    4949
     
    5151        count++;
    5252        param= new Param(count,"extrude_param",DOUBLE);
    53         if (strcmp(model->control_type,"drag")==0)   param->SetDouble(0);
    54         else if (strcmp(model->control_type,"B")==0) param->SetDouble(1);
    55         else throw ErrorException(__FUNCT__,exprintf("control_type %s not supported yet!",model->control_type));
     53        if (strcmp(iomodel->control_type,"drag")==0)   param->SetDouble(0);
     54        else if (strcmp(iomodel->control_type,"B")==0) param->SetDouble(1);
     55        else throw ErrorException(__FUNCT__,exprintf("control_type %s not supported yet!",iomodel->control_type));
    5656        parameters->AddObject(param);
    5757
     
    5959        count++;
    6060        param= new Param(count,"nsteps",INTEGER);
    61         param->SetInteger(model->nsteps);
     61        param->SetInteger(iomodel->nsteps);
    6262        parameters->AddObject(param);
    6363
     
    6565        count++;
    6666        param= new Param(count,"tolx",DOUBLE);
    67         param->SetDouble(model->tolx);
     67        param->SetDouble(iomodel->tolx);
    6868        parameters->AddObject(param);
    6969
     
    7171        count++;
    7272        param= new Param(count,"mincontrolconstraint",DOUBLE);
    73         param->SetDouble(model->mincontrolconstraint);
     73        param->SetDouble(iomodel->mincontrolconstraint);
    7474        parameters->AddObject(param);
    7575
     
    7777        count++;
    7878        param= new Param(count,"maxcontrolconstraint",DOUBLE);
    79         param->SetDouble(model->maxcontrolconstraint);
     79        param->SetDouble(iomodel->maxcontrolconstraint);
    8080        parameters->AddObject(param);
    8181       
     
    8383        count++;
    8484        param= new Param(count,"epsvel",DOUBLE);
    85         param->SetDouble(model->epsvel);
     85        param->SetDouble(iomodel->epsvel);
    8686        parameters->AddObject(param);
    8787       
     
    8989        count++;
    9090        param= new Param(count,"meanvel",DOUBLE);
    91         param->SetDouble(model->meanvel);
     91        param->SetDouble(iomodel->meanvel);
    9292        parameters->AddObject(param);
    9393
    9494        /*Now, recover fit, optscal and maxiter as vectors: */
    95         ModelFetchData((void**)&model->fit,NULL,NULL,model_handle,"fit","Matrix","Mat");
    96         ModelFetchData((void**)&model->optscal,NULL,NULL,model_handle,"optscal","Matrix","Mat");
    97         ModelFetchData((void**)&model->maxiter,NULL,NULL,model_handle,"maxiter","Matrix","Mat");
     95        IoModelFetchData((void**)&iomodel->fit,NULL,NULL,iomodel_handle,"fit","Matrix","Mat");
     96        IoModelFetchData((void**)&iomodel->optscal,NULL,NULL,iomodel_handle,"optscal","Matrix","Mat");
     97        IoModelFetchData((void**)&iomodel->maxiter,NULL,NULL,iomodel_handle,"maxiter","Matrix","Mat");
    9898
    9999        count++;
    100100        param= new Param(count,"fit",DOUBLEVEC);
    101         param->SetDoubleVec(model->fit,model->nsteps);
     101        param->SetDoubleVec(iomodel->fit,iomodel->nsteps);
    102102        parameters->AddObject(param);
    103103
    104104        count++;
    105105        param= new Param(count,"optscal",DOUBLEVEC);
    106         param->SetDoubleVec(model->optscal,model->nsteps);
     106        param->SetDoubleVec(iomodel->optscal,iomodel->nsteps);
    107107        parameters->AddObject(param);
    108108
    109109        count++;
    110110        param= new Param(count,"maxiter",DOUBLEVEC);
    111         param->SetDoubleVec(model->maxiter,model->nsteps);
     111        param->SetDoubleVec(iomodel->maxiter,iomodel->nsteps);
    112112        parameters->AddObject(param);
    113113
    114         xfree((void**)&model->fit);
    115         xfree((void**)&model->optscal);
    116         xfree((void**)&model->maxiter);
     114        xfree((void**)&iomodel->fit);
     115        xfree((void**)&iomodel->optscal);
     116        xfree((void**)&iomodel->maxiter);
    117117
    118118        /*Get vx, vx_obs, vy, vy_obs, and the parameter value: */
    119         ModelFetchData((void**)&vx,NULL,NULL,model_handle,"vx","Matrix","Mat");
    120         ModelFetchData((void**)&vy,NULL,NULL,model_handle,"vy","Matrix","Mat");
    121         ModelFetchData((void**)&vz,NULL,NULL,model_handle,"vz","Matrix","Mat");
    122         ModelFetchData((void**)&vx_obs,NULL,NULL,model_handle,"vx_obs","Matrix","Mat");
    123         ModelFetchData((void**)&vy_obs,NULL,NULL,model_handle,"vy_obs","Matrix","Mat");
    124         ModelFetchData((void**)&control_parameter,NULL,NULL,model_handle,model->control_type,"Matrix","Mat");
     119        IoModelFetchData((void**)&vx,NULL,NULL,iomodel_handle,"vx","Matrix","Mat");
     120        IoModelFetchData((void**)&vy,NULL,NULL,iomodel_handle,"vy","Matrix","Mat");
     121        IoModelFetchData((void**)&vz,NULL,NULL,iomodel_handle,"vz","Matrix","Mat");
     122        IoModelFetchData((void**)&vx_obs,NULL,NULL,iomodel_handle,"vx_obs","Matrix","Mat");
     123        IoModelFetchData((void**)&vy_obs,NULL,NULL,iomodel_handle,"vy_obs","Matrix","Mat");
     124        IoModelFetchData((void**)&control_parameter,NULL,NULL,iomodel_handle,iomodel->control_type,"Matrix","Mat");
    125125
    126         u_g=(double*)xcalloc(model->numberofnodes*3,sizeof(double));
    127         if(vx)for(i=0;i<model->numberofnodes;i++)u_g[3*i+0]=vx[i]/model->yts;
    128         if(vy)for(i=0;i<model->numberofnodes;i++)u_g[3*i+1]=vy[i]/model->yts;
    129         if(vz)for(i=0;i<model->numberofnodes;i++)u_g[3*i+2]=vz[i]/model->yts;
     126        u_g=(double*)xcalloc(iomodel->numberofnodes*3,sizeof(double));
     127        if(vx)for(i=0;i<iomodel->numberofnodes;i++)u_g[3*i+0]=vx[i]/iomodel->yts;
     128        if(vy)for(i=0;i<iomodel->numberofnodes;i++)u_g[3*i+1]=vy[i]/iomodel->yts;
     129        if(vz)for(i=0;i<iomodel->numberofnodes;i++)u_g[3*i+2]=vz[i]/iomodel->yts;
    130130
    131131        count++;
    132132        param= new Param(count,"u_g",DOUBLEVEC);
    133         param->SetDoubleVec(u_g,3*model->numberofnodes,3);
     133        param->SetDoubleVec(u_g,3*iomodel->numberofnodes,3);
    134134        parameters->AddObject(param);
    135135
    136         u_g_obs=(double*)xcalloc(model->numberofnodes*2,sizeof(double));
    137         if(vx_obs)for(i=0;i<model->numberofnodes;i++)u_g_obs[2*i+0]=vx_obs[i]/model->yts;
    138         if(vy_obs)for(i=0;i<model->numberofnodes;i++)u_g_obs[2*i+1]=vy_obs[i]/model->yts;
     136        u_g_obs=(double*)xcalloc(iomodel->numberofnodes*2,sizeof(double));
     137        if(vx_obs)for(i=0;i<iomodel->numberofnodes;i++)u_g_obs[2*i+0]=vx_obs[i]/iomodel->yts;
     138        if(vy_obs)for(i=0;i<iomodel->numberofnodes;i++)u_g_obs[2*i+1]=vy_obs[i]/iomodel->yts;
    139139
    140140        count++;
    141141        param= new Param(count,"u_g_obs",DOUBLEVEC);
    142         param->SetDoubleVec(u_g_obs,2*model->numberofnodes,2);
     142        param->SetDoubleVec(u_g_obs,2*iomodel->numberofnodes,2);
    143143        parameters->AddObject(param);
    144144       
    145         param_g=(double*)xcalloc(model->numberofnodes,sizeof(double));
    146         for(i=0;i<model->numberofnodes;i++)param_g[i]=control_parameter[i];
     145        param_g=(double*)xcalloc(iomodel->numberofnodes,sizeof(double));
     146        for(i=0;i<iomodel->numberofnodes;i++)param_g[i]=control_parameter[i];
    147147
    148148        count++;
    149149        param= new Param(count,"param_g",DOUBLEVEC);
    150         param->SetDoubleVec(param_g,model->numberofnodes,1);
     150        param->SetDoubleVec(param_g,iomodel->numberofnodes,1);
    151151        parameters->AddObject(param);
    152152
Note: See TracChangeset for help on using the changeset viewer.