DOCS: solver callback function signatures insufficiently documented

Aperta Adatta ai principianti
#3,556 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
1/5
Tempo stimato
1-3 ore
Idoneità per principianti
82/100
Tipo di issue
Documentazione
Chiarezza
Specificata chiaramente
Stato di attività
Ferma
Stack tecnologico
python
Ambito
documentation

Direzione di ricerca

Inizia con la docstring di NonlinearVariationalSolver in firedrake/variational_solver.py, prestando particolare attenzione alla documentazione esistente dei pre-callback. Confrontala con l’uso previsto dei post-callback in tests/regression/test_custom_callbacks.py. Il lavoro è completato quando le firme di post_jacobian e degli altri post_-callback sono documentate chiaramente e corrispondono al test di regressione.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

documentation

Variational solvers accept pre_ and post_ callback functions. The docstring for NonlinearVariationalSolver describes what the pre_ callbacks should look like:

        To use the ``pre_jacobian_callback`` or ``pre_function_callback``
        functionality, the user-defined function must accept the current
        solution as a petsc4py Vec. Example usage is given below:

        .. code-block:: python3

            def update_diffusivity(current_solution):
                with cursol.dat.vec_wo as v:
                    current_solution.copy(v)
                solve(trial*test*dx == dot(grad(cursol), grad(test))*dx, diffusivity)

            solver = NonlinearVariationalSolver(problem,
                                                pre_jacobian_callback=update_diffusivity)

But the post_ callbacks are not mentioned. This is confusing because the function signature for post_ callbacks is different to the pre_ ones. The post_jacobian_callback signature for instance looks like:

def callback(current_solution, J):
    ...

Using the wrong function signature causes the solver to terminate without a helpful error message.

It might be helpful to look at the test_custom_callbacks regression test to see intended usage.

Lingua principale
Python
Stelle
684
Fork
204
Merge medio
4g 14h
PR unite (30g)
46

Preparare l'ambiente

  • Nessun Dockerfile né file Docker Compose
  • Ha un modello di pull request
  • Nessuna guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di firedrakeproject/firedrake

Tutte le issue di firedrakeproject/firedrake

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.