You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(2) |
Oct
(2) |
Nov
(27) |
Dec
(31) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(6) |
Feb
(15) |
Mar
(33) |
Apr
(10) |
May
(46) |
Jun
(11) |
Jul
(21) |
Aug
(15) |
Sep
(13) |
Oct
(23) |
Nov
(1) |
Dec
(8) |
2005 |
Jan
(27) |
Feb
(57) |
Mar
(86) |
Apr
(23) |
May
(37) |
Jun
(34) |
Jul
(24) |
Aug
(17) |
Sep
(50) |
Oct
(24) |
Nov
(10) |
Dec
(60) |
2006 |
Jan
(47) |
Feb
(46) |
Mar
(127) |
Apr
(19) |
May
(26) |
Jun
(62) |
Jul
(47) |
Aug
(51) |
Sep
(61) |
Oct
(42) |
Nov
(50) |
Dec
(33) |
2007 |
Jan
(60) |
Feb
(55) |
Mar
(77) |
Apr
(102) |
May
(82) |
Jun
(102) |
Jul
(169) |
Aug
(117) |
Sep
(80) |
Oct
(37) |
Nov
(51) |
Dec
(43) |
2008 |
Jan
(71) |
Feb
(94) |
Mar
(98) |
Apr
(125) |
May
(54) |
Jun
(119) |
Jul
(60) |
Aug
(111) |
Sep
(118) |
Oct
(125) |
Nov
(119) |
Dec
(94) |
2009 |
Jan
(109) |
Feb
(38) |
Mar
(93) |
Apr
(88) |
May
(29) |
Jun
(57) |
Jul
(53) |
Aug
(48) |
Sep
(68) |
Oct
(151) |
Nov
(23) |
Dec
(35) |
2010 |
Jan
(84) |
Feb
(60) |
Mar
(184) |
Apr
(112) |
May
(60) |
Jun
(90) |
Jul
(23) |
Aug
(70) |
Sep
(119) |
Oct
(27) |
Nov
(47) |
Dec
(54) |
2011 |
Jan
(22) |
Feb
(19) |
Mar
(92) |
Apr
(93) |
May
(35) |
Jun
(91) |
Jul
(32) |
Aug
(61) |
Sep
(7) |
Oct
(69) |
Nov
(81) |
Dec
(23) |
2012 |
Jan
(64) |
Feb
(95) |
Mar
(35) |
Apr
(36) |
May
(63) |
Jun
(98) |
Jul
(70) |
Aug
(171) |
Sep
(149) |
Oct
(64) |
Nov
(67) |
Dec
(126) |
2013 |
Jan
(108) |
Feb
(104) |
Mar
(171) |
Apr
(133) |
May
(108) |
Jun
(100) |
Jul
(93) |
Aug
(126) |
Sep
(74) |
Oct
(59) |
Nov
(145) |
Dec
(93) |
2014 |
Jan
(38) |
Feb
(45) |
Mar
(26) |
Apr
(41) |
May
(125) |
Jun
(70) |
Jul
(61) |
Aug
(66) |
Sep
(60) |
Oct
(110) |
Nov
(27) |
Dec
(30) |
2015 |
Jan
(43) |
Feb
(67) |
Mar
(71) |
Apr
(92) |
May
(39) |
Jun
(15) |
Jul
(46) |
Aug
(63) |
Sep
(84) |
Oct
(82) |
Nov
(69) |
Dec
(45) |
2016 |
Jan
(92) |
Feb
(91) |
Mar
(148) |
Apr
(43) |
May
(58) |
Jun
(117) |
Jul
(92) |
Aug
(140) |
Sep
(49) |
Oct
(33) |
Nov
(85) |
Dec
(40) |
2017 |
Jan
(41) |
Feb
(36) |
Mar
(49) |
Apr
(41) |
May
(73) |
Jun
(51) |
Jul
(12) |
Aug
(69) |
Sep
(26) |
Oct
(43) |
Nov
(75) |
Dec
(23) |
2018 |
Jan
(86) |
Feb
(36) |
Mar
(50) |
Apr
(28) |
May
(53) |
Jun
(65) |
Jul
(26) |
Aug
(43) |
Sep
(32) |
Oct
(28) |
Nov
(52) |
Dec
(17) |
2019 |
Jan
(39) |
Feb
(26) |
Mar
(71) |
Apr
(30) |
May
(73) |
Jun
(18) |
Jul
(5) |
Aug
(10) |
Sep
(8) |
Oct
(24) |
Nov
(12) |
Dec
(34) |
2020 |
Jan
(17) |
Feb
(10) |
Mar
(6) |
Apr
(4) |
May
(15) |
Jun
(3) |
Jul
(8) |
Aug
(15) |
Sep
(6) |
Oct
(3) |
Nov
|
Dec
(4) |
2021 |
Jan
(4) |
Feb
(4) |
Mar
(21) |
Apr
(14) |
May
(13) |
Jun
(18) |
Jul
(1) |
Aug
(39) |
Sep
(1) |
Oct
|
Nov
(3) |
Dec
|
2022 |
Jan
|
Feb
|
Mar
(2) |
Apr
(8) |
May
|
Jun
|
Jul
|
Aug
(3) |
Sep
|
Oct
(3) |
Nov
|
Dec
|
2023 |
Jan
(2) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(7) |
Sep
(3) |
Oct
|
Nov
|
Dec
(1) |
From: David K. <dav...@ak...> - 2018-01-29 13:51:10
|
On Sun, Jan 28, 2018 at 11:24 PM, <cau...@gm...> wrote: > OK, now that the choice of solver does not pose a problem, I consider > using SCM to calculate the lower bound of the coercivity constant (αLB) > instead of setting it 1 since αLB may vary a lot with the parameters and > the selection of basis will be affected if we simply set αLB equal to 1. > > > > Hence, I refer to reduced_basis_ex2 where the SCM is implemented. > However, I meet the error below when running the example. > > > > “Assembling affine operator 1 of 3 > Assembling affine operator 2 of 3 > Assembling affine operator 3 of 3 > Assembling affine vector 1 of 1 > Assembling output vector, (1,1) of (4,1) > Assembling output vector, (2,1) of (4,1) > Assembling output vector, (3,1) of (4,1) > Assembling output vector, (4,1) of (4,1) > > B_min(0) = 1.20285e-33 > Eigen solver for computing B_max did not converge” > > > > Where does the problem come from and how to address it? I would appreciate > your suggestion. > Are you using "-eps_type lapack"? If not, I would try that. David *发件人**:* David Knezevic [mailto:dav...@ak...] *发送时间:* 2018年1月29日 10:45 *收件人:* Gauvain Wu <cau...@gm...>; libmesh-users < lib...@li...> *主题:* Re: 答复: [Libmesh-users] Not decreasing error bound (Note: Please reply-all so that the answers are recorded on the libMesh-users list for future reference.) On Sun, Jan 28, 2018 at 9:33 PM, <cau...@gm...> wrote: Hi David, I solve the system with the command below: -ksp_type preonly -pc_type lu -pc_factor_mat_solver_package mumps It means that the system is solved by KSP with LU as preconditioning. OK, that's good. I guess before you were using an iterative solver which just wasn't converging fully. Using LU is a good approach here. I would recommend MUMPS with LU for the reduced basis training unless your problem is too large, in which case you have to switch to an iterative solver. Should I precise the asymmetric solver in my command? How to write it correctly? Thanks for your help. No, what you have done is fine, since you asked for LU which is appropriate for non-symmetric matrices. (In other problems if your system is symmetric you can use MUMPS's cholesky solver instead, via "-pc_type cholesky".) David *发件人**:* David Knezevic [mailto:dav...@ak...] *发送时间:* 2018年1月29日 10:05 *收件人:* Gauvain Wu <cau...@gm...> *抄送:* libmesh-users <lib...@li...> *主题:* Re: [Libmesh-users] Not decreasing error bound Hello, The convergence behavior that you describe is typical of reduced basis convergence: It will plateau after an error reduction of about six orders of magnitude or so. So it sounds like the convergence is working fine in the sense that you got a reduction from 1.3569e7 to 41. When you get the message "Exiting greedy because the same parameters were selected twice" that is another indication that the greedy algorithm has plateaued. I do not know why the RB solution and FE solution did not match well at the end, though --- that of course indicates that something is wrong. One thought; Did you make sure to use an asymmetric solver, since thermoelasticity is not symmetric? David On Sat, Jan 27, 2018 at 4:13 AM, <cau...@gm...> wrote: Hi all, I made a thermoelasticity model based on the cantilever example, reduced_basis_ex5, by adding a new temperature variable. At the beginning of the basis training procedure, the maximum error bound drops sharply from 1.35694e+07 to 41 as the dimension of the basis increases from 0 to 5. After that, although the basis dimension keeps growing, the error bound stops decreasing and stays at a certain number. The relative training tolerance is set at 1.e-7 and the mesh is a T-shaped pipe. ---- Basis dimension: 5 ---- Performing RB solves on training set Maximum error bound is 2.42578 Performing truth solve at parameter: h: 1.055972e+01 h_Tinf: 2.472563e+02 heat_flux: 4.261782e+01 ---- Basis dimension: 6 ---- Performing RB solves on training set Maximum error bound is 2.43818 Performing truth solve at parameter: h: 1.151397e+01 h_Tinf: 2.473108e+02 heat_flux: 4.481571e+01 ---- Basis dimension: 7 ---- Performing RB solves on training set Maximum error bound is 2.44673 Exiting greedy because the same parameters were selected twice The RB result obtained from this basis differs a lot from the FEM result. I searched archives of the mailing list and found that this phenomenon might result from an overly low training tolerance. However, the initial error bound being nearly e+07, if I select a less strict tolerance, I will end up having an unsatisfying error and probably a worse result. Could you please suggest me some advice? I would be grateful for your response. Best regards, Gauvain ------------------------------------------------------------ ------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Libmesh-users mailing list Lib...@li... https://lists.sourceforge.net/lists/listinfo/libmesh-users |
From: <cau...@gm...> - 2018-01-29 04:24:48
|
OK, now that the choice of solver does not pose a problem, I consider using SCM to calculate the lower bound of the coercivity constant (αLB) instead of setting it 1 since αLB may vary a lot with the parameters and the selection of basis will be affected if we simply set αLB equal to 1. Hence, I refer to reduced_basis_ex2 where the SCM is implemented. However, I meet the error below when running the example. “Assembling affine operator 1 of 3 Assembling affine operator 2 of 3 Assembling affine operator 3 of 3 Assembling affine vector 1 of 1 Assembling output vector, (1,1) of (4,1) Assembling output vector, (2,1) of (4,1) Assembling output vector, (3,1) of (4,1) Assembling output vector, (4,1) of (4,1) B_min(0) = 1.20285e-33 Eigen solver for computing B_max did not converge” Where does the problem come from and how to address it? I would appreciate your suggestion. Gauvain 发件人: David Knezevic [mailto:dav...@ak...] 发送时间: 2018年1月29日 10:45 收件人: Gauvain Wu <cau...@gm...>; libmesh-users <lib...@li...> 主题: Re: 答复: [Libmesh-users] Not decreasing error bound (Note: Please reply-all so that the answers are recorded on the libMesh-users list for future reference.) On Sun, Jan 28, 2018 at 9:33 PM, <cau...@gm... <mailto:cau...@gm...> > wrote: Hi David, I solve the system with the command below: -ksp_type preonly -pc_type lu -pc_factor_mat_solver_package mumps It means that the system is solved by KSP with LU as preconditioning. OK, that's good. I guess before you were using an iterative solver which just wasn't converging fully. Using LU is a good approach here. I would recommend MUMPS with LU for the reduced basis training unless your problem is too large, in which case you have to switch to an iterative solver. Should I precise the asymmetric solver in my command? How to write it correctly? Thanks for your help. No, what you have done is fine, since you asked for LU which is appropriate for non-symmetric matrices. (In other problems if your system is symmetric you can use MUMPS's cholesky solver instead, via "-pc_type cholesky".) David 发件人: David Knezevic [mailto:dav...@ak... <mailto:dav...@ak...> ] 发送时间: 2018年1月29日 10:05 收件人: Gauvain Wu <cau...@gm... <mailto:cau...@gm...> > 抄送: libmesh-users <lib...@li... <mailto:lib...@li...> > 主题: Re: [Libmesh-users] Not decreasing error bound Hello, The convergence behavior that you describe is typical of reduced basis convergence: It will plateau after an error reduction of about six orders of magnitude or so. So it sounds like the convergence is working fine in the sense that you got a reduction from 1.3569e7 to 41. When you get the message "Exiting greedy because the same parameters were selected twice" that is another indication that the greedy algorithm has plateaued. I do not know why the RB solution and FE solution did not match well at the end, though --- that of course indicates that something is wrong. One thought; Did you make sure to use an asymmetric solver, since thermoelasticity is not symmetric? David On Sat, Jan 27, 2018 at 4:13 AM, <cau...@gm... <mailto:cau...@gm...> > wrote: Hi all, I made a thermoelasticity model based on the cantilever example, reduced_basis_ex5, by adding a new temperature variable. At the beginning of the basis training procedure, the maximum error bound drops sharply from 1.35694e+07 to 41 as the dimension of the basis increases from 0 to 5. After that, although the basis dimension keeps growing, the error bound stops decreasing and stays at a certain number. The relative training tolerance is set at 1.e-7 and the mesh is a T-shaped pipe. ---- Basis dimension: 5 ---- Performing RB solves on training set Maximum error bound is 2.42578 Performing truth solve at parameter: h: 1.055972e+01 h_Tinf: 2.472563e+02 heat_flux: 4.261782e+01 ---- Basis dimension: 6 ---- Performing RB solves on training set Maximum error bound is 2.43818 Performing truth solve at parameter: h: 1.151397e+01 h_Tinf: 2.473108e+02 heat_flux: 4.481571e+01 ---- Basis dimension: 7 ---- Performing RB solves on training set Maximum error bound is 2.44673 Exiting greedy because the same parameters were selected twice The RB result obtained from this basis differs a lot from the FEM result. I searched archives of the mailing list and found that this phenomenon might result from an overly low training tolerance. However, the initial error bound being nearly e+07, if I select a less strict tolerance, I will end up having an unsatisfying error and probably a worse result. Could you please suggest me some advice? I would be grateful for your response. Best regards, Gauvain ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Libmesh-users mailing list Lib...@li... <mailto:Lib...@li...> https://lists.sourceforge.net/lists/listinfo/libmesh-users |
From: David K. <dav...@ak...> - 2018-01-29 03:03:40
|
On Sun, Jan 28, 2018 at 9:57 PM, <cau...@gm...> wrote: > Sorry for habitually clicking “reply” instead of “reply all” and I resend > it now. > > > > Hi David, > > > > I solve the system with the command below: > > > > -ksp_type preonly -pc_type lu -pc_factor_mat_solver_package mumps > > > > It means that the system is solved by KSP with LU as preconditioning. > Should I precise the asymmetric solver in my command? How to write it > correctly? Thanks for your help. > No, what you did is fine since LU is appropriate for non-symmetric problems. (See my previous email for a bit more detail.) David > > > > *发件人**:* David Knezevic [mailto:dav...@ak...] > *发送时间:* 2018年1月29日 10:05 > *收件人:* Gauvain Wu <cau...@gm...> > *抄送:* libmesh-users <lib...@li...> > *主题:* Re: [Libmesh-users] Not decreasing error bound > > > > Hello, > > > > The convergence behavior that you describe is typical of reduced basis > convergence: It will plateau after an error reduction of about six orders > of magnitude or so. So it sounds like the convergence is working fine in > the sense that you got a reduction from 1.3569e7 to 41. When you get the > message "Exiting greedy because the same parameters were selected twice" > that is another indication that the greedy algorithm has plateaued. > > > > I do not know why the RB solution and FE solution did not match well at > the end, though --- that of course indicates that something is wrong. One > thought; Did you make sure to use an asymmetric solver, since > thermoelasticity is not symmetric? > > > > David > > > > > > On Sat, Jan 27, 2018 at 4:13 AM, <cau...@gm...> wrote: > > Hi all, > > > > I made a thermoelasticity model based on the cantilever example, > reduced_basis_ex5, by adding a new temperature variable. At the beginning > of > the basis training procedure, the maximum error bound drops sharply from > 1.35694e+07 to 41 as the dimension of the basis increases from 0 to 5. > After > that, although the basis dimension keeps growing, the error bound stops > decreasing and stays at a certain number. The relative training tolerance > is > set at 1.e-7 and the mesh is a T-shaped pipe. > > > > ---- Basis dimension: 5 ---- > > Performing RB solves on training set > > Maximum error bound is 2.42578 > > > > Performing truth solve at parameter: > > h: 1.055972e+01 > > h_Tinf: 2.472563e+02 > > heat_flux: 4.261782e+01 > > > > ---- Basis dimension: 6 ---- > > Performing RB solves on training set > > Maximum error bound is 2.43818 > > > > Performing truth solve at parameter: > > h: 1.151397e+01 > > h_Tinf: 2.473108e+02 > > heat_flux: 4.481571e+01 > > > > ---- Basis dimension: 7 ---- > > Performing RB solves on training set > > Maximum error bound is 2.44673 > > > > Exiting greedy because the same parameters were selected twice > > > > The RB result obtained from this basis differs a lot from the FEM result. I > searched archives of the mailing list and found that this phenomenon might > result from an overly low training tolerance. However, the initial error > bound being nearly e+07, if I select a less strict tolerance, I will end up > having an unsatisfying error and probably a worse result. Could you please > suggest me some advice? I would be grateful for your response. > > > > Best regards, > > Gauvain > > ------------------------------------------------------------ > ------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > _______________________________________________ > Libmesh-users mailing list > Lib...@li... > https://lists.sourceforge.net/lists/listinfo/libmesh-users > > > > > |
From: <cau...@gm...> - 2018-01-29 02:57:30
|
Sorry for habitually clicking “reply” instead of “reply all” and I resend it now. Hi David, I solve the system with the command below: -ksp_type preonly -pc_type lu -pc_factor_mat_solver_package mumps It means that the system is solved by KSP with LU as preconditioning. Should I precise the asymmetric solver in my command? How to write it correctly? Thanks for your help. Regards, Gauvain 发件人: David Knezevic [mailto:dav...@ak...] 发送时间: 2018年1月29日 10:05 收件人: Gauvain Wu <cau...@gm...> 抄送: libmesh-users <lib...@li...> 主题: Re: [Libmesh-users] Not decreasing error bound Hello, The convergence behavior that you describe is typical of reduced basis convergence: It will plateau after an error reduction of about six orders of magnitude or so. So it sounds like the convergence is working fine in the sense that you got a reduction from 1.3569e7 to 41. When you get the message "Exiting greedy because the same parameters were selected twice" that is another indication that the greedy algorithm has plateaued. I do not know why the RB solution and FE solution did not match well at the end, though --- that of course indicates that something is wrong. One thought; Did you make sure to use an asymmetric solver, since thermoelasticity is not symmetric? David On Sat, Jan 27, 2018 at 4:13 AM, <cau...@gm... <mailto:cau...@gm...> > wrote: Hi all, I made a thermoelasticity model based on the cantilever example, reduced_basis_ex5, by adding a new temperature variable. At the beginning of the basis training procedure, the maximum error bound drops sharply from 1.35694e+07 to 41 as the dimension of the basis increases from 0 to 5. After that, although the basis dimension keeps growing, the error bound stops decreasing and stays at a certain number. The relative training tolerance is set at 1.e-7 and the mesh is a T-shaped pipe. ---- Basis dimension: 5 ---- Performing RB solves on training set Maximum error bound is 2.42578 Performing truth solve at parameter: h: 1.055972e+01 h_Tinf: 2.472563e+02 heat_flux: 4.261782e+01 ---- Basis dimension: 6 ---- Performing RB solves on training set Maximum error bound is 2.43818 Performing truth solve at parameter: h: 1.151397e+01 h_Tinf: 2.473108e+02 heat_flux: 4.481571e+01 ---- Basis dimension: 7 ---- Performing RB solves on training set Maximum error bound is 2.44673 Exiting greedy because the same parameters were selected twice The RB result obtained from this basis differs a lot from the FEM result. I searched archives of the mailing list and found that this phenomenon might result from an overly low training tolerance. However, the initial error bound being nearly e+07, if I select a less strict tolerance, I will end up having an unsatisfying error and probably a worse result. Could you please suggest me some advice? I would be grateful for your response. Best regards, Gauvain ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Libmesh-users mailing list Lib...@li... <mailto:Lib...@li...> https://lists.sourceforge.net/lists/listinfo/libmesh-users |
From: David K. <dav...@ak...> - 2018-01-29 02:44:57
|
(Note: Please reply-all so that the answers are recorded on the libMesh-users list for future reference.) On Sun, Jan 28, 2018 at 9:33 PM, <cau...@gm...> wrote: > Hi David, > > > > I solve the system with the command below: > > > > -ksp_type preonly -pc_type lu -pc_factor_mat_solver_package mumps > > > > It means that the system is solved by KSP with LU as preconditioning. > OK, that's good. I guess before you were using an iterative solver which just wasn't converging fully. Using LU is a good approach here. I would recommend MUMPS with LU for the reduced basis training unless your problem is too large, in which case you have to switch to an iterative solver. > Should I precise the asymmetric solver in my command? How to write it > correctly? Thanks for your help. > No, what you have done is fine, since you asked for LU which is appropriate for non-symmetric matrices. (In other problems if your system is symmetric you can use MUMPS's cholesky solver instead, via "-pc_type cholesky".) David *发件人**:* David Knezevic [mailto:dav...@ak...] *发送时间:* 2018年1月29日 10:05 *收件人:* Gauvain Wu <cau...@gm...> *抄送:* libmesh-users <lib...@li...> *主题:* Re: [Libmesh-users] Not decreasing error bound Hello, The convergence behavior that you describe is typical of reduced basis convergence: It will plateau after an error reduction of about six orders of magnitude or so. So it sounds like the convergence is working fine in the sense that you got a reduction from 1.3569e7 to 41. When you get the message "Exiting greedy because the same parameters were selected twice" that is another indication that the greedy algorithm has plateaued. I do not know why the RB solution and FE solution did not match well at the end, though --- that of course indicates that something is wrong. One thought; Did you make sure to use an asymmetric solver, since thermoelasticity is not symmetric? David On Sat, Jan 27, 2018 at 4:13 AM, <cau...@gm...> wrote: Hi all, I made a thermoelasticity model based on the cantilever example, reduced_basis_ex5, by adding a new temperature variable. At the beginning of the basis training procedure, the maximum error bound drops sharply from 1.35694e+07 to 41 as the dimension of the basis increases from 0 to 5. After that, although the basis dimension keeps growing, the error bound stops decreasing and stays at a certain number. The relative training tolerance is set at 1.e-7 and the mesh is a T-shaped pipe. ---- Basis dimension: 5 ---- Performing RB solves on training set Maximum error bound is 2.42578 Performing truth solve at parameter: h: 1.055972e+01 h_Tinf: 2.472563e+02 heat_flux: 4.261782e+01 ---- Basis dimension: 6 ---- Performing RB solves on training set Maximum error bound is 2.43818 Performing truth solve at parameter: h: 1.151397e+01 h_Tinf: 2.473108e+02 heat_flux: 4.481571e+01 ---- Basis dimension: 7 ---- Performing RB solves on training set Maximum error bound is 2.44673 Exiting greedy because the same parameters were selected twice The RB result obtained from this basis differs a lot from the FEM result. I searched archives of the mailing list and found that this phenomenon might result from an overly low training tolerance. However, the initial error bound being nearly e+07, if I select a less strict tolerance, I will end up having an unsatisfying error and probably a worse result. Could you please suggest me some advice? I would be grateful for your response. Best regards, Gauvain ------------------------------------------------------------ ------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Libmesh-users mailing list Lib...@li... https://lists.sourceforge.net/lists/listinfo/libmesh-users |
From: David K. <dav...@ak...> - 2018-01-29 02:04:40
|
Hello, The convergence behavior that you describe is typical of reduced basis convergence: It will plateau after an error reduction of about six orders of magnitude or so. So it sounds like the convergence is working fine in the sense that you got a reduction from 1.3569e7 to 41. When you get the message "Exiting greedy because the same parameters were selected twice" that is another indication that the greedy algorithm has plateaued. I do not know why the RB solution and FE solution did not match well at the end, though --- that of course indicates that something is wrong. One thought; Did you make sure to use an asymmetric solver, since thermoelasticity is not symmetric? David On Sat, Jan 27, 2018 at 4:13 AM, <cau...@gm...> wrote: > Hi all, > > > > I made a thermoelasticity model based on the cantilever example, > reduced_basis_ex5, by adding a new temperature variable. At the beginning > of > the basis training procedure, the maximum error bound drops sharply from > 1.35694e+07 to 41 as the dimension of the basis increases from 0 to 5. > After > that, although the basis dimension keeps growing, the error bound stops > decreasing and stays at a certain number. The relative training tolerance > is > set at 1.e-7 and the mesh is a T-shaped pipe. > > > > ---- Basis dimension: 5 ---- > > Performing RB solves on training set > > Maximum error bound is 2.42578 > > > > Performing truth solve at parameter: > > h: 1.055972e+01 > > h_Tinf: 2.472563e+02 > > heat_flux: 4.261782e+01 > > > > ---- Basis dimension: 6 ---- > > Performing RB solves on training set > > Maximum error bound is 2.43818 > > > > Performing truth solve at parameter: > > h: 1.151397e+01 > > h_Tinf: 2.473108e+02 > > heat_flux: 4.481571e+01 > > > > ---- Basis dimension: 7 ---- > > Performing RB solves on training set > > Maximum error bound is 2.44673 > > > > Exiting greedy because the same parameters were selected twice > > > > The RB result obtained from this basis differs a lot from the FEM result. I > searched archives of the mailing list and found that this phenomenon might > result from an overly low training tolerance. However, the initial error > bound being nearly e+07, if I select a less strict tolerance, I will end up > having an unsatisfying error and probably a worse result. Could you please > suggest me some advice? I would be grateful for your response. > > > > Best regards, > > Gauvain > > ------------------------------------------------------------ > ------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > _______________________________________________ > Libmesh-users mailing list > Lib...@li... > https://lists.sourceforge.net/lists/listinfo/libmesh-users > |
From: <cau...@gm...> - 2018-01-27 09:13:49
|
Hi all, I made a thermoelasticity model based on the cantilever example, reduced_basis_ex5, by adding a new temperature variable. At the beginning of the basis training procedure, the maximum error bound drops sharply from 1.35694e+07 to 41 as the dimension of the basis increases from 0 to 5. After that, although the basis dimension keeps growing, the error bound stops decreasing and stays at a certain number. The relative training tolerance is set at 1.e-7 and the mesh is a T-shaped pipe. ---- Basis dimension: 5 ---- Performing RB solves on training set Maximum error bound is 2.42578 Performing truth solve at parameter: h: 1.055972e+01 h_Tinf: 2.472563e+02 heat_flux: 4.261782e+01 ---- Basis dimension: 6 ---- Performing RB solves on training set Maximum error bound is 2.43818 Performing truth solve at parameter: h: 1.151397e+01 h_Tinf: 2.473108e+02 heat_flux: 4.481571e+01 ---- Basis dimension: 7 ---- Performing RB solves on training set Maximum error bound is 2.44673 Exiting greedy because the same parameters were selected twice The RB result obtained from this basis differs a lot from the FEM result. I searched archives of the mailing list and found that this phenomenon might result from an overly low training tolerance. However, the initial error bound being nearly e+07, if I select a less strict tolerance, I will end up having an unsatisfying error and probably a worse result. Could you please suggest me some advice? I would be grateful for your response. Best regards, Gauvain |
From: David K. <dav...@ak...> - 2018-01-26 19:22:58
|
On Fri, Jan 26, 2018 at 11:06 AM, Roy Stogner <roy...@ic...> wrote: > > On Thu, 25 Jan 2018, David Knezevic wrote: > > Thanks for that info. I'm only using ReplicatedMesh for now. Regarding >> this: >> >> IIRC: on ReplicatedMesh we try to avoid communication as much >> as possible, so you have to add user constraints identically on >> every processor. There might be ways to get around that (add >> local constraints only, then re-add after any repartitioning?) but >> I definitely wouldn't suggest trying to depend on them. >> >> hmm, the reason I asked about this was because I had a case that hit >> a "cyclic loop" assertion in parallel when I added the constraints >> identically on every processor, >> >> and then when I changed it so that I only added the constraint on >> the processor that owned the constrained dof, it worked fine. I >> assumed that I must have been violating an assumption by adding the >> constraints identically on all processors, but your comment would >> indicate that isn't the case... >> > > Looking back at dof_map_constraints.C, it looks like my comment was > wrong - I did parallelize the constraint calculations, even on > ReplicatedMesh. We're looping only over local elements when we > compute hanging node and Dirichlet constraints. That means we *must* > communicate (e.g. to handle cases where a local constraint only gets > computed on a ghost element) later. OK, thanks for confirming that. Yes, I see that we only loop over local elements in DofMap::create_dof_constraints. > I'd like to understand this better. Can you point me to the relevant >> code in the library? I've been looking through >> allgather_recursive_constraints and similar, and I figured they send >> and receive constraint rows as needed, which is why I assumed we >> didn't need to add constraint rows identically on all processors. >> > > The first section of allgather_recursive_constraints() is what's > relevant here - it does the initial push of constraints that we've > calculated to their owners. > > And based on that code, it looks like the rule is "we don't need to > add constraint rows on all processors, but if we *do* then we need to > add them identically". > OK, that makes sense. Yeah, I see where we have the comment "If we don't already have a constraint for this dof, add the one we were sent" > It might be worth adding some error checking there to make sure that > happens. Right now if a processor has a constrained row, and gets > pushed a constraint for that row, it assumes the remote constraint is > equivalent to the local and it ignores it. We should probably > libmesh_assert equivalency (within TOLERANCE*TOLERANCE ought to be > safe; these are nondimensional numbers) instead. > Agreed, that seems like a good idea. I guess that check could be added near the comment that I pasted above. Thanks for your help! That clarifies things a lot! Regards, David |
From: Roy S. <roy...@ic...> - 2018-01-26 16:06:50
|
On Thu, 25 Jan 2018, David Knezevic wrote: > Thanks for that info. I'm only using ReplicatedMesh for now. Regarding this: > > IIRC: on ReplicatedMesh we try to avoid communication as much as possible, so you have to add user constraints identically on > every processor. There might be ways to get around that (add local constraints only, then re-add after any repartitioning?) but > I definitely wouldn't suggest trying to depend on them. > > hmm, the reason I asked about this was because I had a case that hit > a "cyclic loop" assertion in parallel when I added the constraints > identically on every processor, > > and then when I changed it so that I only added the constraint on > the processor that owned the constrained dof, it worked fine. I > assumed that I must have been violating an assumption by adding the > constraints identically on all processors, but your comment would > indicate that isn't the case... Looking back at dof_map_constraints.C, it looks like my comment was wrong - I did parallelize the constraint calculations, even on ReplicatedMesh. We're looping only over local elements when we compute hanging node and Dirichlet constraints. That means we *must* communicate (e.g. to handle cases where a local constraint only gets computed on a ghost element) later. > I'd like to understand this better. Can you point me to the relevant > code in the library? I've been looking through > allgather_recursive_constraints and similar, and I figured they send > and receive constraint rows as needed, which is why I assumed we > didn't need to add constraint rows identically on all processors. The first section of allgather_recursive_constraints() is what's relevant here - it does the initial push of constraints that we've calculated to their owners. And based on that code, it looks like the rule is "we don't need to add constraint rows on all processors, but if we *do* then we need to add them identically". It might be worth adding some error checking there to make sure that happens. Right now if a processor has a constrained row, and gets pushed a constraint for that row, it assumes the remote constraint is equivalent to the local and it ignores it. We should probably libmesh_assert equivalency (within TOLERANCE*TOLERANCE ought to be safe; these are nondimensional numbers) instead. --- Roy |
From: David K. <dav...@ak...> - 2018-01-26 01:06:21
|
Hi Roy, Thanks for that info. I'm only using ReplicatedMesh for now. Regarding this: IIRC: on ReplicatedMesh we try to avoid communication as much as possible, > so you have to add user constraints identically on every processor. There > might be ways to get around that (add local constraints only, then re-add > after any repartitioning?) but I definitely wouldn't suggest trying to > depend on them. hmm, the reason I asked about this was because I had a case that hit a "cyclic loop" assertion in parallel when I added the constraints identically on every processor, and then when I changed it so that I only added the constraint on the processor that owned the constrained dof, it worked fine. I assumed that I must have been violating an assumption by adding the constraints identically on all processors, but your comment would indicate that isn't the case... I'd like to understand this better. Can you point me to the relevant code in the library? I've been looking through allgather_recursive_constraints and similar, and I figured they send and receive constraint rows as needed, which is why I assumed we didn't need to add constraint rows identically on all processors. David On Thu, Jan 25, 2018 at 6:06 PM, Roy Stogner <roy...@ic...> wrote: > > On Thu, 25 Jan 2018, David Knezevic wrote: > > Hi all (though Roy I think you're the expert on this one ;) ), >> > > Well, I was the least-amateur when I refactored the code, but an > *expert* would have also properly documented it, so apparently none of > those were available. > > I know that in DofMap::process_constraints libMesh handles communicating >> the constraint rows to the processes that need to know about them, but I >> just want to make sure that I satisfy any requirements that we have on how >> user-defined constraint rows should be set up in parallel initially. >> > > Good question! > > IIRC: on ReplicatedMesh we try to avoid communication as much as > possible, so you have to add user constraints identically on every > processor. There might be ways to get around that (add local > constraints only, then re-add after any repartitioning?) but I > definitely wouldn't suggest trying to depend on them. > > In particular: are we required to set up the constraint row only on >> the process that owns the constrained dof index, or can the >> constraint row be on any process (or all processes)? >> > > On DistributedMesh we set up library-added constraint rows on the > process that owns the constrained index, and I *think* we have the > same restriction on user constraints (to avoid the need for an initial > usually-redundant communication sweep sending out ghost dof > constraints). > --- > Roy > |
From: Roy S. <roy...@ic...> - 2018-01-25 23:06:22
|
On Thu, 25 Jan 2018, David Knezevic wrote: > Hi all (though Roy I think you're the expert on this one ;) ), Well, I was the least-amateur when I refactored the code, but an *expert* would have also properly documented it, so apparently none of those were available. > I know that in DofMap::process_constraints libMesh handles communicating > the constraint rows to the processes that need to know about them, but I > just want to make sure that I satisfy any requirements that we have on how > user-defined constraint rows should be set up in parallel initially. Good question! IIRC: on ReplicatedMesh we try to avoid communication as much as possible, so you have to add user constraints identically on every processor. There might be ways to get around that (add local constraints only, then re-add after any repartitioning?) but I definitely wouldn't suggest trying to depend on them. > In particular: are we required to set up the constraint row only on > the process that owns the constrained dof index, or can the > constraint row be on any process (or all processes)? On DistributedMesh we set up library-added constraint rows on the process that owns the constrained index, and I *think* we have the same restriction on user constraints (to avoid the need for an initial usually-redundant communication sweep sending out ghost dof constraints). --- Roy |
From: Roy S. <roy...@ic...> - 2018-01-25 23:01:50
|
On Thu, 25 Jan 2018, Michael Povolotskyi wrote: > can libMeshInit accept NULL as constructor arguments? For argv? I sure wouldn't bet on it. We pass that to MPI, Slepc, PETSc, VTK, GetPot... I wouldn't even bet on all those codes supporting argc < 1 or an empty string in argv[0]; IIRC the C/C++ standards require main to be handed *some* program name even if it hasn't been invoked with any arguments. --- Roy |
From: Michael P. <mpo...@pu...> - 2018-01-25 22:48:06
|
Hello, can libMeshInit accept NULL as constructor arguments? Michael. |
From: Salazar De T. M. <sal...@ll...> - 2018-01-25 21:00:33
|
Thanks, the only alternative I am left with is therefore having a flattened mesh and defining my own hanging node constraints with System::attach_constraint_object(). The only issue is that I need to be careful with the refinement. -- On 1/25/18, 12:48 PM, "Roy Stogner" <roy...@ic...> wrote: On Thu, 25 Jan 2018, Salazar De Troya, Miguel wrote: > An easier question to make would be: Can I have a parent element > with just two children? Ah! I'm not sure if this was an easier question to make, but it's a *much* easier question to answer: no. The last time I tried counting, we had literally more than a hundred places where libMesh core library code made the core assumption that any hierarchical refinement was done isotropically. IIRC there are even many places in the code that make the assumption that the refinement pattern within each parent element of a hierarchic mesh matches one of the few refinement patterns which libMesh creates itself. It's something we'd all love to change; anisotropic AMR is nice. But I don't see it changing any time soon. --- Roy |
From: David K. <dav...@ak...> - 2018-01-25 20:50:40
|
Hi all (though Roy I think you're the expert on this one ;) ), I know that in DofMap::process_constraints libMesh handles communicating the constraint rows to the processes that need to know about them, but I just want to make sure that I satisfy any requirements that we have on how user-defined constraint rows should be set up in parallel initially. In particular: are we required to set up the constraint row only on the process that owns the constrained dof index, or can the constraint row be on any process (or all processes)? Thanks, David |
From: Roy S. <roy...@ic...> - 2018-01-25 20:48:06
|
On Thu, 25 Jan 2018, Salazar De Troya, Miguel wrote: > An easier question to make would be: Can I have a parent element > with just two children? Ah! I'm not sure if this was an easier question to make, but it's a *much* easier question to answer: no. The last time I tried counting, we had literally more than a hundred places where libMesh core library code made the core assumption that any hierarchical refinement was done isotropically. IIRC there are even many places in the code that make the assumption that the refinement pattern within each parent element of a hierarchic mesh matches one of the few refinement patterns which libMesh creates itself. It's something we'd all love to change; anisotropic AMR is nice. But I don't see it changing any time soon. --- Roy |
From: Salazar De T. M. <sal...@ll...> - 2018-01-25 20:13:37
|
An easier question to make would be: Can I have a parent element with just two children? For instance, the following mesh has two elements and two children for the second element. I am not able to read the mesh attached. The error is: Program received signal SIGSEGV, Segmentation fault. 0x00002aaaadab14a4 in libMesh::Elem::parent (this=0x0) at ./include/libmesh/elem.h:2357 2357 return _elemlinks[0]; Missing separate debuginfos, use: debuginfo-install blas-3.4.2-8.el7.x86_64 cyrus-sasl-lib-2.1.26-21.el7.x86_64 glpk-4.52.1-2.el7.x86_64 hdf5-1.8.12-8.el7.x86_64 keyutils-libs-1.5.8-3.el7.x86_64 krb5-libs-1.15.1-8.2chaos.ch6.x86_64 lapack-3.4.2-8.el7.x86_64 libX11-1.6.5-1.el7.x86_64 libXau-1.0.8-2.1.el7.x86_64 libcom_err-1.42.9-10.el7.x86_64 libcurl-7.29.0-42.el7_4.1.x86_64 libibverbs-13-7.el7.x86_64 libidn-1.28-4.el7.x86_64 libnl3-3.2.28-4.el7.x86_64 libpsm2-10.2.63-2.el7.x86_64 libselinux-2.5-11.el7.x86_64 libssh2-1.4.3-10.el7_2.1.x86_64 libuuid-2.23.2-43.el7_4.2.x86_64 libxcb-1.12-1.el7.x86_64 nspr-4.13.1-1.0.el7_3.x86_64 nss-3.28.4-15.el7_4.x86_64 nss-softokn-freebl-3.28.3-8.el7_4.x86_64 nss-util-3.28.4-3.el7.x86_64 numactl-libs-2.0.9-6.el7_2.x86_64 openldap-2.4.44-5.el7.x86_64 openssl-libs-1.0.2k-8.el7.x86_64 (gdb) bt #0 0x00002aaaadab14a4 in libMesh::Elem::parent (this=0x0) at ./include/libmesh/elem.h:2357 #1 0x00002aaaae45ae8a in libMesh::MeshTools::libmesh_assert_valid_refinement_tree (mesh=...) at src/mesh/mesh_tools.C:1682 #2 0x00002aaaae1dd7a5 in libMesh::DistributedMesh::delete_remote_elements (this=0x7fffffffbcd8) at src/mesh/distributed_mesh.C:1363 #3 0x00002aaaae27e2c2 in libMesh::MeshBase::prepare_for_use (this=0x7fffffffbcd8, skip_renumber_nodes_and_elements=false, skip_find_neighbors=false) at src/mesh/mesh_base.C:269 #4 0x00002aaaae4e5705 in libMesh::UnstructuredMesh::read (this=0x7fffffffbcd8, name=..., skip_renumber_nodes_and_elements=false, skip_find_neighbors=false) at src/mesh/unstructured_mesh.C:625 #5 0x0000000000424716 in main (argc=1, argv=0x7fffffffc368) at /g/g92/miguel/code/topsm/test/mwe_restart/mwe_restart.C:49 libMesh-1.3.0 4 # number of elements 10 # number of nodes . # boundary condition specification file . # subdomain id specification file n/a # processor id specification file n/a # p-level specification file 8 # type size 0 # uid size 0 # pid size 8 # sid size 0 # p-level size 8 # eid size 8 # side size 8 # bid size 0 # subdomain id to name map 2 # n_elem at level 0, [ type sid (n0 ... nN-1) ] 5 0 0 1 2 3 5 0 1 7 9 2 2 # n_elem at level 1, [ type sid (n0 ... nN-1) ] 5 1 0 4 7 8 5 5 1 0 5 8 9 6 5.0000000000000000e+01 0.0000000000000000e+00 0.0000000000000000e+00 1.0000000000000000e+02 0.0000000000000000e+00 0.0000000000000000e+00 1.0000000000000000e+02 5.0000000000000000e+01 0.0000000000000000e+00 5.0000000000000000e+01 5.0000000000000000e+01 0.0000000000000000e+00 1.2500000000000000e+02 0.0000000000000000e+00 0.0000000000000000e+00 1.2500000000000000e+02 2.5000000000000000e+01 0.0000000000000000e+00 1.2500000000000000e+02 5.0000000000000000e+01 0.0000000000000000e+00 1.3750000000000000e+02 0.0000000000000000e+00 0.0000000000000000e+00 1.3750000000000000e+02 2.5000000000000000e+01 0.0000000000000000e+00 1.3750000000000000e+02 5.0000000000000000e+01 0.0000000000000000e+00 0 # presence of unique ids 0 # sideset id to name map 0 # number of side boundary conditions 0 # nodeset id to name map 0 # number of nodesets 0 # sideset id to name map 0 # number of edge boundary conditions 0 # sideset id to name map 0 # number of shellface boundary conditions -- On 1/24/18, 4:15 PM, "Salazar De Troya, Miguel" <sal...@ll...> wrote: Attaching a picture. I drew the eight elements I removed. This way you can see how I generated the initial mesh (with two levels of refinement in the outermost elements and one in the interior). Without flattening the mesh, I could not remove those children I drew. Miguel -- From: "Paul T. Bauman" <ptb...@gm...> Date: Wednesday, January 24, 2018 at 3:45 PM To: "Salazar De Troya, Miguel" <sal...@ll...> Cc: "lib...@li..." <lib...@li...> Subject: Re: [Libmesh-users] Defining hanging nodes in the XDA format I'm not sure I'm following (a picture is worth a thousand words here), but it sounds like you're trying to create a child of a quad by only splitting in one direction and not both? On Tue, Jan 23, 2018 at 7:22 PM, Salazar De Troya, Miguel <sal...@ll...<mailto:sal...@ll...>> wrote: Hello, I have the mesh attached below. It is the result of having three quadrangular elements in line, refine the left and right ones, then on their leftmost and rightmost children, do another refinement. After this, I flattened out the mesh and removed the leftmost and rightmost layer of elements. The issue is that I’ve got hanging nodes that libmesh does not recognize. Is there any way to find them or tell libMesh which ones they are? Is there an alternative way to generate a similar mesh? I was not able to remove the leftmost and rightmost children without flattening the mesh first. It seems as if each parent element must have four elements. Thanks Miguel libMesh-1.3.0 13 # number of elements 26 # number of nodes n/a # boundary condition specification file . # subdomain id specification file n/a # processor id specification file n/a # p-level specification file 8 # type size 0 # uid size 0 # pid size 8 # sid size 0 # p-level size 0 # eid size 0 # side size 0 # bid size 0 # subdomain id to name map 13 # n_elem at level 0, [ type sid (n0 ... nN-1) ] 5 0 0 1 2 3 5 0 4 0 5 6 5 0 6 5 3 7 5 0 1 8 9 10 5 0 10 9 11 2 5 0 12 4 13 14 5 0 14 13 6 15 5 0 15 6 16 17 5 0 17 16 7 18 5 0 8 19 20 21 5 0 21 20 22 9 5 0 9 22 23 24 5 0 24 23 25 11 5.0000000000000000e+01 0.0000000000000000e+00 0.0000000000000000e+00 1.0000000000000000e+02 0.0000000000000000e+00 0.0000000000000000e+00 1.0000000000000000e+02 5.0000000000000000e+01 0.0000000000000000e+00 5.0000000000000000e+01 5.0000000000000000e+01 0.0000000000000000e+00 2.5000000000000000e+01 0.0000000000000000e+00 0.0000000000000000e+00 5.0000000000000000e+01 2.5000000000000000e+01 0.0000000000000000e+00 2.5000000000000000e+01 2.5000000000000000e+01 0.0000000000000000e+00 2.5000000000000000e+01 5.0000000000000000e+01 0.0000000000000000e+00 1.2500000000000000e+02 0.0000000000000000e+00 0.0000000000000000e+00 1.2500000000000000e+02 2.5000000000000000e+01 0.0000000000000000e+00 1.0000000000000000e+02 2.5000000000000000e+01 0.0000000000000000e+00 1.2500000000000000e+02 5.0000000000000000e+01 0.0000000000000000e+00 1.2500000000000000e+01 0.0000000000000000e+00 0.0000000000000000e+00 2.5000000000000000e+01 1.2500000000000000e+01 0.0000000000000000e+00 1.2500000000000000e+01 1.2500000000000000e+01 0.0000000000000000e+00 1.2500000000000000e+01 2.5000000000000000e+01 0.0000000000000000e+00 2.5000000000000000e+01 3.7500000000000000e+01 0.0000000000000000e+00 1.2500000000000000e+01 3.7500000000000000e+01 0.0000000000000000e+00 1.2500000000000000e+01 5.0000000000000000e+01 0.0000000000000000e+00 1.3750000000000000e+02 0.0000000000000000e+00 0.0000000000000000e+00 1.3750000000000000e+02 1.2500000000000000e+01 0.0000000000000000e+00 1.2500000000000000e+02 1.2500000000000000e+01 0.0000000000000000e+00 1.3750000000000000e+02 2.5000000000000000e+01 0.0000000000000000e+00 1.3750000000000000e+02 3.7500000000000000e+01 0.0000000000000000e+00 1.2500000000000000e+02 3.7500000000000000e+01 0.0000000000000000e+00 1.3750000000000000e+02 5.0000000000000000e+01 0.0000000000000000e+00 0 # presence of unique ids 0 # sideset id to name map 0 # number of side boundary conditions 0 # nodeset id to name map 0 # number of nodesets 0 # sideset id to name map 0 # number of edge boundary conditions 0 # sideset id to name map 0 # number of shellface boundary conditions -- ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Libmesh-users mailing list Lib...@li...<mailto:Lib...@li...> https://lists.sourceforge.net/lists/listinfo/libmesh-users ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Libmesh-users mailing list Lib...@li... https://lists.sourceforge.net/lists/listinfo/libmesh-users |
From: Roy S. <roy...@ic...> - 2018-01-25 17:28:51
|
On Thu, 25 Jan 2018, Michael Povolotskyi wrote: > I added a plain System class, and it worked. Thanks! That was fast! (possibly causality-violatingly so? I could swear I saw this message header in my inbox *before* I hit send on my own previous message...) --- Roy > Michael. > > > On 01/25/2018 12:17 PM, Roy Stogner wrote: >> >> On Thu, 25 Jan 2018, Michael Povolotskyi wrote: >> >>> I will add another system and will not solve it. >> >> Make sure it's ExplicitSystem (no, wait, maybe just plain System? >> ExplicitSystem does still allocate an rhs, not just a solution). >> >> ImplicitSystem will try to allocate a Jacobian for you whether you >> plan to eventually assemble and solve with it or not, and that can get >> expensive. >> --- >> Roy >> >> >>> On 01/25/2018 08:25 AM, Roy Stogner wrote: >>>> >>>> On Wed, 24 Jan 2018, Paul T. Bauman wrote: >>>> >>>>> Sorry for slow response. I have nothing better to offer other than 3 >>>>> vectors, but maybe others will. >>>> >>>> You can add another ExplicitSystem to the mesh, giving it a >>>> vector-valued variable corresponding to your solution system's >>>> scalar-valued variable. >>>> >>>> This is more flexible (if you have multiple variables in your solution >>>> system but only want to add a vector-valued postprocessed field for >>>> one of them, for instance) but probably a bit harder to work with. >>>> --- >>>> Roy >>>> >>>>> On Mon, Jan 22, 2018 at 12:40 PM, Michael Povolotskyi >>>>> <mpo...@pu...> >>>>> wrote: >>>>> >>>>>> Dear Libmesh developers and users, >>>>>> >>>>>> I need to compute a field on mesh based on a solution. >>>>>> >>>>>> To do so I usually add a vector to a system and fill it with data. >>>>>> >>>>>> This works perfectly for a scalar field. >>>>>> >>>>>> What would you recommend to do for a vector field. >>>>>> >>>>>> Of course, I can add 3 vectors, one for each component of the field. >>>>>> Is >>>>>> there a better way? >>>>>> >>>>>> Thank you, >>>>>> >>>>>> Michael. >>>>>> >>>>>> >>>>>> ------------------------------------------------------------ >>>>>> ------------------ >>>>>> Check out the vibrant tech community on one of the world's most >>>>>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot >>>>>> _______________________________________________ >>>>>> Libmesh-users mailing list >>>>>> Lib...@li... >>>>>> https://lists.sourceforge.net/lists/listinfo/libmesh-users >>>>>> >>>>> ------------------------------------------------------------------------------ >>>>> >>>>> Check out the vibrant tech community on one of the world's most >>>>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot >>>>> _______________________________________________ >>>>> Libmesh-users mailing list >>>>> Lib...@li... >>>>> https://lists.sourceforge.net/lists/listinfo/libmesh-users >>>>> >>>>> >>> >>> >>> > > > |
From: Roy S. <roy...@ic...> - 2018-01-25 17:25:30
|
On Thu, 25 Jan 2018, Michael Povolotskyi wrote: > Can I add just a plain System to the EquationSystem? That's actually a good question, and if you'd try it and report back I'd appreciate it. The answer used to be "no", which is why everybody habitually recommends adding ExplicitSystem for storing auxilliary data. But at some point a few years back IIRC I added the ability for us to instantiate a bare System. I've only used that in various postprocessing tools, though. It should be the "proper" way to create an auxilliary data system now, but I don't know if anybody's ever tried it! So: give it a shot? Then if it works let us know, and if it doesn't then file a ticket and use ExplicitSystem instead? Thanks, --- Roy > On 01/25/2018 12:17 PM, Roy Stogner wrote: >> >> On Thu, 25 Jan 2018, Michael Povolotskyi wrote: >> >>> I will add another system and will not solve it. >> >> Make sure it's ExplicitSystem (no, wait, maybe just plain System? >> ExplicitSystem does still allocate an rhs, not just a solution). >> >> ImplicitSystem will try to allocate a Jacobian for you whether you >> plan to eventually assemble and solve with it or not, and that can get >> expensive. >> --- >> Roy >> >> >>> On 01/25/2018 08:25 AM, Roy Stogner wrote: >>>> >>>> On Wed, 24 Jan 2018, Paul T. Bauman wrote: >>>> >>>>> Sorry for slow response. I have nothing better to offer other than 3 >>>>> vectors, but maybe others will. >>>> >>>> You can add another ExplicitSystem to the mesh, giving it a >>>> vector-valued variable corresponding to your solution system's >>>> scalar-valued variable. >>>> >>>> This is more flexible (if you have multiple variables in your solution >>>> system but only want to add a vector-valued postprocessed field for >>>> one of them, for instance) but probably a bit harder to work with. >>>> --- >>>> Roy >>>> >>>>> On Mon, Jan 22, 2018 at 12:40 PM, Michael Povolotskyi >>>>> <mpo...@pu...> >>>>> wrote: >>>>> >>>>>> Dear Libmesh developers and users, >>>>>> >>>>>> I need to compute a field on mesh based on a solution. >>>>>> >>>>>> To do so I usually add a vector to a system and fill it with data. >>>>>> >>>>>> This works perfectly for a scalar field. >>>>>> >>>>>> What would you recommend to do for a vector field. >>>>>> >>>>>> Of course, I can add 3 vectors, one for each component of the field. >>>>>> Is >>>>>> there a better way? >>>>>> >>>>>> Thank you, >>>>>> >>>>>> Michael. >>>>>> >>>>>> >>>>>> ------------------------------------------------------------ >>>>>> ------------------ >>>>>> Check out the vibrant tech community on one of the world's most >>>>>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot >>>>>> _______________________________________________ >>>>>> Libmesh-users mailing list >>>>>> Lib...@li... >>>>>> https://lists.sourceforge.net/lists/listinfo/libmesh-users >>>>>> >>>>> ------------------------------------------------------------------------------ >>>>> >>>>> Check out the vibrant tech community on one of the world's most >>>>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot >>>>> _______________________________________________ >>>>> Libmesh-users mailing list >>>>> Lib...@li... >>>>> https://lists.sourceforge.net/lists/listinfo/libmesh-users >>>>> >>>>> >>> >>> >>> > > > |
From: Michael P. <mpo...@pu...> - 2018-01-25 17:24:13
|
I added a plain System class, and it worked. Michael. On 01/25/2018 12:17 PM, Roy Stogner wrote: > > On Thu, 25 Jan 2018, Michael Povolotskyi wrote: > >> I will add another system and will not solve it. > > Make sure it's ExplicitSystem (no, wait, maybe just plain System? > ExplicitSystem does still allocate an rhs, not just a solution). > > ImplicitSystem will try to allocate a Jacobian for you whether you > plan to eventually assemble and solve with it or not, and that can get > expensive. > --- > Roy > > >> On 01/25/2018 08:25 AM, Roy Stogner wrote: >>> >>> On Wed, 24 Jan 2018, Paul T. Bauman wrote: >>> >>>> Sorry for slow response. I have nothing better to offer other than 3 >>>> vectors, but maybe others will. >>> >>> You can add another ExplicitSystem to the mesh, giving it a >>> vector-valued variable corresponding to your solution system's >>> scalar-valued variable. >>> >>> This is more flexible (if you have multiple variables in your solution >>> system but only want to add a vector-valued postprocessed field for >>> one of them, for instance) but probably a bit harder to work with. >>> --- >>> Roy >>> >>>> On Mon, Jan 22, 2018 at 12:40 PM, Michael Povolotskyi >>>> <mpo...@pu...> >>>> wrote: >>>> >>>>> Dear Libmesh developers and users, >>>>> >>>>> I need to compute a field on mesh based on a solution. >>>>> >>>>> To do so I usually add a vector to a system and fill it with data. >>>>> >>>>> This works perfectly for a scalar field. >>>>> >>>>> What would you recommend to do for a vector field. >>>>> >>>>> Of course, I can add 3 vectors, one for each component of the >>>>> field. Is >>>>> there a better way? >>>>> >>>>> Thank you, >>>>> >>>>> Michael. >>>>> >>>>> >>>>> ------------------------------------------------------------ >>>>> ------------------ >>>>> Check out the vibrant tech community on one of the world's most >>>>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot >>>>> _______________________________________________ >>>>> Libmesh-users mailing list >>>>> Lib...@li... >>>>> https://lists.sourceforge.net/lists/listinfo/libmesh-users >>>>> >>>> ------------------------------------------------------------------------------ >>>> >>>> Check out the vibrant tech community on one of the world's most >>>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot >>>> _______________________________________________ >>>> Libmesh-users mailing list >>>> Lib...@li... >>>> https://lists.sourceforge.net/lists/listinfo/libmesh-users >>>> >>>> >> >> >> |
From: Roy S. <roy...@ic...> - 2018-01-25 17:18:09
|
On Thu, 25 Jan 2018, Michael Povolotskyi wrote: > I will add another system and will not solve it. Make sure it's ExplicitSystem (no, wait, maybe just plain System? ExplicitSystem does still allocate an rhs, not just a solution). ImplicitSystem will try to allocate a Jacobian for you whether you plan to eventually assemble and solve with it or not, and that can get expensive. --- Roy > On 01/25/2018 08:25 AM, Roy Stogner wrote: >> >> On Wed, 24 Jan 2018, Paul T. Bauman wrote: >> >>> Sorry for slow response. I have nothing better to offer other than 3 >>> vectors, but maybe others will. >> >> You can add another ExplicitSystem to the mesh, giving it a >> vector-valued variable corresponding to your solution system's >> scalar-valued variable. >> >> This is more flexible (if you have multiple variables in your solution >> system but only want to add a vector-valued postprocessed field for >> one of them, for instance) but probably a bit harder to work with. >> --- >> Roy >> >>> On Mon, Jan 22, 2018 at 12:40 PM, Michael Povolotskyi >>> <mpo...@pu...> >>> wrote: >>> >>>> Dear Libmesh developers and users, >>>> >>>> I need to compute a field on mesh based on a solution. >>>> >>>> To do so I usually add a vector to a system and fill it with data. >>>> >>>> This works perfectly for a scalar field. >>>> >>>> What would you recommend to do for a vector field. >>>> >>>> Of course, I can add 3 vectors, one for each component of the field. Is >>>> there a better way? >>>> >>>> Thank you, >>>> >>>> Michael. >>>> >>>> >>>> ------------------------------------------------------------ >>>> ------------------ >>>> Check out the vibrant tech community on one of the world's most >>>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot >>>> _______________________________________________ >>>> Libmesh-users mailing list >>>> Lib...@li... >>>> https://lists.sourceforge.net/lists/listinfo/libmesh-users >>>> >>> ------------------------------------------------------------------------------ >>> >>> Check out the vibrant tech community on one of the world's most >>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot >>> _______________________________________________ >>> Libmesh-users mailing list >>> Lib...@li... >>> https://lists.sourceforge.net/lists/listinfo/libmesh-users >>> >>> > > > |
From: Roy S. <roy...@ic...> - 2018-01-25 13:26:26
|
Could you Cc: the picture to me? Our list server generally strips those, and I wasn't able to understand what you were trying to do based on the text alone. Thanks, --- Roy On Thu, 25 Jan 2018, Salazar De Troya, Miguel wrote: > Attaching a picture. I drew the eight elements I removed. This way you can see how I generated the initial mesh (with two levels of refinement in the outermost elements and one in the interior). Without flattening the mesh, I could not remove those children I drew. > > Miguel > -- > > From: "Paul T. Bauman" <ptb...@gm...> > Date: Wednesday, January 24, 2018 at 3:45 PM > To: "Salazar De Troya, Miguel" <sal...@ll...> > Cc: "lib...@li..." <lib...@li...> > Subject: Re: [Libmesh-users] Defining hanging nodes in the XDA format > > I'm not sure I'm following (a picture is worth a thousand words here), but it sounds like you're trying to create a child of a quad by only splitting in one direction and not both? > > On Tue, Jan 23, 2018 at 7:22 PM, Salazar De Troya, Miguel <sal...@ll...<mailto:sal...@ll...>> wrote: > Hello, > > I have the mesh attached below. It is the result of having three quadrangular elements in line, refine the left and right ones, then on their leftmost and rightmost children, do another refinement. After this, I flattened out the mesh and removed the leftmost and rightmost layer of elements. The issue is that I’ve got hanging nodes that libmesh does not recognize. Is there any way to find them or tell libMesh which ones they are? > > Is there an alternative way to generate a similar mesh? I was not able to remove the leftmost and rightmost children without flattening the mesh first. It seems as if each parent element must have four elements. > > Thanks > Miguel > > libMesh-1.3.0 > 13 # number of elements > 26 # number of nodes > n/a # boundary condition specification file > . # subdomain id specification file > n/a # processor id specification file > n/a # p-level specification file > 8 # type size > 0 # uid size > 0 # pid size > 8 # sid size > 0 # p-level size > 0 # eid size > 0 # side size > 0 # bid size > 0 # subdomain id to name map > 13 # n_elem at level 0, [ type sid (n0 ... nN-1) ] > 5 0 0 1 2 3 > 5 0 4 0 5 6 > 5 0 6 5 3 7 > 5 0 1 8 9 10 > 5 0 10 9 11 2 > 5 0 12 4 13 14 > 5 0 14 13 6 15 > 5 0 15 6 16 17 > 5 0 17 16 7 18 > 5 0 8 19 20 21 > 5 0 21 20 22 9 > 5 0 9 22 23 24 > 5 0 24 23 25 11 > 5.0000000000000000e+01 0.0000000000000000e+00 0.0000000000000000e+00 > 1.0000000000000000e+02 0.0000000000000000e+00 0.0000000000000000e+00 > 1.0000000000000000e+02 5.0000000000000000e+01 0.0000000000000000e+00 > 5.0000000000000000e+01 5.0000000000000000e+01 0.0000000000000000e+00 > 2.5000000000000000e+01 0.0000000000000000e+00 0.0000000000000000e+00 > 5.0000000000000000e+01 2.5000000000000000e+01 0.0000000000000000e+00 > 2.5000000000000000e+01 2.5000000000000000e+01 0.0000000000000000e+00 > 2.5000000000000000e+01 5.0000000000000000e+01 0.0000000000000000e+00 > 1.2500000000000000e+02 0.0000000000000000e+00 0.0000000000000000e+00 > 1.2500000000000000e+02 2.5000000000000000e+01 0.0000000000000000e+00 > 1.0000000000000000e+02 2.5000000000000000e+01 0.0000000000000000e+00 > 1.2500000000000000e+02 5.0000000000000000e+01 0.0000000000000000e+00 > 1.2500000000000000e+01 0.0000000000000000e+00 0.0000000000000000e+00 > 2.5000000000000000e+01 1.2500000000000000e+01 0.0000000000000000e+00 > 1.2500000000000000e+01 1.2500000000000000e+01 0.0000000000000000e+00 > 1.2500000000000000e+01 2.5000000000000000e+01 0.0000000000000000e+00 > 2.5000000000000000e+01 3.7500000000000000e+01 0.0000000000000000e+00 > 1.2500000000000000e+01 3.7500000000000000e+01 0.0000000000000000e+00 > 1.2500000000000000e+01 5.0000000000000000e+01 0.0000000000000000e+00 > 1.3750000000000000e+02 0.0000000000000000e+00 0.0000000000000000e+00 > 1.3750000000000000e+02 1.2500000000000000e+01 0.0000000000000000e+00 > 1.2500000000000000e+02 1.2500000000000000e+01 0.0000000000000000e+00 > 1.3750000000000000e+02 2.5000000000000000e+01 0.0000000000000000e+00 > 1.3750000000000000e+02 3.7500000000000000e+01 0.0000000000000000e+00 > 1.2500000000000000e+02 3.7500000000000000e+01 0.0000000000000000e+00 > 1.3750000000000000e+02 5.0000000000000000e+01 0.0000000000000000e+00 > 0 # presence of unique ids > 0 # sideset id to name map > 0 # number of side boundary conditions > 0 # nodeset id to name map > 0 # number of nodesets > 0 # sideset id to name map > 0 # number of edge boundary conditions > 0 # sideset id to name map > 0 # number of shellface boundary conditions > > > -- > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > _______________________________________________ > Libmesh-users mailing list > Lib...@li...<mailto:Lib...@li...> > https://lists.sourceforge.net/lists/listinfo/libmesh-users > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > _______________________________________________ > Libmesh-users mailing list > Lib...@li... > https://lists.sourceforge.net/lists/listinfo/libmesh-users |
From: Roy S. <roy...@ic...> - 2018-01-25 13:25:07
|
On Wed, 24 Jan 2018, Paul T. Bauman wrote: > Sorry for slow response. I have nothing better to offer other than 3 > vectors, but maybe others will. You can add another ExplicitSystem to the mesh, giving it a vector-valued variable corresponding to your solution system's scalar-valued variable. This is more flexible (if you have multiple variables in your solution system but only want to add a vector-valued postprocessed field for one of them, for instance) but probably a bit harder to work with. --- Roy > On Mon, Jan 22, 2018 at 12:40 PM, Michael Povolotskyi <mpo...@pu...> > wrote: > >> Dear Libmesh developers and users, >> >> I need to compute a field on mesh based on a solution. >> >> To do so I usually add a vector to a system and fill it with data. >> >> This works perfectly for a scalar field. >> >> What would you recommend to do for a vector field. >> >> Of course, I can add 3 vectors, one for each component of the field. Is >> there a better way? >> >> Thank you, >> >> Michael. >> >> >> ------------------------------------------------------------ >> ------------------ >> Check out the vibrant tech community on one of the world's most >> engaging tech sites, Slashdot.org! http://sdm.link/slashdot >> _______________________________________________ >> Libmesh-users mailing list >> Lib...@li... >> https://lists.sourceforge.net/lists/listinfo/libmesh-users >> > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > _______________________________________________ > Libmesh-users mailing list > Lib...@li... > https://lists.sourceforge.net/lists/listinfo/libmesh-users > > |
From: Roy S. <roy...@ic...> - 2018-01-25 13:22:36
|
On Wed, 24 Jan 2018, Paul T. Bauman wrote: > Others can and should chime in, but I believe CheckpointIO will allow this. > My only uncertainty is on whether is supports AMR meshes or not, but I > think it does. It does. > Beware we're not guaranteeing backward compatibility with it yet, so > please watch for potential changes in the future if you do use it. And please let us know about any potential bugs in the present! The combination with AMR in particular doesn't have as much test coverage as it should for such a corner-case-laden feature. >> Basically, the question in the title. XDA/XDR do not work for distributed >> meshes in parallel. Well, technically they "work", just not efficiently enough to be useful for frequent I/O in problems where you really need a distributed mesh. --- Roy |
From: Salazar De T. M. <sal...@ll...> - 2018-01-25 00:14:27
|
Attaching a picture. I drew the eight elements I removed. This way you can see how I generated the initial mesh (with two levels of refinement in the outermost elements and one in the interior). Without flattening the mesh, I could not remove those children I drew. Miguel -- From: "Paul T. Bauman" <ptb...@gm...> Date: Wednesday, January 24, 2018 at 3:45 PM To: "Salazar De Troya, Miguel" <sal...@ll...> Cc: "lib...@li..." <lib...@li...> Subject: Re: [Libmesh-users] Defining hanging nodes in the XDA format I'm not sure I'm following (a picture is worth a thousand words here), but it sounds like you're trying to create a child of a quad by only splitting in one direction and not both? On Tue, Jan 23, 2018 at 7:22 PM, Salazar De Troya, Miguel <sal...@ll...<mailto:sal...@ll...>> wrote: Hello, I have the mesh attached below. It is the result of having three quadrangular elements in line, refine the left and right ones, then on their leftmost and rightmost children, do another refinement. After this, I flattened out the mesh and removed the leftmost and rightmost layer of elements. The issue is that I’ve got hanging nodes that libmesh does not recognize. Is there any way to find them or tell libMesh which ones they are? Is there an alternative way to generate a similar mesh? I was not able to remove the leftmost and rightmost children without flattening the mesh first. It seems as if each parent element must have four elements. Thanks Miguel libMesh-1.3.0 13 # number of elements 26 # number of nodes n/a # boundary condition specification file . # subdomain id specification file n/a # processor id specification file n/a # p-level specification file 8 # type size 0 # uid size 0 # pid size 8 # sid size 0 # p-level size 0 # eid size 0 # side size 0 # bid size 0 # subdomain id to name map 13 # n_elem at level 0, [ type sid (n0 ... nN-1) ] 5 0 0 1 2 3 5 0 4 0 5 6 5 0 6 5 3 7 5 0 1 8 9 10 5 0 10 9 11 2 5 0 12 4 13 14 5 0 14 13 6 15 5 0 15 6 16 17 5 0 17 16 7 18 5 0 8 19 20 21 5 0 21 20 22 9 5 0 9 22 23 24 5 0 24 23 25 11 5.0000000000000000e+01 0.0000000000000000e+00 0.0000000000000000e+00 1.0000000000000000e+02 0.0000000000000000e+00 0.0000000000000000e+00 1.0000000000000000e+02 5.0000000000000000e+01 0.0000000000000000e+00 5.0000000000000000e+01 5.0000000000000000e+01 0.0000000000000000e+00 2.5000000000000000e+01 0.0000000000000000e+00 0.0000000000000000e+00 5.0000000000000000e+01 2.5000000000000000e+01 0.0000000000000000e+00 2.5000000000000000e+01 2.5000000000000000e+01 0.0000000000000000e+00 2.5000000000000000e+01 5.0000000000000000e+01 0.0000000000000000e+00 1.2500000000000000e+02 0.0000000000000000e+00 0.0000000000000000e+00 1.2500000000000000e+02 2.5000000000000000e+01 0.0000000000000000e+00 1.0000000000000000e+02 2.5000000000000000e+01 0.0000000000000000e+00 1.2500000000000000e+02 5.0000000000000000e+01 0.0000000000000000e+00 1.2500000000000000e+01 0.0000000000000000e+00 0.0000000000000000e+00 2.5000000000000000e+01 1.2500000000000000e+01 0.0000000000000000e+00 1.2500000000000000e+01 1.2500000000000000e+01 0.0000000000000000e+00 1.2500000000000000e+01 2.5000000000000000e+01 0.0000000000000000e+00 2.5000000000000000e+01 3.7500000000000000e+01 0.0000000000000000e+00 1.2500000000000000e+01 3.7500000000000000e+01 0.0000000000000000e+00 1.2500000000000000e+01 5.0000000000000000e+01 0.0000000000000000e+00 1.3750000000000000e+02 0.0000000000000000e+00 0.0000000000000000e+00 1.3750000000000000e+02 1.2500000000000000e+01 0.0000000000000000e+00 1.2500000000000000e+02 1.2500000000000000e+01 0.0000000000000000e+00 1.3750000000000000e+02 2.5000000000000000e+01 0.0000000000000000e+00 1.3750000000000000e+02 3.7500000000000000e+01 0.0000000000000000e+00 1.2500000000000000e+02 3.7500000000000000e+01 0.0000000000000000e+00 1.3750000000000000e+02 5.0000000000000000e+01 0.0000000000000000e+00 0 # presence of unique ids 0 # sideset id to name map 0 # number of side boundary conditions 0 # nodeset id to name map 0 # number of nodesets 0 # sideset id to name map 0 # number of edge boundary conditions 0 # sideset id to name map 0 # number of shellface boundary conditions -- ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Libmesh-users mailing list Lib...@li...<mailto:Lib...@li...> https://lists.sourceforge.net/lists/listinfo/libmesh-users |