Ignore:
Timestamp:
06/09/11 15:22:09 (14 years ago)
Author:
Mathieu Morlighem
Message:

Added new DatasetInput for multiple inputs (needed for control methods: weights)
fixed a leak in Penta.cpp
removed some unnecessary model fields, now in marshall

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified issm/trunk/src/c/objects/Elements/Tria.cpp

    r8567 r8592  
    16301630                thickness_input->GetParameterDerivativeValue(&dH[0],&xyz_list[0][0],gauss);
    16311631                thicknessobs_input->GetParameterValue(&thicknessobs, gauss);
    1632                 weights_input->GetParameterValue(&weight, gauss);
     1632                weights_input->GetParameterValue(&weight, gauss,0);
    16331633
    16341634                for(i=0;i<numdof;i++) pe->values[i]+=(thicknessobs-thickness)*weight*Jdet*gauss->weight*l1l2l3[i];
     
    16771677        GetParameterListOnVertices(&vx_list[0],VxEnum);
    16781678        GetParameterListOnVertices(&vy_list[0],VyEnum);
    1679         GetParameterListOnVertices(&weights_list[0],WeightsEnum);
     1679        GetParameterListOnVertices(&weights_list[0],WeightsEnum,0,0);
    16801680        inputs->GetParameterValue(&response,CmResponseEnum);
    16811681        if(response==SurfaceAverageVelMisfitEnum){
     
    18571857        GetParameterListOnVertices(&vx_list[0],VxEnum);
    18581858        GetParameterListOnVertices(&vy_list[0],VyEnum);
    1859         GetParameterListOnVertices(&weights_list[0],WeightsEnum);
     1859        GetParameterListOnVertices(&weights_list[0],WeightsEnum,0,0);
    18601860        inputs->GetParameterValue(&response,CmResponseEnum);
    18611861        if(response==SurfaceAverageVelMisfitEnum){
     
    21842184        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    21852185        Input* surface_mass_balance_input=inputs->GetInput(SurfaceMassBalanceEnum); _assert_(surface_mass_balance_input);
    2186         Input* basal_melting_input=inputs->GetInput(BasalMeltingRateEnum);           _assert_(basal_melting_input);
    2187         Input* thickness_input=inputs->GetInput(ThicknessEnum);           _assert_(thickness_input);
     2186        Input* basal_melting_input=inputs->GetInput(BasalMeltingRateEnum);          _assert_(basal_melting_input);
     2187        Input* thickness_input=inputs->GetInput(ThicknessEnum);                     _assert_(thickness_input);
    21882188
    21892189        /* Start  looping on the number of gaussian points: */
     
    25582558                        gauss->GaussVertex(iv);
    25592559                        input->GetParameterValue(&pvalue[iv],gauss);
     2560                }
     2561        }
     2562        else{
     2563                for (int iv=0;iv<NUMVERTICES;iv++) pvalue[iv]=defaultvalue;
     2564        }
     2565
     2566        /*clean-up*/
     2567        delete gauss;
     2568}
     2569/*}}}*/
     2570/*FUNCTION Tria::GetParameterListOnVertices(double* pvalue,int enumtype,double defaultvalue,int index) TO BE REMOVED{{{1*/
     2571void Tria::GetParameterListOnVertices(double* pvalue,int enumtype,double defaultvalue,int index){
     2572
     2573        double     value[NUMVERTICES];
     2574        GaussTria *gauss = NULL;
     2575        Input     *input = inputs->GetInput(enumtype);
     2576
     2577        /*Checks in debugging mode*/
     2578        _assert_(pvalue);
     2579
     2580        /* Start looping on the number of vertices: */
     2581        if (input){
     2582                gauss=new GaussTria();
     2583                for (int iv=0;iv<NUMVERTICES;iv++){
     2584                        gauss->GaussVertex(iv);
     2585                        input->GetParameterValue(&pvalue[iv],gauss,index);
    25602586                }
    25612587        }
     
    35183544                this->inputs->AddInput(new TriaVertexInput(VzObsEnum,nodeinputs));
    35193545        }
    3520         if (iomodel->weights) {
    3521                 for(i=0;i<3;i++)nodeinputs[i]=iomodel->weights[tria_vertex_ids[i]-1];
    3522                 this->inputs->AddInput(new TriaVertexInput(WeightsEnum,nodeinputs));
    3523         }
     3546
    35243547        if (iomodel->elementoniceshelf) this->inputs->AddInput(new BoolInput(ElementOnIceShelfEnum,(IssmBool)iomodel->elementoniceshelf[index]));
    35253548        if (iomodel->elementonbed) this->inputs->AddInput(new BoolInput(ElementOnBedEnum,(IssmBool)iomodel->elementonbed[index]));
     
    35703593                }
    35713594        }
     3595
     3596        /*DatasetInputs*/
     3597        if (iomodel->weights) {
     3598
     3599                /*Create inputs and add to DataSetInput*/
     3600                DatasetInput* datasetinput=new DatasetInput(WeightsEnum);
     3601                for(j=0;j<iomodel->num_cm_responses;j++){
     3602                        for(i=0;i<3;i++)nodeinputs[i]=iomodel->weights[tria_vertex_ids[i]-1];
     3603                        datasetinput->inputs->AddObject(new TriaVertexInput(WeightsEnum,nodeinputs));
     3604                }
     3605
     3606                /*Add datasetinput to element inputs*/
     3607                this->inputs->AddInput(datasetinput);
     3608        }
    35723609}
    35733610/*}}}*/
     
    48314868        GetParameterListOnVertices(&vx_list[0],VxEnum);
    48324869        GetParameterListOnVertices(&vy_list[0],VyEnum);
    4833         GetParameterListOnVertices(&weights_list[0],WeightsEnum);
     4870        GetParameterListOnVertices(&weights_list[0],WeightsEnum,0,0);
    48344871
    48354872        /*retrieve some parameters: */
     
    49414978        GetParameterListOnVertices(&vx_list[0],VxEnum);
    49424979        GetParameterListOnVertices(&vy_list[0],VyEnum);
    4943         GetParameterListOnVertices(&weights_list[0],WeightsEnum);
     4980        GetParameterListOnVertices(&weights_list[0],WeightsEnum,0,0);
    49444981
    49454982        /*retrieve some parameters: */
     
    50215058        GetParameterListOnVertices(&vx_list[0],VxEnum);
    50225059        GetParameterListOnVertices(&vy_list[0],VyEnum);
    5023         GetParameterListOnVertices(&weights_list[0],WeightsEnum);
     5060        GetParameterListOnVertices(&weights_list[0],WeightsEnum,0,0);
    50245061
    50255062        /*retrieve some parameters: */
     
    51045141        GetParameterListOnVertices(&vx_list[0],VxEnum);
    51055142        GetParameterListOnVertices(&vy_list[0],VyEnum);
    5106         GetParameterListOnVertices(&weights_list[0],WeightsEnum);
     5143        GetParameterListOnVertices(&weights_list[0],WeightsEnum,0,0);
    51075144
    51085145        /*retrieve some parameters: */
     
    52065243
    52075244        /* Recover input data: */
     5245        GetParameterListOnVertices(&weights_list[0],WeightsEnum,0,0);
    52085246        GetParameterListOnVertices(&obs_vx_list[0],VxObsEnum);
    52095247        GetParameterListOnVertices(&obs_vy_list[0],VyObsEnum);
    52105248        GetParameterListOnVertices(&vx_list[0],VxEnum);
    52115249        GetParameterListOnVertices(&vy_list[0],VyEnum);
    5212         GetParameterListOnVertices(&weights_list[0],WeightsEnum);
    52135250
    52145251        /*retrieve some parameters: */
     
    53045341                thickness_input->GetParameterDerivativeValue(&dH[0],&xyz_list[0][0],gauss);
    53055342                thicknessobs_input->GetParameterValue(&thicknessobs,gauss);
    5306                 weights_input->GetParameterValue(&weight,gauss);
     5343                weights_input->GetParameterValue(&weight,gauss,0);
    53075344
    53085345                /*compute ThicknessAbsMisfit*/
Note: See TracChangeset for help on using the changeset viewer.