Changeset 16751
- Timestamp:
- 11/13/13 20:50:52 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified issm/trunk-jpl/src/c/analyses/AdjointHorizAnalysis.cpp ΒΆ
r16684 r16751 30 30 }/*}}}*/ 31 31 void AdjointHorizAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/ 32 _error_("not implemented yet"); 32 int i; 33 int* doflist=NULL; 34 35 /*Fetch number of nodes and dof for this finite element*/ 36 int numnodes = element->GetNumberOfNodes(); 37 int numdof = numnodes*2; 38 39 /*Fetch dof list and allocate solution vectors*/ 40 element->GetDofList(&doflist,NoneApproximationEnum,GsetEnum); 41 IssmDouble* values = xNew<IssmDouble>(numdof); 42 IssmDouble* lambdax = xNew<IssmDouble>(numnodes); 43 IssmDouble* lambday = xNew<IssmDouble>(numnodes); 44 45 /*Use the dof list to index into the solution vector: */ 46 for(i=0;i<numdof;i++) values[i]=solution[doflist[i]]; 47 48 /*Transform solution in Cartesian Space*/ 49 element->TransformSolutionCoord(&values[0],XYEnum); 50 51 /*Ok, we have vx and vy in values, fill in vx and vy arrays: */ 52 for(i=0;i<numnodes;i++){ 53 lambdax[i]=values[i*NDOF2+0]; 54 lambday[i]=values[i*NDOF2+1]; 55 56 /*Check solution*/ 57 if(xIsNan<IssmDouble>(lambdax[i])) _error_("NaN found in solution vector"); 58 if(xIsNan<IssmDouble>(lambday[i])) _error_("NaN found in solution vector"); 59 } 60 61 /*Add vx and vy as inputs to the tria element: */ 62 element->AddInput(AdjointxEnum,lambdax,P1Enum); 63 element->AddInput(AdjointyEnum,lambday,P1Enum); 64 65 /*Free ressources:*/ 66 xDelete<IssmDouble>(values); 67 xDelete<IssmDouble>(lambdax); 68 xDelete<IssmDouble>(lambday); 69 xDelete<int>(doflist); 33 70 }/*}}}*/
Note:
See TracChangeset
for help on using the changeset viewer.