[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