Changeset 1188
- Timestamp:
- 06/30/09 14:39:58 (16 years ago)
- Location:
- issm/trunk/src
- Files:
-
- 17 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/DataSet/DataSet.cpp
r1185 r1188 1261 1261 } 1262 1262 1263 void DataSet::Gradj(Vec grad_g, double* lambda_g,void* inputs,int analysis_type,int sub_analysis_type,char* control_type){1263 void DataSet::Gradj(Vec grad_g,void* inputs,int analysis_type,int sub_analysis_type,char* control_type){ 1264 1264 1265 1265 … … 1272 1272 1273 1273 element=(Element*)(*object); 1274 element->Gradj(grad_g, lambda_g,inputs,analysis_type,sub_analysis_type,control_type);1274 element->Gradj(grad_g,inputs,analysis_type,sub_analysis_type,control_type); 1275 1275 } 1276 1276 } -
issm/trunk/src/c/DataSet/DataSet.h
r1185 r1188 74 74 DataSet* Copy(void); 75 75 void Du(Vec du_g,void* inputs,int analysis_type,int sub_analysis_type); 76 void Gradj(Vec grad_g, double* lambda_g,void* inputs,int analysis_type,int sub_analysis_type,char* control_type);76 void Gradj(Vec grad_g,void* inputs,int analysis_type,int sub_analysis_type,char* control_type); 77 77 void Misfit(double* pJ, void* inputs,int analysis_type,int sub_analysis_type); 78 78 void FieldDepthAverageAtBase(Vec field,double* field_serial,char* fieldname); -
issm/trunk/src/c/Gradjx/Gradjx.cpp
r1185 r1188 14 14 15 15 void Gradjx( Vec* pgrad_g, int numberofnodes, DataSet* elements,DataSet* nodes, DataSet* loads, DataSet* materials, 16 double* lambda_g,ParameterInputs* inputs,int analysis_type,int sub_analysis_type,char* control_type){16 ParameterInputs* inputs,int analysis_type,int sub_analysis_type,char* control_type){ 17 17 18 18 /*output: */ … … 26 26 27 27 /*Compute gradients: */ 28 elements->Gradj(grad_g, lambda_g,inputs,analysis_type,sub_analysis_type,control_type);28 elements->Gradj(grad_g,inputs,analysis_type,sub_analysis_type,control_type); 29 29 30 30 /*Assemble vector: */ -
issm/trunk/src/c/Gradjx/Gradjx.h
r1185 r1188 10 10 /* local prototypes: */ 11 11 void Gradjx( Vec* pgrad_g, int numberofnodes, DataSet* elements,DataSet* nodes, DataSet* loads, DataSet* materials, 12 double* lambda_g,ParameterInputs* inputs,int analysis_type,int sub_analysis_type,char* control_type);12 ParameterInputs* inputs,int analysis_type,int sub_analysis_type,char* control_type); 13 13 14 14 #endif /* _GRADJX_H */ -
issm/trunk/src/c/objects/Beam.cpp
r1185 r1188 571 571 #undef __FUNCT__ 572 572 #define __FUNCT__ "Beam::Gradj" 573 void Beam::Gradj(_p_Vec*, double*,void*, int, int,char*){573 void Beam::Gradj(_p_Vec*, void*, int, int,char*){ 574 574 throw ErrorException(__FUNCT__," not supported yet!"); 575 575 } 576 576 #undef __FUNCT__ 577 577 #define __FUNCT__ "Beam::GradjDrag" 578 void Beam::GradjDrag(_p_Vec*, double*,void*, int,int ){578 void Beam::GradjDrag(_p_Vec*, void*, int,int ){ 579 579 throw ErrorException(__FUNCT__," not supported yet!"); 580 580 } 581 581 #undef __FUNCT__ 582 582 #define __FUNCT__ "Beam::GradjB" 583 void Beam::GradjB(_p_Vec*, double*,void*, int, int){583 void Beam::GradjB(_p_Vec*, void*, int, int){ 584 584 throw ErrorException(__FUNCT__," not supported yet!"); 585 585 } -
issm/trunk/src/c/objects/Beam.h
r1185 r1188 80 80 void GetThicknessList(double* thickness_list); 81 81 void Du(_p_Vec*,void*, int,int); 82 void Gradj(_p_Vec*, double*,void*, int, int,char*);83 void GradjDrag(_p_Vec*, double*,void*, int,int );84 void GradjB(_p_Vec*, double*,void*, int,int );82 void Gradj(_p_Vec*, void*, int, int,char*); 83 void GradjDrag(_p_Vec*, void*, int,int ); 84 void GradjB(_p_Vec*, void*, int,int ); 85 85 double Misfit(void*,int,int ); 86 86 void GetNodalFunctions(double* l1l2, double gauss_coord); -
issm/trunk/src/c/objects/Element.h
r1185 r1188 35 35 virtual void GetBedList(double* bed_list)=0; 36 36 virtual void Du(Vec du_g,void* inputs,int analysis_type,int sub_analysis_type)=0; 37 virtual void Gradj(Vec grad_g, double* lambda_g,void* inputs,int analysis_type,int sub_analysis_type,char* control_type)=0;38 virtual void GradjDrag(Vec grad_g, double* lambda_g,void* inputs,int analysis_type,int sub_analysis_type)=0;39 virtual void GradjB(Vec grad_g, double* lambda_g,void* inputs,int analysis_type,int sub_analysis_type)=0;37 virtual void Gradj(Vec grad_g,void* inputs,int analysis_type,int sub_analysis_type,char* control_type)=0; 38 virtual void GradjDrag(Vec grad_g,void* inputs,int analysis_type,int sub_analysis_type)=0; 39 virtual void GradjB(Vec grad_g,void* inputs,int analysis_type,int sub_analysis_type)=0; 40 40 virtual double Misfit(void* inputs,int analysis_type,int sub_analysis_type)=0; 41 41 virtual void ComputePressure(Vec p_g)=0; -
issm/trunk/src/c/objects/Penta.cpp
r1185 r1188 1207 1207 #undef __FUNCT__ 1208 1208 #define __FUNCT__ "Penta::Gradj" 1209 void Penta::Gradj(Vec grad_g, double* adjoint,void* inputs,int analysis_type,int sub_analysis_type,char* control_type){1209 void Penta::Gradj(Vec grad_g,void* inputs,int analysis_type,int sub_analysis_type,char* control_type){ 1210 1210 1211 1211 if (strcmp(control_type,"drag")==0){ 1212 GradjDrag( grad_g, adjoint,inputs,analysis_type,sub_analysis_type);1212 GradjDrag( grad_g,inputs,analysis_type,sub_analysis_type); 1213 1213 } 1214 1214 else if (strcmp(control_type,"B")==0){ 1215 GradjB( grad_g, adjoint,inputs,analysis_type,sub_analysis_type);1215 GradjB( grad_g, inputs,analysis_type,sub_analysis_type); 1216 1216 } 1217 1217 else throw ErrorException(__FUNCT__,exprintf("%s%s","control type not supported yet: ",control_type)); … … 1220 1220 #undef __FUNCT__ 1221 1221 #define __FUNCT__ "Penta::GradjDrag" 1222 void Penta::GradjDrag(Vec grad_g, double* lambda_g,void* inputs,int analysis_type,int sub_analysis_type){1222 void Penta::GradjDrag(Vec grad_g,void* inputs,int analysis_type,int sub_analysis_type){ 1223 1223 1224 1224 … … 1232 1232 1233 1233 tria=(Tria*)SpawnTria(0,1,2); //grids 0, 1 and 2 make the new tria. 1234 tria->GradjDrag( grad_g, lambda_g,inputs,analysis_type,sub_analysis_type);1234 tria->GradjDrag( grad_g,inputs,analysis_type,sub_analysis_type); 1235 1235 delete tria; 1236 1236 return; … … 1240 1240 #undef __FUNCT__ 1241 1241 #define __FUNCT__ "Penta::GradjB" 1242 void Penta::GradjB(Vec grad_g, double* lambda_g,void* inputs,int analysis_type,int sub_analysis_type){1242 void Penta::GradjB(Vec grad_g,void* inputs,int analysis_type,int sub_analysis_type){ 1243 1243 throw ErrorException(__FUNCT__," not supported yet!"); 1244 1244 } -
issm/trunk/src/c/objects/Penta.h
r1185 r1188 87 87 int GetOnBed(); 88 88 void Du(Vec du_g,void* inputs,int analysis_type,int sub_analysis_type); 89 void Gradj(Vec grad_g, double* lambda_g,void* inputs,int analysis_type,int sub_analysis_type,char* control_type);90 void GradjDrag(Vec grad_g, double* lambda_g,void* inputs,int analysis_type,int sub_analysis_type);91 void GradjB(Vec grad_g, double* lambda_g,void* inputs,int analysis_type,int sub_analysis_type);89 void Gradj(Vec grad_g,void* inputs,int analysis_type,int sub_analysis_type,char* control_type); 90 void GradjDrag(Vec grad_g,void* inputs,int analysis_type,int sub_analysis_type); 91 void GradjB(Vec grad_g,void* inputs,int analysis_type,int sub_analysis_type); 92 92 double Misfit(void* inputs,int analysis_type,int sub_analysis_type); 93 93 -
issm/trunk/src/c/objects/Sing.cpp
r1185 r1188 455 455 #undef __FUNCT__ 456 456 #define __FUNCT__ "Sing::Gradj" 457 void Sing::Gradj(_p_Vec*, double*,void*, int, int ,char*){457 void Sing::Gradj(_p_Vec*, void*, int, int ,char*){ 458 458 throw ErrorException(__FUNCT__," not supported yet!"); 459 459 } 460 460 #undef __FUNCT__ 461 461 #define __FUNCT__ "Sing::GradjDrag" 462 void Sing::GradjDrag(_p_Vec*, double*,void*, int,int){462 void Sing::GradjDrag(_p_Vec*, void*, int,int){ 463 463 throw ErrorException(__FUNCT__," not supported yet!"); 464 464 } 465 465 #undef __FUNCT__ 466 466 #define __FUNCT__ "Sing::GradjB" 467 void Sing::GradjB(_p_Vec*, double*,void*, int,int){467 void Sing::GradjB(_p_Vec*, void*, int,int){ 468 468 throw ErrorException(__FUNCT__," not supported yet!"); 469 469 } -
issm/trunk/src/c/objects/Sing.h
r1185 r1188 75 75 void GetThicknessList(double* thickness_list); 76 76 void Du(_p_Vec*,void*,int,int); 77 void Gradj(_p_Vec*, double*,void*, int, int,char*);78 void GradjDrag(_p_Vec*, double*,void*, int,int);79 void GradjB(_p_Vec*, double*,void*, int,int);77 void Gradj(_p_Vec*, void*, int, int,char*); 78 void GradjDrag(_p_Vec*, void*, int,int); 79 void GradjB(_p_Vec*, void*, int,int); 80 80 double Misfit(void*,int,int); 81 81 -
issm/trunk/src/c/objects/Tria.cpp
r1185 r1188 2217 2217 #undef __FUNCT__ 2218 2218 #define __FUNCT__ "Tria::Gradj" 2219 void Tria::Gradj(Vec grad_g, double* adjoint,void* inputs,int analysis_type,int sub_analysis_type,char* control_type){2219 void Tria::Gradj(Vec grad_g,void* inputs,int analysis_type,int sub_analysis_type,char* control_type){ 2220 2220 2221 2221 if (strcmp(control_type,"drag")==0){ 2222 GradjDrag( grad_g, adjoint,inputs,analysis_type,sub_analysis_type);2222 GradjDrag( grad_g,inputs,analysis_type,sub_analysis_type); 2223 2223 } 2224 2224 else if (strcmp(control_type,"B")==0){ 2225 GradjB( grad_g, adjoint,inputs,analysis_type,sub_analysis_type);2225 GradjB( grad_g,inputs,analysis_type,sub_analysis_type); 2226 2226 } 2227 2227 else throw ErrorException(__FUNCT__,exprintf("%s%s","control type not supported yet: ",control_type)); … … 2230 2230 #undef __FUNCT__ 2231 2231 #define __FUNCT__ "Tria::GradjDrag" 2232 void Tria::GradjDrag(Vec grad_g, double* adjoint,void* vinputs,int analysis_type,int sub_analysis_type){2232 void Tria::GradjDrag(Vec grad_g,void* vinputs,int analysis_type,int sub_analysis_type){ 2233 2233 2234 2234 … … 2313 2313 throw ErrorException(__FUNCT__,"missing velocity input parameter"); 2314 2314 } 2315 2315 if(!inputs->Recover("adjoint",&adjxadjy_list[0][0],2,dofs2,numgrids,(void**)nodes)){ 2316 throw ErrorException(__FUNCT__,"missing adjoint input parameter"); 2317 } 2318 2319 /*Initialize parameter lists: */ 2316 2320 for(i=0;i<numgrids;i++){ 2317 2321 vx_list[i]=vxvy_list[i][0]; 2318 2322 vy_list[i]=vxvy_list[i][1]; 2319 } 2320 2321 /*Initialize parameter lists: */ 2322 for(i=0;i<numgrids;i++){ 2323 //vx_list[i]=velocity[doflist[i*numberofdofspernode+0]]; 2324 //vy_list[i]=velocity[doflist[i*numberofdofspernode+1]]; 2325 //vxvy_list[i][0]=vx_list[i]; 2326 //vxvy_list[i][1]=vy_list[i]; 2327 adjx_list[i]=adjoint[doflist[i*numberofdofspernode+0]]; 2328 adjy_list[i]=adjoint[doflist[i*numberofdofspernode+1]]; 2329 } 2330 2323 adjx_list[i]=adjxadjy_list[i][0]; 2324 adjy_list[i]=adjxadjy_list[i][1]; 2325 } 2326 2331 2327 /* Get gaussian points and weights (make this a statically initialized list of points? fstd): */ 2332 2328 GaussTria( &num_gauss, &first_gauss_area_coord, &second_gauss_area_coord, &third_gauss_area_coord, &gauss_weights, 4); … … 2435 2431 #undef __FUNCT__ 2436 2432 #define __FUNCT__ "Tria::GradjB" 2437 void Tria::GradjB(Vec grad_g, double* adjoint,void* vinputs,int analysis_type,int sub_analysis_type){2433 void Tria::GradjB(Vec grad_g,void* vinputs,int analysis_type,int sub_analysis_type){ 2438 2434 2439 2435 int i; … … 2511 2507 throw ErrorException(__FUNCT__,"missing velocity input parameter"); 2512 2508 } 2513 2509 if(!inputs->Recover("adjoint",&adjxadjy_list[0][0],2,dofs2,numgrids,(void**)nodes)){ 2510 throw ErrorException(__FUNCT__,"missing adjoint input parameter"); 2511 } 2512 2513 /*Initialize parameter lists: */ 2514 2514 for(i=0;i<numgrids;i++){ 2515 2515 vx_list[i]=vxvy_list[i][0]; 2516 2516 vy_list[i]=vxvy_list[i][1]; 2517 } 2518 2519 /*Initialize parameter lists: */ 2520 for(i=0;i<numgrids;i++){ 2521 //vx_list[i]=velocity[doflist[i*numberofdofspernode+0]]; 2522 //vy_list[i]=velocity[doflist[i*numberofdofspernode+1]]; 2523 //vxvy_list[i][0]=vx_list[i]; 2524 //vxvy_list[i][1]=vy_list[i]; 2525 adjx_list[i]=adjoint[doflist[i*numberofdofspernode+0]]; 2526 adjy_list[i]=adjoint[doflist[i*numberofdofspernode+1]]; 2517 adjx_list[i]=adjxadjy_list[i][0]; 2518 adjy_list[i]=adjxadjy_list[i][1]; 2527 2519 } 2528 2520 -
issm/trunk/src/c/objects/Tria.h
r1185 r1188 94 94 void GetJacobian(double* J, double* xyz_list,double* gauss_l1l2l3); 95 95 void Du(Vec du_g,void* inputs,int analysis_type,int sub_analysis_type); 96 void Gradj(Vec grad_g, double* lambda_g,void* inputs,int analysis_type,int sub_analysis_type,char* control_type);97 void GradjDrag(Vec grad_g, double* lambda_g,void* inputs,int analysis_type,int sub_analysis_type);98 void GradjB(Vec grad_g, double* lambda_g,void* inputs,int analysis_type,int sub_analysis_type);96 void Gradj(Vec grad_g,void* inputs,int analysis_type,int sub_analysis_type,char* control_type); 97 void GradjDrag(Vec grad_g,void* inputs,int analysis_type,int sub_analysis_type); 98 void GradjB(Vec grad_g,void* inputs,int analysis_type,int sub_analysis_type); 99 99 double Misfit(void* inputs,int analysis_type,int sub_analysis_type); 100 100 -
issm/trunk/src/c/parallel/GradJCompute.cpp
r1185 r1188 71 71 _printf_("%s\n"," compute gradJ:"); 72 72 VecToMPISerial(&lambda_g_double,lambda_g);VecFree(&lambda_g); 73 inputs->Add("adjoint",lambda_g_double,2,numberofnodes); 73 74 74 75 Gradjx( &grad_g, numberofnodes,femmodel->elements,femmodel->nodes, femmodel->loads, femmodel->materials, 75 lambda_g_double,inputs,analysis_type,sub_analysis_type,control_type);76 inputs,analysis_type,sub_analysis_type,control_type); 76 77 77 78 /*Free ressources:*/ -
issm/trunk/src/m/solutions/cielo/GradJCompute.m
r1185 r1188 22 22 23 23 %Compute gradJ 24 grad_g=Gradj(m.elements,m.nodes,m.loads,m.materials,m.parameters, lambda_g,inputs,analysis_type,sub_analysis_type);24 grad_g=Gradj(m.elements,m.nodes,m.loads,m.materials,m.parameters,inputs,analysis_type,sub_analysis_type); -
issm/trunk/src/mex/Gradj/Gradj.cpp
r1185 r1188 16 16 DataSet* materials=NULL; 17 17 char* control_type=NULL; 18 double* lambda_g=NULL;19 18 ParameterInputs* inputs=NULL; 20 19 char* analysis_type_string=NULL; … … 41 40 FetchData((void**)&numberofnodes,NULL,NULL,mxGetField(PARAMETERS,0,"numberofnodes"),"Integer",NULL); 42 41 FetchData((void**)&control_type,NULL,NULL,mxGetField(PARAMETERS,0,"control_type"),"String",NULL); 43 FetchData((void**)&lambda_g,NULL,NULL,LAMBDAG,"Vector","Vec");44 42 FetchData((void**)&analysis_type_string,NULL,NULL,ANALYSIS,"String",NULL); 45 43 analysis_type=AnalysisTypeAsEnum(analysis_type_string); … … 52 50 53 51 /*!Call core code: */ 54 Gradjx(&grad_g,numberofnodes,elements,nodes,loads,materials, lambda_g,inputs,analysis_type,sub_analysis_type,control_type);52 Gradjx(&grad_g,numberofnodes,elements,nodes,loads,materials,inputs,analysis_type,sub_analysis_type,control_type); 55 53 56 54 /*write output : */ … … 62 60 delete loads; 63 61 delete materials; 64 xfree((void**)&lambda_g);65 62 xfree((void**)&control_type); 66 63 delete inputs; … … 76 73 { 77 74 _printf_("\n"); 78 _printf_(" usage: [grad_g] = %s(elements, nodes,loads, materials, parameters, lambda_g,inputs);\n",__FUNCT__);75 _printf_(" usage: [grad_g] = %s(elements, nodes,loads, materials, parameters,inputs);\n",__FUNCT__); 79 76 _printf_("\n"); 80 77 } -
issm/trunk/src/mex/Gradj/Gradj.h
r1185 r1188 22 22 #define MATERIALS (mxArray*)prhs[3] 23 23 #define PARAMETERS (mxArray*)prhs[4] 24 #define LAMBDAG (mxArray*)prhs[5] 25 #define INPUTS (mxArray*)prhs[6] 26 #define ANALYSIS (mxArray*)prhs[7] 27 #define SUBANALYSIS (mxArray*)prhs[8] 24 #define INPUTS (mxArray*)prhs[5] 25 #define ANALYSIS (mxArray*)prhs[6] 26 #define SUBANALYSIS (mxArray*)prhs[7] 28 27 29 28 /* serial output macros: */ … … 34 33 #define NLHS 1 35 34 #undef NRHS 36 #define NRHS 935 #define NRHS 8 37 36 38 37
Note:
See TracChangeset
for help on using the changeset viewer.