Changeset 16486
- Timestamp:
- 10/21/13 16:11:53 (11 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 1 deleted
- 35 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified issm/trunk-jpl/src/c/CMakeLists.txt ¶
r16485 r16486 9 9 $ENV{ISSM_DIR}/src/c/classes 10 10 $ENV{ISSM_DIR}/src/c/classes/Options 11 $ENV{ISSM_DIR}/src/c/classes/ElementResults12 11 $ENV{ISSM_DIR}/src/c/classes/ExternalResults 13 12 $ENV{ISSM_DIR}/src/c/classes/Elements … … 95 94 ./classes/Vertex.cpp 96 95 ./classes/Hook.cpp 97 ./classes/ElementResults/DoubleElementResult.cpp98 ./classes/ElementResults/TriaP1ElementResult.cpp99 ./classes/ElementResults/BoolElementResult.cpp100 96 ./classes/ExternalResults/Results.cpp 101 97 ./classes/Elements/Elements.cpp … … 395 391 #3D sources {{{ 396 392 set(threed_sources ./classes/gauss/GaussPenta.cpp 397 ./classes/ElementResults/PentaP1ElementResult.cpp398 393 ./classes/Inputs/PentaInput.cpp 399 394 ./classes/Elements/Penta.cpp -
TabularUnified issm/trunk-jpl/src/c/Makefile.am ¶
r16485 r16486 63 63 ./classes/Hook.h\ 64 64 ./classes/Hook.cpp\ 65 ./classes/ElementResults/ElementResultLocal.h\66 ./classes/ElementResults/DoubleElementResult.h\67 ./classes/ElementResults/DoubleElementResult.cpp\68 ./classes/ElementResults/TriaP1ElementResult.h\69 ./classes/ElementResults/TriaP1ElementResult.cpp\70 ./classes/ElementResults/BoolElementResult.h\71 ./classes/ElementResults/BoolElementResult.cpp\72 65 ./classes/ExternalResults/Results.h\ 73 66 ./classes/ExternalResults/Results.cpp\ … … 594 587 threed_sources = ./classes/gauss/GaussPenta.h\ 595 588 ./classes/gauss/GaussPenta.cpp\ 596 ./classes/ElementResults/PentaP1ElementResult.h\597 ./classes/ElementResults/PentaP1ElementResult.cpp\598 589 ./classes/Inputs/PentaInput.h\ 599 590 ./classes/Inputs/PentaInput.cpp\ -
TabularUnified issm/trunk-jpl/src/c/classes/Elements/Element.h ¶
r16485 r16486 59 59 virtual void ComputeBasalStress(Vector<IssmDouble>* sigma_b)=0; 60 60 virtual void ComputeStrainRate(Vector<IssmDouble>* eps)=0; 61 virtual void ListResultsInfo(int** results_enums,int** results_size,IssmDouble** results_times,int** results_steps,int* num_results)=0;62 61 virtual void ResultInterpolation(int* pinterpolation,int output_enum)=0; 63 62 virtual void ResultToVector(Vector<IssmPDouble>* vector,int output_enum)=0; 64 virtual void DeleteResults(void)=0;65 63 virtual void Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finite_element)=0; 66 64 virtual void InputDuplicate(int original_enum,int new_enum)=0; … … 70 68 virtual void InputScale(int enum_type,IssmDouble scale_factor)=0; 71 69 virtual void GetVectorFromInputs(Vector<IssmDouble>* vector, int name_enum)=0; 72 virtual void GetVectorFromResults(Vector<IssmDouble>* vector,int id,int enum_in,int interp)=0;73 70 virtual IssmDouble TimeAdapt()=0; 74 71 virtual void PositiveDegreeDay(IssmDouble* pdds,IssmDouble* pds,IssmDouble signorm)=0; -
TabularUnified issm/trunk-jpl/src/c/classes/Elements/Elements.cpp ¶
r16470 r16486 51 51 } 52 52 /*}}}*/ 53 /*FUNCTION Elements::DeleteResults{{{*/54 void Elements::DeleteResults(void){55 56 for (int i=0;i<this->Size();i++){57 Element* element=dynamic_cast<Element*>(this->GetObjectByOffset(i));58 element->DeleteResults();59 }60 }61 /*}}}*/62 53 /*FUNCTION Elements::SetCurrentConfiguration{{{*/ 63 54 void Elements::SetCurrentConfiguration(Elements* elements,Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters){ … … 73 64 } 74 65 75 }76 /*}}}*/77 /*FUNCTION Elements::ToResults{{{*/78 void Elements::ToResults(Results* results,Parameters* parameters){79 80 int my_rank;81 int num_procs;82 83 int *resultsenums = NULL;84 int *resultssizes = NULL;85 int *resultssteps = NULL;86 IssmDouble *resultstimes = NULL;87 IssmDouble *vector_serial = NULL;88 Vector<IssmDouble> *vector = NULL;89 bool io_gather;90 int numberofvertices,numberofelements;91 int numberofresults ,vectorsize;92 int rank;93 int minrank;94 95 /*recover my_rank:*/96 my_rank=IssmComm::GetRank();97 num_procs=IssmComm::GetSize();98 99 /*Recover parameters: */100 parameters->FindParam(&io_gather,SettingsIoGatherEnum);101 parameters->FindParam(&numberofvertices,MeshNumberofverticesEnum);102 parameters->FindParam(&numberofelements,MeshNumberofelementsEnum);103 104 /*Get rank of first cpu that has results*/105 if(this->Size()) rank=my_rank;106 else rank=num_procs;107 ISSM_MPI_Allreduce (&rank,&minrank,1,ISSM_MPI_INT,ISSM_MPI_MIN,IssmComm::GetComm());108 109 /*see what the first element of this partition has in stock (this is common to all partitions)*/110 if(my_rank==minrank){111 if(this->Size()==0) _error_("Cannot write results because there is no element??");112 Element* element=dynamic_cast<Element*>(this->GetObjectByOffset(0));113 element->ListResultsInfo(&resultsenums,&resultssizes,&resultstimes,&resultssteps,&numberofresults);114 }115 ISSM_MPI_Bcast(&numberofresults,1,ISSM_MPI_INT,minrank,IssmComm::GetComm());116 117 /*Get out if there is no results. Otherwise broadcast info*/118 if(!numberofresults) return;119 if(my_rank!=minrank){120 resultsenums=xNew<int>(numberofresults);121 resultssizes=xNew<int>(numberofresults);122 resultstimes=xNew<IssmDouble>(numberofresults);123 resultssteps=xNew<int>(numberofresults);124 }125 ISSM_MPI_Bcast(resultsenums,numberofresults,ISSM_MPI_INT,minrank,IssmComm::GetComm());126 ISSM_MPI_Bcast(resultssizes,numberofresults,ISSM_MPI_INT,minrank,IssmComm::GetComm());127 ISSM_MPI_Bcast(resultstimes,numberofresults,ISSM_MPI_DOUBLE,minrank,IssmComm::GetComm());128 ISSM_MPI_Bcast(resultssteps,numberofresults,ISSM_MPI_INT,minrank,IssmComm::GetComm());129 130 /*Loop over all results and get nodal vector*/131 for(int i=0;i<numberofresults;i++){132 133 /*Get vector for result number i*/134 if(resultssizes[i]==P1Enum) vectorsize=numberofvertices;135 else if(resultssizes[i]==P0Enum) vectorsize=numberofelements;136 else _error_("Unkown result size: " << EnumToStringx(resultssizes[i]));137 vector=new Vector<IssmDouble>(vectorsize);138 139 for(int j=0;j<this->Size();j++){140 Element* element=dynamic_cast<Element*>(this->GetObjectByOffset(j));141 element->GetVectorFromResults(vector,i,resultsenums[i],resultssizes[i]);142 }143 vector->Assemble();144 145 /*Serialize and add to results*/146 vector_serial=vector->ToMPISerial();147 results->DeleteResult(resultsenums[i],resultssteps[i]);148 if(my_rank==0){149 /*No need to add this vector for all cpus*/150 #ifdef _HAVE_ADOLC_151 IssmPDouble* vector_serial_passive=xNew<IssmPDouble>(vectorsize);152 for(int k=0;k<vectorsize;k++)vector_serial_passive[k]=reCast<IssmPDouble>(vector_serial[k]);153 results->AddResult(new GenericExternalResult<IssmPDouble*>(results->Size()+1,resultsenums[i],vector_serial_passive,vectorsize,1,resultssteps[i],resultstimes[i]));154 xDelete<IssmPDouble>(vector_serial_passive);155 #else156 results->AddResult(new GenericExternalResult<IssmPDouble*>(results->Size()+1,resultsenums[i],vector_serial,vectorsize,1,resultssteps[i],resultstimes[i]));157 #endif158 }159 160 /*clean up*/161 delete vector;162 xDelete<IssmDouble>(vector_serial);163 }164 165 /*Free ressources:*/166 xDelete<int>(resultsenums);167 xDelete<int>(resultssizes);168 xDelete<int>(resultssteps);169 xDelete<IssmDouble>(resultstimes);170 66 } 171 67 /*}}}*/ -
TabularUnified issm/trunk-jpl/src/c/classes/Elements/Elements.h ¶
r16470 r16486 25 25 /*numerics*/ 26 26 void Configure(Elements* elements,Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters); 27 void DeleteResults(void);28 27 int MaxNumNodes(void); 29 28 void SetCurrentConfiguration(Elements* elements,Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters); 30 void ToResults(Results* results,Parameters* parameters);31 29 int NumberOfElements(void); 32 30 void InputDuplicate(int input_enum,int output_enum); -
TabularUnified issm/trunk-jpl/src/c/classes/Elements/Penta.cpp ¶
r16485 r16486 30 30 this->inputs = NULL; 31 31 this->parameters = NULL; 32 this->results = NULL;33 32 } 34 33 /*}}}*/ … … 36 35 Penta::~Penta(){ 37 36 delete inputs; 38 delete results;39 37 this->parameters=NULL; 40 38 } … … 65 63 this->parameters=NULL; 66 64 67 /*intialize inputs and results: */65 /*intialize inputs: */ 68 66 this->inputs=new Inputs(); 69 this->results=new Results();70 67 71 68 /*initialize pointers:*/ … … 107 104 else{ 108 105 penta->inputs=new Inputs(); 109 }110 if(this->results){111 penta->results=(Results*)this->results->Copy();112 }113 else{114 penta->results=new Results();115 106 } 116 107 /*point parameters: */ … … 845 836 _printf_(" inputs\n"); 846 837 inputs->DeepEcho(); 847 _printf_(" results\n");848 results->DeepEcho();849 }850 /*}}}*/851 /*FUNCTION Penta::DeleteResults {{{*/852 void Penta::DeleteResults(void){853 854 /*Delete and reinitialize results*/855 delete this->results;856 this->results=new Results();857 858 838 } 859 839 /*}}}*/ … … 1656 1636 /*We found the enum. Use its values to fill into the vector, using the vertices ids: */ 1657 1637 input->GetVectorFromInputs(vector,&vertexpidlist[0]); 1658 }1659 /*}}}*/1660 /*FUNCTION Penta::GetVectorFromResults{{{*/1661 void Penta::GetVectorFromResults(Vector<IssmDouble>* vector,int offset,int enum_in,int interp){1662 1663 /*Get result*/1664 ElementResult* elementresult=(ElementResult*)this->results->GetObjectByOffset(offset);1665 if(interp==P1Enum){1666 int vertexpidlist[NUMVERTICES];1667 int connectivity[NUMVERTICES];1668 this->GetVertexSidList(&vertexpidlist[0]);1669 this->GetConnectivityList(&connectivity[0]);1670 elementresult->GetVectorFromResults(vector,&vertexpidlist[0],&connectivity[0],NUMVERTICES);1671 }1672 else if(interp==P0Enum){1673 elementresult->GetElementVectorFromResults(vector,sid);1674 }1675 else{1676 _printf_("Interpolation " << EnumToStringx(interp) << " not supported\n");1677 }1678 1638 } 1679 1639 /*}}}*/ … … 2759 2719 } 2760 2720 /*}}}*/ 2761 /*FUNCTION Penta::ListResultsInfo{{{*/2762 void Penta::ListResultsInfo(int** in_resultsenums,int** in_resultssizes,IssmDouble** in_resultstimes,int** in_resultssteps,int* in_num_results){2763 2764 /*Intermediaries*/2765 int *resultsenums = NULL;2766 int *resultssizes = NULL;2767 IssmDouble *resultstimes = NULL;2768 int *resultssteps = NULL;2769 2770 /*Checks*/2771 _assert_(in_num_results);2772 2773 /*Count number of results*/2774 int numberofresults = this->results->Size();2775 2776 if(numberofresults){2777 /*Allocate output*/2778 resultsenums=xNew<int>(numberofresults);2779 resultssizes=xNew<int>(numberofresults);2780 resultstimes=xNew<IssmDouble>(numberofresults);2781 resultssteps=xNew<int>(numberofresults);2782 2783 /*populate enums*/2784 for(int i=0;i<this->results->Size();i++){2785 ElementResult* elementresult=(ElementResult*)this->results->GetObjectByOffset(i);2786 resultsenums[i]=StringToEnumx(elementresult->GetResultName());2787 resultstimes[i]=elementresult->GetTime();2788 resultssteps[i]=elementresult->GetStep();2789 if(elementresult->ObjectEnum()==PentaP1ElementResultEnum){2790 resultssizes[i]=P1Enum;2791 }2792 else{2793 resultssizes[i]=P0Enum;2794 }2795 }2796 }2797 2798 /*Assign output pointers:*/2799 *in_num_results=numberofresults;2800 *in_resultsenums=resultsenums;2801 *in_resultssizes=resultssizes;2802 *in_resultstimes=resultstimes;2803 *in_resultssteps=resultssteps;2804 2805 }/*}}}*/2806 2721 /*FUNCTION Penta::MinEdgeLength{{{*/ 2807 2722 IssmDouble Penta::MinEdgeLength(IssmDouble xyz_list[6][3]){ -
TabularUnified issm/trunk-jpl/src/c/classes/Elements/Penta.h ¶
r16485 r16486 43 43 Parameters *parameters; //pointer to solution parameters 44 44 Inputs *inputs; 45 Results *results;46 45 47 46 /*Penta constructors and destructor: {{{*/ … … 82 81 void CreateJacobianMatrix(Matrix<IssmDouble>* Jff); 83 82 void Delta18oParameterization(void); 84 void DeleteResults(void);85 83 int GetNodeIndex(Node* node); 86 84 void GetNodesSidList(int* sidlist); … … 90 88 IssmDouble GetZcoord(GaussPenta* gauss); 91 89 void GetVectorFromInputs(Vector<IssmDouble>* vector,int name_enum); 92 void GetVectorFromResults(Vector<IssmDouble>* vector,int offset,int name_enum,int interp);93 90 94 91 int Sid(); … … 98 95 void InputScale(int enum_type,IssmDouble scale_factor); 99 96 100 void ListResultsInfo(int** results_enums,int** results_size,IssmDouble** results_times,int** results_steps,int* num_results);101 97 void ResultInterpolation(int* pinterpolation,int output_enum); 102 98 void ResultToVector(Vector<IssmPDouble>* vector,int output_enum); -
TabularUnified issm/trunk-jpl/src/c/classes/Elements/Seg.cpp ¶
r16434 r16486 27 27 this->inputs = NULL; 28 28 this->parameters = NULL; 29 this->results = NULL;30 29 } 31 30 /*}}}*/ … … 41 40 this->parameters = NULL; 42 41 43 /*intialize inputs and results: */42 /*intialize inputs: */ 44 43 this->inputs = new Inputs(); 45 this->results = new Results();46 44 47 45 /*initialize pointers:*/ … … 56 54 Seg::~Seg(){ 57 55 delete inputs; 58 delete results;59 56 this->parameters=NULL; 60 57 } … … 89 86 if (inputs) inputs->Echo(); 90 87 else _printf_("inputs=NULL\n"); 91 92 if (results) results->Echo();93 else _printf_("results=NULL\n");94 88 } 95 89 /*}}}*/ … … 118 112 if (inputs) inputs->DeepEcho(); 119 113 else _printf_("inputs=NULL\n"); 120 121 if (results) results->DeepEcho();122 else _printf_("results=NULL\n");123 114 124 115 return; -
TabularUnified issm/trunk-jpl/src/c/classes/Elements/Seg.h ¶
r16485 r16486 40 40 Parameters *parameters; //pointer to solution parameters 41 41 Inputs *inputs; 42 Results *results;43 42 44 43 /*Seg constructors, destructors {{{*/ … … 105 104 void GetSolutionFromInputs(Vector<IssmDouble>* solution){_error_("not implemented yet");}; 106 105 void GetVectorFromInputs(Vector<IssmDouble>* vector, int name_enum){_error_("not implemented yet");}; 107 void GetVectorFromResults(Vector<IssmDouble>* vector,int offset,int enum_in,int interp){_error_("not implemented yet");};108 106 void InputCreate(IssmDouble* vector,IoModel* iomodel,int M,int N,int vector_type,int vector_enum,int code){_error_("not implemented yet");}; 109 107 void InputDepthAverageAtBase(int enum_type,int average_enum_type,int object_enum=MeshElementsEnum){_error_("not implemented yet");}; 110 108 void InputDuplicate(int original_enum,int new_enum){_error_("not implemented yet");}; 111 109 void InputScale(int enum_type,IssmDouble scale_factor){_error_("not implemented yet");}; 112 void DeleteResults(void){_error_("not implemented yet");};113 110 void MaterialUpdateFromTemperature(void){_error_("not implemented yet");}; 114 111 int NodalValue(IssmDouble* pvalue, int index, int natureofdataenum){_error_("not implemented yet");}; 115 112 void PositiveDegreeDay(IssmDouble* pdds,IssmDouble* pds,IssmDouble signorm){_error_("not implemented yet");}; 116 void ListResultsInfo(int** results_enums,int** results_size,IssmDouble** results_times,int** results_steps,int* num_results){_error_("not implemented yet");};117 113 void ResultInterpolation(int* pinterpolation,int output_enum){_error_("not implemented");}; 118 114 void ResultToVector(Vector<IssmPDouble>* vector,int output_enum){_error_("not implemented");}; -
TabularUnified issm/trunk-jpl/src/c/classes/Elements/Tria.cpp ¶
r16485 r16486 32 32 this->inputs = NULL; 33 33 this->parameters = NULL; 34 this->results = NULL;35 34 36 35 } … … 47 46 this->parameters = NULL; 48 47 49 /*intialize inputs and results: */48 /*intialize inputs: */ 50 49 this->inputs = new Inputs(); 51 this->results = new Results();52 50 53 51 /*initialize pointers:*/ … … 62 60 Tria::~Tria(){ 63 61 delete inputs; 64 delete results;65 62 this->parameters=NULL; 66 63 } … … 94 91 else{ 95 92 tria->inputs=new Inputs(); 96 }97 if(this->results){98 tria->results=(Results*)this->results->Copy();99 }100 else{101 tria->results=new Results();102 93 } 103 94 /*point parameters: */ … … 759 750 else _printf_("inputs=NULL\n"); 760 751 761 if (results) results->DeepEcho();762 else _printf_("results=NULL\n");763 764 752 return; 765 }766 /*}}}*/767 /*FUNCTION Tria::DeleteResults {{{*/768 void Tria::DeleteResults(void){769 770 /*Delete and reinitialize results*/771 delete this->results;772 this->results=new Results();773 774 753 } 775 754 /*}}}*/ … … 869 848 if (inputs) inputs->Echo(); 870 849 else _printf_("inputs=NULL\n"); 871 872 if (results) results->Echo();873 else _printf_("results=NULL\n");874 850 } 875 851 /*}}}*/ … … 1549 1525 /*We found the enum. Use its values to fill into the vector, using the vertices ids: */ 1550 1526 input->GetVectorFromInputs(vector,&vertexpidlist[0]); 1551 }1552 /*}}}*/1553 /*FUNCTION Tria::GetVectorFromResults{{{*/1554 void Tria::GetVectorFromResults(Vector<IssmDouble>* vector,int offset,int enum_in,int interp){1555 1556 /*Get result*/1557 ElementResult* elementresult=(ElementResult*)this->results->GetObjectByOffset(offset);1558 if(interp==P1Enum){1559 int vertexpidlist[NUMVERTICES];1560 int connectivity[NUMVERTICES];1561 this->GetVertexSidList(&vertexpidlist[0]);1562 this->GetConnectivityList(&connectivity[0]);1563 elementresult->GetVectorFromResults(vector,&vertexpidlist[0],&connectivity[0],NUMVERTICES);1564 }1565 else if(interp==P0Enum){1566 elementresult->GetElementVectorFromResults(vector,sid);1567 }1568 else{1569 _printf_("Interpolation " << EnumToStringx(interp) << " not supported\n");1570 }1571 1527 } 1572 1528 /*}}}*/ … … 2347 2303 } 2348 2304 /*}}}*/ 2349 /*FUNCTION Tria::ListResultsInfo{{{*/2350 void Tria::ListResultsInfo(int** in_resultsenums,int** in_resultssizes,IssmDouble** in_resultstimes,int** in_resultssteps,int* in_num_results){2351 2352 /*Intermediaries*/2353 int *resultsenums = NULL;2354 int *resultssizes = NULL;2355 IssmDouble *resultstimes = NULL;2356 int *resultssteps = NULL;2357 2358 /*Checks*/2359 _assert_(in_num_results);2360 2361 /*Count number of results*/2362 int numberofresults = this->results->Size();2363 2364 if(numberofresults){2365 2366 /*Allocate output*/2367 resultsenums=xNew<int>(numberofresults);2368 resultssizes=xNew<int>(numberofresults);2369 resultstimes=xNew<IssmDouble>(numberofresults);2370 resultssteps=xNew<int>(numberofresults);2371 2372 /*populate enums*/2373 for(int i=0;i<this->results->Size();i++){2374 ElementResult* elementresult=(ElementResult*)this->results->GetObjectByOffset(i);2375 resultsenums[i]=StringToEnumx(elementresult->GetResultName());2376 resultstimes[i]=elementresult->GetTime();2377 resultssteps[i]=elementresult->GetStep();2378 if(elementresult->ObjectEnum()==TriaP1ElementResultEnum){2379 resultssizes[i]=P1Enum;2380 }2381 else{2382 resultssizes[i]=P0Enum;2383 }2384 }2385 }2386 2387 /*Assign output pointers:*/2388 *in_num_results=numberofresults;2389 *in_resultsenums=resultsenums;2390 *in_resultssizes=resultssizes;2391 *in_resultstimes=resultstimes;2392 *in_resultssteps=resultssteps;2393 2394 }/*}}}*/2395 2305 /*FUNCTION Tria::NodalValue {{{*/ 2396 2306 int Tria::NodalValue(IssmDouble* pvalue, int index, int natureofdataenum){ -
TabularUnified issm/trunk-jpl/src/c/classes/Elements/Tria.h ¶
r16485 r16486 41 41 Parameters *parameters; //pointer to solution parameters 42 42 Inputs *inputs; 43 Results *results;44 43 45 44 /*Tria constructors, destructors {{{*/ … … 96 95 void GetSolutionFromInputs(Vector<IssmDouble>* solution); 97 96 void GetVectorFromInputs(Vector<IssmDouble>* vector, int name_enum); 98 void GetVectorFromResults(Vector<IssmDouble>* vector,int offset,int enum_in,int interp);99 97 void InputCreate(IssmDouble* vector,IoModel* iomodel,int M,int N,int vector_type,int vector_enum,int code); 100 98 void InputDepthAverageAtBase(int enum_type,int average_enum_type,int object_enum=MeshElementsEnum); 101 99 void InputDuplicate(int original_enum,int new_enum); 102 100 void InputScale(int enum_type,IssmDouble scale_factor); 103 void DeleteResults(void);104 101 void MaterialUpdateFromTemperature(void){_error_("not implemented yet");}; 105 102 int NodalValue(IssmDouble* pvalue, int index, int natureofdataenum); 106 103 void PositiveDegreeDay(IssmDouble* pdds,IssmDouble* pds,IssmDouble signorm); 107 void ListResultsInfo(int** results_enums,int** results_size,IssmDouble** results_times,int** results_steps,int* num_results);108 104 void ResultInterpolation(int* pinterpolation,int output_enum); 109 105 void ResultToVector(Vector<IssmPDouble>* vector,int output_enum); -
TabularUnified issm/trunk-jpl/src/c/classes/ExternalResults/Results.cpp ¶
r16474 r16486 15 15 #include "../../shared/shared.h" 16 16 #include "../Params/Parameters.h" 17 #include "../ElementResults/ElementResult.h"18 17 19 18 using namespace std; … … 49 48 } 50 49 51 }52 /*}}}*/53 /*FUNCTION Results::AddResult(ElementResult* in_result){{{*/54 int Results::AddResult(ElementResult* in_result){55 56 /*First, go through dataset of inputs and check whether any input57 * with the same name is already in. If so, erase the corresponding58 * object before adding this new one: */59 vector<Object*>::iterator object;60 61 /*In debugging mode, check that the input is not a NULL pointer*/62 _assert_(in_result);63 64 for(object=objects.begin() ; object<objects.end(); object++){65 66 ElementResult* result=dynamic_cast<ElementResult*>(*object);67 68 if(result->GetStep()==in_result->GetStep()){69 if(strcmp(result->GetResultName(),in_result->GetResultName())==0){70 this->DeleteObject(result);71 break;72 }73 }74 }75 this->AddObject(in_result);76 77 return 1;78 50 } 79 51 /*}}}*/ -
TabularUnified issm/trunk-jpl/src/c/classes/ExternalResults/Results.h ¶
r16469 r16486 6 6 /*forward declarations */ 7 7 class Parameters; 8 class ElementResult;9 8 class ExternalResult; 10 9 … … 22 21 23 22 /*Mehthos*/ 24 int AddResult(ElementResult* result);25 23 int AddResult(ExternalResult* result); 26 24 int DeleteResult(int result_enum,int result_step); -
TabularUnified issm/trunk-jpl/src/c/classes/Inputs/BoolInput.cpp ¶
r16382 r16486 101 101 } 102 102 /*}}}*/ 103 /*FUNCTION BoolInput::SpawnResult{{{*/104 ElementResult* BoolInput::SpawnResult(int step, IssmDouble time){105 106 return new BoolElementResult(this->enum_type,this->value,step,time);107 108 }109 /*}}}*/110 103 111 104 /*Object functions*/ -
TabularUnified issm/trunk-jpl/src/c/classes/Inputs/BoolInput.h ¶
r16461 r16486 39 39 Input* PointwiseMin(Input* inputB){_error_("not implemented yet");}; 40 40 Input* PointwiseMax(Input* inputB){_error_("not implemented yet");}; 41 ElementResult* SpawnResult(int step, IssmDouble time);42 41 int GetResultInterpolation(void){return P0Enum;}; 43 42 void Configure(Parameters* parameters); -
TabularUnified issm/trunk-jpl/src/c/classes/Inputs/ControlInput.cpp ¶
r16478 r16486 185 185 186 186 }/*}}}*/ 187 /*FUNCTION ControlInput::SpawnResult{{{*/188 ElementResult* ControlInput::SpawnResult(int step, IssmDouble time){189 return savedvalues->SpawnResult(step,time);190 }/*}}}*/191 187 /*FUNCTION ControlInput::SpawnTriaInput{{{*/ 192 188 Input* ControlInput::SpawnTriaInput(int location){ … … 196 192 Input* ControlInput::SpawnSegInput(int index1,int index2){ 197 193 return values->SpawnSegInput(index1,index2); 198 }/*}}}*/199 /*FUNCTION ControlInput::SpawnGradient{{{*/200 ElementResult* ControlInput::SpawnGradient(int step, IssmDouble time){201 _assert_(gradient);202 return gradient->SpawnResult(step,time);203 194 }/*}}}*/ 204 195 /*FUNCTION ControlInput::GetVectorFromInputs(Vector<IssmDouble>* vector,int* doflist){{{*/ -
TabularUnified issm/trunk-jpl/src/c/classes/Inputs/ControlInput.h ¶
r16478 r16486 43 43 Input* PointwiseMin(Input* inputB){_error_("not implemented yet");}; 44 44 Input* PointwiseMax(Input* inputB){_error_("not implemented yet");}; 45 ElementResult* SpawnResult(int step, IssmDouble time);46 45 void AddTimeValues(IssmDouble* values,int step,IssmDouble time){_error_("not supported yet");}; 47 46 void Configure(Parameters* parameters); … … 91 90 void GetVectorFromInputs(Vector<IssmDouble>* vector,int* doflist,const char* data); 92 91 void GetVectorFromInputs(Vector<IssmDouble>* vector,int* doflist); 93 ElementResult* SpawnGradient(int step, IssmDouble time);94 92 int GetResultInterpolation(void); 95 93 void GetGradient(Vector<IssmDouble>* gradient_vec,int* doflist); -
TabularUnified issm/trunk-jpl/src/c/classes/Inputs/DatasetInput.h ¶
r16461 r16486 41 41 Input* PointwiseMin(Input* inputB){_error_("not implemented yet");}; 42 42 Input* PointwiseMax(Input* inputB){_error_("not implemented yet");}; 43 ElementResult* SpawnResult(int step, IssmDouble time){_error_("not implemented yet");};44 43 void AddTimeValues(IssmDouble* values,int step,IssmDouble time){_error_("not supported yet");}; 45 44 void Configure(Parameters* parameters); … … 85 84 void VerticallyIntegrate(Input* thickness_input){_error_("not implemented yet");}; 86 85 void GetVectorFromInputs(Vector<IssmDouble>* vector,int* doflist){_error_("not implemented yet");}; 87 ElementResult* SpawnGradient(int step, IssmDouble time){_error_("not implemented yet");};88 86 int GetResultInterpolation(void){_error_("not implemented yet");}; 89 87 void GetGradient(Vector<IssmDouble>* gradient_vec,int* doflist){_error_("not implemented yet");}; -
TabularUnified issm/trunk-jpl/src/c/classes/Inputs/DoubleInput.cpp ¶
r16382 r16486 101 101 } 102 102 /*}}}*/ 103 /*FUNCTION DoubleInput::SpawnResult{{{*/104 ElementResult* DoubleInput::SpawnResult(int step, IssmDouble time){105 106 return new DoubleElementResult(this->enum_type,this->value,step,time);107 108 }109 /*}}}*/110 103 111 104 /*Object functions*/ -
TabularUnified issm/trunk-jpl/src/c/classes/Inputs/DoubleInput.h ¶
r16461 r16486 38 38 Input* PointwiseMin(Input* inputB); 39 39 Input* PointwiseMax(Input* inputB); 40 ElementResult* SpawnResult(int step, IssmDouble time);41 40 int GetResultInterpolation(void){return P0Enum;}; 42 41 void AddTimeValues(IssmDouble* values,int step,IssmDouble time){_error_("not supported yet");}; -
TabularUnified issm/trunk-jpl/src/c/classes/Inputs/Input.h ¶
r16461 r16486 11 11 #include "../../shared/shared.h" 12 12 class Node; 13 class ElementResult;14 13 class GaussTria; 15 14 class GaussSeg; … … 72 71 virtual Input* PointwiseMax(Input* inputmax)=0; 73 72 virtual Input* PointwiseMin(Input* inputmin)=0; 74 virtual ElementResult* SpawnResult(int step, IssmDouble time)=0;75 73 virtual int GetResultInterpolation(void)=0; 76 74 }; -
TabularUnified issm/trunk-jpl/src/c/classes/Inputs/IntInput.cpp ¶
r16382 r16486 99 99 } 100 100 /*}}}*/ 101 /*FUNCTION IntInput::SpawnResult{{{*/102 ElementResult* IntInput::SpawnResult(int step, IssmDouble time){103 104 _error_("not supported yet!");105 106 }107 /*}}}*/108 101 109 102 /*Object functions*/ -
TabularUnified issm/trunk-jpl/src/c/classes/Inputs/IntInput.h ¶
r16461 r16486 39 39 Input* PointwiseMin(Input* inputB){_error_("not implemented yet");}; 40 40 Input* PointwiseMax(Input* inputB){_error_("not implemented yet");}; 41 ElementResult* SpawnResult(int step, IssmDouble time);42 41 int GetResultInterpolation(void){return P0Enum;}; 43 42 void AddTimeValues(IssmDouble* values,int step,IssmDouble time){_error_("not supported yet");}; -
TabularUnified issm/trunk-jpl/src/c/classes/Inputs/PentaInput.cpp ¶
r16461 r16486 130 130 } 131 131 /*}}}*/ 132 /*FUNCTION PentaInput::SpawnResult{{{*/133 ElementResult* PentaInput::SpawnResult(int step, IssmDouble time){134 135 return new PentaP1ElementResult(this->enum_type,this->values,step,time);136 137 }138 /*}}}*/139 132 /*FUNCTION PentaInput::GetResultInterpolation{{{*/ 140 133 int PentaInput::GetResultInterpolation(void){ -
TabularUnified issm/trunk-jpl/src/c/classes/Inputs/PentaInput.h ¶
r16461 r16486 39 39 Input* PointwiseMin(Input* inputB); 40 40 Input* PointwiseMax(Input* inputB); 41 ElementResult* SpawnResult(int step, IssmDouble time);42 41 int GetResultInterpolation(void); 43 42 void AddTimeValues(IssmDouble* values,int step,IssmDouble time){_error_("not supported yet");}; -
TabularUnified issm/trunk-jpl/src/c/classes/Inputs/SegInput.h ¶
r16461 r16486 39 39 Input* PointwiseMin(Input* inputB){_error_("not supported yet");}; 40 40 Input* PointwiseMax(Input* inputB){_error_("not supported yet");}; 41 ElementResult* SpawnResult(int step, IssmDouble time){_error_("not supported yet");};42 41 int GetResultInterpolation(void){_error_("not implemented");}; 43 42 void AddTimeValues(IssmDouble* values,int step,IssmDouble time){_error_("not supported yet");}; -
TabularUnified issm/trunk-jpl/src/c/classes/Inputs/TransientInput.cpp ¶
r16481 r16486 145 145 return outinput; 146 146 147 }148 /*}}}*/149 /*FUNCTION TransientInput::SpawnResult{{{*/150 ElementResult* TransientInput::SpawnResult(int step, IssmDouble time){151 152 ElementResult* elementresult=NULL;153 154 /*Ok, we want to spawn an ElementResult. We have the time, just get155 *the correct values: */156 Input* input=GetTimeInput(time);157 158 elementresult=input->SpawnResult(step,time);159 160 delete input;161 162 return elementresult;163 147 } 164 148 /*}}}*/ -
TabularUnified issm/trunk-jpl/src/c/classes/Inputs/TransientInput.h ¶
r16481 r16486 43 43 Input* PointwiseMin(Input* forcingB){_error_("not implemented yet");}; 44 44 Input* PointwiseMax(Input* forcingB){_error_("not implemented yet");}; 45 ElementResult* SpawnResult(int step, IssmDouble time);46 45 int GetResultInterpolation(void); 47 46 void Configure(Parameters* parameters); -
TabularUnified issm/trunk-jpl/src/c/classes/Inputs/TriaInput.cpp ¶
r16461 r16486 117 117 } 118 118 /*}}}*/ 119 /*FUNCTION TriaInput::SpawnResult{{{*/120 ElementResult* TriaInput::SpawnResult(int step, IssmDouble time){121 122 return new TriaP1ElementResult(this->enum_type,this->values,step,time);123 124 }125 /*}}}*/126 119 /*FUNCTION TriaInput::GetResultInterpolation{{{*/ 127 120 int TriaInput::GetResultInterpolation(void){ -
TabularUnified issm/trunk-jpl/src/c/classes/Inputs/TriaInput.h ¶
r16461 r16486 39 39 Input* PointwiseMin(Input* inputB); 40 40 Input* PointwiseMax(Input* inputB); 41 ElementResult* SpawnResult(int step, IssmDouble time);42 41 int GetResultInterpolation(void); 43 42 void AddTimeValues(IssmDouble* values,int step,IssmDouble time){_error_("not supported yet");}; -
TabularUnified issm/trunk-jpl/src/c/classes/classes.h ¶
r16470 r16486 65 65 #include "./Inputs/TransientInput.h" 66 66 67 /*ElementResults: */68 #include "./ElementResults/ElementResult.h"69 #include "./ElementResults/DoubleElementResult.h"70 #include "./ElementResults/TriaP1ElementResult.h"71 #include "./ElementResults/PentaP1ElementResult.h"72 #include "./ElementResults/BoolElementResult.h"73 74 67 /*ExternalResults: */ 75 68 #include "./ExternalResults/Results.h" -
TabularUnified issm/trunk-jpl/src/c/modules/OutputResultsx/OutputResultsx.cpp ¶
r16469 r16486 36 36 return; 37 37 } 38 39 /*We have results inside our elements, loads, etc ... Get them out of there, into the results dataset: */40 elements->ToResults(results,parameters);41 elements->DeleteResults();42 38 43 39 /*Results do not include the type of solution being run . In parallel, we output results to a filename, -
TabularUnified issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h ¶
r16470 r16486 376 376 DoubleVecParamEnum, 377 377 ElementEnum, 378 ElementResultEnum,379 378 ExternalResultEnum, 380 379 FileParamEnum, … … 532 531 /*Results{{{*/ 533 532 SaveResultsEnum, 534 BoolElementResultEnum,535 533 BoolExternalResultEnum, 536 DoubleElementResultEnum,537 534 DoubleExternalResultEnum, 538 535 DoubleMatExternalResultEnum, 539 536 IntExternalResultEnum, 540 537 JEnum, 541 PentaP1ElementResultEnum,542 538 StringExternalResultEnum, 543 539 StepEnum, 544 540 TimeEnum, 545 TriaP1ElementResultEnum,546 541 WaterColumnOldEnum, 547 542 /*}}}*/ -
TabularUnified issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp ¶
r16470 r16486 376 376 case DoubleVecParamEnum : return "DoubleVecParam"; 377 377 case ElementEnum : return "Element"; 378 case ElementResultEnum : return "ElementResult";379 378 case ExternalResultEnum : return "ExternalResult"; 380 379 case FileParamEnum : return "FileParam"; … … 522 521 case TaylorHoodEnum : return "TaylorHood"; 523 522 case SaveResultsEnum : return "SaveResults"; 524 case BoolElementResultEnum : return "BoolElementResult";525 523 case BoolExternalResultEnum : return "BoolExternalResult"; 526 case DoubleElementResultEnum : return "DoubleElementResult";527 524 case DoubleExternalResultEnum : return "DoubleExternalResult"; 528 525 case DoubleMatExternalResultEnum : return "DoubleMatExternalResult"; 529 526 case IntExternalResultEnum : return "IntExternalResult"; 530 527 case JEnum : return "J"; 531 case PentaP1ElementResultEnum : return "PentaP1ElementResult";532 528 case StringExternalResultEnum : return "StringExternalResult"; 533 529 case StepEnum : return "Step"; 534 530 case TimeEnum : return "Time"; 535 case TriaP1ElementResultEnum : return "TriaP1ElementResult";536 531 case WaterColumnOldEnum : return "WaterColumnOld"; 537 532 case OutputdefinitionEnum : return "Outputdefinition"; -
TabularUnified issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp ¶
r16470 r16486 382 382 else if (strcmp(name,"DoubleVecParam")==0) return DoubleVecParamEnum; 383 383 else if (strcmp(name,"Element")==0) return ElementEnum; 384 else if (strcmp(name,"E lementResult")==0) return ElementResultEnum;384 else if (strcmp(name,"ExternalResult")==0) return ExternalResultEnum; 385 385 else stage=4; 386 386 } 387 387 if(stage==4){ 388 if (strcmp(name,"ExternalResult")==0) return ExternalResultEnum; 389 else if (strcmp(name,"FileParam")==0) return FileParamEnum; 388 if (strcmp(name,"FileParam")==0) return FileParamEnum; 390 389 else if (strcmp(name,"Input")==0) return InputEnum; 391 390 else if (strcmp(name,"IntInput")==0) return IntInputEnum; … … 506 505 else if (strcmp(name,"QmuTemperature")==0) return QmuTemperatureEnum; 507 506 else if (strcmp(name,"HydrologyWaterVx")==0) return HydrologyWaterVxEnum; 507 else if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum; 508 508 else stage=5; 509 509 } 510 510 if(stage==5){ 511 if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum; 512 else if (strcmp(name,"StressTensor")==0) return StressTensorEnum; 511 if (strcmp(name,"StressTensor")==0) return StressTensorEnum; 513 512 else if (strcmp(name,"StressTensorxx")==0) return StressTensorxxEnum; 514 513 else if (strcmp(name,"StressTensorxy")==0) return StressTensorxyEnum; … … 534 533 else if (strcmp(name,"TaylorHood")==0) return TaylorHoodEnum; 535 534 else if (strcmp(name,"SaveResults")==0) return SaveResultsEnum; 536 else if (strcmp(name,"BoolElementResult")==0) return BoolElementResultEnum;537 535 else if (strcmp(name,"BoolExternalResult")==0) return BoolExternalResultEnum; 538 else if (strcmp(name,"DoubleElementResult")==0) return DoubleElementResultEnum;539 536 else if (strcmp(name,"DoubleExternalResult")==0) return DoubleExternalResultEnum; 540 537 else if (strcmp(name,"DoubleMatExternalResult")==0) return DoubleMatExternalResultEnum; 541 538 else if (strcmp(name,"IntExternalResult")==0) return IntExternalResultEnum; 542 539 else if (strcmp(name,"J")==0) return JEnum; 543 else if (strcmp(name,"PentaP1ElementResult")==0) return PentaP1ElementResultEnum;544 540 else if (strcmp(name,"StringExternalResult")==0) return StringExternalResultEnum; 545 541 else if (strcmp(name,"Step")==0) return StepEnum; 546 542 else if (strcmp(name,"Time")==0) return TimeEnum; 547 else if (strcmp(name,"TriaP1ElementResult")==0) return TriaP1ElementResultEnum;548 543 else if (strcmp(name,"WaterColumnOld")==0) return WaterColumnOldEnum; 549 544 else if (strcmp(name,"Outputdefinition")==0) return OutputdefinitionEnum;
Note:
See TracChangeset
for help on using the changeset viewer.