If you want u=0 somewhere you have to impose that as a BC... what BCs did you impose? But actually, sounds like u0=10 might be the right lifting function in your case, in which case the Laplace problem is unnecessary.
(No need to email the list about this now I think; let's take this discussion off-list) David On 01/30/2013 04:17 AM, Kyunghoon Lee wrote: > Hi David, > > Based on your comments, I solved \Laplacian u = 0 to with an inhomogeneous > Dirichlet BC (e.g. u = 10 at the left end) and found the solution u is 10 > all over the domain (because of diffusion). I expected to get u such that > u = 10 at the left end and u = 0 elsewhere so that I can use it as a lift > function. I wonder what you intended is to use u, which is 10 for the > whole domain, by checking whether it belongs to the inhomogeneous Dirichlet > BC or not. > > K. Lee. > > On Mon, Jan 28, 2013 at 12:42 PM, Kyunghoon Lee > <[email protected]>wrote: > >> Thanks for the comments. I'm not sure whether I can pull it off, but I'll >> try. >> >> K. Lee. >> >> >> On Mon, Jan 28, 2013 at 5:25 AM, David Knezevic < >> [email protected]> wrote: >> >>> Hi K, >>> >>> It doesn't matter how you get the lift function. If you can construct u0 >>> "by hand" then that's fine, but it may not always be so easy, e.g. if >>> the domain is non-trivial. Solving a laplace problem will work in >>> general. To do this just follow introduction_ex4 (which already has >>> non-homogeneous Dirichlet BCs). >>> >>> Re this: >>> >>> On 01/26/2013 07:23 PM, Kyunghoon Lee wrote: >>>> Overall it looks like a nested problem --- solving a Laplace equation >>>> inside of a reduced basis model construction. I wonder if you'd suggest >>>> some relevant examples/codes regarding the lift function creation. >>> Well, you solve the Laplace problem (as in introduction_ex4), store the >>> result, then do the RB stuff. >>> >>> David >>> >>> >>> >>> >>> >>>> Best, >>>> K. Lee. >>>> >>>> On Sun, Jan 27, 2013 at 1:43 AM, David Knezevic >>>> <[email protected]>wrote: >>>> >>>>> To create the lift function, probably the simplest thing to do is solve >>>>> a Laplace equation (\Laplacian u = 0) with the Dirichlet boundary >>>>> conditions that you want, and then use the solution as your u0. This >>>>> process is called "elliptic lifting" since the Laplace equation is an >>>>> elliptic PDE. >>>>> >>>>> Then to assemble a(u0,v), you need to do something like what you wrote. >>>>> But the code can be simplified a bit; you don't need to compute Ke and >>>>> then multiply. You can just get the gradient of u0 directly (by >>>>> multiplying the coefficients of u0 with c.interior_gradient) and then >>>>> integrate. >>>>> >>>>> David >>>>> >>>>> >>>>> >>>>> On 01/26/2013 06:14 AM, Kyunghoon Lee wrote: >>>>>> Thanks for the reply. Now I'd appreciate if you'd help me with the >>>>>> implementation of a(u0,v). I was thinking of computing Ke*u0 where >>> Ke is >>>>>> the stiffness matrix and u0 is the lift function as below: >>>>>> >>>>>> //inhomogeneous Dirichlet BC >>>>>> struct IDBCAssembly : ElemAssembly { >>>>>> >>>>>> short unsigned int sbd_id; >>>>>> IDBCAssembly(short unsigned int sbd_id_in) : sbd_id(sbd_id_in) >>> {} >>>>>> virtual void interior_assembly(FEMContext &c) { >>>>>> >>>>>> const unsigned int u_var = 0; >>>>>> const std::vector<Real> &JxW = >>>>>> c.element_fe_var[u_var]->get_JxW(); >>>>>> const std::vector<std::vector<RealGradient> >& dphi = >>>>>> c.element_fe_var[u_var]->get_dphi(); >>>>>> >>>>>> const unsigned int n_u_dofs = >>>>> c.dof_indices_var[u_var].size(); >>>>>> unsigned int n_qpoints = c.element_qrule->n_points(); >>>>>> >>>>>> // stiffness matrix Ke >>>>>> std::vector<std::vector<Number> > Ke(n_u_dofs, >>>>>> std::vector<Number>(n_u_dofs)); >>>>>> for (unsigned int qp=0; qp != n_qpoints; qp++) >>>>>> for (unsigned int i=0; i != n_u_dofs; i++) >>>>>> for (unsigned int j=0; j != n_u_dofs; j++) >>>>>> Ke[i][j] += JxW[qp] * dphi[j][qp] * >>> dphi[i][qp]; >>>>>> // lift function u0 >>>>>> std::vector<Number> u0(n_u_dofs, 0.0); >>>>>> >>>>>> // multiply stiffness matrix by lift function >>>>>> for (unsigned int qp=0; qp != n_qpoints; qp++) >>>>>> for (unsigned int i=0; i != n_u_dofs; i++) >>>>>> for (unsigned int j=0; j != n_u_dofs; j++) >>>>>> c.elem_residual(i) += Ke[i][j] * u0[j]; >>>>>> } // end of interior_assembly >>>>>> }; >>>>>> >>>>>> However, I'm not sure of how to create the lift function u0 such that >>> it >>>>>> has values for given boundary ID and zeros for elsewhere. I think I >>> need >>>>>> to the following: >>>>>> >>>>>> iterate nodes >>>>>> if node belongs to the given boundary ID, set u0(i) = u0_given; >>> otherwise >>>>>> u(i) = 0.0 >>>>>> >>>>>> but I'm not sure of how to check whether a node is associated with >>>>> boundary >>>>>> ID. Can you help me with this problem, plz? (or are there examples >>>>> related >>>>>> to this issue?) >>>>>> >>>>>> Best, >>>>>> K. Lee. >>>>>> >>>>>> >>>>>> On Fri, Jan 25, 2013 at 12:38 PM, David Knezevic < >>>>> [email protected] >>>>>>> wrote: >>>>>>> Yep, that's right, use the RB method to solve for u'. >>>>>>> >>>>>>> Note that you put a(u0,v) on the right-hand side, since u0 is known >>>>>>> (it's the "lifting function"). >>>>>>> >>>>>>> David >>>>>>> >>>>>>> >>>>>>> >>>>>>> On 01/24/2013 11:34 PM, Kyunghoon Lee wrote: >>>>>>>> Thanks for clearing it up. Then I guess we just solve for u' >>>>>>>> >>>>>>>> a(u',v) + a(u0,v) = f(v) >>>>>>>> >>>>>>>> and attach assemblies a(u',v), a(u0,v), and f(v) as usual, then >>>>> restore u >>>>>>>> by u = u' + u0. >>>>>>>> >>>>>>>> K. Lee. >>>>>>>> >>>>>>>> On Fri, Jan 25, 2013 at 12:17 PM, David Knezevic < >>>>>>> [email protected] >>>>>>>>> wrote: >>>>>>>>> Hi K, >>>>>>>>> >>>>>>>>> heterogeneously_constrain_element_matrix_and_vector is not >>> relevant to >>>>>>>>> Reduced Basis stuff. For Reduced Basis formulations, you have to >>>>>>>>> transform the problem using a lifting function so that it has zero >>>>>>>>> Dirichlet BC's --- this is essential since you want your Reduced >>> Basis >>>>>>>>> space to be a vector space, i.e. it must contain 0 (which would be >>> not >>>>>>>>> be the case with non-zero Dirichlet BCs). This lifting function >>>>> approach >>>>>>>>> is what you described in your email already, so that's fine. >>>>>>>>> >>>>>>>>> Once you've transformed your problem using a lifting function, then >>>>> you >>>>>>>>> just proceed as normal, e.g. as in reduced_basis_ex1. The only >>> trick >>>>> is >>>>>>>>> you have to add your lifting function back on at the end to >>> recover u >>>>>>>>> from u'. >>>>>>>>> >>>>>>>>> David >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> On 01/24/2013 11:10 PM, Kyunghoon Lee wrote: >>>>>>>>>> Hi all, >>>>>>>>>> >>>>>>>>>> In my previous email regarding inhomogeneous Dirichlet boundary >>>>>>>>> conditions, >>>>>>>>>> David suggested using >>>>>>> heterogenously_constrain_element_matrix_and_vector >>>>>>>>> in >>>>>>>>>> introduction_ex4, but I'm not sure of how to deal with >>> inhomogeneous >>>>>>>>>> Dirichlet BCs in connection with reduced basis models. Suppose we >>>>>>> have a >>>>>>>>>> simple steady state heat conduction model whose BCs are u = T on >>>>> \Gamma >>>>>>>>> and >>>>>>>>>> u = 0 on the rest surfaces. After variable change, we solve >>>>>>>>>> >>>>>>>>>> a(u',v) = f(v) - a(u0,v) >>>>>>>>>> >>>>>>>>>> where 1) u' = u - T on \Gamma and u' = u on the rest surfaces; >>> and 2) >>>>>>> u0 >>>>>>>>> = >>>>>>>>>> T on \Gamma and u0 = zero on the rest surfaces. I thought we >>> build >>>>> the >>>>>>>>> LHS >>>>>>>>>> then call attach_F_assembly to attach it, but in that case, I'm >>> not >>>>>>> sure >>>>>>>>>> how heterogenously_constrain_element_matrix_and_vector can be >>> used. >>>>> Or >>>>>>>>>> should we attach a(u',v) and f(v) as usual then call >>>>>>>>>> heterogenously_constrain_element_matrix_and_vector to impose - >>>>> a(u0,v) >>>>>>> on >>>>>>>>>> the LHS? I'd appreciate if someone can briefly describe how the >>>>>>> function >>>>>>>>>> work. >>>>>>>>>> >>>>>>>>>> Regards, >>>>>>>>>> K. Lee. >>>>>>>>>> >>> ------------------------------------------------------------------------------ >>>>>>>>>> Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, >>> CSS, >>>>>>>>>> MVC, Windows 8 Apps, JavaScript and much more. Keep your skills >>>>> current >>>>>>>>>> with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft >>>>>>>>>> MVPs and experts. ON SALE this month only -- learn more at: >>>>>>>>>> http://p.sf.net/sfu/learnnow-d2d >>>>>>>>>> _______________________________________________ >>>>>>>>>> Libmesh-users mailing list >>>>>>>>>> [email protected] >>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/libmesh-users >>> ------------------------------------------------------------------------------ >>>>>>>>> Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, >>> CSS, >>>>>>>>> MVC, Windows 8 Apps, JavaScript and much more. Keep your skills >>>>> current >>>>>>>>> with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft >>>>>>>>> MVPs and experts. ON SALE this month only -- learn more at: >>>>>>>>> http://p.sf.net/sfu/learnnow-d2d >>>>>>>>> _______________________________________________ >>>>>>>>> Libmesh-users mailing list >>>>>>>>> [email protected] >>>>>>>>> https://lists.sourceforge.net/lists/listinfo/libmesh-users >>>>>>>>> >>> ------------------------------------------------------------------------------ >>>>>>>> Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, >>> CSS, >>>>>>>> MVC, Windows 8 Apps, JavaScript and much more. Keep your skills >>> current >>>>>>>> with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft >>>>>>>> MVPs and experts. ON SALE this month only -- learn more at: >>>>>>>> http://p.sf.net/sfu/learnnow-d2d >>>>>>>> _______________________________________________ >>>>>>>> Libmesh-users mailing list >>>>>>>> [email protected] >>>>>>>> https://lists.sourceforge.net/lists/listinfo/libmesh-users >>>>>>> >>> ------------------------------------------------------------------------------ >>>>>>> Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS, >>>>>>> MVC, Windows 8 Apps, JavaScript and much more. Keep your skills >>> current >>>>>>> with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft >>>>>>> MVPs and experts. ON SALE this month only -- learn more at: >>>>>>> http://p.sf.net/sfu/learnnow-d2d >>>>>>> _______________________________________________ >>>>>>> Libmesh-users mailing list >>>>>>> [email protected] >>>>>>> https://lists.sourceforge.net/lists/listinfo/libmesh-users >>>>>>> >>> ------------------------------------------------------------------------------ >>>>>> Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS, >>>>>> MVC, Windows 8 Apps, JavaScript and much more. Keep your skills >>> current >>>>>> with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft >>>>>> MVPs and experts. ON SALE this month only -- learn more at: >>>>>> http://p.sf.net/sfu/learnnow-d2d >>>>>> _______________________________________________ >>>>>> Libmesh-users mailing list >>>>>> [email protected] >>>>>> https://lists.sourceforge.net/lists/listinfo/libmesh-users >>>>> >>>>> >>> ------------------------------------------------------------------------------ >>>>> Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS, >>>>> MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current >>>>> with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft >>>>> MVPs and experts. ON SALE this month only -- learn more at: >>>>> http://p.sf.net/sfu/learnnow-d2d >>>>> _______________________________________________ >>>>> Libmesh-users mailing list >>>>> [email protected] >>>>> https://lists.sourceforge.net/lists/listinfo/libmesh-users >>>>> >>> ------------------------------------------------------------------------------ >>>> Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS, >>>> MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current >>>> with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft >>>> MVPs and experts. ON SALE this month only -- learn more at: >>>> http://p.sf.net/sfu/learnnow-d2d >>>> _______________________________________________ >>>> Libmesh-users mailing list >>>> [email protected] >>>> https://lists.sourceforge.net/lists/listinfo/libmesh-users >>> >>> >>> ------------------------------------------------------------------------------ >>> Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS, >>> MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current >>> with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft >>> MVPs and experts. ON SALE this month only -- learn more at: >>> http://p.sf.net/sfu/learnnow-d2d >>> _______________________________________________ >>> Libmesh-users mailing list >>> [email protected] >>> https://lists.sourceforge.net/lists/listinfo/libmesh-users >>> >> > ------------------------------------------------------------------------------ > Everyone hates slow websites. So do we. > Make your web apps faster with AppDynamics > Download AppDynamics Lite for free today: > http://p.sf.net/sfu/appdyn_d2d_jan > _______________________________________________ > Libmesh-users mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/libmesh-users ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_d2d_jan _______________________________________________ Libmesh-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/libmesh-users
