Changeset 22828
- Timestamp:
- 06/05/18 10:49:26 (7 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Elements/Element.cpp
r22801 r22828 1383 1383 return z; 1384 1384 }/*}}}*/ 1385 void Element::GradientIndexing(int* indexing,int control_index ,bool onsid){/*{{{*/1385 void Element::GradientIndexing(int* indexing,int control_index){/*{{{*/ 1386 1386 1387 1387 /*Get number of controls*/ … … 1415 1415 int M; 1416 1416 parameters->FindParam(&M,ControlInputSizeMEnum); 1417 /*get gradient indices*/ 1418 if(onsid){ 1419 for(int i=0;i<numvertices;i++){ 1420 indexing[i]=this->vertices[i]->Sid() + (control_index)*M; 1421 } 1422 } 1423 else{ 1424 for(int i=0;i<numvertices;i++){ 1425 indexing[i]=this->vertices[i]->Pid() + (control_index)*M; 1426 } 1417 /*get gradient indices*/ 1418 for(int i=0;i<numvertices;i++){ 1419 indexing[i]=this->vertices[i]->Sid() + (control_index)*M; 1427 1420 } 1428 1421 } -
issm/trunk-jpl/src/c/classes/Elements/Element.h
r22739 r22828 111 111 IssmDouble GetYcoord(IssmDouble* xyz_list,Gauss* gauss); 112 112 IssmDouble GetZcoord(IssmDouble* xyz_list,Gauss* gauss); 113 void GradientIndexing(int* indexing,int control_index ,bool onsid=false);113 void GradientIndexing(int* indexing,int control_index); 114 114 IssmDouble GroundedArea(IssmDouble* mask, bool scaled); 115 115 bool HasNodeOnBase(); … … 225 225 virtual int GetNumberOfNodes(int enum_type)=0; 226 226 virtual int GetNumberOfVertices(void)=0; 227 virtual void GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data,int offset , bool onsid)=0;228 virtual void GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data , bool onsid)=0;227 virtual void GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data,int offset)=0; 228 virtual void GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data)=0; 229 229 virtual void GetVerticesCoordinatesBase(IssmDouble** xyz_list)=0; 230 230 virtual void GetVerticesCoordinatesTop(IssmDouble** xyz_list)=0; -
issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
r22740 r22828 1153 1153 } 1154 1154 /*}}}*/ 1155 void Penta::GetVectorFromControlInputs(Vector<IssmDouble>* vector,int control_enum,int control_index,const char* data ,bool onsid){/*{{{*/1155 void Penta::GetVectorFromControlInputs(Vector<IssmDouble>* vector,int control_enum,int control_index,const char* data){/*{{{*/ 1156 1156 1157 1157 int vertexidlist[NUMVERTICES]; … … 1161 1161 1162 1162 /*Prepare index list*/ 1163 GradientIndexing(&vertexidlist[0],control_index ,onsid);1163 GradientIndexing(&vertexidlist[0],control_index); 1164 1164 1165 1165 /*Get input (either in element or material)*/ … … 1176 1176 } 1177 1177 /*}}}*/ 1178 void Penta::GetVectorFromControlInputs(Vector<IssmDouble>* vector,int control_enum,int control_index,const char* data,int offset ,bool onsid){/*{{{*/1178 void Penta::GetVectorFromControlInputs(Vector<IssmDouble>* vector,int control_enum,int control_index,const char* data,int offset){/*{{{*/ 1179 1179 1180 1180 int* idlist = NULL; … … 1217 1217 idlist = xNew<int>(NUMVERTICES); 1218 1218 values = xNew<IssmDouble>(NUMVERTICES); 1219 GradientIndexing(&idlist[0],control_index ,true);1219 GradientIndexing(&idlist[0],control_index); 1220 1220 for(int i=0;i<NUMVERTICES;i++){ 1221 1221 values[i] = pentainput->values[i]; -
issm/trunk-jpl/src/c/classes/Elements/Penta.h
r22739 r22828 86 86 Penta* GetLowerPenta(void); 87 87 Penta* GetUpperPenta(void); 88 void GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data ,bool onsid);89 void GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data,int offset ,bool onsid);88 void GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data); 89 void GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data,int offset); 90 90 void GetVerticesCoordinatesBase(IssmDouble** pxyz_list); 91 91 void GetVerticesCoordinatesTop(IssmDouble** pxyz_list); -
issm/trunk-jpl/src/c/classes/Elements/Seg.h
r22739 r22828 73 73 int GetNumberOfNodes(int enum_type){_error_("not implemented yet");}; 74 74 int GetNumberOfVertices(void); 75 void GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data,int offset ,bool onsid){_error_("not implemented yet");};76 void GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data ,bool onsid){_error_("not implemented yet");};75 void GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data,int offset){_error_("not implemented yet");}; 76 void GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data){_error_("not implemented yet");}; 77 77 void GetVerticesCoordinates(IssmDouble** pxyz_list); 78 78 void GetVerticesCoordinatesBase(IssmDouble** pxyz_list){_error_("not implemented yet");}; -
issm/trunk-jpl/src/c/classes/Elements/Tetra.h
r22739 r22828 79 79 int GetNumberOfNodes(int enum_type){_error_("not implemented yet");}; 80 80 int GetNumberOfVertices(void); 81 void GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data,int offset ,bool onsid){_error_("not implemented yet");};82 void GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data ,bool onsid){_error_("not implemented yet");};81 void GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data,int offset){_error_("not implemented yet");}; 82 void GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data){_error_("not implemented yet");}; 83 83 void GetVerticesCoordinatesBase(IssmDouble** pxyz_list); 84 84 void GetVerticesCoordinatesTop(IssmDouble** pxyz_list); -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r22764 r22828 753 753 if (input->ObjectEnum()!=ControlInputEnum) _error_("Input " << EnumToStringx(enum_type) << " is not a ControlInput"); 754 754 755 GradientIndexing(&gradidlist[0],control_index ,true);755 GradientIndexing(&gradidlist[0],control_index); 756 756 757 757 for(int n=0;n<N;n++){ … … 1689 1689 } 1690 1690 /*}}}*/ 1691 void Tria::GetVectorFromControlInputs(Vector<IssmDouble>* vector,int control_enum,int control_index,const char* data ,bool onsid){/*{{{*/1691 void Tria::GetVectorFromControlInputs(Vector<IssmDouble>* vector,int control_enum,int control_index,const char* data){/*{{{*/ 1692 1692 1693 1693 int vertexidlist[NUMVERTICES]; … … 1698 1698 1699 1699 /*Prepare index list*/ 1700 GradientIndexing(&vertexidlist[0],control_index ,onsid);1700 GradientIndexing(&vertexidlist[0],control_index); 1701 1701 1702 1702 /*Get input (either in element or material)*/ … … 1711 1711 } 1712 1712 /*}}}*/ 1713 void Tria::GetVectorFromControlInputs(Vector<IssmDouble>* vector,int control_enum,int control_index,const char* data,int offset , bool onsid){/*{{{*/1713 void Tria::GetVectorFromControlInputs(Vector<IssmDouble>* vector,int control_enum,int control_index,const char* data,int offset){/*{{{*/ 1714 1714 1715 1715 int* idlist = NULL; … … 1753 1753 idlist = xNew<int>(NUMVERTICES); 1754 1754 values = xNew<IssmDouble>(NUMVERTICES); 1755 GradientIndexing(&idlist[0],control_index ,true);1755 GradientIndexing(&idlist[0],control_index); 1756 1756 for(int i=0;i<NUMVERTICES;i++){ 1757 1757 values[i] = triainput->values[i]; -
issm/trunk-jpl/src/c/classes/Elements/Tria.h
r22739 r22828 86 86 int GetNumberOfNodes(int enum_type); 87 87 int GetNumberOfVertices(void); 88 void GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data,int offset ,bool onsid);89 void GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data ,bool onsid);88 void GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data,int offset); 89 void GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data); 90 90 void GetVerticesCoordinatesBase(IssmDouble** pxyz_list); 91 91 void GetVerticesCoordinatesTop(IssmDouble** pxyz_list); -
issm/trunk-jpl/src/c/cores/controlm1qn3_core.cpp
r22827 r22828 88 88 G = xNew<double>(n); 89 89 90 for(int i=0;i<intn;i++)_printf_(X[i]<<"\n");91 90 /*Scale control for M1QN3*/ 92 91 for(int c=0;c<num_controls;c++){ 93 92 for(int i=0;i<numberofvertices;i++){ 94 93 int index = numberofvertices*c+i; 95 _printf_("Before "<<X[index]<<"\n");96 94 X[index] = X[index]/scaling_factors[c]; 97 _printf_("After "<<X[index]<<"\n");98 95 } 99 96 } -
issm/trunk-jpl/src/c/modules/GetVectorFromControlInputsx/GetVectorFromControlInputsx.cpp
r22739 r22828 7 7 #include "../../toolkits/toolkits.h" 8 8 9 void GetVectorFromControlInputsx(Vector<IssmDouble>** pvector, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,const char* data ,bool onsid){/*{{{*/9 void GetVectorFromControlInputsx(Vector<IssmDouble>** pvector, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,const char* data){/*{{{*/ 10 10 11 11 bool isautodiff; … … 37 37 for(int j=0;j<elements->Size();j++){ 38 38 Element* element=(Element*)elements->GetObjectByOffset(j); 39 element->GetVectorFromControlInputs(vector,control_type[i],i,data,offset ,onsid);39 element->GetVectorFromControlInputs(vector,control_type[i],i,data,offset); 40 40 } 41 41 offset += M[i]*N[i]; … … 69 69 for(int j=0;j<elements->Size();j++){ 70 70 Element* element=(Element*)elements->GetObjectByOffset(j); 71 element->GetVectorFromControlInputs(vector,control_type[i],i,data ,onsid);71 element->GetVectorFromControlInputs(vector,control_type[i],i,data); 72 72 } 73 73 } … … 80 80 81 81 }/*}}}*/ 82 void GetVectorFromControlInputsx( IssmDouble** pvector, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters, const char* data ,bool onsid){/*{{{*/82 void GetVectorFromControlInputsx( IssmDouble** pvector, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters, const char* data){/*{{{*/ 83 83 84 84 /*intermediary: */ 85 85 Vector<IssmDouble>* vec_vector=NULL; 86 86 87 GetVectorFromControlInputsx( &vec_vector, elements,nodes, vertices, loads, materials, parameters,data ,onsid);87 GetVectorFromControlInputsx( &vec_vector, elements,nodes, vertices, loads, materials, parameters,data); 88 88 IssmDouble* vector=vec_vector->ToMPISerial(); 89 89 … … 97 97 /*For autodiff, we sometimes need to cast our vectors to passive*/ 98 98 #ifdef _HAVE_ADOLC_ 99 void GetPassiveVectorFromControlInputsx(Vector<IssmPDouble>** pvector, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,const char* data ,bool onsid){/*{{{*/99 void GetPassiveVectorFromControlInputsx(Vector<IssmPDouble>** pvector, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,const char* data){/*{{{*/ 100 100 101 101 /*Get active vector first*/ … … 105 105 106 106 /*Retrieve some parameters*/ 107 GetVectorFromControlInputsx(&activevector, elements,nodes, vertices, loads, materials, parameters,data ,onsid);107 GetVectorFromControlInputsx(&activevector, elements,nodes, vertices, loads, materials, parameters,data); 108 108 109 109 /*Serialize vector*/ … … 124 124 125 125 }/*}}}*/ 126 void GetPassiveVectorFromControlInputsx(IssmPDouble** pvector, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters, const char* data ,bool onsid){/*{{{*/126 void GetPassiveVectorFromControlInputsx(IssmPDouble** pvector, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters, const char* data){/*{{{*/ 127 127 128 128 /*Get active vector first*/ … … 132 132 133 133 /*Retrieve some parameters*/ 134 GetVectorFromControlInputsx(&activevector, elements,nodes, vertices, loads, materials, parameters,data ,onsid);134 GetVectorFromControlInputsx(&activevector, elements,nodes, vertices, loads, materials, parameters,data); 135 135 136 136 /*Serialize vector*/ … … 149 149 }/*}}}*/ 150 150 #else 151 void GetPassiveVectorFromControlInputsx(Vector<IssmPDouble>** pvector, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,const char* data ,bool onsid){/*{{{*/151 void GetPassiveVectorFromControlInputsx(Vector<IssmPDouble>** pvector, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,const char* data){/*{{{*/ 152 152 153 GetVectorFromControlInputsx(pvector, elements,nodes, vertices, loads, materials, parameters,data ,onsid);153 GetVectorFromControlInputsx(pvector, elements,nodes, vertices, loads, materials, parameters,data); 154 154 155 155 }/*}}}*/ 156 void GetPassiveVectorFromControlInputsx(IssmPDouble** pvector, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters, const char* data ,bool onsid){/*{{{*/156 void GetPassiveVectorFromControlInputsx(IssmPDouble** pvector, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters, const char* data){/*{{{*/ 157 157 158 GetVectorFromControlInputsx(pvector, elements,nodes, vertices, loads, materials, parameters,data ,onsid);158 GetVectorFromControlInputsx(pvector, elements,nodes, vertices, loads, materials, parameters,data); 159 159 }/*}}}*/ 160 160 #endif -
issm/trunk-jpl/src/c/modules/GetVectorFromControlInputsx/GetVectorFromControlInputsx.h
r22424 r22828 8 8 9 9 /* local prototypes: */ 10 void GetVectorFromControlInputsx( Vector<IssmDouble>** pvector, Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials, Parameters* parameters,const char* data="value" ,bool onsid=false);11 void GetVectorFromControlInputsx( IssmDouble** pvector, Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials, Parameters* parameters,const char* data="value" ,bool onsid=false);10 void GetVectorFromControlInputsx( Vector<IssmDouble>** pvector, Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials, Parameters* parameters,const char* data="value"); 11 void GetVectorFromControlInputsx( IssmDouble** pvector, Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials, Parameters* parameters,const char* data="value"); 12 12 13 void GetPassiveVectorFromControlInputsx(Vector<double>** pvector, Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials, Parameters* parameters,const char* data="value" ,bool onsid=false);14 void GetPassiveVectorFromControlInputsx(double** pvector, Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials, Parameters* parameters,const char* data="value" ,bool onsid=false);13 void GetPassiveVectorFromControlInputsx(Vector<double>** pvector, Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials, Parameters* parameters,const char* data="value"); 14 void GetPassiveVectorFromControlInputsx(double** pvector, Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials, Parameters* parameters,const char* data="value"); 15 15 16 16 #endif /* _GETVECTORFROMCONTROLINPUTSXX_H */
Note:
See TracChangeset
for help on using the changeset viewer.