Changeset 18569
- Timestamp:
- 10/03/14 11:35:03 (10 years ago)
- Location:
- issm/trunk-jpl/src/c/analyses
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/AdjointBalancethickness2Analysis.cpp
r18567 r18569 137 137 /*Deal with second term*/ 138 138 switch(control_type){ 139 case BalancethicknessOmegaEnum: GradientJOmega(element,gradient,control_index); break; 139 case BalancethicknessOmegaEnum: GradientJOmega(element,gradient,control_index); break; 140 case BalancethicknessThickeningRateEnum: GradientJdHdt( element,gradient,control_index); break; 140 141 default: _error_("control type not supported yet: " << EnumToStringx(control_type)); 141 142 } … … 192 193 delete gauss; 193 194 }/*}}}*/ 195 void AdjointBalancethickness2Analysis::GradientJdHdt(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/ 196 197 /*Fetch number of vertices for this finite element*/ 198 int numvertices = element->GetNumberOfVertices(); 199 200 /*Initialize some vectors*/ 201 IssmDouble* ge = xNewZeroInit<IssmDouble>(numvertices); 202 IssmDouble* lambda = xNew<IssmDouble>(numvertices); 203 int* vertexpidlist = xNew<int>(numvertices); 204 205 /*Retrieve all inputs we will be needing: */ 206 element->GradientIndexing(&vertexpidlist[0],control_index); 207 element->GetInputListOnVertices(lambda,AdjointEnum); 208 for(int i=0;i<numvertices;i++){ 209 ge[i]= - lambda[i]; 210 _assert_(!xIsNan<IssmDouble>(ge[i])); 211 } 212 gradient->SetValues(numvertices,vertexpidlist,ge,INS_VAL); 213 214 /*Clean up and return*/ 215 xDelete<IssmDouble>(ge); 216 xDelete<IssmDouble>(lambda); 217 xDelete<int>(vertexpidlist); 218 }/*}}}*/ 194 219 void AdjointBalancethickness2Analysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/ 195 220 element->InputUpdateFromSolutionOneDof(solution,AdjointEnum); -
issm/trunk-jpl/src/c/analyses/AdjointBalancethickness2Analysis.h
r18565 r18569 29 29 void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index); 30 30 void GradientJOmega(Element* element,Vector<IssmDouble>* gradient,int control_index); 31 void GradientJdHdt(Element* element,Vector<IssmDouble>* gradient,int control_index); 31 32 void InputUpdateFromSolution(IssmDouble* solution,Element* element); 32 33 void UpdateConstraints(FemModel* femmodel);
Note:
See TracChangeset
for help on using the changeset viewer.