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]> 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]>
> 发送时间:2022-04-07 23:10:20 (星期四)
> 收件人: "Matthew Knepley" <[email protected]>
> 抄送: "高亚贺" <[email protected]>, PETSc <[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>

Reply via email to