Yahe,
What problem do you want to solve, a linear/nonlinear optimisation problem with
equality constrains?
Hong
________________________________
From: petsc-dev <[email protected]> on behalf of Barry Smith
<[email protected]>
Sent: Friday, April 8, 2022 10:04 AM
To: 高亚贺 <[email protected]>
Cc: [email protected] <[email protected]>
Subject: Re: [petsc-dev] About the problem of Lagrange multiplier
How can Q be non-square? U has n entries so presumably K is n by n. Q has
the same number of rows as K and from your definition of Q containing a_1 ....
a_n entries per row Q has n columns. So Q is also n by n. If this is the case
then it appears you have the same number of Lagrange multipliers as u so you
can simply create a DMDA with twice as many degrees of freedom on each vertex,
on each vertex the first half of the degrees of freedom are u and the second
half lambda. Note that this means the u and lambda (and hence the matrix
entries also) are interlaced between u and lambda, but this is fine; it is only
a convenience for human eyes that we like to write all the u before all the
lambda; any representation in the computer is fine.
Barry
On Apr 8, 2022, at 1:34 AM, 高亚贺
<[email protected]<mailto:[email protected]>> wrote:
Dear Mr./Ms.,
In fact, I want to solve a discretized equation like this
<1649395840117.png>
where K, U=[u1 u2 …un]T and F are fields sit on the vertices, and can easily be
created by ‘DMCreateMatrix’ or ‘DMCreateGlobalVector’. λ is the Lagrange
multiplier vector. The augmented Q (non-square) is the constraint coefficient
matrix and has the form as
<1649395860765.png>
The Q is employed here to satisfy the following constraints
<1649395881836.png>
So how to build the entire system in-place in one big matrix (Kλ)? Could you
give me more specific suggestions on this problem?
Thank you very much!
Best regards,
Yahe
-----原始邮件-----
发件人:"Barry Smith" <[email protected]<mailto:[email protected]>>
发送时间:2022-04-07 23:10:20 (星期四)
收件人: "Matthew Knepley" <[email protected]<mailto:[email protected]>>
抄送: "高亚贺" <[email protected]<mailto:[email protected]>>, PETSc
<[email protected]<mailto:[email protected]>>
主题: Re: [petsc-users] question
DMStag may also be useful for your needs (and far simpler to use than DMPLEX)
depending on where your Lagrange multipliers live. Note that regardless you
should not need to be copying entire large submatrices around into bigger
matrices; you can build the entire system in-place in one big matrix. MatNest
is also a possibility depending on exactly what you are doing.
If you explain what your Lagrange multipliers are (the constraints) we may be
able to make more specific suggestions.
Barry
On Apr 7, 2022, at 8:26 AM, Matthew Knepley
<[email protected]<mailto:[email protected]>> wrote:
On Thu, Apr 7, 2022 at 8:16 AM 高亚贺 via petsc-users
<[email protected]<mailto:[email protected]>> wrote:
Dear Mr./Ms.,
I have used ‘DMCreateMatrix’ to create a matrix K, and also the
‘DMCreateGlobalVector’ to create two vectors U (to be solved) and F (right-hand
side), i.e. KU=F. Now, I want to add some complex constraints to this system
through lagrangian multiplier method, and the constraint matrix is Q. The KU=F
transforms to
<1649328463919.png>
How to create Kλ, and how to effectively copy values K and Q to Kλ? Does the
newly created Kλ and Fλ still have an advantage of DMDA? Or do you have any
other good suggestions for this kind of problem?
DMDA can only really handle collocated discretizations, meaning all fields sit
on the vertices. If you can discretize your problem this way, then just give it
two fields and assemble K_\lambda as normal. If not, then you might look at
DMPlex which supports a wider range of discretizations.
Thanks,
Matt
Thank you very much!
Best regards,
A PETSc user
--
What most experimenters take for granted before they begin their experiments is
infinitely more interesting than any results to which their experiments lead.
-- Norbert Wiener
https://www.cse.buffalo.edu/~knepley/<http://www.cse.buffalo.edu/~knepley/>
<About the problem of Lagrange multiplier.docx>