On Thu, Jun 1, 2017 at 2:59 PM, Justin Pogacnik <[email protected]> wrote:
All good. Thanks Matt. Will keep an eye out for that update. :)
I have checked, and I was wrong before. I did write the code for PetscQuadratureGet/RestoreData() in Fortran. Since it uses array arguments, I used F90. Thus you have to use F90 pointers, in the same style as DMPlexGet/RestoreCone() in this example: https://bitbucket.org/petsc/petsc/src/a19fbe4d52f99f875359274419a2d40a87edfb... Let me know if that is not understandable Thanks, Matt
-Justin ------------------------------ *From:* Matthew Knepley <[email protected]> *Sent:* Friday, June 2, 2017 12:52 AM
*To:* Justin Pogacnik *Cc:* [email protected] *Subject:* Re: [petsc-users] PetscFECreateDefault in Fortran
On Wed, May 31, 2017 at 10:00 PM, Justin Pogacnik < [email protected]> wrote:
Thanks Matt! That works perfectly now. I have another question regarding accessing the quadrature information.
When I use PetscFEGetQuadrature(), then PetscQuadratureView(), I see what I expect regarding point locations, weights.
However, when I try to use PetscQuadratureGetData() the pointers seem to point to random memory locations.
The exact line from my test problem is: call PetscQuadratureGetData(quad,q_nc,q_dim,q_num,pq_points,pq_weights,ierr);
where the pq_* are the pointers giving strange output. The q_nc, q_dim, and q_num are all giving what I would expect to see.
You are clearly the first Fortran user interested in this stuff ;) Handling of arrays in Fortran demands some more work from us. I need to write a wrapper for that function. I will do it as soon as I can.
Thanks,
Matt
Happy to send along the file if that helps.
Thanks again,
Justin ------------------------------ *From:* Matthew Knepley <[email protected]> *Sent:* Thursday, June 1, 2017 1:34 AM *To:* Justin Pogacnik *Cc:* [email protected] *Subject:* Re: [petsc-users] PetscFECreateDefault in Fortran
On Wed, May 31, 2017 at 7:53 AM, Matthew Knepley <[email protected]> wrote:
On Tue, May 30, 2017 at 10:19 PM, Justin Pogacnik < [email protected]> wrote:
Hello,
I'm developing a finite element code in fortran 90. I recently updated my PETSc and am now getting the following error during compile/linking on an existing application:
Undefined symbols for architecture x86_64:
"_petscfecreatedefault_", referenced from:
_MAIN__ in fe_test.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
make: *** [dist/fe_test] Error 1
I'm running Mac OS X Yosemite (10.10.5). I've created a "minimum working example" (attached) that re-creates the problem. It's basically just dm/impls/plex/examples/tutorials/ex3f90, but tries to create a PetscFE object. Everything goes fine and the DM looks like what is expected if PetscFECreateDefault is commented out. Any idea what am I missing?
Yes, I had not made a Fortran binding for this function. I will do it now.
I have merged it to the 'next' branch, and it will be in 'master' soon.
Thanks,
Matt
Thanks,
Matt
Many thanks!
Justin
-- 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
-- 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
-- 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
-- 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 http://www.caam.rice.edu/~mk51/