Changeset 16479


Ignore:
Timestamp:
10/21/13 14:30:32 (11 years ago)
Author:
Mathieu Morlighem
Message:

CHG: use connectivity to create vector results so that we have the same results as before

Location:
issm/trunk-jpl/src/c/classes/Elements
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/classes/Elements/Penta.cpp

    r16478 r16479  
    30383038                        break;
    30393039                case P1Enum:{
    3040 
    3041                         IssmDouble   values[NUMVERTICES];
     3040                        IssmDouble  values[NUMVERTICES];
    30423041                        IssmPDouble pvalues[NUMVERTICES];
    3043                         int          sidlist[NUMVERTICES];
    3044 
    3045                         GetVertexSidList(&sidlist[0]);
    3046                         GetInputListOnVertices(&values[0],output_enum);
    3047                         for(int i=0;i<NUMVERTICES;i++) pvalues[i] = reCast<IssmPDouble>(values[i]);
    3048 
    3049                         vector->SetValues(NUMVERTICES,&sidlist[0],&pvalues[0],INS_VAL);
     3042                        int         connectivity[NUMVERTICES];
     3043                        int         sidlist[NUMVERTICES];
     3044
     3045                        this->GetVertexSidList(&sidlist[0]);
     3046                        this->GetConnectivityList(&connectivity[0]);
     3047                        this->GetInputListOnVertices(&values[0],output_enum);
     3048                        for(int i=0;i<NUMVERTICES;i++) pvalues[i] = reCast<IssmPDouble>(values[i])/reCast<IssmPDouble>(connectivity[i]);
     3049
     3050                        vector->SetValues(NUMVERTICES,&sidlist[0],&pvalues[0],ADD_VAL);
    30503051                        break;
    30513052                                        }
     
    53325333
    53335334}/*}}}*/
    5334 /*FUNCTION Penta::ControlInputSetGradient{{{*/
     5335/*FUNCTION Penta::ControlToVectors{{{*/
    53355336void Penta::ControlToVectors(Vector<IssmDouble>* vector_control, Vector<IssmDouble>* vector_gradient,int control_enum){
    53365337
     
    53495350        if (input->ObjectEnum()!=ControlInputEnum) _error_("Input " << EnumToStringx(control_enum) << " is not a ControlInput");
    53505351
    5351         int          sidlist[NUMVERTICES];
    5352         IssmPDouble   values[NUMVERTICES];
     5352        int         sidlist[NUMVERTICES];
     5353        int         connectivity[NUMVERTICES];
     5354        IssmPDouble values[NUMVERTICES];
    53535355        IssmPDouble gradients[NUMVERTICES];
    53545356        IssmDouble  value,gradient;
    53555357
    5356         GetVertexSidList(&sidlist[0]);
     5358        this->GetConnectivityList(&connectivity[0]);
     5359        this->GetVertexSidList(&sidlist[0]);
    53575360
    53585361        GaussPenta* gauss=new GaussPenta();
     
    53635366                ((ControlInput*)input)->GetGradientValue(&gradient,gauss);
    53645367
    5365                 values[iv]    = reCast<IssmPDouble>(value);
    5366                 gradients[iv] = reCast<IssmPDouble>(gradient);
     5368                values[iv]    = reCast<IssmPDouble>(value)/reCast<IssmPDouble>(connectivity[iv]);
     5369                gradients[iv] = reCast<IssmPDouble>(gradient)/reCast<IssmPDouble>(connectivity[iv]);
    53675370        }
    53685371        delete gauss;
    53695372
    5370         vector_control->SetValues(NUMVERTICES,&sidlist[0],&values[0],INS_VAL);
    5371         vector_gradient->SetValues(NUMVERTICES,&sidlist[0],&gradients[0],INS_VAL);
     5373        vector_control->SetValues(NUMVERTICES,&sidlist[0],&values[0],ADD_VAL);
     5374        vector_gradient->SetValues(NUMVERTICES,&sidlist[0],&gradients[0],ADD_VAL);
    53725375
    53735376}/*}}}*/
  • issm/trunk-jpl/src/c/classes/Elements/Tria.cpp

    r16478 r16479  
    25922592                        break;
    25932593                case P1Enum:{
    2594 
    2595                         IssmDouble   values[NUMVERTICES];
     2594                        IssmDouble  values[NUMVERTICES];
    25962595                        IssmPDouble pvalues[NUMVERTICES];
    2597                         int          sidlist[NUMVERTICES];
    2598 
    2599                         GetVertexSidList(&sidlist[0]);
    2600                         GetInputListOnVertices(&values[0],output_enum);
    2601                         for(int i=0;i<NUMVERTICES;i++) pvalues[i] = reCast<IssmPDouble>(values[i]);
    2602 
    2603                         vector->SetValues(NUMVERTICES,&sidlist[0],&pvalues[0],INS_VAL);
     2596                        int         connectivity[NUMVERTICES];
     2597                        int         sidlist[NUMVERTICES];
     2598
     2599                        this->GetVertexSidList(&sidlist[0]);
     2600                        this->GetConnectivityList(&connectivity[0]);
     2601                        this->GetInputListOnVertices(&values[0],output_enum);
     2602                        for(int i=0;i<NUMVERTICES;i++) pvalues[i] = reCast<IssmPDouble>(values[i])/reCast<IssmPDouble>(connectivity[i]);
     2603
     2604                        vector->SetValues(NUMVERTICES,&sidlist[0],&pvalues[0],ADD_VAL);
    26042605                        break;
    26052606                                        }
     
    48734874
    48744875}/*}}}*/
    4875 /*FUNCTION Tria::ControlInputSetGradient{{{*/
     4876/*FUNCTION Tria::ControlToVectors{{{*/
    48764877void Tria::ControlToVectors(Vector<IssmDouble>* vector_control, Vector<IssmDouble>* vector_gradient,int control_enum){
    48774878
     
    48864887        if (input->ObjectEnum()!=ControlInputEnum) _error_("Input " << EnumToStringx(control_enum) << " is not a ControlInput");
    48874888
    4888         int          sidlist[NUMVERTICES];
    4889         IssmPDouble   values[NUMVERTICES];
     4889        int         sidlist[NUMVERTICES];
     4890        int         connectivity[NUMVERTICES];
     4891        IssmPDouble values[NUMVERTICES];
    48904892        IssmPDouble gradients[NUMVERTICES];
    48914893        IssmDouble  value,gradient;
    48924894
    4893         GetVertexSidList(&sidlist[0]);
     4895        this->GetConnectivityList(&connectivity[0]);
     4896        this->GetVertexSidList(&sidlist[0]);
    48944897
    48954898        GaussTria* gauss=new GaussTria();
     
    49004903                ((ControlInput*)input)->GetGradientValue(&gradient,gauss);
    49014904
    4902                 values[iv]    = reCast<IssmPDouble>(value);
    4903                 gradients[iv] = reCast<IssmPDouble>(gradient);
     4905                values[iv]    = reCast<IssmPDouble>(value)/reCast<IssmPDouble>(connectivity[iv]);
     4906                gradients[iv] = reCast<IssmPDouble>(gradient)/reCast<IssmPDouble>(connectivity[iv]);
    49044907        }
    49054908        delete gauss;
    49064909
    4907         vector_control->SetValues(NUMVERTICES,&sidlist[0],&values[0],INS_VAL);
    4908         vector_gradient->SetValues(NUMVERTICES,&sidlist[0],&gradients[0],INS_VAL);
     4910        vector_control->SetValues(NUMVERTICES,&sidlist[0],&values[0],ADD_VAL);
     4911        vector_gradient->SetValues(NUMVERTICES,&sidlist[0],&gradients[0],ADD_VAL);
    49094912
    49104913}/*}}}*/
Note: See TracChangeset for help on using the changeset viewer.