/*\file DakotaResponses.c *\brief: compute dakota responses after a run */ #include "./DakotaResponses.h" void mexFunction( int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[]){ int i; /*input datasets: */ Elements* elements=NULL; Nodes* nodes=NULL; Vertices* vertices=NULL; Loads* loads=NULL; Materials* materials=NULL; Parameters* parameters=NULL; double* responses=NULL; char** responses_descriptors=NULL; char* string=NULL; int numresponses; int numresponsedescriptors; mxArray* pfield=NULL; int stringlength; /*Boot module: */ MODULEBOOT(); /*checks on arguments on the matlab side: */ CheckNumMatlabArguments(nlhs,NLHS,nrhs,NRHS,__FUNCT__,&DakotaResponsesUsage); /*Input datasets: */ FetchMatlabData((DataSet**)&elements,ELEMENTSIN); FetchMatlabData((DataSet**)&nodes,NODESIN); FetchMatlabData((DataSet**)&vertices,VERTICESIN); FetchMatlabData((DataSet**)&loads,LOADSIN); FetchMatlabData((DataSet**)&materials,MATERIALSIN); FetchMatlabData(¶meters,PARAMETERSIN); /*number of responses: */ parameters->FindParam(&numresponses,QmuNumberofresponsesEnum); /*dakota input: */ numresponsedescriptors=mxGetM(RESPONSESDESCRIPTORS); responses_descriptors=(char**)xmalloc(numresponsedescriptors*sizeof(char*)); for(i=0;i Configure(elements,loads, nodes,vertices, materials,parameters); nodes-> Configure(elements,loads, nodes,vertices, materials,parameters); loads-> Configure(elements, loads, nodes,vertices, materials,parameters); /*!Generate internal degree of freedom numbers: */ DakotaResponsesx(responses,elements,nodes, vertices,loads,materials, parameters, responses_descriptors,numresponsedescriptors,numresponses); /*write output datasets: */ WriteMatlabData(RESPONSES,responses,numresponses); /*Free ressources: */ delete elements; delete nodes; delete vertices; delete loads; delete materials; delete parameters; for(i=0;i