source:
issm/oecreview/Archive/18296-19100/ISSM-18568-18569.diff
Last change on this file was 19102, checked in by , 10 years ago | |
---|---|
File size: 2.7 KB |
-
../trunk-jpl/src/c/analyses/AdjointBalancethickness2Analysis.cpp
136 136 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 } 142 143 … … 191 192 xDelete<int>(vertexpidlist); 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); 196 221 }/*}}}*/ -
../trunk-jpl/src/c/analyses/AdjointBalancethickness2Analysis.h
28 28 void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element); 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); 33 34 };
Note:
See TracBrowser
for help on using the repository browser.