Index: ../trunk-jpl/src/c/classes/Inputs2/BoolInput2.cpp =================================================================== --- ../trunk-jpl/src/c/classes/Inputs2/BoolInput2.cpp (revision 24343) +++ ../trunk-jpl/src/c/classes/Inputs2/BoolInput2.cpp (revision 24344) @@ -43,8 +43,9 @@ /*}}}*/ void BoolInput2::DeepEcho(void){/*{{{*/ - //_printf_(setw(15)<<" BoolInput2 "<enum_type)<<" "<<(value?"true":"false") << "\n"); - _error_("Not implemented"); + _printf_("BoolInput2 Echo:\n"); + _printf_(" Size: "<values,this->size); } /*}}}*/ void BoolInput2::Echo(void){/*{{{*/ Index: ../trunk-jpl/src/c/classes/Inputs2/Inputs2.cpp =================================================================== --- ../trunk-jpl/src/c/classes/Inputs2/Inputs2.cpp (revision 24343) +++ ../trunk-jpl/src/c/classes/Inputs2/Inputs2.cpp (revision 24344) @@ -245,6 +245,15 @@ return false; } /*}}}*/ +int Inputs2::GetInputObjectEnum(int enum_in){/*{{{*/ + + _assert_(this); + + int index = EnumToIndex(enum_in); + if(!this->inputs[index]) _error_("Input "<inputs[index]->ObjectEnum(); +} +/*}}}*/ void Inputs2::GetInputsInterpolations(int* pnuminputs,int** pinterpolations,int** pinputenums){/*{{{*/ /*First count number of inputs*/ Index: ../trunk-jpl/src/c/classes/Inputs2/Inputs2.h =================================================================== --- ../trunk-jpl/src/c/classes/Inputs2/Inputs2.h (revision 24343) +++ ../trunk-jpl/src/c/classes/Inputs2/Inputs2.h (revision 24344) @@ -59,6 +59,7 @@ DatasetInput2* GetDatasetInput2(int enum_type); ControlInput2* GetControlInput2(int enum_type); void Marshall(char** pmarshalled_data, int* pmarshalled_data_size, int marshall_direction); + int GetInputObjectEnum(int enum_type); void GetInputValue(bool* pvalue,int enum_in,int index); void GetInputValue(int* pvalue,int enum_in,int index); void ResultInterpolation(int* pinterpolation,int*nodesperelement,int* parray_size, int output_enum); Index: ../trunk-jpl/src/c/classes/Elements/Element.cpp =================================================================== --- ../trunk-jpl/src/c/classes/Elements/Element.cpp (revision 24343) +++ ../trunk-jpl/src/c/classes/Elements/Element.cpp (revision 24344) @@ -3281,13 +3281,28 @@ } /*If this input is not already in Inputs, maybe it needs to be computed?*/ - Input2* input2 = this->GetInput2(output_enum); - if(!input2) _error_("input "<inputs2->GetInputObjectEnum(output_enum)){ + case TriaInput2Enum: + case PentaInput2Enum:{ + Input2* input2 = this->GetInput2(output_enum); + if(!input2) _error_("input "<GetResultInterpolation(); + *pnodesperelement = input2->GetResultNumberOfNodes(); + *parray_size = input2->GetResultArraySize(); + } + break; + case BoolInput2Enum: + *pinterpolation = P0Enum; + *pnodesperelement = 1; + *parray_size = 1; + break; + default: + _error_("Input type \""<inputs2->GetInputObjectEnum(output_enum))<<"\" not supported yet"); + } + /*Assign output pointer*/ - *pinterpolation = input2->GetResultInterpolation(); - *pnodesperelement = input2->GetResultNumberOfNodes(); - *parray_size = input2->GetResultArraySize(); + return; }/*}}}*/ void Element::ResultToPatch(IssmDouble* values,int nodesperelement,int output_enum){/*{{{*/ @@ -3310,49 +3325,56 @@ } /*}}}*/ void Element::ResultToVector(Vector* vector,int output_enum){/*{{{*/ + switch(this->inputs2->GetInputObjectEnum(output_enum)){ + case TriaInput2Enum: + case PentaInput2Enum:{ - Input2* input2=this->GetInput2(output_enum); - if(!input2) _error_("input "<GetInput2(output_enum); + if(!input2) _error_("input "<GetResultInterpolation()){ - case P0Enum:{ - IssmDouble value; - bool bvalue; - switch(input2->ObjectEnum()){ - case BoolInputEnum: - (xDynamicCast(input2))->GetInput(&bvalue,this->lid); - value=reCast(bvalue); - break; - default: - Gauss* gauss = this->NewGauss(); - input2->GetInputValue(&value,gauss); - delete gauss; - } - vector->SetValue(this->Sid(),value,INS_VAL); - break; - } - case P1Enum:{ - const int NUM_VERTICES = this->GetNumberOfVertices(); + switch(input2->GetResultInterpolation()){ + case P0Enum:{ + IssmDouble value; + bool bvalue; + Gauss* gauss = this->NewGauss(); + input2->GetInputValue(&value,gauss); + delete gauss; + vector->SetValue(this->Sid(),value,INS_VAL); + break; + } + case P1Enum:{ + const int NUM_VERTICES = this->GetNumberOfVertices(); - IssmDouble *values = xNew(NUM_VERTICES); - int *connectivity= xNew(NUM_VERTICES); - int *sidlist = xNew(NUM_VERTICES); + IssmDouble *values = xNew(NUM_VERTICES); + int *connectivity= xNew(NUM_VERTICES); + int *sidlist = xNew(NUM_VERTICES); - this->GetVerticesSidList(sidlist); - this->GetVerticesConnectivityList(connectivity); - this->GetInputListOnVertices(values,output_enum); - for(int i=0;i(connectivity[i]); + this->GetVerticesSidList(sidlist); + this->GetVerticesConnectivityList(connectivity); + this->GetInputListOnVertices(values,output_enum); + for(int i=0;i(connectivity[i]); - vector->SetValues(NUM_VERTICES,sidlist,values,ADD_VAL); + vector->SetValues(NUM_VERTICES,sidlist,values,ADD_VAL); - xDelete(values); - xDelete(connectivity); - xDelete(sidlist); - break; - } - default: - _error_("interpolation "<GetResultInterpolation())<<" not supported yet"); - } + xDelete(values); + xDelete(connectivity); + xDelete(sidlist); + break; + } + default: + _error_("interpolation "<GetResultInterpolation())<<" not supported yet"); + } + } + break; + case BoolInput2Enum: + bool bvalue; + this->GetInput2Value(&bvalue,output_enum); + vector->SetValue(this->Sid(),reCast(bvalue),INS_VAL); + break; + default: + _error_("Input type \""<inputs2->GetInputObjectEnum(output_enum))<<"\" not supported yet"); + } + } /*}}}*/ void Element::SetBoolInput(Inputs2* inputs2,int enum_in,bool value){/*{{{*/ Index: ../trunk-jpl/src/c/classes/Elements/Tria.cpp =================================================================== --- ../trunk-jpl/src/c/classes/Elements/Tria.cpp (revision 24343) +++ ../trunk-jpl/src/c/classes/Elements/Tria.cpp (revision 24344) @@ -193,6 +193,7 @@ /*Call inputs method*/ if(!this->inputs2){ int* temp = xNew(3); + _error_("inputs2 not set"); } _assert_(this->inputs2); switch(interpolation_enum){ Index: ../trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp =================================================================== --- ../trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp (revision 24343) +++ ../trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp (revision 24344) @@ -688,7 +688,7 @@ } } } - basalelement->AddInput2(HydrologydcEplThicknessSubstepEnum,epl_thickness,basalelement->GetElementType()); + element->AddBasalInput2(HydrologydcEplThicknessSubstepEnum,epl_thickness,basalelement->GetElementType()); if(domaintype!=Domain2DhorizontalEnum){ basalelement->DeleteMaterials();