Ignore:
Timestamp:
05/10/10 16:29:46 (15 years ago)
Author:
Mathieu Morlighem
Message:

new way to create parameters

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/ModelProcessorx/Prognostic2/CreateParametersPrognostic2.cpp

    r3673 r3697  
    1313void CreateParametersPrognostic2(Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle){
    1414       
    15         Param*   param = NULL;
    16         Parameters* parameters=NULL;
    17         int      count;
    18         int      i;
    19         int      dim;
    20         double*  vx_g=NULL;
    21         double*  vy_g=NULL;
    22 
    23         /*recover parameters : */
    24         parameters=*pparameters;
    25 
    26         count=parameters->Size();
    27 
    28         /*Get vx and vy: */
    29         IoModelFetchData(&iomodel->vx,NULL,NULL,iomodel_handle,"vx");
    30         IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy");
    31 
    32         vx_g=(double*)xcalloc(iomodel->numberofvertices,sizeof(double));
    33         vy_g=(double*)xcalloc(iomodel->numberofvertices,sizeof(double));
    34 
    35         if(iomodel->vx) for(i=0;i<iomodel->numberofvertices;i++)vx_g[i]=iomodel->vx[i]/iomodel->yts;
    36         if(iomodel->vy) for(i=0;i<iomodel->numberofvertices;i++)vy_g[i]=iomodel->vy[i]/iomodel->yts;
    37 
    38         count++;
    39         param= new Param(count,"vx_g",DOUBLEVEC);
    40         param->SetDoubleVec(vx_g,iomodel->numberofvertices,1);
    41         parameters->AddObject(param);
    42         count++;
    43         param= new Param(count,"vy_g",DOUBLEVEC);
    44         param->SetDoubleVec(vy_g,iomodel->numberofvertices,1);
    45         parameters->AddObject(param);
    46 
    47         xfree((void**)&iomodel->vx);
    48         xfree((void**)&iomodel->vy);
    49         xfree((void**)&vx_g);
    50         xfree((void**)&vy_g);
    51 
    52         /*Get thickness: */
    53         IoModelFetchData(&iomodel->thickness,NULL,NULL,iomodel_handle,"thickness");
    54        
    55         count++;
    56         param= new Param(count,"h_g",DOUBLEVEC);
    57         if(iomodel->thickness) param->SetDoubleVec(iomodel->thickness,iomodel->numberofvertices,1);
    58         else param->SetDoubleVec(iomodel->thickness,0,0);
    59         parameters->AddObject(param);
    60 
    61         /*Free thickness: */
    62         xfree((void**)&iomodel->thickness);
    63 
    64         /*Get surface: */
    65         IoModelFetchData(&iomodel->surface,NULL,NULL,iomodel_handle,"surface");
    66        
    67         count++;
    68         param= new Param(count,"s_g",DOUBLEVEC);
    69         if(iomodel->surface) param->SetDoubleVec(iomodel->surface,iomodel->numberofvertices,1);
    70         else param->SetDoubleVec(iomodel->surface,0,0);
    71         parameters->AddObject(param);
    72 
    73         /*Free surface: */
    74         xfree((void**)&iomodel->surface);
    75 
    76         /*Get bed: */
    77         IoModelFetchData(&iomodel->bed,NULL,NULL,iomodel_handle,"bed");
    78        
    79         count++;
    80         param= new Param(count,"b_g",DOUBLEVEC);
    81         if(iomodel->bed) param->SetDoubleVec(iomodel->bed,iomodel->numberofvertices,1);
    82         else param->SetDoubleVec(iomodel->bed,0,0);
    83         parameters->AddObject(param);
    84 
    85         /*Free bed: */
    86         xfree((void**)&iomodel->bed);
    87 
    88         /*Get melting_rate: */
    89         IoModelFetchData(&iomodel->melting_rate,NULL,NULL,iomodel_handle,"melting_rate");
    90         if(iomodel->melting_rate) for(i=0;i<iomodel->numberofvertices;i++)iomodel->melting_rate[i]=iomodel->melting_rate[i]/iomodel->yts;
    91        
    92         count++;
    93         param= new Param(count,"m_g",DOUBLEVEC);
    94         if(iomodel->melting_rate) param->SetDoubleVec(iomodel->melting_rate,iomodel->numberofvertices,1);
    95         else param->SetDoubleVec(iomodel->melting_rate,0,1);
    96         parameters->AddObject(param);
    97 
    98         /*Free melting_rate: */
    99         xfree((void**)&iomodel->melting_rate);
    100 
    101         /*Get accumulation_rate: */
    102         IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"accumulation_rate");
    103         if(iomodel->accumulation_rate) for(i=0;i<iomodel->numberofvertices;i++)iomodel->accumulation_rate[i]=iomodel->accumulation_rate[i]/iomodel->yts;
    104        
    105         count++;
    106         param= new Param(count,"a_g",DOUBLEVEC);
    107         if(iomodel->accumulation_rate) param->SetDoubleVec(iomodel->accumulation_rate,iomodel->numberofvertices,1);
    108         else param->SetDoubleVec(iomodel->accumulation_rate,0,0);
    109         parameters->AddObject(param);
    110 
    111         /*Free accumulation_rate: */
    112         xfree((void**)&iomodel->accumulation_rate);
    113 
    114         /*Assign output pointer: */
    115         *pparameters=parameters;
    11615}
Note: See TracChangeset for help on using the changeset viewer.