Index: trunk/src/readreceptors.f90
===================================================================
--- trunk/src/readreceptors.f90	(revision 4)
+++ trunk/src/readreceptors.f90	(revision 27)
@@ -27,6 +27,7 @@
   !                                                                            *
   !     Author: A. Stohl                                                       *
-  !                                                                            *
   !     1 August 1996                                                          *
+  !     HSO, 14 August 2013
+  !     Added optional namelist input
   !                                                                            *
   !*****************************************************************************
@@ -51,4 +52,13 @@
   character(len=16) :: receptor
 
+  integer :: readerror
+  real :: lon,lat   ! for namelist input, lon/lat are used instead of x,y
+  integer,parameter :: unitreceptorout=2
+
+  ! declare namelist
+  namelist /receptors/ &
+    receptor, lon, lat
+
+  lon=-999.9
 
   ! For backward runs, do not allow receptor output. Thus, set number of receptors to zero
@@ -64,15 +74,25 @@
   !************************************************************
 
-  open(unitreceptor,file=path(1)(1:length(1))//'RECEPTORS', &
-       status='old',err=999)
+  open(unitreceptor,file=path(1)(1:length(1))//'RECEPTORS',form='formatted',status='old',err=999)
 
-  call skplin(5,unitreceptor)
+  ! try namelist input
+  read(unitreceptor,receptors,iostat=readerror)
 
+  ! prepare namelist output if requested
+  if (nmlout.eqv..true.) then
+    open(unitreceptorout,file=path(2)(1:length(2))//'RECEPTORS.namelist',access='append',status='new',err=1000)
+  endif
 
-  ! Read the names and coordinates of the receptors
-  !************************************************
+  if ((lon.lt.-900).or.(readerror.ne.0)) then
 
-  j=0
-100   j=j+1
+    close(unitreceptor)
+    open(unitreceptor,file=path(1)(1:length(1))//'RECEPTORS',status='old',err=999)
+    call skplin(5,unitreceptor)
+
+    ! Read the names and coordinates of the receptors
+    !************************************************
+
+    j=0
+100 j=j+1
     read(unitreceptor,*,end=99)
     read(unitreceptor,*,end=99)
@@ -89,8 +109,8 @@
     endif
     if (j.gt.maxreceptor) then
-    write(*,*) ' #### FLEXPART MODEL ERROR! TOO MANY RECEPTOR #### '
-    write(*,*) ' #### POINTS ARE GIVEN.                       #### '
-    write(*,*) ' #### MAXIMUM NUMBER IS ',maxreceptor,'       #### '
-    write(*,*) ' #### PLEASE MAKE CHANGES IN FILE RECEPTORS   #### '
+      write(*,*) ' #### FLEXPART MODEL ERROR! TOO MANY RECEPTOR #### '
+      write(*,*) ' #### POINTS ARE GIVEN.                       #### '
+      write(*,*) ' #### MAXIMUM NUMBER IS ',maxreceptor,'       #### '
+      write(*,*) ' #### PLEASE MAKE CHANGES IN FILE RECEPTORS   #### '
     endif
     receptorname(j)=receptor
@@ -100,15 +120,67 @@
     ym=r_earth*dy/180.*pi
     receptorarea(j)=xm*ym
+
+    ! write receptors file in namelist format to output directory if requested
+    if (nmlout.eqv..true.) then
+      lon=x
+      lat=y
+      write(unitreceptorout,nml=receptors)
+    endif
+
     goto 100
 
-99   numreceptor=j-1
-  close(unitreceptor)
+99  numreceptor=j-1
+
+  else ! continue with namelist input
+
+    j=0
+    do while (readerror.eq.0)
+      j=j+1
+      lon=-999.9
+      read(unitreceptor,receptors,iostat=readerror)
+      if ((lon.lt.-900).or.(readerror.ne.0)) then
+        readerror=1
+      else
+        if (j.gt.maxreceptor) then
+          write(*,*) ' #### FLEXPART MODEL ERROR! TOO MANY RECEPTOR #### '
+          write(*,*) ' #### POINTS ARE GIVEN.                       #### '
+          write(*,*) ' #### MAXIMUM NUMBER IS ',maxreceptor,'       #### '
+          write(*,*) ' #### PLEASE MAKE CHANGES IN FILE RECEPTORS   #### '
+        endif
+        receptorname(j)=receptor
+        xreceptor(j)=(lon-xlon0)/dx       ! transform to grid coordinates
+        yreceptor(j)=(lat-ylat0)/dy
+        xm=r_earth*cos(lat*pi/180.)*dx/180.*pi
+        ym=r_earth*dy/180.*pi
+        receptorarea(j)=xm*ym
+      endif
+
+      ! write receptors file in namelist format to output directory if requested
+      if (nmlout.eqv..true.) then
+        write(unitreceptorout,nml=receptors)
+      endif
+
+    end do
+    numreceptor=j-1
+    close(unitreceptor)
+
+  endif
+
+  if (nmlout.eqv..true.) then
+    close(unitreceptorout)
+  endif
+
   return
 
 
-999   write(*,*) ' #### FLEXPART MODEL ERROR! FILE "RECEPTORS"  #### '
+999 write(*,*) ' #### FLEXPART MODEL ERROR! FILE "RECEPTORS"  #### '
   write(*,*) ' #### CANNOT BE OPENED IN THE DIRECTORY       #### '
   write(*,'(a)') path(1)(1:length(1))
   stop
 
+1000 write(*,*) ' #### FLEXPART MODEL ERROR! FILE "RECEPTORS"    #### '
+  write(*,*) ' #### CANNOT BE OPENED IN THE DIRECTORY       #### '
+  write(*,'(a)') path(2)(1:length(2))
+  stop
+
 end subroutine readreceptors
