[issm-svn] r12630 - issm/trunk/src/c
morlighe at issm.ess.uci.edu
morlighe at issm.ess.uci.edu
Wed Jul 11 14:05:15 PDT 2012
Author: morlighe
Date: 2012-07-11 14:05:15 -0700 (Wed, 11 Jul 2012)
New Revision: 12630
Modified:
issm/trunk/src/c/Container/Elements.cpp
issm/trunk/src/c/objects/Elements/Element.h
issm/trunk/src/c/objects/Elements/Penta.cpp
issm/trunk/src/c/objects/Elements/Penta.h
issm/trunk/src/c/objects/Elements/Tria.cpp
issm/trunk/src/c/objects/Elements/Tria.h
Log:
Fixed PDD crash in 3d by extruding SurfaceForcingMassBalance and added some checks on results
Modified: issm/trunk/src/c/Container/Elements.cpp
===================================================================
--- issm/trunk/src/c/Container/Elements.cpp 2012-07-11 17:42:00 UTC (rev 12629)
+++ issm/trunk/src/c/Container/Elements.cpp 2012-07-11 21:05:15 UTC (rev 12630)
@@ -236,7 +236,7 @@
for(int j=0;j<this->Size();j++){
Element* element=(Element*)this->GetObjectByOffset(j);
- element->GetVectorFromResults(vector,i,resultssizes[i]);
+ element->GetVectorFromResults(vector,i,resultsenums[i],resultssizes[i]);
}
vector->Assemble();
Modified: issm/trunk/src/c/objects/Elements/Element.h
===================================================================
--- issm/trunk/src/c/objects/Elements/Element.h 2012-07-11 17:42:00 UTC (rev 12629)
+++ issm/trunk/src/c/objects/Elements/Element.h 2012-07-11 21:05:15 UTC (rev 12630)
@@ -62,7 +62,7 @@
virtual int NodalValue(double* pvalue, int index, int natureofdataenum,bool process_units)=0;
virtual void InputScale(int enum_type,double scale_factor)=0;
virtual void GetVectorFromInputs(Vector* vector, int name_enum)=0;
- virtual void GetVectorFromResults(Vector* vector,int id,int interp)=0;
+ virtual void GetVectorFromResults(Vector* vector,int id,int enum_in,int interp)=0;
virtual void InputArtificialNoise(int enum_type,double min,double max)=0;
virtual bool InputConvergence(double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums)=0;
virtual void AverageOntoPartition(Vector* partition_contributions,Vector* partition_areas,double* vertex_response,double* qmu_part)=0;
Modified: issm/trunk/src/c/objects/Elements/Penta.cpp
===================================================================
--- issm/trunk/src/c/objects/Elements/Penta.cpp 2012-07-11 17:42:00 UTC (rev 12629)
+++ issm/trunk/src/c/objects/Elements/Penta.cpp 2012-07-11 21:05:15 UTC (rev 12630)
@@ -1079,10 +1079,13 @@
}
/*}}}*/
/*FUNCTION Penta::GetVectorFromResults{{{1*/
-void Penta::GetVectorFromResults(Vector* vector,int offset,int interp){
+void Penta::GetVectorFromResults(Vector* vector,int offset,int enum_in,int interp){
/*Get result*/
ElementResult* elementresult=(ElementResult*)this->results->GetObjectByOffset(offset);
+ if(elementresult->InstanceEnum()!=enum_in){
+ _error_("Results of offset %i is %s, when %s was expected",offset,EnumToStringx(elementresult->InstanceEnum()),EnumToStringx(enum_in));
+ }
if(interp==P1Enum){
int doflist1[NUMVERTICES];
int connectivity[NUMVERTICES];
@@ -2477,10 +2480,12 @@
agd[i] = -smelt[i]+saccu[i];
agd[i] = agd[i]/yts;
pddtj[i]=pddt;
- /*Update inputs*/
- this->inputs->AddInput(new PentaP1Input(SurfaceforcingsMassBalanceEnum,&agd[0]));
- // this->inputs->AddInput(new PentaVertexInput(ThermalSpcTemperatureEnum,&Tsurf[0]));
- } //end of the for loop over the vertices
+ }//end of the for loop over the vertices
+
+ /*Update inputs*/
+ this->inputs->AddInput(new PentaP1Input(SurfaceforcingsMassBalanceEnum,&agd[0]));
+ //this->inputs->AddInput(new PentaVertexInput(ThermalSpcTemperatureEnum,&Tsurf[0]));
+ this->InputExtrude(SurfaceforcingsMassBalanceEnum,ElementEnum);
}
/*}}}*/
/*FUNCTION Penta::PotentialSheetUngrounding{{{1*/
Modified: issm/trunk/src/c/objects/Elements/Penta.h
===================================================================
--- issm/trunk/src/c/objects/Elements/Penta.h 2012-07-11 17:42:00 UTC (rev 12629)
+++ issm/trunk/src/c/objects/Elements/Penta.h 2012-07-11 21:05:15 UTC (rev 12630)
@@ -88,7 +88,7 @@
void GetSolutionFromInputs(Vector* solution);
double GetZcoord(GaussPenta* gauss);
void GetVectorFromInputs(Vector* vector,int name_enum);
- void GetVectorFromResults(Vector* vector,int offset,int interp);
+ void GetVectorFromResults(Vector* vector,int offset,int name_enum,int interp);
int Sid();
void InputArtificialNoise(int enum_type,double min, double max);
Modified: issm/trunk/src/c/objects/Elements/Tria.cpp
===================================================================
--- issm/trunk/src/c/objects/Elements/Tria.cpp 2012-07-11 17:42:00 UTC (rev 12629)
+++ issm/trunk/src/c/objects/Elements/Tria.cpp 2012-07-11 21:05:15 UTC (rev 12630)
@@ -1191,10 +1191,13 @@
}
/*}}}*/
/*FUNCTION Tria::GetVectorFromResults{{{1*/
-void Tria::GetVectorFromResults(Vector* vector,int offset,int interp){
+void Tria::GetVectorFromResults(Vector* vector,int offset,int enum_in,int interp){
/*Get result*/
ElementResult* elementresult=(ElementResult*)this->results->GetObjectByOffset(offset);
+ if(elementresult->InstanceEnum()!=enum_in){
+ _error_("Results of offset %i is %s, when %s was expected",offset,EnumToStringx(elementresult->InstanceEnum()),EnumToStringx(enum_in));
+ }
if(interp==P1Enum){
int doflist1[NUMVERTICES];
int connectivity[NUMVERTICES];
@@ -2307,10 +2310,12 @@
agd[i] = -smelt[i]+saccu[i];
agd[i] = agd[i]/yts;
pddtj[i]=pddt;
- /*Update inputs*/
- this->inputs->AddInput(new TriaP1Input(SurfaceforcingsMassBalanceEnum,&agd[0]));
- // this->inputs->AddInput(new TriaVertexInput(ThermalSpcTemperatureEnum,&Tsurf[0]));
- } //end of the for loop over the vertices
+
+ } //end of the for loop over the vertices
+
+ /*Update inputs*/
+ this->inputs->AddInput(new TriaP1Input(SurfaceforcingsMassBalanceEnum,&agd[0]));
+ // this->inputs->AddInput(new TriaVertexInput(ThermalSpcTemperatureEnum,&Tsurf[0]));
}
/*}}}*/
/*FUNCTION Tria::ProcessResultsUnits{{{1*/
Modified: issm/trunk/src/c/objects/Elements/Tria.h
===================================================================
--- issm/trunk/src/c/objects/Elements/Tria.h 2012-07-11 17:42:00 UTC (rev 12629)
+++ issm/trunk/src/c/objects/Elements/Tria.h 2012-07-11 21:05:15 UTC (rev 12630)
@@ -88,7 +88,7 @@
bool IsOnWater();
void GetSolutionFromInputs(Vector* solution);
void GetVectorFromInputs(Vector* vector, int name_enum);
- void GetVectorFromResults(Vector* vector,int offset,int interp);
+ void GetVectorFromResults(Vector* vector,int offset,int enum_in,int interp);
void InputArtificialNoise(int enum_type,double min, double max);
bool InputConvergence(double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums);
void InputCreate(double scalar,int name,int code);
More information about the issm-svn
mailing list