Changeset 9878
- Timestamp:
- 09/22/11 07:31:56 (13 years ago)
- Location:
- issm/trunk/src/c
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/Container/Elements.cpp
r9874 r9878 171 171 void Elements::ToResults(Results* results,Parameters* parameters,int step, double time){ 172 172 173 extern int my_rank; 174 173 175 Patch *patch = NULL; 174 176 int *resultsenums = NULL; … … 194 196 /*Loop over all results and get nodal vector*/ 195 197 for(int i=0;i<numberofresults;i++){ 198 printf("%s\n",EnumToStringx(resultsenums[i])); 196 199 197 200 /*Get vector for result number i*/ … … 206 209 /*Serialize and add to results*/ 207 210 VecToMPISerial(&vector_serial,vector); 208 results->AddObject(new DoubleVecExternalResult(results->Size()+1,resultsenums[i],vector_serial,numberofvertices,step,time)); 211 if(my_rank==0){ 212 results->AddObject(new DoubleVecExternalResult(results->Size()+1,resultsenums[i],vector_serial,numberofvertices,step,time)); 213 } 209 214 210 215 /*clean up*/ … … 212 217 xfree((void**)&vector_serial); 213 218 } 214 215 219 } 216 220 else{ -
issm/trunk/src/c/objects/ElementResults/BoolElementResult.cpp
r9777 r9878 184 184 } 185 185 /*}}}*/ 186 /*FUNCTION BoolElementResult::GetVectorFromResults{{{1*/ 187 void BoolElementResult::GetVectorFromResults(Vec vector,int* doflist,int numdofs){ 188 189 double *doublevalues=NULL; 190 191 /*Cast value to double vector*/ 192 doublevalues=(double*)xmalloc(numdofs*sizeof(double)); 193 for(int i=0;i<numdofs;i++) doublevalues[i]=double(this->value); 194 195 VecSetValues(vector,numdofs,doflist,(const double*)doublevalues,INSERT_VALUES); 196 197 /*cleanup*/ 198 xfree((void**)&doublevalues); 199 } /*}}}*/ -
issm/trunk/src/c/objects/ElementResults/BoolElementResult.h
r9777 r9878 51 51 /*BoolElementResult management: {{{1*/ 52 52 int EnumType(); 53 void GetVectorFromResults(Vec vector,int* doflist,int numdofs); 53 54 /*}}}*/ 54 55 }; -
issm/trunk/src/c/objects/ElementResults/DoubleElementResult.h
r9777 r9878 51 51 /*DoubleElementResult management: {{{1*/ 52 52 int EnumType(); 53 void GetVectorFromResults(Vec vector,int* doflist,int numdofs){_error_("not implemented");}; 53 54 /*}}}*/ 54 55 }; -
issm/trunk/src/c/objects/ElementResults/ElementResult.h
r9874 r9878 23 23 virtual void PatchFill(int row, Patch* patch)=0; 24 24 virtual int EnumType()=0; 25 virtual void GetVectorFromResults(Vec vector,int* doflist,int numdof)=0; 25 26 26 27 }; -
issm/trunk/src/c/objects/ElementResults/PentaVertexElementResult.cpp
r9874 r9878 195 195 /*}}}*/ 196 196 /*FUNCTION PentaVertexElementResult::GetVectorFromResults{{{1*/ 197 void PentaVertexElementResult::GetVectorFromResults(Vec vector,int* doflist ){198 199 const int numvertices=6;200 VecSetValues(vector,num vertices,doflist,(const double*)this->values,INSERT_VALUES);197 void PentaVertexElementResult::GetVectorFromResults(Vec vector,int* doflist,int numdofs){ 198 199 if(numdofs!=6)_error_("Result %s is a PentaVertexElementResult and cannot write vector of %i dofs",numdofs); 200 VecSetValues(vector,numdofs,doflist,(const double*)this->values,INSERT_VALUES); 201 201 202 202 } /*}}}*/ -
issm/trunk/src/c/objects/ElementResults/PentaVertexElementResult.h
r9874 r9878 50 50 /*PentaVertexElementResult management: {{{1*/ 51 51 int EnumType(); 52 void GetVectorFromResults(Vec vector,int* doflist );52 void GetVectorFromResults(Vec vector,int* doflist,int numdofs); 53 53 /*}}}*/ 54 54 -
issm/trunk/src/c/objects/ElementResults/TriaVertexElementResult.cpp
r9874 r9878 184 184 /*}}}*/ 185 185 /*FUNCTION TriaVertexElementResult::GetVectorFromResults{{{1*/ 186 void TriaVertexElementResult::GetVectorFromResults(Vec vector,int* doflist ){186 void TriaVertexElementResult::GetVectorFromResults(Vec vector,int* doflist,int numdofs){ 187 187 188 const int numvertices=3;189 VecSetValues(vector,num vertices,doflist,(const double*)this->values,INSERT_VALUES);188 if(numdofs!=3)_error_("Result %s is a TriaVertexElementResult and cannot write vector of %i dofs",numdofs); 189 VecSetValues(vector,numdofs,doflist,(const double*)this->values,INSERT_VALUES); 190 190 191 191 } /*}}}*/ -
issm/trunk/src/c/objects/ElementResults/TriaVertexElementResult.h
r9874 r9878 49 49 /*TriaVertexElementResult management: {{{1*/ 50 50 int EnumType(); 51 void GetVectorFromResults(Vec vector,int* doflist );51 void GetVectorFromResults(Vec vector,int* doflist,int numdofs); 52 52 /*}}}*/ 53 53 -
issm/trunk/src/c/objects/Elements/Penta.cpp
r9874 r9878 1129 1129 void Penta::GetVectorFromResults(Vec vector,int result_enum){ 1130 1130 1131 bool found=false;1132 1131 int doflist1[NUMVERTICES]; 1133 1132 … … 1139 1138 ElementResult* elementresult=(ElementResult*)this->results->GetObjectByOffset(i); 1140 1139 if(elementresult->EnumType()!=result_enum) continue; 1141 if(elementresult->Enum() !=PentaVertexElementResultEnum) _error_("Result %s found but is not of class PentaVertexElementResultEnum"); 1142 1143 found=true; 1144 PentaVertexElementResult* result=(PentaVertexElementResult*)elementresult; 1145 result->GetVectorFromResults(vector,&doflist1[0]); 1146 } 1140 elementresult->GetVectorFromResults(vector,&doflist1[0],NUMVERTICES); 1141 return; 1142 } 1143 1144 _error_("Result %s not found in element",EnumToStringx(result_enum)); 1147 1145 } 1148 1146 /*}}}*/ … … 2028 2026 int i; 2029 2027 int numberofresults = 0; 2030 int *resultsenums =NULL;2028 int *resultsenums = NULL; 2031 2029 2032 2030 /*Checks*/ … … 2039 2037 } 2040 2038 2041 /*Allocate output*/ 2042 resultsenums=(int*)xmalloc(numberofresults*sizeof(int)); 2043 2044 /*populate enums*/ 2045 for(i=0;i<this->results->Size();i++){ 2046 ElementResult* elementresult=(ElementResult*)this->results->GetObjectByOffset(i); 2047 resultsenums[i]=elementresult->EnumType(); 2039 if(numberofresults){ 2040 2041 /*Allocate output*/ 2042 resultsenums=(int*)xmalloc(numberofresults*sizeof(int)); 2043 2044 /*populate enums*/ 2045 for(i=0;i<this->results->Size();i++){ 2046 ElementResult* elementresult=(ElementResult*)this->results->GetObjectByOffset(i); 2047 resultsenums[i]=elementresult->EnumType(); 2048 } 2048 2049 } 2049 2050 -
issm/trunk/src/c/objects/Elements/Tria.cpp
r9874 r9878 1320 1320 ElementResult* elementresult=(ElementResult*)this->results->GetObjectByOffset(i); 1321 1321 if(elementresult->EnumType()!=result_enum) continue; 1322 if(elementresult->Enum() !=TriaVertexElementResultEnum) _error_("Result %s found but is not of class TriaVertexElementResultEnum"); 1323 1324 found=true; 1325 TriaVertexElementResult* result=(TriaVertexElementResult*)elementresult; 1326 result->GetVectorFromResults(vector,&doflist1[0]); 1327 } 1322 elementresult->GetVectorFromResults(vector,&doflist1[0],NUMVERTICES); 1323 return; 1324 } 1325 1326 _error_("Result %s not found in element",EnumToStringx(result_enum)); 1328 1327 } 1329 1328 /*}}}*/ … … 1953 1952 int i; 1954 1953 int numberofresults = 0; 1955 int *resultsenums =NULL;1954 int *resultsenums = NULL; 1956 1955 1957 1956 /*Checks*/ … … 1964 1963 } 1965 1964 1966 /*Allocate output*/ 1967 resultsenums=(int*)xmalloc(numberofresults*sizeof(int)); 1968 1969 /*populate enums*/ 1970 for(i=0;i<this->results->Size();i++){ 1971 ElementResult* elementresult=(ElementResult*)this->results->GetObjectByOffset(i); 1972 resultsenums[i]=elementresult->EnumType(); 1965 if(numberofresults){ 1966 1967 /*Allocate output*/ 1968 resultsenums=(int*)xmalloc(numberofresults*sizeof(int)); 1969 1970 /*populate enums*/ 1971 for(i=0;i<this->results->Size();i++){ 1972 ElementResult* elementresult=(ElementResult*)this->results->GetObjectByOffset(i); 1973 resultsenums[i]=elementresult->EnumType(); 1974 } 1973 1975 } 1974 1976
Note:
See TracChangeset
for help on using the changeset viewer.