Changeset 18884


Ignore:
Timestamp:
11/28/14 09:54:41 (10 years ago)
Author:
Eric.Larour
Message:

CHG: new capability to return control input on sid indexed vector instead of pid indexed vector. Default is still pid indexing
of course.

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

Legend:

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

    r18861 r18884  
    944944        return z;
    945945}/*}}}*/
    946 void       Element::GradientIndexing(int* indexing,int control_index){/*{{{*/
     946void       Element::GradientIndexing(int* indexing,int control_index,bool onsid){/*{{{*/
    947947
    948948        /*Get number of controls*/
     
    954954
    955955        /*get gradient indices*/
    956         for(int i=0;i<numvertices;i++){
    957                 indexing[i]=num_controls*this->vertices[i]->Pid() + control_index;
     956        if(onsid){
     957                for(int i=0;i<numvertices;i++){
     958                        indexing[i]=num_controls*this->vertices[i]->Sid() + control_index;
     959                }
     960        }
     961        else{
     962                for(int i=0;i<numvertices;i++){
     963                        indexing[i]=num_controls*this->vertices[i]->Pid() + control_index;
     964                }
    958965        }
    959966
  • issm/trunk-jpl/src/c/classes/Elements/Element.h

    r18855 r18884  
    104104                IssmDouble GetYcoord(IssmDouble* xyz_list,Gauss* gauss);
    105105                IssmDouble GetZcoord(IssmDouble* xyz_list,Gauss* gauss);
    106                 void       GradientIndexing(int* indexing,int control_index);
     106                void       GradientIndexing(int* indexing,int control_index,bool onsid=false);
    107107                bool       HasNodeOnBase();
    108108                bool       HasNodeOnSurface();
     
    288288                virtual void   ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index)=0;
    289289                virtual void   ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum)=0;
    290                 virtual void   GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data)=0;
     290                virtual void   GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data,bool onsid)=0;
    291291                virtual void   SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index)=0;
    292292                virtual void   InputControlUpdate(IssmDouble scalar,bool save_parameter)=0;
  • issm/trunk-jpl/src/c/classes/Elements/Penta.cpp

    r18860 r18884  
    31973197}
    31983198/*}}}*/
    3199 void       Penta::GetVectorFromControlInputs(Vector<IssmDouble>* vector,int control_enum,int control_index,const char* data){/*{{{*/
    3200 
    3201         int vertexpidlist[NUMVERTICES];
     3199void       Penta::GetVectorFromControlInputs(Vector<IssmDouble>* vector,int control_enum,int control_index,const char* data,bool onsid){/*{{{*/
     3200
     3201        int vertexidlist[NUMVERTICES];
    32023202
    32033203        /*Get out if this is not an element input*/
     
    32053205
    32063206        /*Prepare index list*/
    3207         GradientIndexing(&vertexpidlist[0],control_index);
     3207        GradientIndexing(&vertexidlist[0],control_index,onsid);
    32083208
    32093209        /*Get input (either in element or material)*/
     
    32173217        }
    32183218
    3219         ((ControlInput*)input)->GetVectorFromInputs(vector,&vertexpidlist[0],data);
     3219        ((ControlInput*)input)->GetVectorFromInputs(vector,&vertexidlist[0],data);
    32203220}
    32213221/*}}}*/
  • issm/trunk-jpl/src/c/classes/Elements/Penta.h

    r18855 r18884  
    126126                #endif
    127127
    128                 void   GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data);
     128                void   GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data,bool onsid);
    129129                void   SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index);
    130130                void   ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index);
  • issm/trunk-jpl/src/c/classes/Elements/Seg.h

    r18855 r18884  
    164164#endif
    165165
    166                 void       GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data){_error_("not implemented yet");};
     166                void       GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data,bool onsid){_error_("not implemented yet");};
    167167                void       SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index){_error_("not implemented yet");};
    168168                void       ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index){_error_("not implemented yet");};
  • issm/trunk-jpl/src/c/classes/Elements/Tetra.h

    r18855 r18884  
    170170                IssmDouble DragCoefficientAbsGradient(void){_error_("not implemented yet");};
    171171                void       GradientIndexing(int* indexing,int control_index){_error_("not implemented yet");};
    172                 void       GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data){_error_("not implemented yet");};
     172                void       GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data,bool onsid){_error_("not implemented yet");};
    173173                void       SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index){_error_("not implemented yet");};
    174174                void       ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index){_error_("not implemented yet");};
  • issm/trunk-jpl/src/c/classes/Elements/Tria.cpp

    r18860 r18884  
    30343034
    30353035}/*}}}*/
    3036 void       Tria::GetVectorFromControlInputs(Vector<IssmDouble>* vector,int control_enum,int control_index,const char* data){/*{{{*/
    3037 
    3038         int vertexpidlist[NUMVERTICES];
     3036void       Tria::GetVectorFromControlInputs(Vector<IssmDouble>* vector,int control_enum,int control_index,const char* data,bool onsid){/*{{{*/
     3037
     3038        int vertexidlist[NUMVERTICES];
    30393039        Input *input=NULL;
    30403040
     
    30433043
    30443044        /*Prepare index list*/
    3045         GradientIndexing(&vertexpidlist[0],control_index);
     3045        GradientIndexing(&vertexidlist[0],control_index,onsid);
    30463046
    30473047        /*Get input (either in element or material)*/
     
    30533053        }
    30543054
    3055         ((ControlInput*)input)->GetVectorFromInputs(vector,&vertexpidlist[0],data);
     3055        ((ControlInput*)input)->GetVectorFromInputs(vector,&vertexidlist[0],data);
    30563056}
    30573057/*}}}*/
  • issm/trunk-jpl/src/c/classes/Elements/Tria.h

    r18855 r18884  
    132132                #endif
    133133
    134                 void       GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data);
     134                void       GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data,bool onsid);
    135135                void       SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index);
    136136                void       ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index);
Note: See TracChangeset for help on using the changeset viewer.