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? Many thanks! Justin
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. 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/
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 http://www.caam.rice.edu/~mk51/
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. 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]<mailto:[email protected]>> wrote: On Tue, May 30, 2017 at 10:19 PM, Justin Pogacnik <[email protected]<mailto:[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 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/
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 http://www.caam.rice.edu/~mk51/
?All good. Thanks Matt. Will keep an eye out for that update. :) -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]<mailto:[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]<mailto:[email protected]>> Sent: Thursday, June 1, 2017 1:34 AM To: Justin Pogacnik Cc: [email protected]<mailto:[email protected]> Subject: Re: [petsc-users] PetscFECreateDefault in Fortran On Wed, May 31, 2017 at 7:53 AM, Matthew Knepley <[email protected]<mailto:[email protected]>> wrote: On Tue, May 30, 2017 at 10:19 PM, Justin Pogacnik <[email protected]<mailto:[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 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/
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/
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. Thanks again, Justin ________________________________ From: Matthew Knepley <[email protected]> Sent: Friday, June 2, 2017 9:57 AM To: Justin Pogacnik Cc: [email protected] Subject: Re: [petsc-users] PetscFECreateDefault in Fortran On Thu, Jun 1, 2017 at 2:59 PM, Justin Pogacnik <[email protected]<mailto:[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]<mailto:[email protected]>> Sent: Friday, June 2, 2017 12:52 AM To: Justin Pogacnik Cc: [email protected]<mailto:[email protected]> Subject: Re: [petsc-users] PetscFECreateDefault in Fortran On Wed, May 31, 2017 at 10:00 PM, Justin Pogacnik <[email protected]<mailto:[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]<mailto:[email protected]>> Sent: Thursday, June 1, 2017 1:34 AM To: Justin Pogacnik Cc: [email protected]<mailto:[email protected]> Subject: Re: [petsc-users] PetscFECreateDefault in Fortran On Wed, May 31, 2017 at 7:53 AM, Matthew Knepley <[email protected]<mailto:[email protected]>> wrote: On Tue, May 30, 2017 at 10:19 PM, Justin Pogacnik <[email protected]<mailto:[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 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/
On Thu, Jun 1, 2017 at 6:29 PM, Justin Pogacnik <[email protected]> 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 <[email protected]> *Sent:* Friday, June 2, 2017 9:57 AM *To:* Justin Pogacnik *Cc:* [email protected] *Subject:* Re: [petsc-users] PetscFECreateDefault in Fortran
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/a19fbe4d52f99f875359274419a2d4 0a87edfba3/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 <[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
-- 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/
Works perfectly! Thanks Matt ________________________________ From: Matthew Knepley <[email protected]> Sent: Saturday, June 3, 2017 1:52 AM To: Justin Pogacnik Cc: [email protected] Subject: Re: [petsc-users] PetscFECreateDefault in Fortran On Thu, Jun 1, 2017 at 6:29 PM, Justin Pogacnik <[email protected]<mailto:[email protected]>> 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 <[email protected]<mailto:[email protected]>> Sent: Friday, June 2, 2017 9:57 AM To: Justin Pogacnik Cc: [email protected]<mailto:[email protected]> Subject: Re: [petsc-users] PetscFECreateDefault in Fortran On Thu, Jun 1, 2017 at 2:59 PM, Justin Pogacnik <[email protected]<mailto:[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]<mailto:[email protected]>> Sent: Friday, June 2, 2017 12:52 AM To: Justin Pogacnik Cc: [email protected]<mailto:[email protected]> Subject: Re: [petsc-users] PetscFECreateDefault in Fortran On Wed, May 31, 2017 at 10:00 PM, Justin Pogacnik <[email protected]<mailto:[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]<mailto:[email protected]>> Sent: Thursday, June 1, 2017 1:34 AM To: Justin Pogacnik Cc: [email protected]<mailto:[email protected]> Subject: Re: [petsc-users] PetscFECreateDefault in Fortran On Wed, May 31, 2017 at 7:53 AM, Matthew Knepley <[email protected]<mailto:[email protected]>> wrote: On Tue, May 30, 2017 at 10:19 PM, Justin Pogacnik <[email protected]<mailto:[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 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/
participants (2)
-
Justin Pogacnik -
Matthew Knepley