About newton method and a nonlinear DGM equation

22 views
Skip to first unread message

Hyun-Geun Shin

unread,
Jul 13, 2021, 1:35:26 PM7/13/21
to dea...@googlegroups.com

Hello

 

I want to solve a nonlinear equation discretized by a DGM.

To do it, I am going to use newton method.

For newton method F’ = -F,  I need to use the solution at the previous step.

In view of step-15, it seems that I can do it.

However, I have no ideas and clues on how to access the solution of faces at the previous step. (I need solution values and the gradients)

In addition, in step-15, it has solution values at each cell. Hence, using for loop, simply access to the solution in the order is fine. On the contrary, in step-74, there are three parts such as cells, boundary faces and internal faces. I am not sure how to get the solution and use it according to other indices. This concern happens because I do not know the data structure.

 

Please give me some advice.

 

Best regards

 

Hyungeun

 

 

Wolfgang Bangerth

unread,
Jul 13, 2021, 6:39:47 PM7/13/21
to dea...@googlegroups.com

Hyeungeun

> I want to solve a nonlinear equation discretized by a DGM.
>
> To do it, I am going to use newton method.
>
> For newton method F’ = -F,  I need to use the solution at the previous step.
>
> In view of step-15, it seems that I can do it.
>
> However, I have no ideas and clues on how to access the solution of faces at
> the previous step. (I need solution values and the gradients)

The same way as is done in step-15. In step-15, we need the values and
gradients of the previous solution on quadrature points on the cell, and we
get those from FEValues via fe_values.get_function_values(...) and
fe_values.get_function_gradients(...).

If you have jump terms in your weak formulation, and if these jump terms
contain coefficients that depend on the previous solution, then you need to
get the values and gradients of the previous solution at the quadrature points
of the face over which you are currently integrating. Because you do face
integration via FEFaceValues, you have to use
fe_face_values.get_function_values/gradients().

In other words, these two cases are entirely analogous. The only thing that
doesn't yet work is that you can't use FEInterfaceValues because that class
does not have get_function_values/gradients() functions yet. But, you can ask
the FEInterfaceValues objects for the two FEFaceValues objects on both sides
of the interface, and obtain function values from it.

Best
W.

--
------------------------------------------------------------------------
Wolfgang Bangerth email: bang...@colostate.edu
www: http://www.math.colostate.edu/~bangerth/

Reply all
Reply to author
Forward
0 new messages