source: issm/trunk-jpl/src/mex/DakotaResponses/DakotaResponses.cpp@ 11933

Last change on this file since 11933 was 11933, checked in by Eric.Larour, 13 years ago

New FetchData and WriteData interface

File size: 2.7 KB
RevLine 
[4453]1/*\file DakotaResponses.c
2*\brief: compute dakota responses after a run
[4449]3*/
4
[4453]5#include "./DakotaResponses.h"
[4449]6
7void mexFunction( int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[]){
8
[4453]9 int i;
[4449]10
11 /*input datasets: */
12 Elements* elements=NULL;
13 Nodes* nodes=NULL;
14 Vertices* vertices=NULL;
15 Loads* loads=NULL;
16 Materials* materials=NULL;
17 Parameters* parameters=NULL;
18 double* responses=NULL;
19 char** responses_descriptors=NULL;
20 char* string=NULL;
21 int numresponses;
[5481]22 int numresponsedescriptors;
[4449]23 mxArray* pfield=NULL;
[4453]24 int stringlength;
[4449]25
26 /*Boot module: */
27 MODULEBOOT();
28
29 /*checks on arguments on the matlab side: */
[4453]30 CheckNumMatlabArguments(nlhs,NLHS,nrhs,NRHS,__FUNCT__,&DakotaResponsesUsage);
[4449]31
32 /*Input datasets: */
[11933]33 FetchData((DataSet**)&elements,ELEMENTSIN);
34 FetchData((DataSet**)&nodes,NODESIN);
35 FetchData((DataSet**)&vertices,VERTICESIN);
36 FetchData((DataSet**)&loads,LOADSIN);
37 FetchData((DataSet**)&materials,MATERIALSIN);
38 FetchData(&parameters,PARAMETERSIN);
[5481]39
40 /*number of responses: */
[9650]41 parameters->FindParam(&numresponses,QmuNumberofresponsesEnum);
[4449]42
43 /*dakota input: */
[5481]44 numresponsedescriptors=mxGetM(RESPONSESDESCRIPTORS);
45 responses_descriptors=(char**)xmalloc(numresponsedescriptors*sizeof(char*));
46 for(i=0;i<numresponsedescriptors;i++){
[4449]47 pfield=mxGetCell(RESPONSESDESCRIPTORS,i);
48 stringlength = (mxGetM(pfield) * mxGetN(pfield) * sizeof(mxChar)) + 1 ;
[4525]49 string=(char*)xmalloc(stringlength);
[4449]50 mxGetString(pfield,string,stringlength);
51 responses_descriptors[i]=string;
52 }
53
54 /*Allocate responses: */
55 responses=(double*)xmalloc(numresponses*sizeof(double));
[4617]56
57 /*configure: */
58 elements-> Configure(elements,loads, nodes,vertices, materials,parameters);
59 nodes-> Configure(elements,loads, nodes,vertices, materials,parameters);
60 loads-> Configure(elements, loads, nodes,vertices, materials,parameters);
[4449]61
62 /*!Generate internal degree of freedom numbers: */
[6231]63 DakotaResponsesx(responses,elements,nodes, vertices,loads,materials, parameters, responses_descriptors,numresponsedescriptors,numresponses);
[4449]64
65 /*write output datasets: */
[11933]66 WriteData(RESPONSES,responses,numresponses);
[4449]67
68 /*Free ressources: */
69 delete elements;
70 delete nodes;
71 delete vertices;
72 delete loads;
73 delete materials;
74 delete parameters;
75
[5481]76 for(i=0;i<numresponsedescriptors;i++){
[4449]77 char* string=responses_descriptors[i]; xfree((void**)&string);
78 }
79 xfree((void**)&responses_descriptors);
[4532]80
81 //xfree((void**)&responses); do not free responses!
[4449]82
83 /*end module: */
84 MODULEEND();
85}
86
[4453]87void DakotaResponsesUsage(void)
[4449]88{
[6412]89 _printf_(true,"\n");
90 _printf_(true," usage: [responses] = %s(elements,nodes,vertices,loads,materials,parameters,responses_descritpors);\n",__FUNCT__);
91 _printf_(true,"\n");
[4449]92}
Note: See TracBrowser for help on using the repository browser.