Changeset 10990


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

Added support for results on elements

Location:
issm/trunk-jpl/src/c
Files:
14 edited

Legend:

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

    r10989 r10990  
    204204                        for(int j=0;j<this->Size();j++){
    205205                                Element* element=(Element*)this->GetObjectByOffset(j);
    206                                 element->GetVectorFromResults(vector,i);
     206                                element->GetVectorFromResults(vector,i,resultssize[i]);
    207207                        }
    208208                        VecAssemblyBegin(vector);
  • issm/trunk-jpl/src/c/objects/ElementResults/BoolElementResult.cpp

    r10298 r10990  
    198198        xfree((void**)&doublevalues);
    199199} /*}}}*/
     200/*FUNCTION BoolElementResult::GetElementVectorFromResults{{{1*/
     201void BoolElementResult::GetElementVectorFromResults(Vec vector,int dof){
     202
     203        VecSetValue(vector,dof,(double)value,INSERT_VALUES);
     204} /*}}}*/
  • issm/trunk-jpl/src/c/objects/ElementResults/BoolElementResult.h

    r10989 r10990  
    5454                int   InstanceEnum();
    5555                void GetVectorFromResults(Vec vector,int* doflist,int numdofs);
     56                void GetElementVectorFromResults(Vec vector,int dof);
    5657                /*}}}*/
    5758};
  • issm/trunk-jpl/src/c/objects/ElementResults/DoubleElementResult.h

    r10989 r10990  
    5454                int   InstanceEnum();
    5555                void GetVectorFromResults(Vec vector,int* doflist,int numdofs){_error_("not implemented");};
     56                void GetElementVectorFromResults(Vec vector,int dof){_error_("not implemented");};
    5657                /*}}}*/
    5758};
  • issm/trunk-jpl/src/c/objects/ElementResults/ElementResult.h

    r10989 r10990  
    2626                virtual int     InstanceEnum()=0;
    2727                virtual void    GetVectorFromResults(Vec vector,int* doflist,int numdof)=0;
     28                virtual void    GetElementVectorFromResults(Vec vector,int dof)=0;
    2829
    2930};
  • issm/trunk-jpl/src/c/objects/ElementResults/PentaVertexElementResult.cpp

    r9883 r10990  
    201201
    202202} /*}}}*/
     203/*FUNCTION PentaVertexElementResult::GetElementVectorFromResults{{{1*/
     204void PentaVertexElementResult::GetElementVectorFromResults(Vec vector,int dof){
     205
     206        _error_("Result %s is a PentaVertexElementResult and should not write vector of size numberofelemenrs",EnumToStringx(enum_type));
     207} /*}}}*/
  • issm/trunk-jpl/src/c/objects/ElementResults/PentaVertexElementResult.h

    r10989 r10990  
    5353                int   InstanceEnum();
    5454                void GetVectorFromResults(Vec vector,int* doflist,int numdofs);
     55                void GetElementVectorFromResults(Vec vector,int dof);
    5556                /*}}}*/
    5657
  • issm/trunk-jpl/src/c/objects/ElementResults/TriaVertexElementResult.cpp

    r9883 r10990  
    190190
    191191} /*}}}*/
     192/*FUNCTION TriaVertexElementResult::GetElementVectorFromResults{{{1*/
     193void TriaVertexElementResult::GetElementVectorFromResults(Vec vector,int dof){
     194
     195        _error_("Result %s is a TriaVertexElementResult and should not write vector of size numberofelemenrs",EnumToStringx(enum_type));
     196} /*}}}*/
  • issm/trunk-jpl/src/c/objects/ElementResults/TriaVertexElementResult.h

    r10989 r10990  
    5252                int   InstanceEnum();
    5353                void GetVectorFromResults(Vec vector,int* doflist,int numdofs);
     54                void GetElementVectorFromResults(Vec vector,int dof);
    5455                /*}}}*/
    5556
  • issm/trunk-jpl/src/c/objects/Elements/Element.h

    r10989 r10990  
    5959                virtual void   InputScale(int enum_type,double scale_factor)=0;
    6060                virtual void   GetVectorFromInputs(Vec vector, int name_enum)=0;
    61                 virtual void   GetVectorFromResults(Vec vector,int id)=0;
     61                virtual void   GetVectorFromResults(Vec vector,int id,int interp)=0;
    6262                virtual void   InputArtificialNoise(int enum_type,double min,double max)=0;
    6363                virtual bool   InputConvergence(double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums)=0;
  • issm/trunk-jpl/src/c/objects/Elements/Penta.cpp

    r10989 r10990  
    11391139/*}}}*/
    11401140/*FUNCTION Penta::GetVectorFromResults{{{1*/
    1141 void  Penta::GetVectorFromResults(Vec vector,int offset){
    1142 
     1141void  Penta::GetVectorFromResults(Vec vector,int offset,int interp){
     1142
     1143        /*Prepare index list*/
    11431144        int doflist1[NUMVERTICES];
    1144 
    1145         /*Prepare index list*/
    11461145        this->GetSidList(&doflist1[0]);
    11471146
    11481147        /*Get result*/
    11491148        ElementResult* elementresult=(ElementResult*)this->results->GetObjectByOffset(offset);
    1150         elementresult->GetVectorFromResults(vector,&doflist1[0],NUMVERTICES);
     1149        if(interp==P1Enum){
     1150                elementresult->GetVectorFromResults(vector,&doflist1[0],NUMVERTICES);
     1151        }
     1152        else if(interp==P0Enum){
     1153                elementresult->GetElementVectorFromResults(vector,sid);
     1154        }
     1155        else{
     1156                printf("Interpolation %s not supported\n",EnumToStringx(interp));
     1157        }
    11511158}
    11521159/*}}}*/
  • issm/trunk-jpl/src/c/objects/Elements/Penta.h

    r10989 r10990  
    9292                double GetZcoord(GaussPenta* gauss);
    9393                void   GetVectorFromInputs(Vec vector,int name_enum);
    94                 void   GetVectorFromResults(Vec vector,int offset);
     94                void   GetVectorFromResults(Vec vector,int offset,int interp);
    9595               
    9696                int    Sid();
  • issm/trunk-jpl/src/c/objects/Elements/Tria.cpp

    r10989 r10990  
    12401240
    12411241        /*Get out if this is not an element input*/
    1242         if (!IsInput(input_enum)) return;
     1242        if(!IsInput(input_enum)) return;
    12431243
    12441244        /*Prepare index list*/
     
    12541254/*}}}*/
    12551255/*FUNCTION Tria::GetVectorFromResults{{{1*/
    1256 void  Tria::GetVectorFromResults(Vec vector,int offset){
    1257 
     1256void  Tria::GetVectorFromResults(Vec vector,int offset,int interp){
     1257
     1258        /*Prepare index list*/
    12581259        int doflist1[NUMVERTICES];
    1259 
    1260         /*Prepare index list*/
    12611260        this->GetSidList(&doflist1[0]);
    12621261
    12631262        /*Get result*/
    12641263        ElementResult* elementresult=(ElementResult*)this->results->GetObjectByOffset(offset);
    1265         elementresult->GetVectorFromResults(vector,&doflist1[0],NUMVERTICES);
     1264        if(interp==P1Enum){
     1265                elementresult->GetVectorFromResults(vector,&doflist1[0],NUMVERTICES);
     1266        }
     1267        else if(interp==P0Enum){
     1268                elementresult->GetElementVectorFromResults(vector,sid);
     1269        }
     1270        else{
     1271                printf("Interpolation %s not supported\n",EnumToStringx(interp));
     1272        }
    12661273}
    12671274/*}}}*/
  • issm/trunk-jpl/src/c/objects/Elements/Tria.h

    r10989 r10990  
    9292                void   GetSolutionFromInputs(Vec solution);
    9393                void   GetVectorFromInputs(Vec vector, int name_enum);
    94                 void   GetVectorFromResults(Vec vector,int offset);
     94                void   GetVectorFromResults(Vec vector,int offset,int interp);
    9595                void   InputArtificialNoise(int enum_type,double min, double max);
    9696                bool   InputConvergence(double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums);
Note: See TracChangeset for help on using the changeset viewer.