[Getdp] Lagrange Multiplier instead of Constraint

Jasper funkybob at gmail.com
Mon Aug 31 19:50:50 CEST 2015


Hi,

Still hoping somebody can point me in the right direction to do this. I now
think I probably do not need the D1 operator since I want to add equations
for the variables directly, but:

       // Constraints as Lagrange Multipliers
       Galerkin { [ TensorDiag[ 1, 1, 1 ] * Dof{l} , {u} ] ;
         In Fixation ;
         Jacobian Vol ; Integration GradGrad ; }
       Galerkin { [ TensorDiag[ 1, 1, 1 ] * Dof{u} , {l} ] ;
         In Fixation ;
         Jacobian Vol ; Integration GradGrad ; }

still results in zero rows in the matrix. I've now resorted to exporting
the matrix to Matlab, adding the equations there and solving. This appears
to work but is not really ideal...

Maybe I need one of the GlobalEquations for this (I have a hard time
understanding these...)

Any thoughts or help very much appreciated!

Best regards,

Jasper


On Fri, Aug 28, 2015 at 12:17 PM, Jasper <funkybob at gmail.com> wrote:

> Hi,
>
> Does anybody have an idea how to implement a Lagrange multiplier in GetDP
> instead of a constraint? In this case for a mechanical problem. I've tried
> adding the following:
>
> To the FunctionSpace add the variables for the Lagrange multiplier [ lxn,
> lyn, lzn ] that support the nodes defined in region "Fixation":
>
>   { Name H_l_Mec3D ; Type Vector ;
>     BasisFunction {
>       { Name txn ; NameOfCoef lxn ; Function BF_NodeX ;
>         Support Fixation ; Entity NodesOf[ All ] ; }
>       { Name tyn ; NameOfCoef lyn ; Function BF_NodeY ;
>         Support Fixation ; Entity NodesOf[ All ] ; }
>       { Name tzn ; NameOfCoef lzn ; Function BF_NodeZ ;
>         Support Fixation ; Entity NodesOf[ All ] ; }
>     }
>     Constraint {
>     }
>   }
>
> Then in the Formulation I add the equations (identity matrix for now) on
> the off-diagonals, i.e. [ 0 I; I 0 ] * [ u; l ] = [ 0; 0 ]:
>
>        // Constraints as Lagrange Multipliers
>        Galerkin { [ TensorDiag[ 1, 1, 1 ] * Dof{D1 l} , {D1 u} ] ;
>          In Fixation ;
>          Jacobian Vol ; Integration GradGrad ; }
>        Galerkin { [ TensorDiag[ 1, 1, 1 ] * Dof{D1 u} , {D1 l} ] ;
>          In Fixation ;
>          Jacobian Vol ; Integration GradGrad ; }
>
> But somehow this does not work. I have checked the matrices and the rows
> are added, but somehow they are all zero, so the identity matrix does not
> show up.
>
> Any help would be greatly appreciated.
>
> Best regards,
>
> Jasper
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.geuz.org/pipermail/getdp/attachments/20150831/946f17f1/attachment.html>