source: issm/oecreview/Archive/24307-24683/ISSM-24343-24344.diff@ 24684

Last change on this file since 24684 was 24684, checked in by Mathieu Morlighem, 5 years ago

CHG: added new review

File size: 7.9 KB
RevLine 
[24684]1Index: ../trunk-jpl/src/c/classes/Inputs2/BoolInput2.cpp
2===================================================================
3--- ../trunk-jpl/src/c/classes/Inputs2/BoolInput2.cpp (revision 24343)
4+++ ../trunk-jpl/src/c/classes/Inputs2/BoolInput2.cpp (revision 24344)
5@@ -43,8 +43,9 @@
6 /*}}}*/
7 void BoolInput2::DeepEcho(void){/*{{{*/
8
9- //_printf_(setw(15)<<" BoolInput2 "<<setw(25)<<left<<EnumToStringx(this->enum_type)<<" "<<(value?"true":"false") << "\n");
10- _error_("Not implemented");
11+ _printf_("BoolInput2 Echo:\n");
12+ _printf_(" Size: "<<size<<"\n");
13+ printarray(this->values,this->size);
14 }
15 /*}}}*/
16 void BoolInput2::Echo(void){/*{{{*/
17Index: ../trunk-jpl/src/c/classes/Inputs2/Inputs2.cpp
18===================================================================
19--- ../trunk-jpl/src/c/classes/Inputs2/Inputs2.cpp (revision 24343)
20+++ ../trunk-jpl/src/c/classes/Inputs2/Inputs2.cpp (revision 24344)
21@@ -245,6 +245,15 @@
22 return false;
23 }
24 /*}}}*/
25+int Inputs2::GetInputObjectEnum(int enum_in){/*{{{*/
26+
27+ _assert_(this);
28+
29+ int index = EnumToIndex(enum_in);
30+ if(!this->inputs[index]) _error_("Input "<<EnumToStringx(enum_in)<<" not found");
31+ return this->inputs[index]->ObjectEnum();
32+}
33+/*}}}*/
34 void Inputs2::GetInputsInterpolations(int* pnuminputs,int** pinterpolations,int** pinputenums){/*{{{*/
35
36 /*First count number of inputs*/
37Index: ../trunk-jpl/src/c/classes/Inputs2/Inputs2.h
38===================================================================
39--- ../trunk-jpl/src/c/classes/Inputs2/Inputs2.h (revision 24343)
40+++ ../trunk-jpl/src/c/classes/Inputs2/Inputs2.h (revision 24344)
41@@ -59,6 +59,7 @@
42 DatasetInput2* GetDatasetInput2(int enum_type);
43 ControlInput2* GetControlInput2(int enum_type);
44 void Marshall(char** pmarshalled_data, int* pmarshalled_data_size, int marshall_direction);
45+ int GetInputObjectEnum(int enum_type);
46 void GetInputValue(bool* pvalue,int enum_in,int index);
47 void GetInputValue(int* pvalue,int enum_in,int index);
48 void ResultInterpolation(int* pinterpolation,int*nodesperelement,int* parray_size, int output_enum);
49Index: ../trunk-jpl/src/c/classes/Elements/Element.cpp
50===================================================================
51--- ../trunk-jpl/src/c/classes/Elements/Element.cpp (revision 24343)
52+++ ../trunk-jpl/src/c/classes/Elements/Element.cpp (revision 24344)
53@@ -3281,13 +3281,28 @@
54 }
55
56 /*If this input is not already in Inputs, maybe it needs to be computed?*/
57- Input2* input2 = this->GetInput2(output_enum);
58- if(!input2) _error_("input "<<EnumToStringx(output_enum)<<" not found in element");
59+ switch(this->inputs2->GetInputObjectEnum(output_enum)){
60+ case TriaInput2Enum:
61+ case PentaInput2Enum:{
62+ Input2* input2 = this->GetInput2(output_enum);
63+ if(!input2) _error_("input "<<EnumToStringx(output_enum)<<" not found in element");
64+ *pinterpolation = input2->GetResultInterpolation();
65+ *pnodesperelement = input2->GetResultNumberOfNodes();
66+ *parray_size = input2->GetResultArraySize();
67+ }
68+ break;
69+ case BoolInput2Enum:
70+ *pinterpolation = P0Enum;
71+ *pnodesperelement = 1;
72+ *parray_size = 1;
73+ break;
74+ default:
75+ _error_("Input type \""<<EnumToStringx(this->inputs2->GetInputObjectEnum(output_enum))<<"\" not supported yet");
76+ }
77
78+
79 /*Assign output pointer*/
80- *pinterpolation = input2->GetResultInterpolation();
81- *pnodesperelement = input2->GetResultNumberOfNodes();
82- *parray_size = input2->GetResultArraySize();
83+
84 return;
85 }/*}}}*/
86 void Element::ResultToPatch(IssmDouble* values,int nodesperelement,int output_enum){/*{{{*/
87@@ -3310,49 +3325,56 @@
88 } /*}}}*/
89 void Element::ResultToVector(Vector<IssmDouble>* vector,int output_enum){/*{{{*/
90
91+ switch(this->inputs2->GetInputObjectEnum(output_enum)){
92+ case TriaInput2Enum:
93+ case PentaInput2Enum:{
94
95- Input2* input2=this->GetInput2(output_enum);
96- if(!input2) _error_("input "<<EnumToStringx(output_enum)<<" not found in element");
97+ Input2* input2 = this->GetInput2(output_enum);
98+ if(!input2) _error_("input "<<EnumToStringx(output_enum)<<" not found in element");
99
100- switch(input2->GetResultInterpolation()){
101- case P0Enum:{
102- IssmDouble value;
103- bool bvalue;
104- switch(input2->ObjectEnum()){
105- case BoolInputEnum:
106- (xDynamicCast<BoolInput2*>(input2))->GetInput(&bvalue,this->lid);
107- value=reCast<IssmDouble>(bvalue);
108- break;
109- default:
110- Gauss* gauss = this->NewGauss();
111- input2->GetInputValue(&value,gauss);
112- delete gauss;
113- }
114- vector->SetValue(this->Sid(),value,INS_VAL);
115- break;
116- }
117- case P1Enum:{
118- const int NUM_VERTICES = this->GetNumberOfVertices();
119+ switch(input2->GetResultInterpolation()){
120+ case P0Enum:{
121+ IssmDouble value;
122+ bool bvalue;
123+ Gauss* gauss = this->NewGauss();
124+ input2->GetInputValue(&value,gauss);
125+ delete gauss;
126+ vector->SetValue(this->Sid(),value,INS_VAL);
127+ break;
128+ }
129+ case P1Enum:{
130+ const int NUM_VERTICES = this->GetNumberOfVertices();
131
132- IssmDouble *values = xNew<IssmDouble>(NUM_VERTICES);
133- int *connectivity= xNew<int>(NUM_VERTICES);
134- int *sidlist = xNew<int>(NUM_VERTICES);
135+ IssmDouble *values = xNew<IssmDouble>(NUM_VERTICES);
136+ int *connectivity= xNew<int>(NUM_VERTICES);
137+ int *sidlist = xNew<int>(NUM_VERTICES);
138
139- this->GetVerticesSidList(sidlist);
140- this->GetVerticesConnectivityList(connectivity);
141- this->GetInputListOnVertices(values,output_enum);
142- for(int i=0;i<NUM_VERTICES;i++) values[i] = values[i]/reCast<IssmDouble>(connectivity[i]);
143+ this->GetVerticesSidList(sidlist);
144+ this->GetVerticesConnectivityList(connectivity);
145+ this->GetInputListOnVertices(values,output_enum);
146+ for(int i=0;i<NUM_VERTICES;i++) values[i] = values[i]/reCast<IssmDouble>(connectivity[i]);
147
148- vector->SetValues(NUM_VERTICES,sidlist,values,ADD_VAL);
149+ vector->SetValues(NUM_VERTICES,sidlist,values,ADD_VAL);
150
151- xDelete<IssmDouble>(values);
152- xDelete<int>(connectivity);
153- xDelete<int>(sidlist);
154- break;
155- }
156- default:
157- _error_("interpolation "<<EnumToStringx(input2->GetResultInterpolation())<<" not supported yet");
158- }
159+ xDelete<IssmDouble>(values);
160+ xDelete<int>(connectivity);
161+ xDelete<int>(sidlist);
162+ break;
163+ }
164+ default:
165+ _error_("interpolation "<<EnumToStringx(input2->GetResultInterpolation())<<" not supported yet");
166+ }
167+ }
168+ break;
169+ case BoolInput2Enum:
170+ bool bvalue;
171+ this->GetInput2Value(&bvalue,output_enum);
172+ vector->SetValue(this->Sid(),reCast<IssmDouble>(bvalue),INS_VAL);
173+ break;
174+ default:
175+ _error_("Input type \""<<EnumToStringx(this->inputs2->GetInputObjectEnum(output_enum))<<"\" not supported yet");
176+ }
177+
178 } /*}}}*/
179 void Element::SetBoolInput(Inputs2* inputs2,int enum_in,bool value){/*{{{*/
180
181Index: ../trunk-jpl/src/c/classes/Elements/Tria.cpp
182===================================================================
183--- ../trunk-jpl/src/c/classes/Elements/Tria.cpp (revision 24343)
184+++ ../trunk-jpl/src/c/classes/Elements/Tria.cpp (revision 24344)
185@@ -193,6 +193,7 @@
186 /*Call inputs method*/
187 if(!this->inputs2){
188 int* temp = xNew<int>(3);
189+ _error_("inputs2 not set");
190 }
191 _assert_(this->inputs2);
192 switch(interpolation_enum){
193Index: ../trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp
194===================================================================
195--- ../trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp (revision 24343)
196+++ ../trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp (revision 24344)
197@@ -688,7 +688,7 @@
198 }
199 }
200 }
201- basalelement->AddInput2(HydrologydcEplThicknessSubstepEnum,epl_thickness,basalelement->GetElementType());
202+ element->AddBasalInput2(HydrologydcEplThicknessSubstepEnum,epl_thickness,basalelement->GetElementType());
203
204 if(domaintype!=Domain2DhorizontalEnum){
205 basalelement->DeleteMaterials();
Note: See TracBrowser for help on using the repository browser.