Dear Abbas, Dear Prof. Bangerth, 

 

Thank you very much for your fast replies to my post. I'm sorry for not 
having found step-74 myself before.

step-74 is I think indeed what I am looking for: However, when I played 
around with step-74, I ran into the following two issues:

 

(1) trying to solve in 1D:

   - I get errors of the following type:
   
*error: ‘class dealii::DoFAccessor<0, 1, 1, false>’ has no member named 
   ‘measure’   411 | re() / cell->face(face_no)->measure();* * I can make 
   it run by removing the calls to these functions and replace the penalty 
   factor which would involve them by a constant number, which according to 
   the output seems to work o.k. but might need further tuning of the penalty 
   constant (here just chosen as a constant of 100).*

degree = 1
| cycle | cells | dofs | L2        | L2...red.rate.log2 | H1        | 
H1...red.rate.log2 | Energy    |
| 0     | 4     | 8    | 5.426e-03 | -                  | 7.226e-02 | -     
             | 7.458e-02 |
| 1     | 8     | 16   | 1.360e-03 | 2.00               | 3.619e-02 | 1.00 
              | 3.745e-02 |
| 2     | 16    | 32   | 3.428e-04 | 1.99               | 1.818e-02 | 0.99 
              | 1.894e-02 |
| 3     | 32    | 64   | 8.852e-05 | 1.95               | 9.267e-03 | 0.97 
              | 9.894e-03 |
| 4     | 64    | 128  | 4.032e-05 | 1.13               | 7.273e-03 | 0.35 
              | 9.568e-03 |
| 5     | 128   | 256  | 1.461e-05 | 1.46               | 4.961e-03 | 0.55 
              | 6.636e-03 |
| 6     | 256   | 512  | 4.876e-06 | 1.58               | 2.073e-03 | 1.26 
              | 2.706e-03 |
| 7     | 512   | 1024 | 1.837e-05 | -1.91              | 8.917e-03 | -2.10 
             | 1.260e-02 |
| 8     | 1024  | 2048 | 4.070e-06 | 2.17               | 2.706e-03 | 1.72 
              | 3.817e-03 |
| 9     | 2048  | 4096 | 2.449e-07 | 4.06               | 2.652e-04 | 3.35 
              | 3.474e-04 | 


   - *This first point however is less important than (2) below, because my 
   desired usecase is anyways either 2D or 3D, so I could adjust the boundary 
   conditions to make the 2D essentially 1D. However, it would of course be 
   nice to be able to solve a simple 1D problem as the one described in the 
   .pdf first.*

 (2) trying to solve for polynomial degree 0 (i.e. piecewise constant): 

   - *When I try to solve the default convergence_rate test case in step-74 
   with degree p = 0, I don't see a decrease in the L2 norm of the solution. I 
   tested different values for the penalty_factor for which the given function 
   would evaluate to 0 because of the p*(p+1) term. I tested just removing the 
   p*(p+1) term and also tested constants like 1000 or 0.001, but in all 
   cases, I got results similar to the table below, whre the L2 norm does not 
   decrease. The table below is for the case with penalty term * = 0.5 * (1. 
   / cell_extent_left + 1. / cell_extent_right);

degree = 0
| cycle | cells | dofs  | L2        | L2...red.rate.log2 | H1        | 
H1...red.rate.log2 | Energy    |
| 0     | 16    | 16    | 3.016e-01 | -                  | 4.443e+00 | -   
               | 6.045e+00 |
| 1     | 64    | 64    | 2.273e-01 | 0.41               | 4.443e+00 | 0.00 
              | 5.680e+00 |
| 2     | 256   | 256   | 2.284e-01 | -0.01              | 4.443e+00 | 0.00 
              | 5.554e+00 |
| 3     | 1024  | 1024  | 2.368e-01 | -0.05              | 4.443e+00 | 0.00 
              | 5.497e+00 |
| 4     | 4096  | 4096  | 2.428e-01 | -0.04              | 4.443e+00 | 0.00 
              | 5.470e+00 |
| 5     | 16384 | 16384 | 2.462e-01 | -0.02              | 4.443e+00 | 0.00 
              | 5.456e+00 |
| 6     | 65536 | 65536 | 2.481e-01 | -0.01              | 4.443e+00 | 0.00 
              | 5.448e+00 |
 
Maybe this is well-known and it shouldn't work. However, it would be nice 
to be able to solve with degree 0 because that would allow me to mimic a 
finite volume type implemenation. 

Thank you very much again on any hints how I could resolve either of the 
two issues.

Best regards,
Nik



On Friday, June 21, 2024 at 12:11:32 AM UTC+2 Wolfgang Bangerth wrote:


> Since the equations I'm trying to solve are conservations laws, I would 
like
> to use a finite volume type of implementation. I know that deal.ii is a 
finite
> element library. However, since I would like to use a fully implicit 
approach
> and later hopefully octree refined grids, I think deal.ii offers the 
things
> needed for this task as well as many functionalities and interfaces for 
future
> tasks.

This is true, but before you get fully settled on FV methods, may I suggest
that you also think about the accuracy you get for the simplicity? If you 
use
piecewise constants (=finite volumes), the best you can hope for is O(h)
accuracy. That's quite inaccurate. By using finite element methods, you will
generally be able to obtain much better accuracy (not just in terms of the
convergence *rate*, but in *absolute errors*).


I agree, the discontinuous elements are very promising for this because 
ideally, I could (1) recover the desired finite
volume formulation for degree 0, (2) keep the conservativeness and (3) 
easily get better accuracy by using higher order elements.
 

> To start, I've summarized a simplified problem I would like to solve in 
the
> appended .pdf file. It's a 1D Laplace equation using finite volumes.

I think I understand what you want to do, but you may want to see if you can
make your writing more precise. For example, in (4), you say you integrate
over S, but you're missing the normal vector that in your case is either +1 
or
-1, but is necessary to ensure that the formula is correct. You can see that
in the transition between (5) and (6) where a minus sign magically appears 
in
front of the first term. Of course, (5) and (6) are also not exactly equal,
but only approximately.

Second, in (6) there magically appears a factor of h^2 for which I don't 
have
an explanation.

(No need to write back to these comments -- I just wanted to point it out, 
the
teacher in me can't just let it go ;-) )


Thank you very much for the comments - helps me to be more precise.


> I would like to build on the step-12 or step-12b tutorials because they 
use
> discontinuous elements too. I don't call the beta function of the original
> tutorials such that a 1D version should be possible.
>
> The appended nik-step-12.cc file contains a hard-coded version of the 
three
> assembly functions that results in the correct matrix and solution for a 
very
> specific case described in the .pdf (section 3).
>
> My questions would therefore be the following:
>
> * How should I best write the three functions (cell, boundary and interior
> face worker) for the matrix/RHS assembly with as less hard-coding as
> possible for a finite volume scheme like equations (7-9) in the .pdf.
> * Related - How can I access the elements of the solution vector (phi_i) 
of
> the current cell and neighbor cell that are used for example in equation
> (7) in the .pdf.

As already mentioned by Abbas, step-74 gives a good overview.

Best
W.





On Friday, June 21, 2024 at 12:11:32 AM UTC+2 Wolfgang Bangerth wrote:

>
> > Since the equations I'm trying to solve are conservations laws, I would 
> like 
> > to use a finite volume type of implementation. I know that deal.ii is a 
> finite 
> > element library. However, since I would like to use a fully implicit 
> approach 
> > and later hopefully octree refined grids, I think deal.ii offers the 
> things 
> > needed for this task as well as many functionalities and interfaces for 
> future 
> > tasks.
>
> This is true, but before you get fully settled on FV methods, may I 
> suggest 
> that you also think about the accuracy you get for the simplicity? If you 
> use 
> piecewise constants (=finite volumes), the best you can hope for is O(h) 
> accuracy. That's quite inaccurate. By using finite element methods, you 
> will 
> generally be able to obtain much better accuracy (not just in terms of the 
> convergence *rate*, but in *absolute errors*).
>
>
> > To start, I've summarized a simplified problem I would like to solve in 
> the 
> > appended .pdf file. It's a 1D Laplace equation using finite volumes.
>
> I think I understand what you want to do, but you may want to see if you 
> can 
> make your writing more precise. For example, in (4), you say you integrate 
> over S, but you're missing the normal vector that in your case is either 
> +1 or 
> -1, but is necessary to ensure that the formula is correct. You can see 
> that 
> in the transition between (5) and (6) where a minus sign magically appears 
> in 
> front of the first term. Of course, (5) and (6) are also not exactly 
> equal, 
> but only approximately.
>
> Second, in (6) there magically appears a factor of h^2 for which I don't 
> have 
> an explanation.
>
> (No need to write back to these comments -- I just wanted to point it out, 
> the 
> teacher in me can't just let it go ;-) )
>
>
> > I would like to build on the step-12 or step-12b tutorials because they 
> use 
> > discontinuous elements too. I don't call the beta function of the 
> original 
> > tutorials such that a 1D version should be possible.
> > 
> > The appended nik-step-12.cc file contains a hard-coded version of the 
> three 
> > assembly functions that results in the correct matrix and solution for a 
> very 
> > specific case described in the .pdf (section 3).
> > 
> > My questions would therefore be the following:
> > 
> > * How should I best write the three functions (cell, boundary and 
> interior
> > face worker) for the matrix/RHS assembly with as less hard-coding as
> > possible for a finite volume scheme like equations (7-9) in the .pdf.
> > * Related - How can I access the elements of the solution vector (phi_i) 
> of
> > the current cell and neighbor cell that are used for example in equation
> > (7) in the .pdf.
>
> As already mentioned by Abbas, step-74 gives a good overview.
>
> Best
> W.
>
> -- 
> ------------------------------------------------------------------------
> Wolfgang Bangerth email: bang...@colostate.edu
> www: http://www.math.colostate.edu/~bangerth/
>
>
>

-- 
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see 
https://groups.google.com/d/forum/dealii?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to dealii+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/dealii/876b0c3f-c185-49c8-911a-7a5c4a143fe3n%40googlegroups.com.

Reply via email to