This is very useful! I was more focused on my search for an example with DMDASNES example instead of ctx.
I guess from the looks of it, I can pass it directly in the ctx argument or I can pass the pointer using the interfaces defined in the referenced code you provided, correct?
Another question I had is that functions has to be defined as external? Is that a general case? Or is it just when the subroutine is defined elsewhere so I have to define it as external. Because now when the solver calls the FormFunction, a NULL is being passed and I can’t access the x or F vectors.
Thank you for your patience! I am still new to PETSc and learning how to use it.
From: Matthew Knepley <knepley@gmail.com>
Sent: Sunday, May 14, 2023 12:24 PM
To: Khaled Nabil Shar Abdelaziz <kabdelaz@purdue.edu>
Cc: petsc-users@mcs.anl.gov
Subject: Re: [petsc-users] SNESDMDASNESSetFunctionLocal in Fortran
---- External Email: Use caution with attachments, links, or sharing data ----
On Sun, May 14, 2023 at 12:06 PM Khaled Nabil Shar Abdelaziz <kabdelaz@purdue.edu> wrote:
Hey there,
I'm having a problem with the DMDASNESSetFunctionLocal() function in C and its Fortran counterpart. The thing is, in C, you can pass a bunch of variables using the ctx parameter, but in Fortran, it only seems to accept one variable.
What's weird is that the SNESSetFunction() function has a similar ctx parameter, but in Fortran, it can handle multiple variables for ctx, unlike DMDASNESSetFunctionLocal(). Do you know if this is on purpose, or am I missing something?
I think we show how to do this here:
Thanks,
Matt
Thanks in advance!
Best regards,
Khaled
--
What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.
-- Norbert Wiener