Changeset 15300


Ignore:
Timestamp:
06/21/13 09:07:23 (12 years ago)
Author:
Mathieu Morlighem
Message:

CHG: force user to specify interpolation for TriaInput

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

Legend:

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

    r15298 r15300  
    887887
    888888        /*Add Stress tensor components into inputs*/
    889         this->inputs->AddInput(new TriaInput(StressTensorxxEnum,&sigma_xx[0]));
    890         this->inputs->AddInput(new TriaInput(StressTensorxyEnum,&sigma_xy[0]));
    891         this->inputs->AddInput(new TriaInput(StressTensorxzEnum,&sigma_xz[0]));
    892         this->inputs->AddInput(new TriaInput(StressTensoryyEnum,&sigma_yy[0]));
    893         this->inputs->AddInput(new TriaInput(StressTensoryzEnum,&sigma_yz[0]));
    894         this->inputs->AddInput(new TriaInput(StressTensorzzEnum,&sigma_zz[0]));
     889        this->inputs->AddInput(new TriaInput(StressTensorxxEnum,&sigma_xx[0],P1Enum));
     890        this->inputs->AddInput(new TriaInput(StressTensorxyEnum,&sigma_xy[0],P1Enum));
     891        this->inputs->AddInput(new TriaInput(StressTensorxzEnum,&sigma_xz[0],P1Enum));
     892        this->inputs->AddInput(new TriaInput(StressTensoryyEnum,&sigma_yy[0],P1Enum));
     893        this->inputs->AddInput(new TriaInput(StressTensoryzEnum,&sigma_yz[0],P1Enum));
     894        this->inputs->AddInput(new TriaInput(StressTensorzzEnum,&sigma_zz[0],P1Enum));
    895895
    896896        /*Clean up and return*/
     
    10281028        for (int imonth=0;imonth<12;imonth++) {
    10291029                for(i=0;i<NUMVERTICES;i++) tmp[i]=monthlytemperatures[i][imonth];
    1030                 TriaInput* newmonthinput1 = new TriaInput(SurfaceforcingsMonthlytemperaturesEnum,&tmp[0]);
     1030                TriaInput* newmonthinput1 = new TriaInput(SurfaceforcingsMonthlytemperaturesEnum,&tmp[0],P1Enum);
    10311031                NewTemperatureInput->AddTimeInput(newmonthinput1,time+imonth/12.*yts);
    10321032
    10331033                for(i=0;i<NUMVERTICES;i++) tmp[i]=monthlyprec[i][imonth];
    1034                 TriaInput* newmonthinput2 = new TriaInput(SurfaceforcingsPrecipitationEnum,&tmp[0]);
     1034                TriaInput* newmonthinput2 = new TriaInput(SurfaceforcingsPrecipitationEnum,&tmp[0],P1Enum);
    10351035                NewPrecipitationInput->AddTimeInput(newmonthinput2,time+imonth/12.*yts);
    10361036        }
     
    17801780                for(i=0;i<num_cm_responses;i++){
    17811781                        for(j=0;j<3;j++)nodeinputs[j]=iomodel->Data(InversionCostFunctionsCoefficientsEnum)[(tria_vertex_ids[j]-1)*num_cm_responses+i];
    1782                         datasetinput->inputs->AddObject(new TriaInput(InversionCostFunctionsCoefficientsEnum,nodeinputs));
     1782                        datasetinput->inputs->AddObject(new TriaInput(InversionCostFunctionsCoefficientsEnum,nodeinputs,P1Enum));
    17831783                }
    17841784
     
    18661866
    18671867        /*Add input to the element: */
    1868         this->inputs->AddInput(new TriaInput(enum_type,values));
     1868        this->inputs->AddInput(new TriaInput(enum_type,values,P1Enum));
    18691869
    18701870        /*Free ressources:*/
     
    19311931
    19321932        /*Add input to the element: */
    1933         this->inputs->AddInput(new TriaInput(ThicknessEnum,newthickness));
    1934         this->inputs->AddInput(new TriaInput(SurfaceEnum,newsurface));
    1935         this->inputs->AddInput(new TriaInput(BedEnum,newbed));
     1933        this->inputs->AddInput(new TriaInput(ThicknessEnum,newthickness,P1Enum));
     1934        this->inputs->AddInput(new TriaInput(SurfaceEnum,newsurface,P1Enum));
     1935        this->inputs->AddInput(new TriaInput(BedEnum,newbed,P1Enum));
    19361936
    19371937        /*Free ressources:*/
     
    19561956                /*update input*/
    19571957                if (name==MaterialsRheologyBbarEnum || name==MaterialsRheologyBEnum || name==MaterialsRheologyZEnum || name==MaterialsRheologyZbarEnum){
    1958                         material->inputs->AddInput(new TriaInput(name,values));
     1958                        material->inputs->AddInput(new TriaInput(name,values,P1Enum));
    19591959                }
    19601960                else{
    1961                         this->inputs->AddInput(new TriaInput(name,values));
     1961                        this->inputs->AddInput(new TriaInput(name,values,P1Enum));
    19621962                }
    19631963                return;
     
    19691969                /*update input*/
    19701970                if (name==MaterialsRheologyBbarEnum || name==MaterialsRheologyBEnum || name==MaterialsRheologyZEnum || name==MaterialsRheologyZbarEnum){
    1971                         material->inputs->AddInput(new TriaInput(name,values));
     1971                        material->inputs->AddInput(new TriaInput(name,values,P1Enum));
    19721972                }
    19731973                else{
    1974                         this->inputs->AddInput(new TriaInput(name,values));
     1974                        this->inputs->AddInput(new TriaInput(name,values,P1Enum));
    19751975                }
    19761976                return;
     
    19861986                }
    19871987                /*Add input to the element: */
    1988                 this->inputs->AddInput(new TriaInput(name,values));
     1988                this->inputs->AddInput(new TriaInput(name,values,P1Enum));
    19891989
    19901990                /*Free ressources:*/
     
    19981998                }
    19991999                /*Add input to the element: */
    2000                 this->inputs->AddInput(new TriaInput(name,values));
     2000                this->inputs->AddInput(new TriaInput(name,values,P1Enum));
    20012001
    20022002                /*Free ressources:*/
     
    20742074
    20752075                        /*create static input: */
    2076                         this->inputs->AddInput(new TriaInput(vector_enum,nodeinputs));
     2076                        this->inputs->AddInput(new TriaInput(vector_enum,nodeinputs,P1Enum));
    20772077                }
    20782078                else if(M==numberofvertices+1){
     
    20902090
    20912091                                if(t==0) transientinput=new TransientInput(vector_enum);
    2092                                 transientinput->AddTimeInput(new TriaInput(vector_enum,nodeinputs),time);
     2092                                transientinput->AddTimeInput(new TriaInput(vector_enum,nodeinputs,P1Enum),time);
    20932093                        }
    20942094                        this->inputs->AddInput(transientinput);
     
    23572357        if(!this->IsFloating() && floatingelement==true){
    23582358                for(i=0;i<NUMVERTICES;i++)melting[i]=gl_melting_rate/yts;
    2359                 this->inputs->AddInput(new TriaInput(BasalforcingsMeltingRateEnum,&melting[0]));
     2359                this->inputs->AddInput(new TriaInput(BasalforcingsMeltingRateEnum,&melting[0],P1Enum));
    23602360        }
    23612361
    23622362        /*Update inputs*/
    23632363   this->inputs->AddInput(new BoolInput(MaskElementonfloatingiceEnum,floatingelement));
    2364         this->inputs->AddInput(new TriaInput(SurfaceEnum,&s[0]));
    2365         this->inputs->AddInput(new TriaInput(BedEnum,&b[0]));
     2364        this->inputs->AddInput(new TriaInput(SurfaceEnum,&s[0],P1Enum));
     2365        this->inputs->AddInput(new TriaInput(BedEnum,&b[0],P1Enum));
    23662366
    23672367        /*Recalculate phi*/
    23682368        if(migration_style==SubelementMigrationEnum || migration_style==SubelementMigration2Enum){
    23692369                for(i=0;i<NUMVERTICES;i++) phi[i]=h[i]+ba[i]/density;
    2370                 this->inputs->AddInput(new TriaInput(GLlevelsetEnum,&phi[0]));
     2370                this->inputs->AddInput(new TriaInput(GLlevelsetEnum,&phi[0],P1Enum));
    23712371        }
    23722372}
     
    25272527
    25282528   /*Update inputs*/   
    2529    this->inputs->AddInput(new TriaInput(SurfaceforcingsMassBalanceEnum,&agd[0]));
     2529   this->inputs->AddInput(new TriaInput(SurfaceforcingsMassBalanceEnum,&agd[0],P1Enum));
    25302530   // this->inputs->AddInput(new TriaVertexInput(ThermalSpcTemperatureEnum,&Tsurf[0]));
    25312531
     
    26172617                }  //end of the loop over the vertices
    26182618          /*Update inputs*/
    2619           this->inputs->AddInput(new TriaInput(SurfaceforcingsMassBalanceEnum,&smb[0]));
     2619          this->inputs->AddInput(new TriaInput(SurfaceforcingsMassBalanceEnum,&smb[0],P1Enum));
    26202620}
    26212621/*}}}*/
     
    28012801                        if(!iomodel->Data(VxEnum)){
    28022802                                for(i=0;i<3;i++)nodeinputs[i]=0;
    2803                                 this->inputs->AddInput(new TriaInput(VxEnum,nodeinputs));
    2804                                 if(dakota_analysis) this->inputs->AddInput(new TriaInput(QmuVxEnum,nodeinputs));
     2803                                this->inputs->AddInput(new TriaInput(VxEnum,nodeinputs,P1Enum));
     2804                                if(dakota_analysis) this->inputs->AddInput(new TriaInput(QmuVxEnum,nodeinputs,P1Enum));
    28052805                        }
    28062806                        if(!iomodel->Data(VyEnum)){
    28072807                                for(i=0;i<3;i++)nodeinputs[i]=0;
    2808                                 this->inputs->AddInput(new TriaInput(VyEnum,nodeinputs));
    2809                                 if(dakota_analysis) this->inputs->AddInput(new TriaInput(QmuVyEnum,nodeinputs));
     2808                                this->inputs->AddInput(new TriaInput(VyEnum,nodeinputs,P1Enum));
     2809                                if(dakota_analysis) this->inputs->AddInput(new TriaInput(QmuVyEnum,nodeinputs,P1Enum));
    28102810                        }
    28112811                        if(!iomodel->Data(VzEnum)){
    28122812                                for(i=0;i<3;i++)nodeinputs[i]=0;
    2813                                 this->inputs->AddInput(new TriaInput(VzEnum,nodeinputs));
    2814                                 if(dakota_analysis) this->inputs->AddInput(new TriaInput(QmuVzEnum,nodeinputs));
     2813                                this->inputs->AddInput(new TriaInput(VzEnum,nodeinputs,P1Enum));
     2814                                if(dakota_analysis) this->inputs->AddInput(new TriaInput(QmuVzEnum,nodeinputs,P1Enum));
    28152815                        }
    28162816                        if(!iomodel->Data(PressureEnum)){
    28172817                                for(i=0;i<3;i++)nodeinputs[i]=0;
    28182818                                if(dakota_analysis){
    2819                                         this->inputs->AddInput(new TriaInput(PressureEnum,nodeinputs));
    2820                                         this->inputs->AddInput(new TriaInput(QmuPressureEnum,nodeinputs));
     2819                                        this->inputs->AddInput(new TriaInput(PressureEnum,nodeinputs,P1Enum));
     2820                                        this->inputs->AddInput(new TriaInput(QmuPressureEnum,nodeinputs,P1Enum));
    28212821                                }
    28222822                        }
     
    37563756
    37573757        /*Add vx and vy as inputs to the tria element: */
    3758         this->inputs->AddInput(new TriaInput(VxEnum,vx));
    3759         this->inputs->AddInput(new TriaInput(VyEnum,vy));
    3760         this->inputs->AddInput(new TriaInput(VelEnum,vel));
    3761         this->inputs->AddInput(new TriaInput(PressureEnum,pressure));
     3758        this->inputs->AddInput(new TriaInput(VxEnum,vx,P1Enum));
     3759        this->inputs->AddInput(new TriaInput(VyEnum,vy,P1Enum));
     3760        this->inputs->AddInput(new TriaInput(VelEnum,vel,P1Enum));
     3761        this->inputs->AddInput(new TriaInput(PressureEnum,pressure,P1Enum));
    37623762
    37633763        /*Free ressources:*/
     
    38273827
    38283828        /*Add vx and vy as inputs to the tria element: */
    3829         this->inputs->AddInput(new TriaInput(VxEnum,vx));
    3830         this->inputs->AddInput(new TriaInput(VyEnum,vy));
    3831         this->inputs->AddInput(new TriaInput(VelEnum,vel));
    3832         this->inputs->AddInput(new TriaInput(PressureEnum,pressure));
     3829        this->inputs->AddInput(new TriaInput(VxEnum,vx,P1Enum));
     3830        this->inputs->AddInput(new TriaInput(VyEnum,vy,P1Enum));
     3831        this->inputs->AddInput(new TriaInput(VelEnum,vel,P1Enum));
     3832        this->inputs->AddInput(new TriaInput(PressureEnum,pressure,P1Enum));
    38333833
    38343834        /*Free ressources:*/
     
    39933993        GradientIndexing(&vertexpidlist[0],control_index);
    39943994        for(int i=0;i<NUMVERTICES;i++) grad_list[i]=gradient[vertexpidlist[i]];
    3995         grad_input=new TriaInput(GradientEnum,grad_list);
     3995        grad_input=new TriaInput(GradientEnum,grad_list,P1Enum);
    39963996
    39973997        ((ControlInput*)input)->SetGradient(grad_input);
     
    57605760
    57615761        /*Add vx and vy as inputs to the tria element: */
    5762         this->inputs->AddInput(new TriaInput(AdjointxEnum,lambdax));
    5763         this->inputs->AddInput(new TriaInput(AdjointyEnum,lambday));
     5762        this->inputs->AddInput(new TriaInput(AdjointxEnum,lambdax,P1Enum));
     5763        this->inputs->AddInput(new TriaInput(AdjointyEnum,lambday,P1Enum));
    57645764
    57655765        /*Free ressources:*/
     
    57905790
    57915791        /*Add vx and vy as inputs to the tria element: */
    5792         this->inputs->AddInput(new TriaInput(AdjointEnum,lambda));
     5792        this->inputs->AddInput(new TriaInput(AdjointEnum,lambda,P1Enum));
    57935793
    57945794        /*Free ressources:*/
     
    58425842                values[i]=vector[vertexpidlist[i]];
    58435843        }
    5844         new_input = new TriaInput(control_enum,values);
     5844        new_input = new TriaInput(control_enum,values,P1Enum);
    58455845
    58465846        if(control_enum==MaterialsRheologyBbarEnum || control_enum==MaterialsRheologyZbarEnum){
     
    59365936
    59375937        /*Add to inputs*/
    5938         this->inputs->AddInput(new TriaInput(HydrologyWaterVxEnum,vx));
    5939         this->inputs->AddInput(new TriaInput(HydrologyWaterVyEnum,vy));
     5938        this->inputs->AddInput(new TriaInput(HydrologyWaterVxEnum,vx,P1Enum));
     5939        this->inputs->AddInput(new TriaInput(HydrologyWaterVyEnum,vy,P1Enum));
    59405940}
    59415941/*}}}*/
     
    64706470
    64716471        /*Add input to the element: */
    6472         this->inputs->AddInput(new TriaInput(WatercolumnEnum,values));
     6472        this->inputs->AddInput(new TriaInput(WatercolumnEnum,values,P1Enum));
    64736473
    64746474        /*Free ressources:*/
     
    65246524
    65256525        /*Add input to the element: */
    6526         this->inputs->AddInput(new TriaInput(SedimentHeadEnum,values));
    6527         this->inputs->AddInput(new TriaInput(SedimentHeadResidualEnum,residual));
     6526        this->inputs->AddInput(new TriaInput(SedimentHeadEnum,values,P1Enum));
     6527        this->inputs->AddInput(new TriaInput(SedimentHeadResidualEnum,residual,P1Enum));
    65286528
    65296529        /*Free ressources:*/
     
    67896789
    67906790                                        /*Add new inputs: */
    6791                                         this->inputs->AddInput(new TriaInput(ThicknessEnum,thickness));
    6792                                         this->inputs->AddInput(new TriaInput(BedEnum,bed));
    6793                                         this->inputs->AddInput(new TriaInput(SurfaceEnum,surface));
     6791                                        this->inputs->AddInput(new TriaInput(ThicknessEnum,thickness,P1Enum));
     6792                                        this->inputs->AddInput(new TriaInput(BedEnum,bed,P1Enum));
     6793                                        this->inputs->AddInput(new TriaInput(SurfaceEnum,surface,P1Enum));
    67946794
    67956795                                        break;
    67966796                                default:
    6797                                         this->inputs->AddInput(new TriaInput(name,values));
     6797                                        this->inputs->AddInput(new TriaInput(name,values,P1Enum));
    67986798                        }
    67996799                        break;
  • issm/trunk-jpl/src/c/classes/Inputs/ControlInput.cpp

    r15298 r15300  
    3131        switch(enum_input){
    3232                case TriaInputEnum:
    33                         values     =new TriaInput(enum_type,pvalues);
    34                         savedvalues=new TriaInput(enum_type,pvalues);
    35                         minvalues  =new TriaInput(enum_type,pmin);
    36                         maxvalues  =new TriaInput(enum_type,pmax);
     33                        values     =new TriaInput(enum_type,pvalues,P1Enum);
     34                        savedvalues=new TriaInput(enum_type,pvalues,P1Enum);
     35                        minvalues  =new TriaInput(enum_type,pmin,P1Enum);
     36                        maxvalues  =new TriaInput(enum_type,pmax,P1Enum);
    3737                        break;
    3838                case PentaP1InputEnum:
  • issm/trunk-jpl/src/c/classes/Inputs/PentaP1Input.cpp

    r15298 r15300  
    100100
    101101        /*Create new Tria input*/
    102         outinput=new TriaInput(this->enum_type,&newvalues[0]);
     102        outinput=new TriaInput(this->enum_type,&newvalues[0],P1Enum);
    103103
    104104        /*Assign output*/
  • issm/trunk-jpl/src/c/classes/Inputs/TriaInput.h

    r15298 r15300  
    2222                /*TriaInput constructors, destructors*/
    2323                TriaInput();
    24                 TriaInput(int enum_type,IssmDouble* values,int element_type_in=P1Enum);
     24                TriaInput(int enum_type,IssmDouble* values,int element_type_in);
    2525                ~TriaInput();
    2626
  • issm/trunk-jpl/src/c/classes/Materials/Matdamageice.cpp

    r15298 r15300  
    630630                                        IssmDouble values[3];
    631631                                        for (int i=0;i<3;i++) values[i]=vector[((Tria*)element)->vertices[i]->Pid()];
    632                                         this->inputs->AddInput(new TriaInput(name,values));
     632                                        this->inputs->AddInput(new TriaInput(name,values,P1Enum));
    633633                                        return;
    634634                                }
     
    672672                                        IssmDouble values[3];
    673673                                        for (int i=0;i<3;i++) values[i]=vector[((Tria*)element)->vertices[i]->Sid()]; //use sid list, to index into serial oriented vector
    674                                         this->inputs->AddInput(new TriaInput(name,values));
     674                                        this->inputs->AddInput(new TriaInput(name,values,P1Enum));
    675675                                        /*Special case for rheology B in 2D: Pourave land for this solution{{{*/
    676676                                        if(name==MaterialsRheologyBEnum){
     
    685685                                                if(dim==2){
    686686                                                        /*Dupliacte rheology input: */
    687                                                         this->inputs->AddInput(new TriaInput(MaterialsRheologyBbarEnum,values));
     687                                                        this->inputs->AddInput(new TriaInput(MaterialsRheologyBbarEnum,values,P1Enum));
    688688                                                }
    689689                                        }
     
    759759                if (iomodel->Data(MaterialsRheologyBEnum)) {
    760760                        for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(MaterialsRheologyBEnum)[reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+i]-1)];
    761                         this->inputs->AddInput(new TriaInput(MaterialsRheologyBbarEnum,nodeinputs));
     761                        this->inputs->AddInput(new TriaInput(MaterialsRheologyBbarEnum,nodeinputs,P1Enum));
    762762                }
    763763
     
    765765                if (iomodel->Data(MaterialsRheologyNEnum)) {
    766766                        for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(MaterialsRheologyNEnum)[index];
    767                         this->inputs->AddInput(new TriaInput(MaterialsRheologyNEnum,nodeinputs));
     767                        this->inputs->AddInput(new TriaInput(MaterialsRheologyNEnum,nodeinputs,P1Enum));
    768768                }
    769769
     
    771771                if (iomodel->Data(MaterialsRheologyZEnum)) {
    772772                        for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(MaterialsRheologyZEnum)[reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+i]-1)];
    773                         this->inputs->AddInput(new TriaInput(MaterialsRheologyZbarEnum,nodeinputs));
     773                        this->inputs->AddInput(new TriaInput(MaterialsRheologyZbarEnum,nodeinputs,P1Enum));
    774774                }
    775775
  • issm/trunk-jpl/src/c/classes/Materials/Matice.cpp

    r15298 r15300  
    564564                                        IssmDouble values[3];
    565565                                        for (int i=0;i<3;i++) values[i]=vector[((Tria*)element)->vertices[i]->Pid()];
    566                                         this->inputs->AddInput(new TriaInput(name,values));
     566                                        this->inputs->AddInput(new TriaInput(name,values,P1Enum));
    567567                                        return;
    568568                                }
     
    606606                                        IssmDouble values[3];
    607607                                        for (int i=0;i<3;i++) values[i]=vector[((Tria*)element)->vertices[i]->Sid()]; //index into serial oriented vector
    608                                         this->inputs->AddInput(new TriaInput(name,values));
     608                                        this->inputs->AddInput(new TriaInput(name,values,P1Enum));
    609609                                        /*Special case for rheology B in 2D: Pourave land for this solution{{{*/
    610610                                        if(name==MaterialsRheologyBEnum){
     
    619619                                                if(dim==2){
    620620                                                        /*Dupliacte rheology input: */
    621                                                         this->inputs->AddInput(new TriaInput(MaterialsRheologyBbarEnum,values));
     621                                                        this->inputs->AddInput(new TriaInput(MaterialsRheologyBbarEnum,values,P1Enum));
    622622                                                }
    623623                                        }
     
    699699                if (iomodel->Data(MaterialsRheologyBEnum)) {
    700700                        for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(MaterialsRheologyBEnum)[reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+i]-1)];
    701                         this->inputs->AddInput(new TriaInput(MaterialsRheologyBbarEnum,nodeinputs));
     701                        this->inputs->AddInput(new TriaInput(MaterialsRheologyBbarEnum,nodeinputs,P1Enum));
    702702                }
    703703
     
    705705                if (iomodel->Data(MaterialsRheologyNEnum)) {
    706706                        for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(MaterialsRheologyNEnum)[index];
    707                         this->inputs->AddInput(new TriaInput(MaterialsRheologyNEnum,nodeinputs));
     707                        this->inputs->AddInput(new TriaInput(MaterialsRheologyNEnum,nodeinputs,P1Enum));
    708708                }
    709709
Note: See TracChangeset for help on using the changeset viewer.