Changeset 27719 for issm/trunk-jpl/src
- Timestamp:
- 05/03/23 12:01:31 (23 months ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Params/ControlParam.cpp
r27696 r27719 166 166 } 167 167 /*}}}*/ 168 void ControlParam::GetParameterValue(IssmDouble* poutput, IssmDouble time){/*{{{*/ 169 170 _assert_(M==1); 171 *poutput = value[0]; 172 173 } 174 /*}}}*/ 168 175 void ControlParam::GetParameterValue(IssmDouble** poutput, int* pM){/*{{{*/ 169 176 … … 203 210 } 204 211 /*}}}*/ 212 void ControlParam::GetVectorFromControl(Vector<IssmDouble>* vector,int control_index,int N,const char* data,int offset){/*{{{*/ 213 214 /*Get list of ids for this element and this control*/ 215 _assert_(N==this->M); //FIXME 216 int* idlist = xNew<int>(this->M); 217 IssmDouble* values = xNew<IssmDouble>(this->M); 218 219 for(int i=0;i<this->M;i++){ 220 idlist[i] = offset+i; 221 values[i] = this->value[i]; 222 } 223 224 vector->SetValues(this->M,idlist,values,INS_VAL); 225 226 /*Clean up*/ 227 xDelete<int>(idlist); 228 xDelete<IssmDouble>(values); 229 230 }/*}}}*/ -
issm/trunk-jpl/src/c/classes/Params/ControlParam.h
r27696 r27719 1 1 /*! \file ControlParam.h 2 * \brief: header file for triavertexinputobject2 * \brief: header file for ControlParam object 3 3 */ 4 4 … … 21 21 22 22 private: 23 /*just hold 3 values for 3 vertices: */24 23 IssmDouble* value; 25 24 IssmDouble* minvalue; … … 27 26 IssmDouble* savedvalue; 28 27 IssmDouble* gradient; 29 int enum_type;30 int M;28 int enum_type; 29 int M; 31 30 32 31 public: … … 51 50 void GetParameterValue(int** pintarray,int* pM,int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a matrix");} 52 51 void GetParameterValue(IssmDouble* pIssmDouble); 53 void GetParameterValue(IssmDouble* pdouble,IssmDouble time) {_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble for a given time");}52 void GetParameterValue(IssmDouble* pdouble,IssmDouble time); 54 53 void GetParameterValue(char** pstring){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string");} 55 54 void GetParameterValue(char*** pstringarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string array");} … … 80 79 void SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");} 81 80 void SetGradient(IssmDouble* poutput, int M); 81 void GetVectorFromControl(Vector<IssmDouble>* vector,int control_index,int N,const char* data,int offset); 82 82 /*}}}*/ 83 83 }; -
issm/trunk-jpl/src/c/classes/Params/Param.h
r27696 r27719 66 66 virtual void SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array)=0; 67 67 virtual void SetGradient(IssmDouble* poutput, int M)=0; 68 virtual void GetVectorFromControl(Vector<IssmDouble>* vector,int control_index,int N,const char* data,int offset){_error_("not implemented yet");}; 68 69 }; 69 70 #endif -
issm/trunk-jpl/src/c/classes/Params/Parameters.cpp
r27696 r27719 673 673 /*}}}*/ 674 674 675 void Parameters::GetVectorFromControl(Vector<IssmDouble>* vector,int control_enum,int control_index,int N,const char* data,int offset){/*{{{*/ 676 677 /*first, figure out if the param has already been created: */ 678 Param* param=xDynamicCast<Param*>(this->FindParamObject(control_enum)); 679 if(!param) _error_("Parameter not found"); 680 681 param->GetVectorFromControl(vector, control_index, N, data, offset); 682 }/*}}}*/ 683 675 684 Param* Parameters::FindParamObject(int param_enum){/*{{{*/ 676 685 -
issm/trunk-jpl/src/c/classes/Params/Parameters.h
r27696 r27719 76 76 void SetControlParam(IssmDouble* IssmDoublearray,int M, int enum_type); 77 77 void ControlParamSetGradient(IssmDouble* IssmDoublearray, int M, int enum_type); 78 void GetVectorFromControl(Vector<IssmDouble>* vector,int control_enum,int control_index,int N,const char* data,int offset); 78 79 Param* FindParamObject(int enum_type); 79 80 -
issm/trunk-jpl/src/c/cores/controladm1qn3_core.cpp
r27696 r27719 598 598 599 599 /*Get initial guess*/ 600 if(IsParamEnum(control_enum[0])){ 601 femmodel->parameters->FindControlParamAndMakePassive(&X,NULL,control_enum[0],"value"); 602 intn=M[0]; 603 } 604 else{ 605 GetPassiveVectorFromControlInputsx(&X,&intn,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"value"); 606 } 600 GetPassiveVectorFromControlInputsx(&X,&intn,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"value"); 607 601 608 602 /*Get problem dimension and initialize gradient and initial guess*/ -
issm/trunk-jpl/src/c/modules/GetVectorFromControlInputsx/GetVectorFromControlInputsx.cpp
r25539 r27719 30 30 int offset = 0; 31 31 for(int i=0;i<num_controls;i++){ 32 for(Object* & object : elements->objects){ 33 Element* element=xDynamicCast<Element*>(object); 34 element->GetVectorFromControlInputs(vector,control_type[i],i,N[i],data,offset); 32 33 /*Is the control a Param?*/ 34 if(IsParamEnum(control_type[i])){ 35 parameters->GetVectorFromControl(vector,control_type[i],i,N[i],data,offset); 36 } 37 else if(IsInputEnum(control_type[i])){ 38 for(Object* & object : elements->objects){ 39 Element* element=xDynamicCast<Element*>(object); 40 element->GetVectorFromControlInputs(vector,control_type[i],i,N[i],data,offset); 41 } 42 } 43 else{ 44 _error_("not supported yet"); 35 45 } 36 46 offset += M[i]*N[i];
Note:
See TracChangeset
for help on using the changeset viewer.