Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test fe_nedelec_sz_hessian_divergence_theorem.debug times out #13348

Closed
bangerth opened this issue Feb 7, 2022 · 6 comments
Closed

Test fe_nedelec_sz_hessian_divergence_theorem.debug times out #13348

bangerth opened this issue Feb 7, 2022 · 6 comments
Labels
Milestone

Comments

@bangerth
Copy link
Member

bangerth commented Feb 7, 2022

#12771 adds a test that runs quite a long time and times out on my system. Running the test by itself, I get this for the run time:

time ./fe_nedelec_sz_hessian_divergence_theorem.debug 

real    45m12.124s
user    45m5.834s
sys     0m6.253s

That's just a tad over the 600 seconds the test suite allows for each test :-)

@kinnewig Do you think the test could be made smaller, for example by using a less refined mesh, so that it doesn't run as long? It would be nice to get the run time below a minute at most.

@bangerth bangerth added the Tests label Feb 7, 2022
@bangerth bangerth added this to the Release 10.0 milestone Feb 7, 2022
@kinnewig
Copy link
Contributor

kinnewig commented Feb 8, 2022

I already noticed, it takes more time to assamble the FE_NedelecSZ elements than to assemble the FE_Nedelec elements in general.

It would be possible to compute the hessians in FE_NedelecSZ a bit faster, but it makes the code more complex and therefore more error prone. Therefore I decided not optimize the computation of the hessian (at least for the moment).
But I am sure, even with the optimization, the test fe_nedelec_sz_hessian_divergence_theorem.debug would still take way over 600 seconds.

The test is performed on a disc in 2d or respectively on a ball in 3d

  Triangulation<dim> tr;
  GridGenerator::hyper_ball(tr);

  static const SphericalManifold<dim> boundary;
  tr.set_manifold(0, boundary);

  tr.refine_global(1);

  FE_Nedelec<dim> fe(1);
  test(tr, fe, tolerance); 

It should be enough to consider the ball without any further refinement. The important part is, that in the test considers deformed cells, and this is already given for the ball without any further refinement.

When I run the test without refinement, it takes about ~320 seconds on my system.

@bangerth
Copy link
Member Author

bangerth commented Feb 8, 2022

Want to give this a try and implement a patch?

@kinnewig
Copy link
Contributor

kinnewig commented Feb 8, 2022

Want to give this a try and implement a patch?

Yes,
I would just use the unrefined disk/sphere.

Or do you have any other suggestions?

@bangerth
Copy link
Member Author

bangerth commented Feb 8, 2022

Give that a try. If that's not good enough, how high a polynomial degree do you go to in the test?

@kinnewig
Copy link
Contributor

kinnewig commented Feb 8, 2022

I just opened a pull request with the changes I suggested above #13349

Give that a try. If that's not good enough, how high a polynomial degree do you go to in the test?

The test is already performed with the lowest order possible, which is in this case p=1. We can't use p=0 for the test, because in this case the test would not cover everything necessary.

@bangerth
Copy link
Member Author

This brought the test down to 5min43s. That's still quite close to the threshold, and probably exceeds the threshold if the machine is under load. We'll just see how it goes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants