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

Reply via email to