[petsc-users] DMPlex<Vec,Mat>SetClosure

Matthew Knepley knepley at gmail.com
Sat Apr 13 21:32:30 CDT 2013


On Sat, Apr 13, 2013 at 9:18 PM, Dharmendar Reddy
<dharmareddy84 at gmail.com>wrote:

> I am getting bunch of erros in my code related to DMPlex
>
> If i use DMPlexVecSetClosure I get the following error.
>
> A pointer dummy argument may only be argument associated with a pointer.
> [FELM]
>     call
> DMPlexVecSetClosure(dm,PETSC_NULL_OBJECT,F,cellId,Felm,ADD_VALUES,ierr)
>
> Felm is defined as  : PetscScalar,allocatable :: Felm(:)
>

Did you look at the sample code?


http://www.mcs.anl.gov/petsc/petsc-dev/src/dm/impls/plex/examples/tests/ex2f90.F.html

You define pointers. You can see what function I have defined by looking at
the header


https://bitbucket.org/petsc/petsc/src/62a20339e027b37fab44424f1466054586f1dc85/include/finclude/ftn-custom/petscdmplex.h90?at=master

and its clear from the file that DMPlexMatSetClosure() has not been defined
in Fortran.

   Matt


> I do a similar call to DMPlexMatSetClosure, i get no error.
>
> Now if i use DMPlexVecSetClosureF90, code compiles, but i see undefined
> reference error during link stage:
>
> FEMModules.F90:(.text+0xba77): undefined reference to
> `dmplexvecsetclosuref90_'
>
> FEMModules.F90:(.text+0xbea9): undefined reference to
> `dmplexmatsetclosure_'
>
> FEMModules.F90:(.text+0xbfe0): undefined reference to
> `dmplexgetdefaultsection_'
> FEMModules.F90:(.text+0xc048): undefined reference to
> `petscsectiongetconstraintdof_
>
> Solver.F90:(.text+0xaa1): undefined reference to `dmsnessetjacobianlocal_'
> Solver.F90:(.text+0xabc): undefined reference to `dmsnessetfunctionlocal_'
>
>
>
>
> On Sat, Apr 13, 2013 at 8:22 PM, Matthew Knepley <knepley at gmail.com>wrote:
>
>> On Sat, Apr 13, 2013 at 8:20 PM, Dharmendar Reddy <
>> dharmareddy84 at gmail.com> wrote:
>>
>>> Hello,
>>>         I am getting an undefined reference error ::
>>> FEMModules.F90:(.text+0xba77): undefined reference to
>>> `dmplexvecsetclosuref90_'
>>> FEMModules.F90:(.text+0xbea9): undefined reference to
>>> `dmplexmatsetclosuref90_'
>>>
>>> I can see that DMPlexVecSetClosure is defined in
>>>
>>> /finclude/ftn-custom/petscdmplex.h90:159:
>>>
>>> but the name is DMPlexVecSetClosure instead of DMPlexVecSetClosureF90.
>>>
>>> And there is no DMPlexMatSetClosureF90
>>>
>>>
>>> What should i do ?
>>>
>>
>> I was not consistent here with the naming. Since an F77 version was not
>> possible, I did not
>> add F90. That is probably wrong, however I would like to scrap the F77
>> version of Plex since
>> everyone uses F90 now and the extra letters are annoying. Go ahead and
>> use the function.
>>
>>     Matt
>>
>>
>>> Thanks
>>> Reddy
>>> --
>>> -----------------------------------------------------
>>> Dharmendar Reddy Palle
>>> Graduate Student
>>> Microelectronics Research center,
>>> University of Texas at Austin,
>>> 10100 Burnet Road, Bldg. 160
>>> MER 2.608F, TX 78758-4445
>>> e-mail: dharmareddy84 at gmail.com
>>> Phone: +1-512-350-9082
>>> United States of America.
>>> Homepage: https://webspace.utexas.edu/~dpr342
>>>
>>
>>
>>
>> --
>> 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
>>
>
>
>
> --
> -----------------------------------------------------
> Dharmendar Reddy Palle
> Graduate Student
> Microelectronics Research center,
> University of Texas at Austin,
> 10100 Burnet Road, Bldg. 160
> MER 2.608F, TX 78758-4445
> e-mail: dharmareddy84 at gmail.com
> Phone: +1-512-350-9082
> United States of America.
> Homepage: https://webspace.utexas.edu/~dpr342
>



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


More information about the petsc-users mailing list