[petsc-dev] SETERRQ in fortran
Smith, Barry F.
bsmith at mcs.anl.gov
Thu Jan 4 19:06:17 CST 2018
> On Jan 4, 2018, at 5:10 PM, Blaise A Bourdin <bourdin at lsu.edu> wrote:
>
>
>
>> On Jan 4, 2018, at 3:16 PM, Smith, Barry F. <bsmith at mcs.anl.gov> wrote:
>>
>>
>> It's changed a bit. It is better but you need to understand how the new one works, so take a few minutes to see how it works before converting.
> Got it.
> An example or a link to the fortran macro definition from the man page would be nice
> I am confused about the rationale for putting the endif in the macro, though.
It matches the C paradigm
> Beside not having unmatched if / end if in my code, in a select case construct, I have to write something as ugly as
>
> select case (i)
> case(1)
> !do something
> case(2)
> !do something else
> case default
> if (0 == 0) then
> SETERRQ(PETSC_COMM_WORLD,PETSC_ERR_ARG_OUTOFRANG,”invalid value”)
> end select
>
What is ugly about this ? except that you put the SETERRQ on a new line which you did not need to do.
How do you want to write it so it is prettier?
Barry
> Am I missing something again?
>
> Blaise
>
>
>>
>> Use CHKERRA() for main Fortran problem and CHKERRQ() for subroutines.
>>
>> Also look at their definitions to see how the if () business is handled.
>>
>> Barry
>>
>>
>>> On Jan 4, 2018, at 2:02 PM, Matthew Knepley <knepley at gmail.com> wrote:
>>>
>>> On Thu, Jan 4, 2018 at 2:42 PM, Blaise A Bourdin <bourdin at lsu.edu> wrote:
>>> Hi,
>>>
>>> Is SETERRQ still available in fortran? I notice that it is not used in any of the example, but the man page still mentions fortran. Using it in a fortran code leads to compiler errors.
>>> Am I doing something wrong?
>>>
>>> I see it here:
>>>
>>> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbitbucket.org%2Fpetsc%2Fpetsc%2Fsrc%2Fc925fbded0167f274f0216824a05edb59a5721f5%2Finclude%2Fpetsc%2Ffinclude%2Fpetscsys.h%3Fat%3Dmaster%26fileviewer%3Dfile-view-default%23petscsys.h-197&data=02%7C01%7Cbourdin%40lsu.edu%7C9e126b88c4de4bb5b1c108d553b87d8a%7C2d4dad3f50ae47d983a09ae2b1f466f8%7C0%7C0%7C636506974199979974&sdata=R6xnRLTzelnxPz39tkA0warCI%2BUFt%2FAnM8haZbjANQA%3D&reserved=0
>>>
>>> I think its complaining about the 'return;endif'
>>>
>>> Matt
>>>
>>> MacBookGray:F90 $ cat TestSETERRQ.F90
>>> Program TestSETERRQ
>>> #include <petsc/finclude/petsc.h>
>>> Use petsc
>>>
>>> Implicit NONE
>>> PetscInt :: ierr
>>> Character(len=256) :: IOBuffer
>>>
>>> Call PetscInitialize(PETSC_NULL_CHARACTER, ierr);CHKERRA(ierr)
>>> write(IOBuffer,'("This is a test ierr = ",I2,"\n")') ierr
>>> SETERRQ(PETSC_COMM_SELF,PETSC_ERR_FILE_UNEXPECTED,IOBuffer)
>>> call foo()
>>> Call PetscFinalize(ierr)
>>> Contains
>>> subroutine foo()
>>> Character(len=256) :: IOBuffer
>>>
>>> write(IOBuffer,'("This is a test ierr = ",I2,"\n")') 42
>>> SETERRQ(PETSC_COMM_SELF,PETSC_ERR_FILE_UNEXPECTED,IOBuffer)
>>> end subroutine foo
>>> End Program TestSETERRQ
>>>
>>> MacBookGray:F90 $ make -f makefile.TestSETERRQ TestSETERRQ
>>> mpif90 -c -Wall -ffree-line-length-0 -Wno-unused-dummy-argument -g -I/opt/HPC/petsc-next/include -I/opt/HPC/petsc-next/Darwin-gcc7.2-g/include -I/opt/X11/include -o TestSETERRQ.o TestSETERRQ.F90
>>> TestSETERRQ.F90:11:61:
>>>
>>> SETERRQ(PETSC_COMM_SELF,PETSC_ERR_FILE_UNEXPECTED,IOBuffer)
>>> 1
>>> Error: Expecting END PROGRAM statement at (1)
>>> TestSETERRQ.F90:19:65:
>>>
>>> SETERRQ(PETSC_COMM_SELF,PETSC_ERR_FILE_UNEXPECTED,IOBuffer)
>>> 1
>>> Error: Expecting END SUBROUTINE statement at (1)
>>> make: [TestSETERRQ.o] Error 1 (ignored)
>>>
>>>
>>> Blaise
>>>
>>> --
>>> Department of Mathematics and Center for Computation & Technology
>>> Louisiana State University, Baton Rouge, LA 70803, USA
>>> Tel. +1 (225) 578 1612, Fax +1 (225) 578 4276 https://na01.safelinks.protection.outlook.com/?url=http:%2F%2Fwww.math.lsu.edu%2F~bourdin&data=02%7C01%7Cbourdin%40lsu.edu%7C9e126b88c4de4bb5b1c108d553b87d8a%7C2d4dad3f50ae47d983a09ae2b1f466f8%7C0%7C0%7C636506974199979974&sdata=DM5ZtUYkEBxwU%2FVS7eHC8dF%2Fw2w9aSbP9l8YvL3Nj6o%3D&reserved=0
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> --
>>> 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
>>>
>>> https://na01.safelinks.protection.outlook.com/?url=https:%2F%2Fwww.cse.buffalo.edu%2F~knepley%2F&data=02%7C01%7Cbourdin%40lsu.edu%7C9e126b88c4de4bb5b1c108d553b87d8a%7C2d4dad3f50ae47d983a09ae2b1f466f8%7C0%7C0%7C636506974199979974&sdata=99K5TljrSNkF7MGImBkWQTjXCUt%2BdwB8XAHB%2FQztQZY%3D&reserved=0
>>
>
> --
> Department of Mathematics and Center for Computation & Technology
> Louisiana State University, Baton Rouge, LA 70803, USA
> Tel. +1 (225) 578 1612, Fax +1 (225) 578 4276 http://www.math.lsu.edu/~bourdin
More information about the petsc-dev
mailing list