Changeset 5903
- Timestamp:
- 09/20/10 10:13:52 (14 years ago)
- Location:
- issm/trunk
- Files:
-
- 2 added
- 1 deleted
- 22 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h ¶
r5803 r5903 365 365 NodalEnum, 366 366 ResponseDescriptorsEnum, 367 SolverStringEnum,367 PetscRcEnum, 368 368 SparsityEnum, 369 369 TolXEnum, -
TabularUnified issm/trunk/src/c/EnumDefinitions/EnumToString.cpp ¶
r5803 r5903 327 327 case NodalEnum : return "Nodal"; 328 328 case ResponseDescriptorsEnum : return "ResponseDescriptors"; 329 case SolverStringEnum : return "SolverString";329 case PetscRcEnum : return "PetscRc"; 330 330 case SparsityEnum : return "Sparsity"; 331 331 case TolXEnum : return "TolX"; -
TabularUnified issm/trunk/src/c/EnumDefinitions/StringToEnum.cpp ¶
r5803 r5903 325 325 else if (strcmp(name,"Nodal")==0) return NodalEnum; 326 326 else if (strcmp(name,"ResponseDescriptors")==0) return ResponseDescriptorsEnum; 327 else if (strcmp(name," SolverString")==0) return SolverStringEnum;327 else if (strcmp(name,"PetscRc")==0) return PetscRcEnum; 328 328 else if (strcmp(name,"Sparsity")==0) return SparsityEnum; 329 329 else if (strcmp(name,"TolX")==0) return TolXEnum; -
TabularUnified issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp ¶
r5772 r5903 64 64 parameters->AddObject(new DoubleParam(ViscosityOvershootEnum,iomodel->viscosity_overshoot)); 65 65 parameters->AddObject(new BoolParam(WaitOnLockEnum,iomodel->waitonlock)); 66 parameters->AddObject(new StringParam( SolverStringEnum,iomodel->solverstring));66 parameters->AddObject(new StringParam(PetscRcEnum,iomodel->petscrc)); 67 67 parameters->AddObject(new IntParam(NumberOfElementsEnum,iomodel->numberofelements)); 68 68 parameters->AddObject(new BoolParam(KffEnum,iomodel->kff)); -
TabularUnified issm/trunk/src/c/modules/Solverx/Solverx.cpp ¶
r5896 r5903 27 27 PetscTruth flag; 28 28 int solver_type; 29 char* solver_string=NULL; 29 char* petscrc=NULL; 30 bool fromlocalsize=true; 31 30 32 31 33 /*Display message*/ … … 44 46 } 45 47 else{ 46 MatGetLocalSize(Kff,&local_m,&local_n);uf=NewVec(local_n, true);48 MatGetLocalSize(Kff,&local_m,&local_n);uf=NewVec(local_n,fromlocalsize); 47 49 } 48 50 49 /*Before preparing the solver, add options to the options database*/50 parameters->FindParam(&solver_string,SolverStringEnum);51 PetscOptionsInsertMultipleString(solver_string);52 51 53 /*Process solver_string to see if we are not using special types of external solvers: */ 54 PetscOptionsDetermineSolverType(&solver_type,solver_string); 52 /*Process petscrc to see if we are not using special types of external solvers: */ 53 parameters->FindParam(&petscrc,PetscRcEnum); 54 PetscOptionsDetermineSolverType(&solver_type,petscrc); 55 56 /*In serial mode, we don't have a petsc.rc file to boot the Petsc options. Do it now 57 * using the petscrc string recover in the parameters: */ 58 #ifdef _SERIAL_ 59 PetscOptionsInsertMultipleString(petscrc); 55 60 56 #if _PETSC_VERSION_ == 2 57 if (solver_type==MUMPSPACKAGE_LU){ 58 /*Convert Kff to MATTAIJMUMPS: */ 59 MatConvert(Kff,MATAIJMUMPS,MAT_REUSE_MATRIX,&Kff); 60 } 61 if (solver_type==MUMPSPACKAGE_CHOL){ 62 /*Convert Kff to MATTSBAIJMUMPS: */ 63 MatConvert(Kff,MATSBAIJMUMPS,MAT_REUSE_MATRIX,&Kff); 64 } 65 if (solver_type==SPOOLESPACKAGE_LU){ 66 /*Convert Kff to MATTSBAIJMUMPS: */ 67 MatConvert(Kff,MATAIJSPOOLES,MAT_REUSE_MATRIX,&Kff); 68 } 69 if (solver_type==SPOOLESPACKAGE_CHOL){ 70 /*Convert Kff to MATTSBAIJMUMPS: */ 71 MatConvert(Kff,MATSBAIJSPOOLES,MAT_REUSE_MATRIX,&Kff); 72 } 73 if (solver_type==SUPERLUDISTPACKAGE){ 74 /*Convert Kff to MATTSBAIJMUMPS: */ 75 MatConvert(Kff,MATSUPERLU_DIST,MAT_REUSE_MATRIX,&Kff); 76 } 61 /*In serial mode, matrices have been loaded at MPIAIJ or AIJ matrices. 62 * We need to convert them if we are going to run the solvers successfully: */ 63 #if _PETSC_VERSION_ == 2 64 if (solver_type==MUMPSPACKAGE_LU){ 65 /*Convert Kff to MATTAIJMUMPS: */ 66 MatConvert(Kff,MATAIJMUMPS,MAT_REUSE_MATRIX,&Kff); 67 } 68 if (solver_type==MUMPSPACKAGE_CHOL){ 69 /*Convert Kff to MATTSBAIJMUMPS: */ 70 MatConvert(Kff,MATSBAIJMUMPS,MAT_REUSE_MATRIX,&Kff); 71 } 72 if (solver_type==SPOOLESPACKAGE_LU){ 73 /*Convert Kff to MATTSBAIJMUMPS: */ 74 MatConvert(Kff,MATAIJSPOOLES,MAT_REUSE_MATRIX,&Kff); 75 } 76 if (solver_type==SPOOLESPACKAGE_CHOL){ 77 /*Convert Kff to MATTSBAIJMUMPS: */ 78 MatConvert(Kff,MATSBAIJSPOOLES,MAT_REUSE_MATRIX,&Kff); 79 } 80 if (solver_type==SUPERLUDISTPACKAGE){ 81 /*Convert Kff to MATTSBAIJMUMPS: */ 82 MatConvert(Kff,MATSUPERLU_DIST,MAT_REUSE_MATRIX,&Kff); 83 } 84 #endif 77 85 #endif 78 86 … … 82 90 KSPSetFromOptions(ksp); 83 91 84 #if _PETSC_VERSION_ == 3 85 /*specific solver?: */ 86 KSPGetPC(ksp,&pc); 87 if (solver_type==MUMPSPACKAGE_LU){ 88 PCFactorSetMatSolverPackage(pc,MAT_SOLVER_MUMPS); 89 } 92 #ifdef _SERIAL_ 93 #if _PETSC_VERSION_ == 3 94 /*specific solver?: */ 95 KSPGetPC(ksp,&pc); 96 if (solver_type==MUMPSPACKAGE_LU){ 97 PCFactorSetMatSolverPackage(pc,MAT_SOLVER_MUMPS); 98 } 99 #endif 90 100 #endif 91 101 … … 98 108 } 99 109 } 110 111 /*Solve: */ 100 112 KSPSolve(ksp,pf,uf); 101 113 … … 106 118 /*Free ressources:*/ 107 119 KSPFree(&ksp); 108 xfree((void**)& solver_string);120 xfree((void**)&petscrc); 109 121 110 122 /*Assign output pointers:*/ -
TabularUnified issm/trunk/src/c/modules/SystemMatricesx/SystemMatricesx.cpp ¶
r5895 r5903 160 160 } 161 161 } 162 162 163 163 /*Assign output pointers: */ 164 164 if(pKgg) *pKgg=Kgg; -
TabularUnified issm/trunk/src/c/objects/IoModel.cpp ¶
r5772 r5903 48 48 xfree((void**)&this->gridonpattyn); 49 49 } 50 xfree((void**)&this-> solverstring);50 xfree((void**)&this->petscrc); 51 51 xfree((void**)&this->elementonbed); 52 52 xfree((void**)&this->elementonsurface); … … 182 182 IoModelFetchData(&this->connectivity,iomodel_handle,"connectivity"); 183 183 IoModelFetchData(&this->lowmem,iomodel_handle,"lowmem"); 184 IoModelFetchData(&this-> solverstring,iomodel_handle,"solverstring");184 IoModelFetchData(&this->petscrc,iomodel_handle,"petscrc"); 185 185 IoModelFetchData(&this->viscosity_overshoot,iomodel_handle,"viscosity_overshoot"); 186 186 IoModelFetchData(&this->artdiff,iomodel_handle,"artificial_diffusivity"); … … 227 227 this->control_analysis=0; 228 228 this->control_parameter=NULL; 229 this-> solverstring=NULL;229 this->petscrc=NULL; 230 230 this->numberofvariables=0; 231 231 this->numvariabledescriptors=0; -
TabularUnified issm/trunk/src/c/objects/IoModel.h ¶
r5772 r5903 22 22 int qmu_analysis; 23 23 int control_analysis; 24 char* solverstring;24 char* petscrc; 25 25 26 26 /*2d mesh: */ -
TabularUnified issm/trunk/src/c/solutions/issm.cpp ¶
r5471 r5903 42 42 43 43 /*Initialize Petsc and get start time*/ 44 PetscInitialize(&argc,&argv, (char *)0,"");44 PetscInitialize(&argc,&argv,"petsc.rc",""); 45 45 MPI_Barrier(MPI_COMM_WORLD); start=MPI_Wtime(); 46 46 -
TabularUnified issm/trunk/src/m/classes/@model/model.m ¶
r5772 r5903 270 270 271 271 %PETSc and MATLAB solver string 272 md. solverstring='';273 md. solver_type='';272 md.petscoptions=NaN; 273 md.petscrc=''; 274 274 275 275 %Analysis and sub_analysis -
TabularUnified issm/trunk/src/m/classes/@model/setdefaultparameters.m ¶
r5772 r5903 250 250 md.alloc_cleanup=1; 251 251 252 %the string of solverstring is used directly by PETSc to solve finite element 253 %systems KU=F. By default, we use MUMPS solver 252 %set petsc options cell array, so that PETSC uses the correct solvers 254 253 md=solversettomumps(md); 255 256 %Ice solver: 'general' for Matlab's default solver (or 'lu' or 'sholesky')257 md.solver_type='general';258 254 259 255 %solution speed-up -
TabularUnified issm/trunk/src/m/enum/EnumToString.m ¶
r5804 r5903 322 322 case NodalEnum(), string='Nodal'; return 323 323 case ResponseDescriptorsEnum(), string='ResponseDescriptors'; return 324 case SolverStringEnum(), string='SolverString'; return324 case PetscRcEnum(), string='PetscRc'; return 325 325 case SparsityEnum(), string='Sparsity'; return 326 326 case TolXEnum(), string='TolX'; return -
TabularUnified issm/trunk/src/m/enum/StringToEnum.m ¶
r5804 r5903 320 320 elseif (strcmpi(name,'Nodal')), enum=NodalEnum(); return 321 321 elseif (strcmpi(name,'ResponseDescriptors')), enum=ResponseDescriptorsEnum(); return 322 elseif (strcmpi(name,' SolverString')), enum=SolverStringEnum(); return322 elseif (strcmpi(name,'PetscRc')), enum=PetscRcEnum(); return 323 323 elseif (strcmpi(name,'Sparsity')), enum=SparsityEnum(); return 324 324 elseif (strcmpi(name,'TolX')), enum=TolXEnum(); return -
TabularUnified issm/trunk/src/m/model/marshall.m ¶
r5772 r5903 134 134 WriteData(fid,md.lowmem,'Integer','lowmem'); 135 135 WriteData(fid,md.optscal,'Mat','optscal'); 136 WriteData(fid,md. solverstring,'String','solverstring');136 WriteData(fid,md.petscrc,'String','petscrc'); 137 137 WriteData(fid,md.viscosity_overshoot,'Scalar','viscosity_overshoot'); 138 138 WriteData(fid,md.stokesreconditioning,'Scalar','stokesreconditioning'); -
TabularUnified issm/trunk/src/m/model/presolve.m ¶
r2382 r5903 33 33 count=count+numpairsforthisrift; 34 34 end 35 36 %deal with petsc options 37 md.petscrc=PetscOptions2PetscRc(md.petscoptions,'petsc.rc'); -
TabularUnified issm/trunk/src/m/model/queue/LaunchQueueJob.m ¶
r5615 r5903 22 22 23 23 %compress the files into one zip. 24 compressstring=['tar -zcf ' md.runtimename '.tar.gz ' md.name '.bin ' md.name '.queue '];24 compressstring=['tar -zcf ' md.runtimename '.tar.gz ' md.name '.bin ' md.name '.queue petsc.rc']; 25 25 if md.qmu_analysis, 26 26 compressstring=[compressstring md.name '.qmu.in']; -
TabularUnified issm/trunk/src/m/model/solvers/solversettoasm.m ¶
r5894 r5903 5 5 % md=solversettoasm(md) 6 6 7 %md. solverstring=' -mat_type aij -ksp_type cgs -pc_type asm -sub_mat_type mumps -sub_pc_type lu -pc_asm_overlap 4 -pc_factor_shift_positive_definite true';8 %md. solverstring=' -mat_type aij -ksp_type cgs -pc_type asm -sub_pc_type lu -pc_asm_overlap 4 ';9 md. solverstring=' -mat_type aij -ksp_type gmres -pc_type asm -sub_pc_type lu -pc_asm_overlap 4 ';7 %md.petscoptions={{'mat_type','aij'},{'ksp_type','cgs'},{'pc_type','asm'},{sub_mat_type','mumps'},{'sub_pc_type','lu'},{'pc_asm_overlap',4},{'pc_factor_shift_positive_definite','true'}}; 8 %md.petscoptions={{'mat_type','aij'},{'ksp_type','cgs'},{'pc_type','asm'},{'sub_pc_type','lu'},{'pc_asm_overlap',4}}; 9 md.petscoptions={{'mat_type','aij'},{'ksp_type','gmres'},{'pc_type','asm'},{'sub_pc_type','lu'},{'pc_asm_overlap',4}}; -
TabularUnified issm/trunk/src/m/model/solvers/solversettomatlab.m ¶
r5894 r5903 5 5 % md=solversettomatlab(md) 6 6 7 md. solverstring='-ksp_type matlab';7 md.petscoptions={{'ksp_type','matlab'}}; -
TabularUnified issm/trunk/src/m/model/solvers/solversettomumps.m ¶
r5894 r5903 5 5 % md=solversettomumps(md) 6 6 7 md.solverstring='-mat_type aijmumps -ksp_type preonly -pc_type lu -mat_mumps_icntl_14 120 -pc_factor_shift_positive_definite true'; 8 9 %optional 10 %md.solverstring=[md.solverstring ' -mat_mumps_icntl_14 40 -mat_mumps_icntl_4 0 -mat_mumps_sym 1 -mat_ignore_lower_triangular']; 7 md.petscoptions={{'mat_type','aijmumps'},{'ksp_type','preonly'},{'pc_type','lu'},{'mat_mumps_icntl_14',120},{'pc_factor_shift_positive_definite','true'}}; -
TabularUnified issm/trunk/src/m/model/solvers/solversettosor.m ¶
r5894 r5903 5 5 % md=solversettosor(md) 6 6 7 md.mat_type='aij'; 8 md.ksp_type='cg'; 9 md.pc_type='sor'; 10 md.solver_extra_option=' -pc_sor_omega 1.1 -pc_sor_its 2 '; 7 md.petscoptions={{'mat_type','aij'},{'ksp_type','cg'},{'pc_type','sor'},{'pc_sor_omega',1.1},{pc_sor_its',2}}; -
TabularUnified issm/trunk/src/mex/Solver/Solver.cpp ¶
r5698 r5903 12 12 Vec uf0 = NULL; 13 13 Vec uf = NULL; 14 char * solver_string= NULL;14 char *petscrc = NULL; 15 15 Parameters *parameters = NULL; 16 16 int verbose; … … 27 27 /*First, check solver string: */ 28 28 FetchParams(¶meters,PARAMETERS); 29 parameters->FindParam(& solver_string,SolverStringEnum);29 parameters->FindParam(&petscrc,PetscRcEnum); 30 30 int verbose; parameters->FindParam(&verbose,VerboseEnum); 31 31 32 32 /*Fetch rest of data only if not running the matlab solver: */ 33 if (strcmp( solver_string,matlabstring)!=0){33 if (strcmp(petscrc,matlabstring)!=0){ 34 34 /*Input datasets: */ 35 35 FetchData(&Kff,KFF); … … 55 55 VecFree(&uf); 56 56 delete parameters; 57 xfree((void**)& solver_string);57 xfree((void**)&petscrc); 58 58 59 59 MODULEEND(); -
TabularUnified issm/trunk/test/NightlyRun/test104.m ¶
r5098 r5903 5 5 md=setelementstype(md,'macayeal','all'); 6 6 md.cluster=oshostname; 7 md.verbose=1; 7 8 md=solve(md,'analysis_type',DiagnosticSolutionEnum); 8 9
Note:
See TracChangeset
for help on using the changeset viewer.