Changeset 5480
- Timestamp:
- 08/23/10 00:31:34 (15 years ago)
- Location:
- issm/trunk/src/c/modules/DakotaResponsesx
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified issm/trunk/src/c/modules/DakotaResponsesx/DakotaResponsesx.cpp ¶
r5334 r5480 18 18 19 19 20 void DakotaResponsesx(double* responses,Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials, Parameters* parameters,char** responses_descriptors,intnumresponses){20 void DakotaResponsesx(double* d_responses,Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials, Parameters* parameters,Vec node_partition,char** responses_descriptors,int numresponsedescriptors,int d_numresponses){ 21 21 22 22 int i,j,k; 23 int dummy;24 int counter;25 23 extern int my_rank; 26 24 bool process_units = true; 27 25 28 26 /*intermediary: */ 29 char* response_descriptor=NULL; 27 char root[50]; 28 int index; 29 int npart; 30 30 double femmodel_response; 31 int flag; 32 double* vertex_response=NULL; 33 double* partition_response=NULL; 34 35 double* responses_pointer=NULL; 36 37 /*retrieve npart: */ 38 parameters->FindParam(&npart,QmuNPartEnum); 39 40 /*save the d_responses pointer: */ 41 responses_pointer=d_responses; 42 43 //watch out, we have more d_numresponses than numresponsedescriptors, because the responses have been expanded if they were scaled. 44 //because we don't know the d_responses descriptors (the scaled ones) we can't key off them, so we will key off the responses_descriptors: */ 45 46 for(i=0;i<numresponsedescriptors;i++){ 47 48 flag=DescriptorIndex(root,&index,responses_descriptors[i]); 49 50 if(flag==ScaledEnum){ 51 52 /*this response was scaled. pick up the response from the inputs: */ 53 GetVectorFromInputsx(&vertex_response,elements,nodes, vertices, loads, materials, parameters, StringToEnum(root),VertexEnum); 54 55 /*Now, average it onto the partition grids: */ 56 AverageOntoPartitionx(&partition_response,vertex_response,vertices,parameters,node_partition); 57 58 /*Copy onto our dakota responses: */ 59 for(i=0;i<npart;i++)responses_pointer[i]=partition_response[i]; 60 61 /*Free ressources:*/ 62 xfree((void**)&vertex_response); 63 xfree((void**)&partition_response); 64 65 /*increment response_pointer :*/ 66 responses_pointer+=npart; 67 68 } 69 else if (flag==IndexedEnum){ 70 71 /*indexed response: plug index into parameters and call response module: */ 72 parameters->SetParam(index,IndexEnum); 31 73 32 for(i=0;i<numresponses;i++){ 74 //Responsex(responses_pointer,elements,nodes, vertices,loads,materials, parameters,root,process_units); 75 Responsex(&femmodel_response,elements,nodes, vertices,loads,materials, parameters,root,process_units); 76 77 if(my_rank==0){ 78 /*plug response: */ 79 responses_pointer[0]=femmodel_response; 33 80 34 response_descriptor=responses_descriptors[i]; 81 /*increment response_pointer :*/ 82 responses_pointer++; 83 } 84 } 85 else if (flag==NodalEnum){ 86 ISSMERROR(" nodal response functions not supported yet!"); 35 87 36 /*Compute response for this response_descriptor:*/ 37 Responsex(&femmodel_response,elements,nodes, vertices,loads,materials, parameters,response_descriptor,process_units); 88 /*increment response_pointer :*/ 89 responses_pointer++; 90 } 91 else if (flag==RegularEnum){ 92 93 /*perfectly normal response function: */ 94 Responsex(&femmodel_response,elements,nodes, vertices,loads,materials, parameters,root,process_units); 38 95 39 #ifdef _DEBUG_ 40 if(my_rank==0)printf("response: %s: %g\n",response_descriptor,femmodel_response); 41 #endif 42 43 /*send response back to Dakota only on cpu 0: */ 44 if(my_rank==0)responses[i]=femmodel_response; 96 if(my_rank==0){ 97 /*plug response: */ 98 responses_pointer[0]=femmodel_response; 99 100 /*increment response_pointer :*/ 101 responses_pointer++; 102 } 103 } 104 else ISSMERROR("%s%i%s"," flag type ",flag," not supported yet for response analysis"); 45 105 } 106 46 107 47 108 /*Synthesize echo: {{{*/ 48 109 if(my_rank==0){ 49 printf(" responses: %i: ", numresponses);50 for(i=0;i< numresponses-1;i++)printf("%g|",responses[i]);51 printf("%g", responses[numresponses-1]);110 printf(" responses: %i: ",d_numresponses); 111 for(i=0;i<d_numresponses-1;i++)printf("%g|",d_responses[i]); 112 printf("%g",d_responses[d_numresponses-1]); 52 113 printf("\n"); 53 114 } -
TabularUnified issm/trunk/src/c/modules/DakotaResponsesx/DakotaResponsesx.h ¶
r4449 r5480 9 9 #include "../../Container/Container.h" 10 10 11 void DakotaResponsesx(double* responses,Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials, Parameters* parameters,char** responses_descriptors,intnumresponses);11 void DakotaResponsesx(double* d_responses,Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials, Parameters* parameters,Vec node_partition,char** responses_descriptors,int numresponsedescriptors,int d_numresponses); 12 12 13 13 #endif /* _DAKOTARESPONSESXX_H */
Note:
See TracChangeset
for help on using the changeset viewer.