From: Vikram Garg <vikram.garg@gm...>  20120829 02:46:40

Yuanwu, There is a variable of system that you can set to use the same Ke, its called assemble_before_solve, so simply set this variable to false using the equation systems object you have. That will take care of the multiple assembles. To avoid the multiple solves, please use the following steps: 1) // Get the system's linear solver object to set the preconditioner reuse flag LinearSolver<Number> *linear_solver = system.get_linear_solver(); 2) // Set the reuse_preconditioner variable to true linear_solver>reuse_preconditioner(true); Give that a try. On Tue, Aug 28, 2012 at 9:36 PM, 蔡园武 <yuanwucai@...> wrote: > Good. Anything else I should set in es or system in my code to use the > same matrix K for different Fe, besides 'pc_type lu' in command? > Temporarily I assemble K for each Fe. But if I use LU, there's no need > to assemble K for multiple times. > > 2012/8/29 Vikram Garg <vikram.v.garg@...>: > > Well, if you use lu, then there should be no 'residual' provided the > matrix > > is invertible. > > > >  > Cai Yuanwu 蔡园武 > Dept. of Engineering Mechanics, > Dalian University of Technology, > Dalian 116024, China >  Vikram Garg http://users.ices.utexas.edu/~vikram/ http://www.runforindia.org/runners/vikramg 
From: 蔡园武 <yuanwucai@gm...>  20120829 01:45:21

Hi, guys, I have a LinearImplicitSystem, solved with a sequential of different force vectors (rhs). Actually I defined different 'Fe' assemble function using a 'loadcase' indicator. In main function, I set the 'loadcase' value, call system.solve(), then es.reinit(), set a new 'loadcase' value, and solve() again. But I found that for some 'loadcase', the solver converged badly, like: loadcase1: Linear solver converged at step: 10736, final residual: 2.00331e21 loadcase2: Linear solver converged at step: 8549, final residual: 2.10685e21 loadcase3: Linear solver converged at step: 8, final residual: 1.38269e07 loadcase4: Linear solver converged at step: 0, final residual: 0.463112 loadcase5: Linear solver converged at step: 0, final residual: 0.463112 loadcase6: Linear solver converged at step: 0, final residual: 0.463112 In loadcase3, Linear solver converged at step 8, final resudual is not small enough. It's very strange that the loadcases after this didn't run? (converged at step 0?) The results are wrong and unbelievable. But if I solve loadcase3 after all the other loadcases, then loadcase 4,5,6 will be all right. Don't know why? Can I mannually control the final resudual tolerance? I did set a parameter in es: es.parameters.set<unsigned int> ("linear solver maximum iterations") = 20000; es.parameters.set<Real> ("linear solver tolerance") = TOLERANCE; Thanks for your help！  Cai Yuanwu 蔡园武 Dept. of Engineering Mechanics, Dalian University of Technology, Dalian 116024, China 
From: Vikram Garg <simulationist@gm...>  20120829 01:51:26

Hey Yuanwu, Can you tell us what kind of linear solver options you are using (the method, preconditioner options passed at runtime) ? If you are using the same stiffness matrix (K) and just changing the rhs (F), then you might actually be better of just using the LU preconditioner for one load and reusing it for the others. Thanks. On Tue, Aug 28, 2012 at 8:45 PM, 蔡园武 <yuanwucai@...> wrote: > Hi, guys, > I have a LinearImplicitSystem, solved with a sequential of different > force vectors (rhs). > Actually I defined different 'Fe' assemble function using a 'loadcase' > indicator. In main function, I set the 'loadcase' value, call > system.solve(), then es.reinit(), set a new 'loadcase' value, and > solve() again. > But I found that for some 'loadcase', the solver converged badly, like: > > loadcase1: Linear solver converged at step: 10736, final residual: > 2.00331e21 > loadcase2: Linear solver converged at step: 8549, final residual: > 2.10685e21 > loadcase3: Linear solver converged at step: 8, final residual: 1.38269e07 > loadcase4: Linear solver converged at step: 0, final residual: 0.463112 > loadcase5: Linear solver converged at step: 0, final residual: 0.463112 > loadcase6: Linear solver converged at step: 0, final residual: 0.463112 > > In loadcase3, Linear solver converged at step 8, final resudual is not > small enough. It's very strange that the loadcases after this didn't > run? (converged at step 0?) The results are wrong and unbelievable. > But if I solve loadcase3 after all the other loadcases, then loadcase > 4,5,6 will be all right. Don't know why? > > Can I mannually control the final resudual tolerance? I did set a > parameter in es: > es.parameters.set<unsigned int> ("linear solver maximum > iterations") = 20000; > es.parameters.set<Real> ("linear solver tolerance") = TOLERANCE; > > Thanks for your help！ >  > Cai Yuanwu 蔡园武 > Dept. of Engineering Mechanics, > Dalian University of Technology, > Dalian 116024, China > > >  > Live Security Virtual Conference > Exclusive live event will cover all the ways today's security and > threat landscape has changed and how IT managers can respond. Discussions > will include endpoint security, mobile security and the latest in malware > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > _______________________________________________ > Libmeshusers mailing list > Libmeshusers@... > https://lists.sourceforge.net/lists/listinfo/libmeshusers >  Vikram Garg PhD Candidate Institute for Computational and Engineering Sciences The University of Texas at Austin http://users.ices.utexas.edu/~vikram/ http://www.runforindia.org/runners/vikramg 
From: 蔡园武 <yuanwucai@gm...>  20120829 02:02:27

2012/8/29 Vikram Garg <simulationist@...>: > Hey Yuanwu, > Can you tell us what kind of linear solver options you > are using (the method, preconditioner options passed at runtime) ? I used the default option. (I don't know what's the default?) #EquationSystems n_systems()=1 System #0, "homogenization_elastic_3D_plate" Type "LinearImplicit" Variables="u" "v" "w" Finite Element Types="LAGRANGE" "LAGRANGE" "LAGRANGE" Approximation Orders="FIRST" "FIRST" "FIRST" n_dofs()=648 n_local_dofs()=648 n_constrained_dofs()=198 n_local_constrained_dofs()=198 n_vectors()=13 n_matrices()=1 DofMap Sparsity Average OnProcessor Bandwidth <= 84 Average OffProcessor Bandwidth <= 0 Maximum OnProcessor Bandwidth <= 144 Maximum OffProcessor Bandwidth <= 0 DofMap Constraints Number of DoF Constraints = 198 Average DoF Constraint Length= 1 > If you > are using the same stiffness matrix (K) and just changing the rhs (F), That's just what I'm doing. > then > you might actually be better of just using the LU preconditioner for one > load and reusing it for the others. How to set it in my code? Can you give me a simple example? Thanks for your answer! > > Thanks. > > On Tue, Aug 28, 2012 at 8:45 PM, 蔡园武 <yuanwucai@...> wrote: >> >> Hi, guys, >> I have a LinearImplicitSystem, solved with a sequential of different >> force vectors (rhs). >> Actually I defined different 'Fe' assemble function using a 'loadcase' >> indicator. In main function, I set the 'loadcase' value, call >> system.solve(), then es.reinit(), set a new 'loadcase' value, and >> solve() again. >> But I found that for some 'loadcase', the solver converged badly, like: >> >> loadcase1: Linear solver converged at step: 10736, final residual: >> 2.00331e21 >> loadcase2: Linear solver converged at step: 8549, final residual: >> 2.10685e21 >> loadcase3: Linear solver converged at step: 8, final residual: 1.38269e07 >> loadcase4: Linear solver converged at step: 0, final residual: 0.463112 >> loadcase5: Linear solver converged at step: 0, final residual: 0.463112 >> loadcase6: Linear solver converged at step: 0, final residual: 0.463112 >> >> In loadcase3, Linear solver converged at step 8, final resudual is not >> small enough. It's very strange that the loadcases after this didn't >> run? (converged at step 0?) The results are wrong and unbelievable. >> But if I solve loadcase3 after all the other loadcases, then loadcase >> 4,5,6 will be all right. Don't know why? >> >> Can I mannually control the final resudual tolerance? I did set a >> parameter in es: >> es.parameters.set<unsigned int> ("linear solver maximum >> iterations") = 20000; >> es.parameters.set<Real> ("linear solver tolerance") = TOLERANCE; >> >> Thanks for your help！ >>  >> Cai Yuanwu 蔡园武 >> Dept. of Engineering Mechanics, >> Dalian University of Technology, >> Dalian 116024, China >> >> >>  >> Live Security Virtual Conference >> Exclusive live event will cover all the ways today's security and >> threat landscape has changed and how IT managers can respond. Discussions >> will include endpoint security, mobile security and the latest in malware >> threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ >> _______________________________________________ >> Libmeshusers mailing list >> Libmeshusers@... >> https://lists.sourceforge.net/lists/listinfo/libmeshusers > > > > >  > Vikram Garg > PhD Candidate > Institute for Computational and Engineering Sciences > The University of Texas at Austin > > http://users.ices.utexas.edu/~vikram/ > http://www.runforindia.org/runners/vikramg >  Cai Yuanwu 蔡园武 Dept. of Engineering Mechanics, Dalian University of Technology, Dalian 116024, China 
From: Vikram Garg <simulationist@gm...>  20120829 02:07:14

Yuanwu, To set the lu preconditioner type just add the following to the command you use to execute: pc_type lu . If you want to use some other kind of preconditioner you can just change lu to whatever type you want (ilu, jacobi etc) I believe the default is jacobi. Warning: If your problem sizes are really large then lu might take a while. Just try it out first and then you can try ilu if its too slow. Thanks. On Tue, Aug 28, 2012 at 9:02 PM, 蔡园武 <yuanwucai@...> wrote: > 2012/8/29 Vikram Garg <simulationist@...>: > > Hey Yuanwu, > > Can you tell us what kind of linear solver options > you > > are using (the method, preconditioner options passed at runtime) ? > > I used the default option. (I don't know what's the default?) > #EquationSystems > n_systems()=1 > System #0, "homogenization_elastic_3D_plate" > Type "LinearImplicit" > Variables="u" "v" "w" > Finite Element Types="LAGRANGE" "LAGRANGE" "LAGRANGE" > Approximation Orders="FIRST" "FIRST" "FIRST" > n_dofs()=648 > n_local_dofs()=648 > n_constrained_dofs()=198 > n_local_constrained_dofs()=198 > n_vectors()=13 > n_matrices()=1 > DofMap Sparsity > Average OnProcessor Bandwidth <= 84 > Average OffProcessor Bandwidth <= 0 > Maximum OnProcessor Bandwidth <= 144 > Maximum OffProcessor Bandwidth <= 0 > DofMap Constraints > Number of DoF Constraints = 198 > Average DoF Constraint Length= 1 > > > If you > > are using the same stiffness matrix (K) and just changing the rhs (F), > > That's just what I'm doing. > > > then > > you might actually be better of just using the LU preconditioner for one > > load and reusing it for the others. > > How to set it in my code? Can you give me a simple example? > Thanks for your answer! > > > > > Thanks. > > > > On Tue, Aug 28, 2012 at 8:45 PM, 蔡园武 <yuanwucai@...> wrote: > >> > >> Hi, guys, > >> I have a LinearImplicitSystem, solved with a sequential of different > >> force vectors (rhs). > >> Actually I defined different 'Fe' assemble function using a 'loadcase' > >> indicator. In main function, I set the 'loadcase' value, call > >> system.solve(), then es.reinit(), set a new 'loadcase' value, and > >> solve() again. > >> But I found that for some 'loadcase', the solver converged badly, like: > >> > >> loadcase1: Linear solver converged at step: 10736, final residual: > >> 2.00331e21 > >> loadcase2: Linear solver converged at step: 8549, final residual: > >> 2.10685e21 > >> loadcase3: Linear solver converged at step: 8, final residual: > 1.38269e07 > >> loadcase4: Linear solver converged at step: 0, final residual: 0.463112 > >> loadcase5: Linear solver converged at step: 0, final residual: 0.463112 > >> loadcase6: Linear solver converged at step: 0, final residual: 0.463112 > >> > >> In loadcase3, Linear solver converged at step 8, final resudual is not > >> small enough. It's very strange that the loadcases after this didn't > >> run? (converged at step 0?) The results are wrong and unbelievable. > >> But if I solve loadcase3 after all the other loadcases, then loadcase > >> 4,5,6 will be all right. Don't know why? > >> > >> Can I mannually control the final resudual tolerance? I did set a > >> parameter in es: > >> es.parameters.set<unsigned int> ("linear solver maximum > >> iterations") = 20000; > >> es.parameters.set<Real> ("linear solver tolerance") = TOLERANCE; > >> > >> Thanks for your help！ > >>  > >> Cai Yuanwu 蔡园武 > >> Dept. of Engineering Mechanics, > >> Dalian University of Technology, > >> Dalian 116024, China > >> > >> > >> >  > >> Live Security Virtual Conference > >> Exclusive live event will cover all the ways today's security and > >> threat landscape has changed and how IT managers can respond. > Discussions > >> will include endpoint security, mobile security and the latest in > malware > >> threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > >> _______________________________________________ > >> Libmeshusers mailing list > >> Libmeshusers@... > >> https://lists.sourceforge.net/lists/listinfo/libmeshusers > > > > > > > > > >  > > Vikram Garg > > PhD Candidate > > Institute for Computational and Engineering Sciences > > The University of Texas at Austin > > > > http://users.ices.utexas.edu/~vikram/ > > http://www.runforindia.org/runners/vikramg > > > > > >  > Cai Yuanwu 蔡园武 > Dept. of Engineering Mechanics, > Dalian University of Technology, > Dalian 116024, China >  Vikram Garg PhD Candidate Institute for Computational and Engineering Sciences The University of Texas at Austin http://users.ices.utexas.edu/~vikram/ http://www.runforindia.org/runners/vikramg 
From: 蔡园武 <yuanwucai@gm...>  20120829 02:24:38

Good idea, man, but I don't think changing preconditioner can control the residual error. 2012/8/29 Vikram Garg <simulationist@...>: > Yuanwu, > To set the lu preconditioner type just add the following to > the command you use to execute: pc_type lu . If you want to use some other > kind of preconditioner you can just change lu to whatever type you want > (ilu, jacobi etc) I believe the default is jacobi. > > Warning: If your problem sizes are really large then lu might take a while. > Just try it out first and then you can try ilu if its too slow. > > Thanks. > > > On Tue, Aug 28, 2012 at 9:02 PM, 蔡园武 <yuanwucai@...> wrote: >> >> 2012/8/29 Vikram Garg <simulationist@...>: >> > Hey Yuanwu, >> > Can you tell us what kind of linear solver options >> > you >> > are using (the method, preconditioner options passed at runtime) ? >> >> I used the default option. (I don't know what's the default?) >> #EquationSystems >> n_systems()=1 >> System #0, "homogenization_elastic_3D_plate" >> Type "LinearImplicit" >> Variables="u" "v" "w" >> Finite Element Types="LAGRANGE" "LAGRANGE" "LAGRANGE" >> Approximation Orders="FIRST" "FIRST" "FIRST" >> n_dofs()=648 >> n_local_dofs()=648 >> n_constrained_dofs()=198 >> n_local_constrained_dofs()=198 >> n_vectors()=13 >> n_matrices()=1 >> DofMap Sparsity >> Average OnProcessor Bandwidth <= 84 >> Average OffProcessor Bandwidth <= 0 >> Maximum OnProcessor Bandwidth <= 144 >> Maximum OffProcessor Bandwidth <= 0 >> DofMap Constraints >> Number of DoF Constraints = 198 >> Average DoF Constraint Length= 1 >> >> > If you >> > are using the same stiffness matrix (K) and just changing the rhs (F), >> >> That's just what I'm doing. >> >> > then >> > you might actually be better of just using the LU preconditioner for one >> > load and reusing it for the others. >> >> How to set it in my code? Can you give me a simple example? >> Thanks for your answer! >> >> > >> > Thanks. >> > >> > On Tue, Aug 28, 2012 at 8:45 PM, 蔡园武 <yuanwucai@...> wrote: >> >> >> >> Hi, guys, >> >> I have a LinearImplicitSystem, solved with a sequential of different >> >> force vectors (rhs). >> >> Actually I defined different 'Fe' assemble function using a 'loadcase' >> >> indicator. In main function, I set the 'loadcase' value, call >> >> system.solve(), then es.reinit(), set a new 'loadcase' value, and >> >> solve() again. >> >> But I found that for some 'loadcase', the solver converged badly, like: >> >> >> >> loadcase1: Linear solver converged at step: 10736, final residual: >> >> 2.00331e21 >> >> loadcase2: Linear solver converged at step: 8549, final residual: >> >> 2.10685e21 >> >> loadcase3: Linear solver converged at step: 8, final residual: >> >> 1.38269e07 >> >> loadcase4: Linear solver converged at step: 0, final residual: 0.463112 >> >> loadcase5: Linear solver converged at step: 0, final residual: 0.463112 >> >> loadcase6: Linear solver converged at step: 0, final residual: 0.463112 >> >> >> >> In loadcase3, Linear solver converged at step 8, final resudual is not >> >> small enough. It's very strange that the loadcases after this didn't >> >> run? (converged at step 0?) The results are wrong and unbelievable. >> >> But if I solve loadcase3 after all the other loadcases, then loadcase >> >> 4,5,6 will be all right. Don't know why? >> >> >> >> Can I mannually control the final resudual tolerance? I did set a >> >> parameter in es: >> >> es.parameters.set<unsigned int> ("linear solver maximum >> >> iterations") = 20000; >> >> es.parameters.set<Real> ("linear solver tolerance") = TOLERANCE; >> >> >> >> Thanks for your help！ >> >>  >> >> Cai Yuanwu 蔡园武 >> >> Dept. of Engineering Mechanics, >> >> Dalian University of Technology, >> >> Dalian 116024, China >> >> >> >> >> >> >> >>  >> >> Live Security Virtual Conference >> >> Exclusive live event will cover all the ways today's security and >> >> threat landscape has changed and how IT managers can respond. >> >> Discussions >> >> will include endpoint security, mobile security and the latest in >> >> malware >> >> threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ >> >> _______________________________________________ >> >> Libmeshusers mailing list >> >> Libmeshusers@... >> >> https://lists.sourceforge.net/lists/listinfo/libmeshusers >> > >> > >> > >> > >> >  >> > Vikram Garg >> > PhD Candidate >> > Institute for Computational and Engineering Sciences >> > The University of Texas at Austin >> > >> > http://users.ices.utexas.edu/~vikram/ >> > http://www.runforindia.org/runners/vikramg >> > >> >> >> >>  >> Cai Yuanwu 蔡园武 >> Dept. of Engineering Mechanics, >> Dalian University of Technology, >> Dalian 116024, China > > > > >  > Vikram Garg > PhD Candidate > Institute for Computational and Engineering Sciences > The University of Texas at Austin > > http://users.ices.utexas.edu/~vikram/ > http://www.runforindia.org/runners/vikramg >  Cai Yuanwu 蔡园武 Dept. of Engineering Mechanics, Dalian University of Technology, Dalian 116024, China 
From: Vikram Garg <vikram.garg@gm...>  20120829 02:26:08

Well, if you use lu, then there should be no 'residual' provided the matrix is invertible. On Tue, Aug 28, 2012 at 9:24 PM, 蔡园武 <yuanwucai@...> wrote: > Good idea, man, but I don't think changing preconditioner can control > the residual error. > > 2012/8/29 Vikram Garg <simulationist@...>: > > Yuanwu, > > To set the lu preconditioner type just add the following to > > the command you use to execute: pc_type lu . If you want to use some > other > > kind of preconditioner you can just change lu to whatever type you want > > (ilu, jacobi etc) I believe the default is jacobi. > > > > Warning: If your problem sizes are really large then lu might take a > while. > > Just try it out first and then you can try ilu if its too slow. > > > > Thanks. > > > > > > On Tue, Aug 28, 2012 at 9:02 PM, 蔡园武 <yuanwucai@...> wrote: > >> > >> 2012/8/29 Vikram Garg <simulationist@...>: > >> > Hey Yuanwu, > >> > Can you tell us what kind of linear solver > options > >> > you > >> > are using (the method, preconditioner options passed at runtime) ? > >> > >> I used the default option. (I don't know what's the default?) > >> #EquationSystems > >> n_systems()=1 > >> System #0, "homogenization_elastic_3D_plate" > >> Type "LinearImplicit" > >> Variables="u" "v" "w" > >> Finite Element Types="LAGRANGE" "LAGRANGE" "LAGRANGE" > >> Approximation Orders="FIRST" "FIRST" "FIRST" > >> n_dofs()=648 > >> n_local_dofs()=648 > >> n_constrained_dofs()=198 > >> n_local_constrained_dofs()=198 > >> n_vectors()=13 > >> n_matrices()=1 > >> DofMap Sparsity > >> Average OnProcessor Bandwidth <= 84 > >> Average OffProcessor Bandwidth <= 0 > >> Maximum OnProcessor Bandwidth <= 144 > >> Maximum OffProcessor Bandwidth <= 0 > >> DofMap Constraints > >> Number of DoF Constraints = 198 > >> Average DoF Constraint Length= 1 > >> > >> > If you > >> > are using the same stiffness matrix (K) and just changing the rhs (F), > >> > >> That's just what I'm doing. > >> > >> > then > >> > you might actually be better of just using the LU preconditioner for > one > >> > load and reusing it for the others. > >> > >> How to set it in my code? Can you give me a simple example? > >> Thanks for your answer! > >> > >> > > >> > Thanks. > >> > > >> > On Tue, Aug 28, 2012 at 8:45 PM, 蔡园武 <yuanwucai@...> wrote: > >> >> > >> >> Hi, guys, > >> >> I have a LinearImplicitSystem, solved with a sequential of different > >> >> force vectors (rhs). > >> >> Actually I defined different 'Fe' assemble function using a > 'loadcase' > >> >> indicator. In main function, I set the 'loadcase' value, call > >> >> system.solve(), then es.reinit(), set a new 'loadcase' value, and > >> >> solve() again. > >> >> But I found that for some 'loadcase', the solver converged badly, > like: > >> >> > >> >> loadcase1: Linear solver converged at step: 10736, final residual: > >> >> 2.00331e21 > >> >> loadcase2: Linear solver converged at step: 8549, final residual: > >> >> 2.10685e21 > >> >> loadcase3: Linear solver converged at step: 8, final residual: > >> >> 1.38269e07 > >> >> loadcase4: Linear solver converged at step: 0, final residual: > 0.463112 > >> >> loadcase5: Linear solver converged at step: 0, final residual: > 0.463112 > >> >> loadcase6: Linear solver converged at step: 0, final residual: > 0.463112 > >> >> > >> >> In loadcase3, Linear solver converged at step 8, final resudual is > not > >> >> small enough. It's very strange that the loadcases after this didn't > >> >> run? (converged at step 0?) The results are wrong and unbelievable. > >> >> But if I solve loadcase3 after all the other loadcases, then loadcase > >> >> 4,5,6 will be all right. Don't know why? > >> >> > >> >> Can I mannually control the final resudual tolerance? I did set a > >> >> parameter in es: > >> >> es.parameters.set<unsigned int> ("linear solver maximum > >> >> iterations") = 20000; > >> >> es.parameters.set<Real> ("linear solver tolerance") = TOLERANCE; > >> >> > >> >> Thanks for your help！ > >> >>  > >> >> Cai Yuanwu 蔡园武 > >> >> Dept. of Engineering Mechanics, > >> >> Dalian University of Technology, > >> >> Dalian 116024, China > >> >> > >> >> > >> >> > >> >> >  > >> >> Live Security Virtual Conference > >> >> Exclusive live event will cover all the ways today's security and > >> >> threat landscape has changed and how IT managers can respond. > >> >> Discussions > >> >> will include endpoint security, mobile security and the latest in > >> >> malware > >> >> threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > >> >> _______________________________________________ > >> >> Libmeshusers mailing list > >> >> Libmeshusers@... > >> >> https://lists.sourceforge.net/lists/listinfo/libmeshusers > >> > > >> > > >> > > >> > > >> >  > >> > Vikram Garg > >> > PhD Candidate > >> > Institute for Computational and Engineering Sciences > >> > The University of Texas at Austin > >> > > >> > http://users.ices.utexas.edu/~vikram/ > >> > http://www.runforindia.org/runners/vikramg > >> > > >> > >> > >> > >>  > >> Cai Yuanwu 蔡园武 > >> Dept. of Engineering Mechanics, > >> Dalian University of Technology, > >> Dalian 116024, China > > > > > > > > > >  > > Vikram Garg > > PhD Candidate > > Institute for Computational and Engineering Sciences > > The University of Texas at Austin > > > > http://users.ices.utexas.edu/~vikram/ > > http://www.runforindia.org/runners/vikramg > > > > > >  > Cai Yuanwu 蔡园武 > Dept. of Engineering Mechanics, > Dalian University of Technology, > Dalian 116024, China >  Vikram Garg http://users.ices.utexas.edu/~vikram/ http://www.runforindia.org/runners/vikramg 
From: 蔡园武 <yuanwucai@gm...>  20120829 02:36:18

Good. Anything else I should set in es or system in my code to use the same matrix K for different Fe, besides 'pc_type lu' in command? Temporarily I assemble K for each Fe. But if I use LU, there's no need to assemble K for multiple times. 2012/8/29 Vikram Garg <vikram.v.garg@...>: > Well, if you use lu, then there should be no 'residual' provided the matrix > is invertible. >  Cai Yuanwu 蔡园武 Dept. of Engineering Mechanics, Dalian University of Technology, Dalian 116024, China 
From: Vikram Garg <vikram.garg@gm...>  20120829 02:46:40

Yuanwu, There is a variable of system that you can set to use the same Ke, its called assemble_before_solve, so simply set this variable to false using the equation systems object you have. That will take care of the multiple assembles. To avoid the multiple solves, please use the following steps: 1) // Get the system's linear solver object to set the preconditioner reuse flag LinearSolver<Number> *linear_solver = system.get_linear_solver(); 2) // Set the reuse_preconditioner variable to true linear_solver>reuse_preconditioner(true); Give that a try. On Tue, Aug 28, 2012 at 9:36 PM, 蔡园武 <yuanwucai@...> wrote: > Good. Anything else I should set in es or system in my code to use the > same matrix K for different Fe, besides 'pc_type lu' in command? > Temporarily I assemble K for each Fe. But if I use LU, there's no need > to assemble K for multiple times. > > 2012/8/29 Vikram Garg <vikram.v.garg@...>: > > Well, if you use lu, then there should be no 'residual' provided the > matrix > > is invertible. > > > >  > Cai Yuanwu 蔡园武 > Dept. of Engineering Mechanics, > Dalian University of Technology, > Dalian 116024, China >  Vikram Garg http://users.ices.utexas.edu/~vikram/ http://www.runforindia.org/runners/vikramg 