Changeset 7391
- Timestamp:
- 02/08/11 21:10:57 (14 years ago)
- Location:
- issm/trunk/src
- Files:
-
- 2 added
- 27 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/Makefile.am
r7312 r7391 1139 1139 ./modules/Solverx/Solverx.cpp\ 1140 1140 ./modules/Solverx/Solverx.h\ 1141 ./modules/Solverx/DofTypesToIndexSet.cpp\ 1141 1142 ./modules/Scotchx/Scotchx.cpp\ 1142 1143 ./modules/Scotchx/Scotchx.h\ -
issm/trunk/src/c/modules/Solverx/Solverx.cpp
r7190 r7391 13 13 #endif 14 14 15 void Solverx(Vec* puf, Mat Kff, Vec pf, Vec uf0, Parameters* parameters){15 void Solverx(Vec* puf, Mat Kff, Vec pf, Vec uf0,Vec df, Parameters* parameters){ 16 16 17 17 /*output: */ … … 29 29 int solver_type; 30 30 bool fromlocalsize = true; 31 /*stokes: */ 32 IS isv=NULL; 33 IS isp=NULL; 31 34 32 35 #if _PETSC_VERSION_ == 3 … … 35 38 #endif 36 39 40 37 41 /*Display message*/ 38 42 _printf_(VerboseModule()," Solving\n"); 39 43 if(VerboseSolver())PetscOptionsPrint(stdout); 40 44 41 /*First, check that f-set is not NULL, ie model is fully constrained: */45 /*First, check that f-set is not NULL, ie model is fully constrained: {{{*/ 42 46 _assert_(Kff); 43 47 MatGetSize(Kff,&global_m,&global_n); _assert_(global_m==global_m); … … 45 49 *puf=NULL; return; 46 50 } 47 51 /*}}}*/ 52 /*Initial guess logic here: {{{1*/ 48 53 /*Now, check that we are not getting an initial guess to the solver, if we are running a direct solver: */ 49 54 #if _PETSC_VERSION_ == 3 … … 60 65 MatGetLocalSize(Kff,&local_m,&local_n);uf=NewVec(local_n,fromlocalsize); 61 66 } 62 63 /*Process petsc options to see if we are not using special types of external solvers: */67 /*}}}*/ 68 /*Process petsc options to see if we are not using special types of external solvers: {{{1*/ 64 69 PetscOptionsDetermineSolverType(&solver_type); 65 70 … … 88 93 MatConvert(Kff,MATSUPERLU_DIST,MAT_REUSE_MATRIX,&Kff); 89 94 } 95 if (solver_type==StokesSolverEnum){ 96 _error_("Petsc 2 does not support multi-physics solvers"); 97 } 90 98 #endif 91 99 #endif 92 93 /*Prepare solver */100 /*}}}*/ 101 /*Prepare solver:{{{1*/ 94 102 KSPCreate(MPI_COMM_WORLD,&ksp); 95 103 KSPSetOperators(ksp,Kff,Kff,DIFFERENT_NONZERO_PATTERN); 96 104 KSPSetFromOptions(ksp); 97 105 98 #ifdef _SERIAL_ 99 #if _PETSC_VERSION_ == 3 106 #if defined(_SERIAL_) && _PETSC_VERSION_==3 100 107 /*specific solver?: */ 101 108 KSPGetPC(ksp,&pc); … … 104 111 } 105 112 #endif 113 114 #if defined(_PARALLEL_) && _PETSC_VERSION_==3 115 /*Stokes: */ 116 if (solver_type==StokesSolverEnum){ 117 /*Make indices out of doftypes: */ 118 if(!df)_error_("need doftypes for Stokes solver!\n"); 119 DofTypesToIndexSet(&isv,&isp,df,StokesSolverEnum); 120 121 /*Set field splits: */ 122 KSPGetPC(ksp,&pc); 123 PCFieldSplitSetIS(pc,isv); 124 PCFieldSplitSetIS(pc,isp); 125 126 } 106 127 #endif 107 128 108 /* If initial guess for solution, use it, except if we are using the MUMPS direct solver, where any initial109 * guess will crash Petsc:*/129 /*}}}*/ 130 /*If initial guess for solution, use it, except if we are using the MUMPS direct solver, where any initial guess will crash Petsc: {{{1*/ 110 131 if (uf0){ 111 132 if( (solver_type!=MUMPSPACKAGE_LU) && (solver_type!=MUMPSPACKAGE_CHOL) && (solver_type!=SPOOLESPACKAGE_LU)&& (solver_type!=SPOOLESPACKAGE_CHOL)&& (solver_type!=SUPERLUDISTPACKAGE)){ … … 113 134 } 114 135 } 136 /*}}}*/ 115 137 116 138 if(VerboseSolver())KSPView(ksp,PETSC_VIEWER_STDOUT_WORLD); … … 125 147 /*Free ressources:*/ 126 148 KSPFree(&ksp); 127 149 128 150 /*Assign output pointers:*/ 129 151 *puf=uf; -
issm/trunk/src/c/modules/Solverx/Solverx.h
r5686 r7391 9 9 10 10 /* local prototypes: */ 11 void Solverx( Vec* puf, Mat Kff, Vec pf, Vec uf0, Parameters* parameters);12 11 void Solverx( Vec* puf, Mat Kff, Vec pf, Vec uf0,Vec df,Parameters* parameters); 12 void DofTypesToIndexSet(IS* pisv, IS* pisp, Vec df,int typeenum); 13 13 #endif /* _SOLVERX_H */ 14 14 -
issm/trunk/src/c/modules/SystemMatricesx/SystemMatricesx.cpp
r6862 r7391 9 9 #include "../../EnumDefinitions/EnumDefinitions.h" 10 10 11 void SystemMatricesx(Mat* pKgg, Mat* pKff, Mat* pKfs, Vec* ppg, Vec* ppf, double* pkmax,Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials, Parameters* parameters,bool kflag,bool pflag,bool penalty_kflag,bool penalty_pflag){11 void SystemMatricesx(Mat* pKgg, Mat* pKff, Mat* pKfs, Vec* ppg, Vec* ppf, Vec* pdg, Vec* pdf, double* pkmax,Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials, Parameters* parameters,bool kflag,bool pflag,bool penalty_kflag,bool penalty_pflag){ 12 12 13 13 /*intermediary: */ … … 26 26 Vec pg = NULL; 27 27 Vec pf = NULL; 28 Vec dg=NULL; 29 Vec df=NULL; 28 30 double kmax = 0; 29 31 … … 52 54 if(kflag){ 53 55 54 if(!buildkff)Kgg=NewMat(gsize,gsize,connectivity,numberofdofspernode); 56 if(!buildkff){ 57 Kgg=NewMat(gsize,gsize,connectivity,numberofdofspernode); 58 dg=NewVec(gsize); 59 } 55 60 else{ 56 61 Kff=NewMat(fsize,fsize,connectivity,numberofdofspernode); 57 62 Kfs=NewMat(fsize,ssize,connectivity,numberofdofspernode); 63 df=NewVec(fsize); 58 64 } 59 65 … … 61 67 for (i=0;i<elements->Size();i++){ 62 68 element=(Element*)elements->GetObjectByOffset(i); 63 element->CreateKMatrix(Kgg,Kff,Kfs );69 element->CreateKMatrix(Kgg,Kff,Kfs,dg,df); 64 70 } 65 71 … … 70 76 } 71 77 72 /*Assemble matrix and compress matrix to save memory: */78 /*Assemble matrix and doftypes and compress matrix to save memory: */ 73 79 if(!buildkff){ 74 80 MatAssemblyBegin(Kgg,MAT_FINAL_ASSEMBLY); … … 77 83 MatCompress(Kgg); 78 84 #endif 85 VecAssemblyBegin(dg); 86 VecAssemblyEnd(dg); 79 87 } 80 88 else{ … … 90 98 MatCompress(Kfs); 91 99 #endif 100 VecAssemblyBegin(df); 101 VecAssemblyEnd(df); 92 102 } 103 93 104 } 94 if(pflag){ 105 106 if(pflag){ 95 107 96 108 if(!buildkff)pg=NewVec(gsize); … … 154 166 } 155 167 } 156 if(penalty_pflag){ 168 169 170 if(penalty_pflag){ 157 171 158 172 /*Fill right hand side vector, from loads: */ … … 178 192 if(ppg) *ppg=pg; 179 193 if(ppf) *ppf=pf; 194 if(pdg) *pdg=dg; 195 if(pdf) *pdf=df; 180 196 if(pkmax) *pkmax=kmax; 181 197 } -
issm/trunk/src/c/modules/SystemMatricesx/SystemMatricesx.h
r6010 r7391 10 10 11 11 /* local prototypes: */ 12 void SystemMatricesx(Mat* pKgg, Mat* pKff, Mat* pKfs, Vec* ppg, Vec* ppf, double* pkmax,Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials, Parameters* parameters,12 void SystemMatricesx(Mat* pKgg, Mat* pKff, Mat* pKfs, Vec* ppg, Vec* ppf, Vec* pdg, Vec* pdf, double* pkmax,Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials, Parameters* parameters, 13 13 bool kflag=true,bool pflag=true,bool penalty_kflag=true,bool penalty_pflag=true); 14 14 -
issm/trunk/src/c/objects/Elements/Element.h
r7323 r7391 28 28 virtual void Configure(Elements* elements,Loads* loads,DataSet* nodes,Materials* materials,Parameters* parameters)=0; 29 29 virtual void SetCurrentConfiguration(Elements* elements,Loads* loads,DataSet* nodes,Materials* materials,Parameters* parameters)=0; 30 virtual void CreateKMatrix(Mat Kgg,Mat Kff, Mat Kfs )=0;30 virtual void CreateKMatrix(Mat Kgg,Mat Kff, Mat Kfs,Vec dg, Vec df)=0; 31 31 virtual void CreatePVector(Vec pg, Vec pf)=0; 32 32 virtual void GetSolutionFromInputs(Vec solution)=0; -
issm/trunk/src/c/objects/Elements/Penta.cpp
r7374 r7391 529 529 }/*}}}*/ 530 530 /*FUNCTION Penta::CreateKMatrix {{{1*/ 531 void Penta::CreateKMatrix(Mat Kgg, Mat Kff, Mat Kfs ){531 void Penta::CreateKMatrix(Mat Kgg, Mat Kff, Mat Kfs,Vec dg, Vec df){ 532 532 533 533 /*retrieve parameters: */ 534 534 ElementMatrix* Ke=NULL; 535 ElementVector* De=NULL; 535 536 int analysis_type; 536 537 parameters->FindParam(&analysis_type,AnalysisTypeEnum); … … 546 547 switch(analysis_type){ 547 548 case DiagnosticHorizAnalysisEnum: case AdjointHorizAnalysisEnum: 548 Ke=CreateKMatrixDiagnosticHoriz(); 549 Ke=CreateKMatrixDiagnosticHoriz(); De=CreateDVectorDiagnosticHoriz(); 549 550 break; 550 551 case DiagnosticHutterAnalysisEnum: … … 581 582 delete Ke; 582 583 } 584 /*Add to global Vector*/ 585 if(De){ 586 De->InsertIntoGlobal(dg,df); 587 delete De; 588 } 583 589 } 584 590 /*}}}*/ … … 1006 1012 } 1007 1013 /*}}}*/ 1014 /*FUNCTION Penta::CreateDVectorDiagnosticHoriz {{{1*/ 1015 ElementVector* Penta::CreateDVectorDiagnosticHoriz(void){ 1016 1017 int approximation; 1018 inputs->GetParameterValue(&approximation,ApproximationEnum); 1019 1020 switch(approximation){ 1021 case StokesApproximationEnum: 1022 return CreateDVectorDiagnosticStokes(); 1023 default: 1024 return NULL; //no need for doftypes outside of stokes approximation 1025 } 1026 } 1027 /*}}}*/ 1008 1028 /*FUNCTION Penta::CreateKMatrixDiagnosticHutter{{{1*/ 1009 1029 ElementMatrix* Penta::CreateKMatrixDiagnosticHutter(void){ … … 1365 1385 delete Ke2; 1366 1386 return Ke; 1387 } 1388 /*}}}*/ 1389 /*FUNCTION Penta::CreateDVectorDiagnosticStokes{{{1*/ 1390 ElementVector* Penta::CreateDVectorDiagnosticStokes(void){ 1391 1392 /*output: */ 1393 ElementVector* De=NULL; 1394 /*intermediary: */ 1395 int approximation; 1396 int i; 1397 1398 /*Initialize Element vector and return if necessary*/ 1399 inputs->GetParameterValue(&approximation,ApproximationEnum); 1400 if(approximation!=StokesApproximationEnum) return NULL; 1401 1402 De=new ElementVector(nodes,NUMVERTICES,this->parameters,StokesApproximationEnum); 1403 1404 for (i=0;i<NUMVERTICES;i++){ 1405 De->values[i*4+0]=VelocityEnum; 1406 De->values[i*4+1]=VelocityEnum; 1407 De->values[i*4+2]=VelocityEnum; 1408 De->values[i*4+3]=PressureEnum; 1409 } 1410 1411 return De; 1367 1412 } 1368 1413 /*}}}*/ -
issm/trunk/src/c/objects/Elements/Penta.h
r7323 r7391 80 80 void SetCurrentConfiguration(Elements* elements,Loads* loads,DataSet* nodes,Materials* materials,Parameters* parameters); 81 81 double RegularizeInversion(void); 82 void CreateKMatrix(Mat Kgg, Mat Kff, Mat Kfs );82 void CreateKMatrix(Mat Kgg, Mat Kff, Mat Kfs,Vec dg,Vec df); 83 83 void CreatePVector(Vec pg, Vec pf); 84 84 void DeleteResults(void); … … 147 147 ElementMatrix* CreateKMatrixCouplingPattynStokes(void); 148 148 ElementMatrix* CreateKMatrixDiagnosticHoriz(void); 149 ElementVector* CreateDVectorDiagnosticHoriz(void); 150 ElementVector* CreateDVectorDiagnosticStokes(void); 149 151 ElementMatrix* CreateKMatrixDiagnosticHutter(void); 150 152 ElementMatrix* CreateKMatrixDiagnosticMacAyeal2d(void); -
issm/trunk/src/c/objects/Elements/Tria.cpp
r7374 r7391 377 377 /*}}}*/ 378 378 /*FUNCTION Tria::CreateKMatrix {{{1*/ 379 void Tria::CreateKMatrix(Mat Kgg, Mat Kff, Mat Kfs ){379 void Tria::CreateKMatrix(Mat Kgg, Mat Kff, Mat Kfs,Vec dg,Vec df){ 380 380 381 381 /*retreive parameters: */ -
issm/trunk/src/c/objects/Elements/Tria.h
r7323 r7391 77 77 void SetCurrentConfiguration(Elements* elements,Loads* loads,DataSet* nodes,Materials* materials,Parameters* parameters); 78 78 double RegularizeInversion(void); 79 void CreateKMatrix(Mat Kgg, Mat Kff, Mat Kfs );79 void CreateKMatrix(Mat Kgg, Mat Kff, Mat Kfs,Vec dg,Vec df); 80 80 void CreatePVector(Vec pg, Vec pf); 81 81 int GetNodeIndex(Node* node); -
issm/trunk/src/c/objects/Numerics/ElementVector.cpp
r6412 r7391 197 197 } 198 198 /*}}}*/ 199 /*FUNCTION ElementVector::InsertIntoGlobal(Vec pg, Vec pf){{{1*/ 200 void ElementVector::InsertIntoGlobal(Vec pg, Vec pf){ 201 202 int i; 203 double* localvalues=NULL; 204 205 if(!pf){ 206 /*add local values into global vector, using the fglobaldoflist: */ 207 VecSetValues(pg,this->nrows,this->gglobaldoflist,(const double*)values,INSERT_VALUES); 208 } 209 else{ 210 if(this->fsize){ 211 /*first, retrieve values that are in the f-set from the g-set values vector: */ 212 localvalues=(double*)xmalloc(this->fsize*sizeof(double)); 213 for(i=0;i<this->fsize;i++){ 214 localvalues[i]=this->values[this->flocaldoflist[i]]; 215 } 216 /*add local values into global vector, using the fglobaldoflist: */ 217 VecSetValues(pf,this->fsize,this->fglobaldoflist,(const double*)localvalues,INSERT_VALUES); 218 219 /*Free ressources:*/ 220 xfree((void**)&localvalues); 221 } 222 } 223 } 224 /*}}}*/ 199 225 /*FUNCTION ElementVector::Echo{{{1*/ 200 226 void ElementVector::Echo(void){ -
issm/trunk/src/c/objects/Numerics/ElementVector.h
r6027 r7391 42 42 /*ElementVector specific routines {{{1*/ 43 43 void AddToGlobal(Vec pg, Vec pf); 44 void InsertIntoGlobal(Vec pg, Vec pf); 44 45 void Echo(void); 45 46 void Init(ElementVector* pe); -
issm/trunk/src/c/solvers/solver_adjoint_linear.cpp
r6580 r7391 16 16 Vec ug = NULL, uf = NULL; 17 17 Vec pg = NULL, pf = NULL; 18 Vec dg = NULL, df = NULL; 18 19 bool kffpartitioning = false; 19 20 … … 22 23 23 24 if(kffpartitioning){ 24 SystemMatricesx(NULL,&Kff, &Kfs, NULL,&pf, NULL, femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);25 SystemMatricesx(NULL,&Kff, &Kfs, NULL,&pf, NULL, &df, NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 25 26 Reduceloadx(pf, Kfs, femmodel->ys,true); MatFree(&Kfs); //true means spc = 0 26 27 } 27 28 else{ 28 SystemMatricesx(&Kgg, NULL, NULL, &pg,NULL, NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);29 SystemMatricesx(&Kgg, NULL, NULL, &pg,NULL, &dg, NULL, NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 29 30 Reducematrixfromgtofx(&Kff,&Kfs,Kgg,femmodel->nodesets); MatFree(&Kgg); 30 31 Reduceloadfromgtofx(&pf, pg, Kfs, femmodel->ys, femmodel->nodesets,true);VecFree(&pg); MatFree(&Kfs);//true means spc = 0 32 Reducevectorgtofx(&df, dg, femmodel->nodesets,femmodel->parameters); VecFree(&dg); 31 33 } 32 34 33 Solverx(&uf, Kff, pf, NULL, femmodel->parameters); MatFree(&Kff); VecFree(&pf);35 Solverx(&uf, Kff, pf, NULL, df, femmodel->parameters); MatFree(&Kff); VecFree(&pf); VecFree(&df); 34 36 Mergesolutionfromftogx(&ug, uf,femmodel->ys,femmodel->nodesets,true); VecFree(&uf);//true means spc0 35 37 InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug); VecFree(&ug); VecFree(&uf); -
issm/trunk/src/c/solvers/solver_diagnostic_nonlinear.cpp
r6580 r7391 16 16 Vec ug = NULL, uf = NULL, old_ug= NULL, old_uf = NULL; 17 17 Vec pg = NULL, pf = NULL; 18 Vec dg = NULL, df = NULL; 19 18 20 Loads* loads=NULL; 19 21 int converged; … … 53 55 54 56 if(kffpartitioning){ 55 SystemMatricesx(NULL,&Kff, &Kfs, NULL,&pf, NULL, femmodel->elements,femmodel->nodes,femmodel->vertices,loads,femmodel->materials,femmodel->parameters);57 SystemMatricesx(NULL,&Kff, &Kfs, NULL,&pf, NULL, &df, NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,loads,femmodel->materials,femmodel->parameters); 56 58 Reduceloadx(pf, Kfs, femmodel->ys); MatFree(&Kfs); 57 59 } 58 60 else{ 59 SystemMatricesx(&Kgg, NULL, NULL, &pg,NULL, NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,loads,femmodel->materials,femmodel->parameters);61 SystemMatricesx(&Kgg, NULL, NULL, &pg,NULL, &dg, NULL, NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,loads,femmodel->materials,femmodel->parameters); 60 62 Reducematrixfromgtofx(&Kff,&Kfs,Kgg,femmodel->nodesets); MatFree(&Kgg); 61 63 Reduceloadfromgtofx(&pf, pg, Kfs, femmodel->ys, femmodel->nodesets); VecFree(&pg); MatFree(&Kfs); 64 Reducevectorgtofx(&df, dg, femmodel->nodesets,femmodel->parameters); VecFree(&dg); 62 65 } 63 66 64 Solverx(&uf, Kff, pf, old_uf, femmodel->parameters);67 Solverx(&uf, Kff, pf, old_uf, df, femmodel->parameters); 65 68 Mergesolutionfromftogx(&ug, uf,femmodel->ys,femmodel->nodesets); 66 69 InputUpdateFromSolutionx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug); … … 69 72 _printf_(VerboseConvergence()," number of unstable constraints: %i\n",num_unstable_constraints); 70 73 71 convergence(&converged,Kff,pf,uf,old_uf,femmodel->parameters); MatFree(&Kff);VecFree(&pf); 74 convergence(&converged,Kff,pf,uf,old_uf,femmodel->parameters); MatFree(&Kff);VecFree(&pf); VecFree(&df); 72 75 InputUpdateFromConstantx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,converged,ConvergedEnum); 73 76 -
issm/trunk/src/c/solvers/solver_linear.cpp
r6580 r7391 14 14 Vec ug = NULL, uf = NULL; 15 15 Vec pg = NULL, pf = NULL; 16 Vec dg = NULL, df = NULL; 16 17 bool kffpartitioning; 17 18 … … 20 21 21 22 if(kffpartitioning){ 22 SystemMatricesx(NULL,&Kff, &Kfs, NULL,&pf, NULL, femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);23 SystemMatricesx(NULL,&Kff, &Kfs, NULL,&pf, NULL, &df, NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 23 24 Reduceloadx(pf, Kfs, femmodel->ys); MatFree(&Kfs); 24 25 } 25 26 else{ 26 SystemMatricesx(&Kgg, NULL, NULL, &pg,NULL, NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);27 SystemMatricesx(&Kgg, NULL, NULL, &pg,NULL, &dg, NULL, NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 27 28 Reducematrixfromgtofx(&Kff,&Kfs,Kgg,femmodel->nodesets); MatFree(&Kgg); 28 29 Reduceloadfromgtofx(&pf, pg, Kfs, femmodel->ys, femmodel->nodesets);VecFree(&pg); MatFree(&Kfs); 30 Reducevectorgtofx(&df, dg, femmodel->nodesets,femmodel->parameters); VecFree(&dg); 29 31 } 30 32 31 Solverx(&uf, Kff, pf, NULL, femmodel->parameters); MatFree(&Kff); VecFree(&pf);33 Solverx(&uf, Kff, pf, NULL, df, femmodel->parameters); MatFree(&Kff); VecFree(&pf); VecFree(&df); 32 34 Mergesolutionfromftogx(&ug, uf,femmodel->ys,femmodel->nodesets);VecFree(&uf); 33 35 InputUpdateFromSolutionx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug); VecFree(&ug); VecFree(&uf); -
issm/trunk/src/c/solvers/solver_stokescoupling_nonlinear.cpp
r6580 r7391 16 16 Vec ug_horiz = NULL, uf_horiz = NULL, old_ug_horiz= NULL, old_uf_horiz = NULL; 17 17 Vec pg_horiz = NULL, pf_horiz = NULL; 18 Vec dg_horiz = NULL, df_horiz = NULL; 18 19 Mat Kgg_vert = NULL, Kff_vert = NULL, Kfs_vert = NULL; 19 20 Vec ug_vert = NULL, uf_vert = NULL; 20 21 Vec pg_vert = NULL, pf_vert = NULL; 22 Vec dg_vert = NULL, df_vert = NULL; 21 23 int converged; 22 24 int constraints_converged; … … 56 58 57 59 if(kffpartitioning){ 58 SystemMatricesx(NULL,&Kff_horiz, &Kfs_horiz, NULL,&pf_horiz, NULL, femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);60 SystemMatricesx(NULL,&Kff_horiz, &Kfs_horiz, NULL,&pf_horiz, NULL, &df_horiz, NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 59 61 Reduceloadx(pf_horiz, Kfs_horiz, femmodel->ys); MatFree(&Kfs_horiz); 60 62 } 61 63 else{ 62 SystemMatricesx(&Kgg_horiz, NULL, NULL, &pg_horiz,NULL, NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);64 SystemMatricesx(&Kgg_horiz, NULL, NULL, &pg_horiz,NULL, &dg_horiz,NULL,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 63 65 Reducematrixfromgtofx(&Kff_horiz,&Kfs_horiz,Kgg_horiz,femmodel->nodesets); MatFree(&Kgg_horiz); 64 66 Reduceloadfromgtofx(&pf_horiz, pg_horiz, Kfs_horiz, femmodel->ys, femmodel->nodesets); VecFree(&pg_horiz); MatFree(&Kfs_horiz); 67 Reducevectorgtofx(&df_horiz, dg_horiz, femmodel->nodesets,femmodel->parameters); VecFree(&dg_horiz); 65 68 } 66 69 67 Solverx(&uf_horiz, Kff_horiz, pf_horiz, old_uf_horiz, femmodel->parameters);70 Solverx(&uf_horiz, Kff_horiz, pf_horiz, old_uf_horiz, df_horiz,femmodel->parameters); 68 71 Mergesolutionfromftogx(&ug_horiz, uf_horiz,femmodel->ys,femmodel->nodesets); 69 72 InputUpdateFromSolutionx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug_horiz); 70 73 71 convergence(&converged,Kff_horiz,pf_horiz,uf_horiz,old_uf_horiz,femmodel->parameters); MatFree(&Kff_horiz);VecFree(&pf_horiz); 74 convergence(&converged,Kff_horiz,pf_horiz,uf_horiz,old_uf_horiz,femmodel->parameters); MatFree(&Kff_horiz);VecFree(&pf_horiz); VecFree(&df_horiz); 72 75 73 76 /*Second compute vertical velocity: */ 74 77 femmodel->SetCurrentConfiguration(DiagnosticVertAnalysisEnum); 75 78 if(kffpartitioning){ 76 SystemMatricesx(NULL,&Kff_vert, &Kfs_vert, NULL,&pf_vert, NULL, femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);79 SystemMatricesx(NULL,&Kff_vert, &Kfs_vert, NULL,&pf_vert, NULL, &df_vert,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 77 80 Reduceloadx(pf_vert, Kfs_vert, femmodel->ys); MatFree(&Kfs_vert); 78 81 } 79 82 else{ 80 SystemMatricesx(&Kgg_vert, NULL, NULL, &pg_vert,NULL, NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);83 SystemMatricesx(&Kgg_vert, NULL, NULL, &pg_vert,NULL, &dg_horiz, NULL, NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 81 84 Reducematrixfromgtofx(&Kff_vert,&Kfs_vert,Kgg_vert,femmodel->nodesets); MatFree(&Kgg_vert); 82 85 Reduceloadfromgtofx(&pf_vert, pg_vert, Kfs_vert, femmodel->ys, femmodel->nodesets);VecFree(&pg_vert); MatFree(&Kfs_vert); 86 Reducevectorgtofx(&df_vert, dg_vert, femmodel->nodesets,femmodel->parameters); VecFree(&dg_vert); 83 87 } 84 88 85 Solverx(&uf_vert, Kff_vert, pf_vert, NULL, femmodel->parameters); MatFree(&Kff_vert); VecFree(&pf_vert);89 Solverx(&uf_vert, Kff_vert, pf_vert, NULL, df_vert,femmodel->parameters); MatFree(&Kff_vert); VecFree(&pf_vert); VecFree(&df_vert); 86 90 Mergesolutionfromftogx(&ug_vert, uf_vert,femmodel->ys,femmodel->nodesets);VecFree(&uf_vert); 87 91 InputUpdateFromSolutionx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug_vert); VecFree(&ug_vert); VecFree(&uf_vert); -
issm/trunk/src/c/solvers/solver_thermal_nonlinear.cpp
r6580 r7391 22 22 Vec pg=NULL; 23 23 Vec pf=NULL; 24 Vec dg=NULL; 25 Vec df=NULL; 24 26 25 27 bool converged; … … 50 52 51 53 if(kffpartitioning){ 52 SystemMatricesx(NULL,&Kff, &Kfs, NULL,&pf, &melting_offset,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);54 SystemMatricesx(NULL,&Kff, &Kfs, NULL,&pf,NULL, &df, &melting_offset,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 53 55 Reduceloadx(pf, Kfs, femmodel->ys); MatFree(&Kfs); 54 56 } 55 57 else{ 56 SystemMatricesx(&Kgg,NULL, NULL, &pg,NULL, & melting_offset,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);58 SystemMatricesx(&Kgg,NULL, NULL, &pg,NULL, &dg, NULL, &melting_offset,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 57 59 Reducematrixfromgtofx(&Kff,&Kfs,Kgg,femmodel->nodesets); MatFree(&Kgg); 58 60 Reduceloadfromgtofx(&pf, pg, Kfs, femmodel->ys, femmodel->nodesets);VecFree(&pg); MatFree(&Kfs); 61 Reducevectorgtofx(&df, dg, femmodel->nodesets,femmodel->parameters); VecFree(&dg); 59 62 } 60 63 61 64 VecFree(&tf); 62 Solverx(&tf, Kff, pf,tf_old, femmodel->parameters);65 Solverx(&tf, Kff, pf,tf_old, df, femmodel->parameters); 63 66 VecFree(&tf_old); VecDuplicatePatch(&tf_old,tf); 64 MatFree(&Kff);VecFree(&pf);VecFree(&tg); 67 MatFree(&Kff);VecFree(&pf);VecFree(&tg); VecFree(&df); 65 68 66 69 Mergesolutionfromftogx(&tg, tf,femmodel->ys,femmodel->nodesets); -
issm/trunk/src/c/toolkits/petsc/patches/PetscOptionsDetermineSolverType.cpp
r6014 r7391 45 45 solver_type=SUPERLUDISTPACKAGE; 46 46 } 47 48 PetscOptionsGetString(PETSC_NULL,"-issm_option_solver",&option[0],100,&flag); 49 if (strcmp(option,"stokes")==0){ 50 solver_type=StokesSolverEnum; 51 } 47 52 48 53 *psolver_type=solver_type; -
issm/trunk/src/m/solvers/solver_adjoint_linear.m
r6581 r7391 9 9 10 10 if kffpartitioning, 11 [K_gg,K_ff,K_fs,p_g,p_f, kmax]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters);11 [K_gg,K_ff,K_fs,p_g,p_f,dg,df,kmax]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters); 12 12 p_f = Reduceload( p_f, K_fs, femmodel.ys,true); 13 13 14 else 14 [K_gg,K_ff,K_fs,p_g,p_f, kmax]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters);15 [K_gg,K_ff,K_fs,p_g,p_f,dg,df,kmax]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters); 15 16 [K_ff, K_fs] = Reducematrixfromgtof( K_gg, femmodel.nodesets); 16 17 p_f = Reduceloadfromgtof( p_g, K_fs, femmodel.ys, femmodel.nodesets,true); 18 df=Reducevectorgtof( dg, femmodel.nodesets,femmodel.parameters); 17 19 end 18 20 19 21 issmprintf(VerboseSolver(),'%s%g',' condition number of stiffness matrix: ',condest(K_ff)); 20 u_f=Solver(K_ff,p_f,[], femmodel.parameters);22 u_f=Solver(K_ff,p_f,[],df,femmodel.parameters); 21 23 u_g= Mergesolutionfromftog( u_f, femmodel.ys, femmodel.nodesets,true); 22 24 -
issm/trunk/src/m/solvers/solver_diagnostic_nonlinear.m
r6581 r7391 29 29 30 30 if kffpartitioning, 31 [K_gg,K_ff,K_fs,p_g,p_f, kmax]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,loads,femmodel.materials,femmodel.parameters);31 [K_gg,K_ff,K_fs,p_g,p_f,dg,df,kmax]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,loads,femmodel.materials,femmodel.parameters); 32 32 p_f = Reduceload( p_f, K_fs, femmodel.ys); 33 33 else 34 [K_gg,K_ff,K_fs,p_g,p_f, kmax]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,loads,femmodel.materials,femmodel.parameters);34 [K_gg,K_ff,K_fs,p_g,p_f,dg,df,kmax]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,loads,femmodel.materials,femmodel.parameters); 35 35 [K_ff, K_fs] = Reducematrixfromgtof( K_gg, femmodel.nodesets); 36 36 p_f = Reduceloadfromgtof( p_g, K_fs, femmodel.ys, femmodel.nodesets); 37 df=Reducevectorgtof( dg, femmodel.nodesets,femmodel.parameters); 37 38 end 38 39 39 uf=Solver(K_ff,p_f,old_uf, femmodel.parameters);40 uf=Solver(K_ff,p_f,old_uf,df,femmodel.parameters); 40 41 ug= Mergesolutionfromftog( uf, femmodel.ys, femmodel.nodesets); 41 42 -
issm/trunk/src/m/solvers/solver_linear.m
r6581 r7391 9 9 10 10 if kffpartitioning, 11 [K_gg,K_ff,K_fs,p_g,p_f, kmax]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters);11 [K_gg,K_ff,K_fs,p_g,p_f,dg,df,kmax]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters); 12 12 p_f = Reduceload( p_f, K_fs, femmodel.ys); 13 13 else 14 [K_gg,K_ff,K_fs,p_g,p_f, kmax]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters);14 [K_gg,K_ff,K_fs,p_g,p_f,dg,df,kmax]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters); 15 15 [K_ff, K_fs] = Reducematrixfromgtof( K_gg, femmodel.nodesets); 16 16 p_f = Reduceloadfromgtof( p_g, K_fs, femmodel.ys, femmodel.nodesets); 17 df=Reducevectorgtof( dg, femmodel.nodesets,femmodel.parameters); 17 18 end 18 19 19 20 issmprintf(VerboseSolver(),'%s%g',' condition number of stiffness matrix: ',condest(K_ff)); 20 u_f=Solver(K_ff,p_f,[], femmodel.parameters);21 u_f=Solver(K_ff,p_f,[],df,femmodel.parameters); 21 22 u_g= Mergesolutionfromftog( u_f, femmodel.ys, femmodel.nodesets); 22 23 -
issm/trunk/src/m/solvers/solver_stokescoupling_nonlinear.m
r6589 r7391 1 f unction femmodel=solver_couplingstokes_nonlinear(femmodel,conserve_loads)1 fpunction femmodel=solver_couplingstokes_nonlinear(femmodel,conserve_loads) 2 2 %SOLVER_COUPLINGSTOKES_NONLINEAR - core solver of coupling run 3 3 % … … 29 29 30 30 if kffpartitioning, 31 [K_gg_horiz,K_ff_horiz,K_fs_horiz,p_g_horiz,p_f_horiz, kmax_horiz]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters);31 [K_gg_horiz,K_ff_horiz,K_fs_horiz,p_g_horiz,p_f_horiz,d_g_horiz,d_f_horiz,kmax_horiz]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters); 32 32 p_f_horiz = Reduceload( p_f_horiz, K_fs_horiz, femmodel.ys); 33 33 else 34 [K_gg_horiz,K_ff_horiz,K_fs_horiz,p_g_horiz,p_f_horiz, kmax]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters);34 [K_gg_horiz,K_ff_horiz,K_fs_horiz,p_g_horiz,p_f_horiz,d_g_horiz,d_f_horiz,kmax]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters); 35 35 [K_ff_horiz, K_fs_horiz] = Reducematrixfromgtof( K_gg_horiz, femmodel.nodesets); 36 36 p_f_horiz = Reduceloadfromgtof( p_g_horiz, K_fs_horiz, femmodel.ys, femmodel.nodesets); 37 d_f_horiz=Reducevectorgtof( d_g_horiz, femmodel.nodesets,femmodel.parameters); 38 37 39 end 38 40 39 uf_horiz=Solver(K_ff_horiz,p_f_horiz,old_uf_horiz, femmodel.parameters);41 uf_horiz=Solver(K_ff_horiz,p_f_horiz,old_uf_horiz,d_f_horiz,femmodel.parameters); 40 42 ug_horiz= Mergesolutionfromftog( uf_horiz, femmodel.ys, femmodel.nodesets); 41 43 … … 49 51 50 52 if kffpartitioning, 51 [K_gg_vert,K_ff_vert,K_fs_vert,p_g_vert,p_f_vert, kmax_vert]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters);53 [K_gg_vert,K_ff_vert,K_fs_vert,p_g_vert,p_f_vert,d_g_vert,d_f_vert,kmax_vert]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters); 52 54 p_f_vert = Reduceload( p_f_vert, K_fs_vert, femmodel.ys); 53 55 else 54 [K_gg_vert,K_ff_vert,K_fs_vert,p_g_vert,p_f_vert, kmax_vert]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters);56 [K_gg_vert,K_ff_vert,K_fs_vert,p_g_vert,p_f_vert,d_g_vert,d_f_vert,kmax_vert]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters); 55 57 [K_ff_vert, K_fs_vert] = Reducematrixfromgtof( K_gg_vert, femmodel.nodesets); 56 58 p_f_vert = Reduceloadfromgtof( p_g_vert, K_fs_vert, femmodel.ys, femmodel.nodesets); 59 d_f_vert=Reducevectorgtof( d_g_vert, femmodel.nodesets,femmodel.parameters); 57 60 end 58 61 59 uf_vert=Solver(K_ff_vert,p_f_vert,[], femmodel.parameters);62 uf_vert=Solver(K_ff_vert,p_f_vert,[],d_f_vert,femmodel.parameters); 60 63 ug_vert= Mergesolutionfromftog( uf_vert, femmodel.ys, femmodel.nodesets); 61 64 -
issm/trunk/src/m/solvers/solver_thermal_nonlinear.m
r6581 r7391 24 24 25 25 if kffpartitioning, 26 [K_gg,K_ff,K_fs,p_g,p_f, melting_offset]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters);26 [K_gg,K_ff,K_fs,p_g,p_f,d_g,d_f,melting_offset]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters); 27 27 p_f = Reduceload( p_f, K_fs, femmodel.ys); 28 28 else 29 [K_gg,K_ff,K_fs,p_g,p_f, melting_offset]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters);29 [K_gg,K_ff,K_fs,p_g,p_f,d_g,d_f,melting_offset]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters); 30 30 [K_ff, K_fs] = Reducematrixfromgtof( K_gg, femmodel.nodesets); 31 31 p_f = Reduceloadfromgtof( p_g, K_fs, femmodel.ys, femmodel.nodesets); 32 d_f=Reducevectorgtof( d_g, femmodel.nodesets,femmodel.parameters); 33 32 34 end 33 35 34 36 issmprintf(VerboseSolver(),'%s%g',' condition number of stiffness matrix: ',condest(K_ff)); 35 t_f=Solver(K_ff,p_f,[], femmodel.parameters);37 t_f=Solver(K_ff,p_f,[],d_f,femmodel.parameters); 36 38 t_g= Mergesolutionfromftog( t_f, femmodel.ys, femmodel.nodesets); 37 39 -
issm/trunk/src/mex/Solver/Solver.cpp
r6412 r7391 12 12 Vec uf0 = NULL; 13 13 Vec uf = NULL; 14 Vec df = NULL; 14 15 Parameters *parameters = NULL; 15 16 int verbose; … … 47 48 FetchData(&pf,PF); 48 49 FetchData(&uf0,UF0); 50 FetchData(&df,DF); 49 51 50 52 /*Core module: */ 51 Solverx(&uf, Kff, pf, uf0, parameters);53 Solverx(&uf, Kff, pf, uf0, df,parameters); 52 54 53 55 /*Write output*/ … … 67 69 VecFree(&uf0); 68 70 VecFree(&uf); 71 VecFree(&df); 69 72 delete parameters; 70 73 … … 76 79 { 77 80 _printf_(true,"\n"); 78 _printf_(true," usage: [uf] = %s(Kff,pf,uf0, parameters);\n",__FUNCT__);81 _printf_(true," usage: [uf] = %s(Kff,pf,uf0,df,parameters);\n",__FUNCT__); 79 82 _printf_(true,"\n"); 80 83 } -
issm/trunk/src/mex/Solver/Solver.h
r4236 r7391 23 23 #define PF (mxArray*)prhs[1] 24 24 #define UF0 (mxArray*)prhs[2] 25 #define PARAMETERS (mxArray*)prhs[3] 25 #define DF (mxArray*)prhs[3] 26 #define PARAMETERS (mxArray*)prhs[4] 26 27 27 28 /* serial output macros: */ … … 32 33 #define NLHS 1 33 34 #undef NRHS 34 #define NRHS 435 #define NRHS 5 35 36 36 37 -
issm/trunk/src/mex/SystemMatrices/SystemMatrices.cpp
r6412 r7391 22 22 Vec pg = NULL; 23 23 Vec pf = NULL; 24 Vec dg = NULL; 25 Vec df = NULL; 26 24 27 double kmax; 25 28 … … 53 56 FetchData(&penalty_kflag,PENALTYKFLAG); 54 57 FetchData(&penalty_pflag,PENALTYPFLAG); 55 SystemMatricesx(&Kgg,&Kff,&Kfs,&pg,&pf,& kmax,elements,nodes,vertices,loads,materials,parameters,kflag,pflag,penalty_kflag,penalty_pflag);58 SystemMatricesx(&Kgg,&Kff,&Kfs,&pg,&pf,&dg,&df,&kmax,elements,nodes,vertices,loads,materials,parameters,kflag,pflag,penalty_kflag,penalty_pflag); 56 59 } 57 60 else 58 SystemMatricesx(&Kgg,&Kff,&Kfs,&pg,&pf,& kmax,elements,nodes,vertices,loads,materials,parameters);61 SystemMatricesx(&Kgg,&Kff,&Kfs,&pg,&pf,&dg,&df,&kmax,elements,nodes,vertices,loads,materials,parameters); 59 62 60 63 /*write output datasets: */ … … 64 67 WriteData(PG,pg); 65 68 WriteData(PF,pf); 69 WriteData(DG,dg); 70 WriteData(DF,df); 66 71 WriteData(KMAX,kmax); 67 72 … … 78 83 VecFree(&pg); 79 84 VecFree(&pf); 85 VecFree(&dg); 86 VecFree(&df); 80 87 81 88 /*end module: */ … … 86 93 { 87 94 _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__);95 _printf_(true," usage: [Kgg,Kff,Kfs,pg,pf,dg,df,kmax] = %s(elements,nodes,vertices,loads,materials,parameters);\n",__FUNCT__); 96 _printf_(true," usage: [Kgg,Kff,Kfs,pg,pf,dg,df,kmax] = %s(elements,nodes,vertices,loads,materials,parameters,kflag,pflag,penalty_kflag,penalty_pflag);\n",__FUNCT__); 90 97 _printf_(true,"\n"); 91 98 } -
issm/trunk/src/mex/SystemMatrices/SystemMatrices.h
r6014 r7391 35 35 #define PG (mxArray**)&plhs[3] 36 36 #define PF (mxArray**)&plhs[4] 37 #define KMAX (mxArray**)&plhs[5] 37 #define DG (mxArray**)&plhs[5] 38 #define DF (mxArray**)&plhs[6] 39 #define KMAX (mxArray**)&plhs[7] 38 40 39 41 /* serial arg counts: */ 40 42 #undef NLHS 41 #define NLHS 643 #define NLHS 8 42 44 #undef NRHS 43 45 #define NRHS 10
Note:
See TracChangeset
for help on using the changeset viewer.