[petsc-users] PetscFECreateDefault in Fortran

Justin Pogacnik j.pogacnik at auckland.ac.nz
Fri Jun 2 14:38:52 CDT 2017


​Works perfectly! Thanks Matt

________________________________
From: Matthew Knepley <knepley at gmail.com>
Sent: Saturday, June 3, 2017 1:52 AM
To: Justin Pogacnik
Cc: petsc-users at mcs.anl.gov
Subject: Re: [petsc-users] PetscFECreateDefault in Fortran

On Thu, Jun 1, 2017 at 6:29 PM, Justin Pogacnik <j.pogacnik at auckland.ac.nz<mailto:j.pogacnik at auckland.ac.nz>> wrote:

Hi Matt,

​Yes, I was using the QuadratureGetData in the past and the results were good. I wasn't sure why that would have changed recently. Looking at the example (in test directory, not tutorial), it looks like the two interesting pointers are pEC and pES. pEC's target is EC, which is explicitly set. Does pES have no target? In my code, I set (basically the same for q_points as well):

PetscReal, target, dimension(8) :: q_weights

PetscReal, pointer :: pq_weights(:)


then:

pq_weights => q_weights


Then call: PetscQuadratureGetData()

When I try to write the quadrature points and weights to see their output, I get values like NaN, 3.0e-310, etc.


I tried removing the q_weights target (like pES example in the test) and that returns a segfault. I've attached my example if that helps. You can uncomment the QuadratureView() and see that the points and weights are correct.​

Okay, when we did the conversion of the F90 interface, the DT module was left out. I put it back in and your example
started working again. You will need to use 'next' or my fix branch right now. If you rebuild, the module will be rebuilt
and it should work.

  Thanks,

     Matt

Thanks again,


Justin

________________________________
From: Matthew Knepley <knepley at gmail.com<mailto:knepley at gmail.com>>
Sent: Friday, June 2, 2017 9:57 AM
To: Justin Pogacnik
Cc: petsc-users at mcs.anl.gov<mailto:petsc-users at mcs.anl.gov>
Subject: Re: [petsc-users] PetscFECreateDefault in Fortran

On Thu, Jun 1, 2017 at 2:59 PM, Justin Pogacnik <j.pogacnik at auckland.ac.nz<mailto:j.pogacnik at auckland.ac.nz>> 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/a19fbe4d52f99f875359274419a2d40a87edfba3/src/dm/impls/plex/examples/tutorials/ex1f90.F90?at=master&fileviewer=file-view-default

Let me know if that is not understandable

  Thanks,

    Matt

-Justin

________________________________
From: Matthew Knepley <knepley at gmail.com<mailto:knepley at gmail.com>>
Sent: Friday, June 2, 2017 12:52 AM

To: Justin Pogacnik
Cc: petsc-users at mcs.anl.gov<mailto:petsc-users at mcs.anl.gov>
Subject: Re: [petsc-users] PetscFECreateDefault in Fortran

On Wed, May 31, 2017 at 10:00 PM, Justin Pogacnik <j.pogacnik at auckland.ac.nz<mailto:j.pogacnik at auckland.ac.nz>> 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 <knepley at gmail.com<mailto:knepley at gmail.com>>
Sent: Thursday, June 1, 2017 1:34 AM
To: Justin Pogacnik
Cc: petsc-users at mcs.anl.gov<mailto:petsc-users at mcs.anl.gov>
Subject: Re: [petsc-users] PetscFECreateDefault in Fortran

On Wed, May 31, 2017 at 7:53 AM, Matthew Knepley <knepley at gmail.com<mailto:knepley at gmail.com>> wrote:
On Tue, May 30, 2017 at 10:19 PM, Justin Pogacnik <j.pogacnik at auckland.ac.nz<mailto:j.pogacnik at auckland.ac.nz>> 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

http://www.caam.rice.edu/~mk51/



--
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/



--
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/



--
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/



--
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/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20170602/eb0e4ecb/attachment.html>


More information about the petsc-users mailing list