source: issm/trunk/src/mex/SystemMatrices/SystemMatrices.cpp@ 6412

Last change on this file since 6412 was 6412, checked in by Mathieu Morlighem, 14 years ago

moved ISSMERROR to _error_, ISSMASSERT to _assert_ and ISSMPRINTF to _printf_

File size: 2.6 KB
RevLine 
[1]1/*\file SystemMatrices.c
2 *\brief: build system matrices (stiffness matrix, loads vector)
3 */
4
5#include "./SystemMatrices.h"
6
7void mexFunction( int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[]){
8
9 /*input datasets: */
[5689]10 Elements *elements = NULL;
11 Nodes *nodes = NULL;
12 Vertices *vertices = NULL;
13 Loads *loads = NULL;
14 Materials *materials = NULL;
15 Parameters *parameters = NULL;
[5698]16 bool kflag,pflag,penalty_kflag,penalty_pflag;
[1]17
18 /* output datasets: */
[5693]19 Mat Kgg = NULL;
[5775]20 Mat Kff = NULL;
21 Mat Kfs = NULL;
[5693]22 Vec pg = NULL;
[5775]23 Vec pf = NULL;
[5693]24 double kmax;
[1]25
26 /*Boot module: */
27 MODULEBOOT();
28
29 /*checks on arguments on the matlab side: */
[5698]30 if((nlhs!=NLHS) || (nrhs!=6 && nrhs!=10)){
31 SystemMatricesUsage();
[6412]32 _error_(" usage. See above");
[5698]33 }
[1]34
35 /*Input datasets: */
[4215]36 FetchData((DataSet**)&elements,ELEMENTS);
[4211]37 FetchData((DataSet**)&nodes,NODES);
[4213]38 FetchData((DataSet**)&vertices,VERTICES);
[4214]39 FetchData((DataSet**)&loads,LOADS);
[4218]40 FetchData((DataSet**)&materials,MATERIALS);
[2333]41 FetchParams(&parameters,PARAMETERS);
42
[4573]43 /*configure: */
44 elements-> Configure(elements,loads, nodes,vertices, materials,parameters);
45 nodes-> Configure(elements,loads, nodes,vertices, materials,parameters);
46 loads-> Configure(elements, loads, nodes,vertices, materials,parameters);
[5689]47 materials-> Configure(elements, loads, nodes,vertices, materials,parameters);
[4573]48
[1]49 /*!Generate internal degree of freedom numbers: */
[5698]50 if(nrhs==10){
51 FetchData(&kflag,KFLAG);
52 FetchData(&pflag,PFLAG);
53 FetchData(&penalty_kflag,PENALTYKFLAG);
54 FetchData(&penalty_pflag,PENALTYPFLAG);
[5775]55 SystemMatricesx(&Kgg,&Kff,&Kfs,&pg,&pf,&kmax,elements,nodes,vertices,loads,materials,parameters,kflag,pflag,penalty_kflag,penalty_pflag);
[5698]56 }
57 else
[5775]58 SystemMatricesx(&Kgg,&Kff,&Kfs,&pg,&pf,&kmax,elements,nodes,vertices,loads,materials,parameters);
[1]59
60 /*write output datasets: */
[2316]61 WriteData(KGG,Kgg);
[5775]62 WriteData(KFF,Kff);
63 WriteData(KFS,Kfs);
[2316]64 WriteData(PG,pg);
[5775]65 WriteData(PF,pf);
[5693]66 WriteData(KMAX,kmax);
[1]67
68 /*Free ressources: */
69 delete elements;
70 delete nodes;
[3445]71 delete vertices;
[1]72 delete loads;
73 delete materials;
[2333]74 delete parameters;
[1]75 MatFree(&Kgg);
[5775]76 MatFree(&Kff);
77 MatFree(&Kfs);
[1]78 VecFree(&pg);
[5775]79 VecFree(&pf);
[1]80
81 /*end module: */
82 MODULEEND();
83}
84
85void SystemMatricesUsage(void)
86{
[6412]87 _printf_(true,"\n");
88 _printf_(true," usage: [Kgg,Kff,Kfs,pg,pf,kmax] = %s(elements,nodes,vertices,loads,materials,parameters);\n",__FUNCT__);
89 _printf_(true," usage: [Kgg,Kff,Kfs,pg,pf,kmax] = %s(elements,nodes,vertices,loads,materials,parameters,kflag,pflag,penalty_kflag,penalty_pflag);\n",__FUNCT__);
90 _printf_(true,"\n");
[1]91}
Note: See TracBrowser for help on using the repository browser.