Changeset 12630


Ignore:
Timestamp:
07/11/12 14:05:15 (13 years ago)
Author:
Mathieu Morlighem
Message:

Fixed PDD crash in 3d by extruding SurfaceForcingMassBalance and added some checks on results

Location:
issm/trunk/src/c
Files:
6 edited

Legend:

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

    r12330 r12630  
    237237                        for(int j=0;j<this->Size();j++){
    238238                                Element* element=(Element*)this->GetObjectByOffset(j);
    239                                 element->GetVectorFromResults(vector,i,resultssizes[i]);
     239                                element->GetVectorFromResults(vector,i,resultsenums[i],resultssizes[i]);
    240240                        }
    241241                        vector->Assemble();
  • issm/trunk/src/c/objects/Elements/Element.h

    r11995 r12630  
    6363                virtual void   InputScale(int enum_type,double scale_factor)=0;
    6464                virtual void   GetVectorFromInputs(Vector* vector, int name_enum)=0;
    65                 virtual void   GetVectorFromResults(Vector* vector,int id,int interp)=0;
     65                virtual void   GetVectorFromResults(Vector* vector,int id,int enum_in,int interp)=0;
    6666                virtual void   InputArtificialNoise(int enum_type,double min,double max)=0;
    6767                virtual bool   InputConvergence(double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums)=0;
  • issm/trunk/src/c/objects/Elements/Penta.cpp

    r12388 r12630  
    10801080/*}}}*/
    10811081/*FUNCTION Penta::GetVectorFromResults{{{1*/
    1082 void  Penta::GetVectorFromResults(Vector* vector,int offset,int interp){
     1082void  Penta::GetVectorFromResults(Vector* vector,int offset,int enum_in,int interp){
    10831083
    10841084        /*Get result*/
    10851085        ElementResult* elementresult=(ElementResult*)this->results->GetObjectByOffset(offset);
     1086        if(elementresult->InstanceEnum()!=enum_in){
     1087                _error_("Results of offset %i is %s, when %s was expected",offset,EnumToStringx(elementresult->InstanceEnum()),EnumToStringx(enum_in));
     1088        } 
    10861089        if(interp==P1Enum){
    10871090                int doflist1[NUMVERTICES];
     
    24782481     agd[i] = agd[i]/yts;
    24792482     pddtj[i]=pddt;
    2480      /*Update inputs*/   
    2481      this->inputs->AddInput(new PentaP1Input(SurfaceforcingsMassBalanceEnum,&agd[0]));
    2482      // this->inputs->AddInput(new PentaVertexInput(ThermalSpcTemperatureEnum,&Tsurf[0]));
    2483    }       //end of the for loop over the vertices
     2483   }//end of the for loop over the vertices
     2484
     2485        /*Update inputs*/   
     2486        this->inputs->AddInput(new PentaP1Input(SurfaceforcingsMassBalanceEnum,&agd[0]));
     2487        //this->inputs->AddInput(new PentaVertexInput(ThermalSpcTemperatureEnum,&Tsurf[0]));
     2488        this->InputExtrude(SurfaceforcingsMassBalanceEnum,ElementEnum);
    24842489}
    24852490/*}}}*/
  • issm/trunk/src/c/objects/Elements/Penta.h

    r12330 r12630  
    8989                double GetZcoord(GaussPenta* gauss);
    9090                void   GetVectorFromInputs(Vector* vector,int name_enum);
    91                 void   GetVectorFromResults(Vector* vector,int offset,int interp);
     91                void   GetVectorFromResults(Vector* vector,int offset,int name_enum,int interp);
    9292               
    9393                int    Sid();
  • issm/trunk/src/c/objects/Elements/Tria.cpp

    r12385 r12630  
    11921192/*}}}*/
    11931193/*FUNCTION Tria::GetVectorFromResults{{{1*/
    1194 void  Tria::GetVectorFromResults(Vector* vector,int offset,int interp){
     1194void  Tria::GetVectorFromResults(Vector* vector,int offset,int enum_in,int interp){
    11951195
    11961196        /*Get result*/
    11971197        ElementResult* elementresult=(ElementResult*)this->results->GetObjectByOffset(offset);
     1198        if(elementresult->InstanceEnum()!=enum_in){
     1199                _error_("Results of offset %i is %s, when %s was expected",offset,EnumToStringx(elementresult->InstanceEnum()),EnumToStringx(enum_in));
     1200        }
    11981201        if(interp==P1Enum){
    11991202                int doflist1[NUMVERTICES];
     
    23082311     agd[i] = agd[i]/yts;
    23092312     pddtj[i]=pddt;
    2310      /*Update inputs*/   
    2311      this->inputs->AddInput(new TriaP1Input(SurfaceforcingsMassBalanceEnum,&agd[0]));
    2312      // this->inputs->AddInput(new TriaVertexInput(ThermalSpcTemperatureEnum,&Tsurf[0]));
    2313    }       //end of the for loop over the vertices
     2313
     2314   } //end of the for loop over the vertices
     2315
     2316        /*Update inputs*/   
     2317        this->inputs->AddInput(new TriaP1Input(SurfaceforcingsMassBalanceEnum,&agd[0]));
     2318        // this->inputs->AddInput(new TriaVertexInput(ThermalSpcTemperatureEnum,&Tsurf[0]));
    23142319}
    23152320/*}}}*/
  • issm/trunk/src/c/objects/Elements/Tria.h

    r12330 r12630  
    8989                void   GetSolutionFromInputs(Vector* solution);
    9090                void   GetVectorFromInputs(Vector* vector, int name_enum);
    91                 void   GetVectorFromResults(Vector* vector,int offset,int interp);
     91                void   GetVectorFromResults(Vector* vector,int offset,int enum_in,int interp);
    9292                void   InputArtificialNoise(int enum_type,double min, double max);
    9393                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.