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
>
------------------------------------------------------------------------------
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

Reply via email to