/*\file SystemMatrices.c *\brief: build system matrices (stiffness matrix, loads vector) */ #include "./SystemMatrices.h" void mexFunction( int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[]){ /*diverse: */ int noerr=1; /*input datasets: */ DataSet* elements=NULL; DataSet* nodes=NULL; DataSet* vertices=NULL; DataSet* loads=NULL; DataSet* materials=NULL; Parameters* parameters=NULL; int kflag,pflag; int connectivity; int numberofdofspernode; int analysis_type; int sub_analysis_type; /* output datasets: */ Mat Kgg=NULL; Vec pg=NULL; /*Boot module: */ MODULEBOOT(); /*checks on arguments on the matlab side: */ CheckNumMatlabArguments(nlhs,NLHS,nrhs,NRHS,__FUNCT__,&SystemMatricesUsage); /*Input datasets: */ FetchData(&elements,ELEMENTS); FetchData(&nodes,NODES); FetchData(&vertices,VERTICES); FetchData(&loads,LOADS); FetchData(&materials,MATERIALS); FetchParams(¶meters,PARAMETERS); /*parameters: */ parameters->FindParam(&kflag,KflagEnum); parameters->FindParam(&pflag,PflagEnum); parameters->FindParam(&connectivity,ConnectivityEnum); parameters->FindParam(&numberofdofspernode,NumberOfDofsPerNodeEnum); FetchData(&analysis_type,ANALYSIS); FetchData(&sub_analysis_type,SUBANALYSIS); /*!Generate internal degree of freedom numbers: */ SystemMatricesx(&Kgg, &pg,elements,nodes,vertices,loads,materials,parameters,kflag,pflag,connectivity,numberofdofspernode,analysis_type,sub_analysis_type); /*write output datasets: */ WriteData(KGG,Kgg); WriteData(PG,pg); /*Free ressources: */ delete elements; delete nodes; delete vertices; delete loads; delete materials; delete parameters; MatFree(&Kgg); VecFree(&pg); /*end module: */ MODULEEND(); } void SystemMatricesUsage(void) { _printf_("\n"); _printf_(" usage: [Kgg,pg] = %s(elements,nodes,vertices,loads,materials,params,analysis_type);\n",__FUNCT__); _printf_("\n"); }