Changeset 5698
- Timestamp:
- 09/08/10 08:05:59 (15 years ago)
- Location:
- issm/trunk/src
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/io/FetchData.cpp
r4782 r5698 14 14 15 15 #ifdef _SERIAL_ 16 /***************** **************** **************** **************** **************** **************** **************** **************** **************** ****************17 Serial Fetch Data Routines, all overloaded.18 **************** **************** **************** **************** **************** **************** **************** **************** **************** *****************/19 16 #include <mex.h> 20 17 /*FUNCTION FetchData(DataSet** pdataset,const mxArray* dataref){{{1*/ … … 298 295 void FetchData(bool* pboolean,const mxArray* dataref){ 299 296 300 bool boolean;297 bool* mxbool_ptr=NULL; 301 298 302 299 if (mxIsClass(dataref,"logical")){ 303 /*Recover the double: */ 304 boolean=(bool)mxGetScalar(dataref); 300 if(mxGetM(dataref)!=1) ISSMERROR("input data is not of size 1x1"); 301 if(mxGetN(dataref)!=1) ISSMERROR("input data is not of size 1x1"); 302 mxbool_ptr=mxGetLogicals(dataref); 305 303 } 306 304 else{ … … 308 306 } 309 307 310 /*Assign output pointers:*/ 311 *pboolean=boolean; 308 *pboolean=*mxbool_ptr; 312 309 } 313 310 /*}}}*/ … … 315 312 316 313 #if defined(_PARALLEL_) && defined(_HAVE_PETSC_) 317 /***************** **************** **************** **************** **************** **************** **************** **************** **************** ****************318 Parallel Fetch Data Routines, all overloaded.319 **************** **************** **************** **************** **************** **************** **************** **************** **************** *****************/320 314 /*FUNCTION FetchData(double** pmatrix, int* pM,int* pN,FILE* fid){{{1*/ 321 315 void FetchData(double** pmatrix, int* pM,int* pN,FILE* fid){ -
issm/trunk/src/c/modules/Solverx/Solverx.cpp
r5689 r5698 98 98 } 99 99 } 100 KSPSolve(ksp,pf,uf); 100 if(verbose){ 101 double max,min; 102 KSPSetComputeSingularValues(ksp,PETSC_TRUE); 103 KSPSetUp(ksp); 104 KSPSolve(ksp,pf,uf); 105 KSPComputeExtremeSingularValues(ksp,&max,&min); 106 printf("Condition number = %g %g\n",max,min); 107 } 108 else{ 109 KSPSolve(ksp,pf,uf); 110 } 101 111 102 112 /*Check convergence*/ -
issm/trunk/src/c/solvers/solver_thermal_nonlinear.cpp
r5693 r5698 55 55 56 56 /*===================== DEBUGING ====================*/ 57 if (count==1) SystemMatricesx(&Kgg_nopenalty,&pg_nopenalty,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters );57 if (count==1) SystemMatricesx(&Kgg_nopenalty,&pg_nopenalty,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,true,true,false,false); 58 58 MatDuplicate(Kgg_nopenalty,MAT_COPY_VALUES,&Kgg); 59 59 VecDuplicatePatch(&pg,pg_nopenalty); -
issm/trunk/src/m/classes/public/solversettomumps.m
r2261 r5698 5 5 % md=solversettomumps(md) 6 6 7 md.solverstring=' 7 md.solverstring='-mat_type aijmumps -ksp_type preonly -pc_type lu -mat_mumps_icntl_14 120 -pc_factor_shift_positive_definite true'; 8 8 9 9 %optional -
issm/trunk/src/m/solvers/solver_thermal_nonlinear.m
r5693 r5698 21 21 % ================= DEBUG FOR NOW ==================== 22 22 if count==1 23 [K_gg_nopenalty,p_g_nopenalty,melting_offset]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters );23 [K_gg_nopenalty,p_g_nopenalty,melting_offset]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,true,true,false,false); 24 24 end 25 25 [K_gg , p_g, melting_offset]=PenaltySystemMatrices(K_gg_nopenalty,p_g_nopenalty,femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters); -
issm/trunk/src/mex/Solver/Solver.cpp
r5686 r5698 8 8 9 9 /*input datasets: */ 10 Mat Kff=NULL; 11 Vec pf=NULL; 12 Vec uf0=NULL; 13 char* solver_string=NULL; 14 Parameters* parameters=NULL; 10 Mat Kff = NULL; 11 Vec pf = NULL; 12 Vec uf0 = NULL; 13 Vec uf = NULL; 14 char *solver_string = NULL; 15 Parameters *parameters = NULL; 16 int verbose; 15 17 16 18 /*Matlab solver: */ … … 18 20 char* matlabstring="-ksp_type matlab"; 19 21 20 /* output datasets: */21 Vec uf=NULL;22 23 /*Boot module: */24 22 MODULEBOOT(); 25 23 … … 30 28 FetchParams(¶meters,PARAMETERS); 31 29 parameters->FindParam(&solver_string,SolverStringEnum); 30 int verbose; parameters->FindParam(&verbose,VerboseEnum); 32 31 33 32 /*Fetch rest of data only if not running the matlab solver: */ … … 44 43 else{ 45 44 /*Matlab solver: */ 45 if (verbose) printf(" Solving\n"); 46 46 array[0]=KFF; 47 47 array[1]=PF; … … 57 57 xfree((void**)&solver_string); 58 58 59 /*end module: */60 59 MODULEEND(); 61 60 } -
issm/trunk/src/mex/SystemMatrices/SystemMatrices.cpp
r5693 r5698 14 14 Materials *materials = NULL; 15 15 Parameters *parameters = NULL; 16 bool kflag,pflag,penalty_kflag,penalty_pflag; 16 17 17 18 /* output datasets: */ … … 24 25 25 26 /*checks on arguments on the matlab side: */ 26 CheckNumMatlabArguments(nlhs,NLHS,nrhs,NRHS,__FUNCT__,&SystemMatricesUsage); 27 if((nlhs!=NLHS) || (nrhs!=6 && nrhs!=10)){ 28 SystemMatricesUsage(); 29 ISSMERROR(" usage. See above"); 30 } 27 31 28 32 /*Input datasets: */ … … 41 45 42 46 /*!Generate internal degree of freedom numbers: */ 43 SystemMatricesx(&Kgg,&pg,&kmax,elements,nodes,vertices,loads,materials,parameters); 47 if(nrhs==10){ 48 FetchData(&kflag,KFLAG); 49 FetchData(&pflag,PFLAG); 50 FetchData(&penalty_kflag,PENALTYKFLAG); 51 FetchData(&penalty_pflag,PENALTYPFLAG); 52 SystemMatricesx(&Kgg,&pg,&kmax,elements,nodes,vertices,loads,materials,parameters,kflag,pflag,penalty_kflag,penalty_pflag); 53 } 54 else 55 SystemMatricesx(&Kgg,&pg,&kmax,elements,nodes,vertices,loads,materials,parameters); 44 56 45 57 /*write output datasets: */ … … 66 78 _printf_("\n"); 67 79 _printf_(" usage: [Kgg,pg,kmax] = %s(elements,nodes,vertices,loads,materials,parameters);\n",__FUNCT__); 80 _printf_(" usage: [Kgg,pg,kmax] = %s(elements,nodes,vertices,loads,materials,parameters,kflag,pflag,penalty_kflag,penalty_pflag);\n",__FUNCT__); 68 81 _printf_("\n"); 69 82 } -
issm/trunk/src/mex/SystemMatrices/SystemMatrices.h
r5693 r5698 18 18 19 19 /* serial input macros: */ 20 #define ELEMENTS (mxArray *)prhs[0] 21 #define NODES (mxArray *)prhs[1] 22 #define VERTICES (mxArray *)prhs[2] 23 #define LOADS (mxArray *)prhs[3] 24 #define MATERIALS (mxArray *)prhs[4] 25 #define PARAMETERS (mxArray *)prhs[5] 20 #define ELEMENTS (mxArray *)prhs[0] 21 #define NODES (mxArray *)prhs[1] 22 #define VERTICES (mxArray *)prhs[2] 23 #define LOADS (mxArray *)prhs[3] 24 #define MATERIALS (mxArray *)prhs[4] 25 #define PARAMETERS (mxArray *)prhs[5] 26 #define KFLAG (mxArray *)prhs[6] 27 #define PFLAG (mxArray *)prhs[7] 28 #define PENALTYKFLAG (mxArray *)prhs[8] 29 #define PENALTYPFLAG (mxArray *)prhs[9] 26 30 27 31 /* serial output macros: */ … … 34 38 #define NLHS 3 35 39 #undef NRHS 36 #define NRHS 640 #define NRHS 10 37 41 38 42 #endif /* _SYSTEMMATRICES_H */
Note:
See TracChangeset
for help on using the changeset viewer.