Changeset 12910
- Timestamp:
- 08/06/12 09:03:59 (13 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/matrix/Vector.cpp
r12899 r12910 61 61 } 62 62 /*}}}*/ 63 #ifdef _HAVE_PETSC_ 64 /*FUNCTION Vector::Vector(Vec petsc_vector){{{*/ 65 Vector::Vector(Vec petsc_vector){ 66 67 this->type=PetscVecType; 68 this->svector=NULL; 69 this->pvector=new PetscVec(petsc_vector); 70 71 } 72 /*}}}*/ 73 #endif 63 74 /*FUNCTION Vector::Vector(IssmDouble* serial_vec,int M,int type){{{*/ 64 75 Vector::Vector(IssmDouble* serial_vec,int M,int in_type){ -
issm/trunk-jpl/src/c/classes/matrix/Vector.h
r12850 r12910 36 36 Vector(int M,bool fromlocalsize=false,int type=PetscVecType); 37 37 Vector(IssmDouble* serial_vec,int pM,int type=PetscVecType); 38 #ifdef _HAVE_PETSC_ 39 Vector(Vec petsc_vector); 40 #endif 38 41 ~Vector(); 39 42 /*}}}*/ -
issm/trunk-jpl/src/c/solutions/controltao_core.cpp
r12832 r12910 21 21 typedef struct { 22 22 FemModel* femmodel; 23 double* J; 23 24 } AppCtx; 24 25 … … 69 70 GetVectorFromControlInputsx(&XL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"lowerbound"); 70 71 GetVectorFromControlInputsx(&XU,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"upperbound"); 71 TaoSetInitialVector(tao,X-> vector);72 TaoSetVariableBounds(tao,XL-> vector,XU->vector);72 TaoSetInitialVector(tao,X->pvector->vector); 73 TaoSetVariableBounds(tao,XL->pvector->vector,XU->pvector->vector); 73 74 xdelete(&XL); 74 75 xdelete(&XU); 75 76 77 user.J=(double*)xcalloc((maxiter+5),sizeof(double)); 76 78 user.femmodel=femmodel; 77 79 TaoSetObjectiveAndGradientRoutine(tao,FormFunctionGradient,(void*)&user); … … 81 83 TaoSolve(tao); 82 84 TaoView(tao,PETSC_VIEWER_STDOUT_WORLD); 83 TaoGetSolutionVector(tao,&X-> vector);85 TaoGetSolutionVector(tao,&X->pvector->vector); 84 86 SetControlInputsFromVectorx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,X); 85 87 for(int i=0;i<num_controls;i++){ 86 88 InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,control_list[i]); 87 89 } 90 femmodel->results->AddObject(new DoubleVecExternalResult(femmodel->results->Size()+1,JEnum,user.J,maxiter+3,1,0)); 88 91 89 92 /*Finalize*/ … … 142 145 /*Compute gradient*/ 143 146 Gradjx(&gradient,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 144 VecCopy(gradient-> vector,G); xdelete(&gradient);147 VecCopy(gradient->pvector->vector,G); xdelete(&gradient); 145 148 VecScale(G,-1.); 146 149 … … 166 169 if(its==0) _pprintLine_("-----------------------------------+-----------------------"); 167 170 _pprintString_(setw(4)<<its<<" "<<setw(12)<<setprecision(7)<<f<<" "<<setw(12)<<setprecision(7)<<gnorm<<" | "); 171 user->J[its]=f; 168 172 169 173 /*Retrieve objective functions independently*/
Note:
See TracChangeset
for help on using the changeset viewer.