Commit d7935deb authored by pesei's avatar pesei
Browse files

modify most input read subroutines

changed some variable names (mostly for I-N reasons)
includes two names appearing also in timemanager, com_mod
corrected a few mistakes
simplified some parts of code
changed options/RELEASES which is in nml fmt correspondingly
parent 34f14525
&RELEASES_CTRL &RELEASES_CTRL
NSPEC= 1, NSPEC= 1,
SPECNUM_REL= 24, NUMSPEC_REL= 24,
/ /
&RELEASE &RELEASE
IDATE1= 20170102, IDATE1= 20170102,
ITIME1= 090000, ITIME1= 090000,
IDATE2= 20170102, IDATE2= 20170102,
ITIME2= 090000, ITIME2= 090000,
LON1= 0.000 , RLON1= 0.000 ,
LON2= 0.000 , RLON2= 0.000 ,
LAT1= 0.000 , RLAT1= 0.000 ,
LAT2= 0.000 , RLAT2= 0.000 ,
Z1= 50.000 , Z1= 50.000 ,
Z2= 50.000 , Z2= 50.000 ,
ZKIND= 1, IKINDZ= 1,
MASS= 1.0000E8 , RMASS= 1.0000E8 ,
PARTS= 10000 NPARTS= 10000
COMMENT="TEST1", COMMENT="TEST1",
/ /
...@@ -420,7 +420,7 @@ subroutine advance(itime,nrelpoint,ldt,up,vp,wp, & ...@@ -420,7 +420,7 @@ subroutine advance(itime,nrelpoint,ldt,up,vp,wp, &
if (dtftlw.lt..5) then if (dtftlw.lt..5) then
!************************************************************* !*************************************************************
!************** CBL options added by mc see routine cblf90 *** !************** CBL options added by mc see routine cblf90 ***
if (cblflag.eq.1) then !modified by mc if (iflagcbl.eq.1) then !modified by mc
if (-h/ol.gt.5) then !modified by mc if (-h/ol.gt.5) then !modified by mc
!if (ol.lt.0.) then !modified by mc !if (ol.lt.0.) then !modified by mc
!if (ol.gt.0.) then !modified by mc : for test !if (ol.gt.0.) then !modified by mc : for test
...@@ -514,7 +514,7 @@ subroutine advance(itime,nrelpoint,ldt,up,vp,wp, & ...@@ -514,7 +514,7 @@ subroutine advance(itime,nrelpoint,ldt,up,vp,wp, &
endif endif
end do end do
if (cblflag.ne.1) nrand=nrand+i if (iflagcbl.ne.1) nrand=nrand+i
! Determine time step for next integration ! Determine time step for next integration
!***************************************** !*****************************************
......
...@@ -25,7 +25,7 @@ module com_mod ...@@ -25,7 +25,7 @@ module com_mod
character :: path(numpath+2*maxnests)*120 character :: path(numpath+2*maxnests)*120
integer :: length(numpath+2*maxnests) integer :: length(numpath+2*maxnests)
character(len=256) :: pathfile, flexversion, flexversion_major, arg1, arg2 character(len=256) :: pathfile, flexversion, flexversion_major, arg1, arg2
character(len=256) :: ohfields_path character(len=256) :: path_ohfields
! path path names needed for trajectory model ! path path names needed for trajectory model
! length length of path names needed for trajectory model ! length length of path names needed for trajectory model
...@@ -33,7 +33,7 @@ module com_mod ...@@ -33,7 +33,7 @@ module com_mod
! flexversion version of flexpart (descriptive long string) ! flexversion version of flexpart (descriptive long string)
! flexversion_major version of flexpart (major version number) ! flexversion_major version of flexpart (major version number)
! arg input arguments from launch at command line ! arg input arguments from launch at command line
! ohfields_path path to binary files for OH fields ! path_ohfields path to binary files for OH fields
!******************************************************** !********************************************************
! Variables defining the general model run specifications ! Variables defining the general model run specifications
...@@ -72,7 +72,7 @@ module com_mod ...@@ -72,7 +72,7 @@ module com_mod
integer :: mquasilag,nested_output,ind_source,ind_receptor integer :: mquasilag,nested_output,ind_source,ind_receptor
integer :: ind_rel,ind_samp,ioutputforeachrelease,linit_cond,surf_only integer :: ind_rel,ind_samp,ioutputforeachrelease,linit_cond,surf_only
logical :: turbswitch logical :: turbswitch
integer :: cblflag !added by mc for cbl integer :: iflagcbl !added by mc for cbl
! ctl factor, by which time step must be smaller than Lagrangian time scale ! ctl factor, by which time step must be smaller than Lagrangian time scale
! ifine reduction factor for time step used for vertical wind ! ifine reduction factor for time step used for vertical wind
...@@ -103,7 +103,7 @@ module com_mod ...@@ -103,7 +103,7 @@ module com_mod
! turbswitch determines how the Markov chain is formulated ! turbswitch determines how the Markov chain is formulated
! ind_rel and ind_samp are used within the code to change between mass and mass-mix (see readcommand.f) ! ind_rel and ind_samp are used within the code to change between mass and mass-mix (see readcommand.f)
! cblflag !: 1 activate cbl skewed pdf routines with bi-gaussina pdf whan OL<0 added by mc ! iflagcbl !: 1 activate cbl skewed pdf routines with bi-gaussina pdf whan OL<0 added by mc
integer :: mintime,itsplit integer :: mintime,itsplit
......
...@@ -157,7 +157,7 @@ subroutine initialize(itime,ldt,up,vp,wp, & ...@@ -157,7 +157,7 @@ subroutine initialize(itime,ldt,up,vp,wp, &
wp=rannumb(nrand+2) wp=rannumb(nrand+2)
if (.not.turbswitch) then ! modified by mc if (.not.turbswitch) then ! modified by mc
wp=wp*sigw wp=wp*sigw
else if (cblflag.eq.1) then ! modified by mc else if (iflagcbl.eq.1) then ! modified by mc
if(-h/ol.gt.5) then if(-h/ol.gt.5) then
!if (ol.lt.0.) then !if (ol.lt.0.) then
!if (ol.gt.0.) then !by mc : only for test correct is lt.0 !if (ol.gt.0.) then !by mc : only for test correct is lt.0
......
...@@ -59,12 +59,12 @@ subroutine readOHfield ...@@ -59,12 +59,12 @@ subroutine readOHfield
real, parameter :: scalehgt=7000. ! scale height in metres real, parameter :: scalehgt=7000. ! scale height in metres
open(unitOH,file=trim(ohfields_path) & open(unitOH,file=trim(path_ohfields) &
//'OH_FIELDS/OH_variables.bin',status='old', & //'OH_FIELDS/OH_variables.bin',status='old', &
form='UNFORMATTED', iostat=ierr, convert='little_endian') form='UNFORMATTED', iostat=ierr, convert='little_endian')
if(ierr.ne.0) then if(ierr.ne.0) then
write(*,*) 'Cannot read binary OH fields in ',trim(ohfields_path)//'OH_FIELDS/OH_variables.bin' write(*,*) 'Cannot read binary OH fields in ',trim(path_ohfields)//'OH_FIELDS/OH_variables.bin'
stop stop
endif endif
......
...@@ -28,9 +28,13 @@ subroutine readageclasses ...@@ -28,9 +28,13 @@ subroutine readageclasses
! * ! *
! Author: A. Stohl * ! Author: A. Stohl *
! 20 March 2000 * ! 20 March 2000 *
!
! HSO, 1 July 2014 * ! HSO, 1 July 2014 *
! Added optional namelist input * ! Added optional namelist input *
! * ! *
! PS, 6/2015-9/2018 some variable names changed as in readreleases.f90 *
! catch nageclass>maxage properly *
! *
!***************************************************************************** !*****************************************************************************
! * ! *
! Variables: * ! Variables: *
...@@ -46,11 +50,11 @@ subroutine readageclasses ...@@ -46,11 +50,11 @@ subroutine readageclasses
integer :: i integer :: i
! namelist help variables ! namelist aux variables
integer :: readerror integer :: ios
! namelist declaration ! namelist declaration
namelist /ageclass/ & namelist /nml_ageclass/ &
nageclass, & nageclass, &
lage lage
...@@ -70,41 +74,35 @@ subroutine readageclasses ...@@ -70,41 +74,35 @@ subroutine readageclasses
! open the AGECLASSSES file and read user options ! open the AGECLASSSES file and read user options
!************************************************ !************************************************
open(unitageclasses,file=path(1)(1:length(1))//'AGECLASSES',form='formatted',status='old',err=999) open(unitageclasses,file=path(1)(1:length(1))//'AGECLASSES', &
form='formatted',status='old',err=999)
! try to read in as a namelist ! try to read in as a namelist
read(unitageclasses,ageclass,iostat=readerror) read(unitageclasses, nml_ageclass, iostat=ios)
close(unitageclasses) close(unitageclasses)
if ((nageclass.lt.0).or.(readerror.ne.0)) then if (ios .ne. 0) then ! failed to read nml, assume simple text
open(unitageclasses,file=path(1)(1:length(1))//'AGECLASSES',status='old',err=999) open(unitageclasses,file=path(1)(1:length(1))// &
do i=1,13 'AGECLASSES',status='old',err=999)
read(unitageclasses,*) call skplin(13,unitageclasses)
end do read(unitageclasses,*) nageclass ! number of classes
read(unitageclasses,*) nageclass if (nageclass.gt.maxageclass) goto 1001
read(unitageclasses,*) lage(1) do i=1,nageclass
do i=2,nageclass read(unitageclasses,*) lage(i) ! max age per classes
read(unitageclasses,*) lage(i)
end do end do
close(unitageclasses) close(unitageclasses)
endif endif
if (nageclass.lt.1) goto 1002
! write ageclasses file in namelist format to output directory if requested ! write ageclasses file in namelist format to output directory if requested
if (nmlout.and.lroot) then if (nmlout.and.lroot) then
open(unitageclasses,file=path(2)(1:length(2))//'AGECLASSES.namelist',err=1000) open(unitageclasses,file=path(2)(1:length(2))//'AGECLASSES.namelist', &
write(unitageclasses,nml=ageclass) err=1000)
write(unitageclasses,nml=nml_ageclass)
close(unitageclasses) close(unitageclasses)
endif endif
if (nageclass.gt.maxageclass) then
write(*,*) ' #### FLEXPART MODEL ERROR! NUMBER OF AGE #### '
write(*,*) ' #### CLASSES GREATER THAN MAXIMUM ALLOWED. #### '
write(*,*) ' #### CHANGE SETTINGS IN FILE AGECLASSES OR #### '
write(*,*) ' #### RECOMPILE WITH LARGER MAXAGECLASS IN #### '
write(*,*) ' #### FILE PAR_MOD. #### '
stop
endif
if (lage(1).le.0) then if (lage(1).le.0) then
write(*,*) ' #### FLEXPART MODEL ERROR! AGE OF FIRST #### ' write(*,*) ' #### FLEXPART MODEL ERROR! AGE OF FIRST #### '
write(*,*) ' #### CLASS MUST BE GREATER THAN ZERO. CHANGE #### ' write(*,*) ' #### CLASS MUST BE GREATER THAN ZERO. CHANGE #### '
...@@ -125,7 +123,7 @@ subroutine readageclasses ...@@ -125,7 +123,7 @@ subroutine readageclasses
999 write(*,*) ' #### FLEXPART MODEL ERROR! FILE "AGECLASSES" #### ' 999 write(*,*) ' #### FLEXPART MODEL ERROR! FILE "AGECLASSES" #### '
write(*,*) ' #### CANNOT BE OPENED IN THE DIRECTORY #### ' write(*,*) ' #### CANNOT BE OPENED IN THE DIRECTORY #### '
write(*,'(a)') path(1)(1:length(1)) write(*,'(a)') trim(path(1))
stop stop
1000 write(*,*) ' #### FLEXPART MODEL ERROR! FILE "AGECLASSES" #### ' 1000 write(*,*) ' #### FLEXPART MODEL ERROR! FILE "AGECLASSES" #### '
...@@ -133,5 +131,18 @@ subroutine readageclasses ...@@ -133,5 +131,18 @@ subroutine readageclasses
write(*,'(a)') path(2)(1:length(2)) write(*,'(a)') path(2)(1:length(2))
stop stop
1001 continue
write(*,*) ' #### FLEXPART MODEL ERROR! NUMBER OF AGE #### '
write(*,*) ' #### CLASSES GREATER THAN MAXIMUM ALLOWED. #### '
write(*,*) ' #### CHANGE SETTINGS IN FILE AGECLASSES OR #### '
write(*,*) ' #### RECOMPILE WITH LARGER MAXAGECLASS IN #### '
write(*,*) ' #### FILE PAR_MOD. #### '
stop
1002 continue
write(*,*) ' #### FLEXPART MODEL ERROR! NUMBER OF AGE #### '
write(*,*) ' #### CLASSES < 1 #### '
write(*,*) ' #### CHANGE SETTINGS IN FILE AGECLASSES #### '
stop
end subroutine readageclasses end subroutine readageclasses
...@@ -32,6 +32,7 @@ subroutine readcommand ...@@ -32,6 +32,7 @@ subroutine readcommand
! HSO, 1 July 2014: Added optional namelist input * ! HSO, 1 July 2014: Added optional namelist input *
! Unknown, unknown: various * ! Unknown, unknown: various *
! Petra Seibert, 2018-06-08: improve error msgs * ! Petra Seibert, 2018-06-08: improve error msgs *
! PS 6/2015: Minor changes in variable names and layout *
! * ! *
!***************************************************************************** !*****************************************************************************
! * ! *
...@@ -83,9 +84,9 @@ subroutine readcommand ...@@ -83,9 +84,9 @@ subroutine readcommand
real(kind=dp) :: juldate real(kind=dp) :: juldate
character(len=50) :: line character(len=50) :: line
logical :: old logical :: old
integer :: readerror integer :: ios, icmdstat
namelist /command/ & namelist /nml_command/ &
ldirect, & ldirect, &
ibdate,ibtime, & ibdate,ibtime, &
iedate,ietime, & iedate,ietime, &
...@@ -112,10 +113,10 @@ subroutine readcommand ...@@ -112,10 +113,10 @@ subroutine readcommand
linit_cond, & linit_cond, &
lnetcdfout, & lnetcdfout, &
surf_only, & surf_only, &
cblflag, & iflagcbl, &
ohfields_path path_ohfields
! Presetting namelist command ! Set default values for namelist
ldirect=0 ldirect=0
ibdate=20000101 ibdate=20000101
ibtime=0 ibtime=0
...@@ -144,12 +145,12 @@ subroutine readcommand ...@@ -144,12 +145,12 @@ subroutine readcommand
linit_cond=0 linit_cond=0
lnetcdfout=0 lnetcdfout=0
surf_only=0 surf_only=0
cblflag=0 ! if using old-style COMMAND file, set to 1 here to use mc cbl routine iflagcbl=0 ! if using old-style COMMAND file, set to 1 here to use mc cbl routine
ohfields_path="../../flexin/" path_ohfields="../../flexin/"
!Af set release-switch !Af set release-switch
WETBKDEP=.false. wetbkdep=.false.
DRYBKDEP=.false. drybkdep=.false.
! Open the command file and read user options ! Open the command file and read user options
! Namelist input first: try to read as namelist file ! Namelist input first: try to read as namelist file
...@@ -157,23 +158,23 @@ subroutine readcommand ...@@ -157,23 +158,23 @@ subroutine readcommand
open(unitcommand,file=path(1)(1:length(1))//'COMMAND',status='old', & open(unitcommand,file=path(1)(1:length(1))//'COMMAND',status='old', &
form='formatted',err=999) form='formatted',err=999)
! try namelist input (default) ! try namelist input
read(unitcommand,command,iostat=readerror) read(unitcommand, nml_command, iostat=ios)
close(unitcommand) close(unitcommand)
! distinguish namelist from fixed text input ! distinguish namelist from fixed text input
if ((readerror.ne.0).or.(ldirect.eq.0)) then ! parse as text file format
if (ios .ne. 0) then ! simple text file format
open(unitcommand,file=path(1)(1:length(1))//'COMMAND',status='old', err=999) open(unitcommand,file=path(1)(1:length(1))//'COMMAND',status='old', err=999)
! Check the format of the COMMAND file (either in free format, ! Check the format of the COMMAND file
! or using formatted mask) ! (either in free format or using formatted mask)
! Use of formatted mask is assumed if line 10 contains the word 'DIRECTION' ! Use of formatted mask is assumed if line 10 contains the word 'DIRECTION'
!************************************************************************** !**************************************************************************
call skplin(9,unitcommand) call skplin(9,unitcommand)
read (unitcommand,901) line read (unitcommand,900) line
901 format (a)
if (index(line,'LDIRECT') .eq. 0) then if (index(line,'LDIRECT') .eq. 0) then
old = .false. old = .false.
if (lroot) write(*,*) 'COMMAND in old short format, & if (lroot) write(*,*) 'COMMAND in old short format, &
...@@ -242,7 +243,7 @@ subroutine readcommand ...@@ -242,7 +243,7 @@ subroutine readcommand
read(unitcommand,*) surf_only read(unitcommand,*) surf_only
! Removed for backwards compatibility. ! Removed for backwards compatibility.
! if (old) call skplin(3,unitcommand) !added by mc ! if (old) call skplin(3,unitcommand) !added by mc
! read(unitcommand,*) cblflag !added by mc ! read(unitcommand,*) iflagcbl !added by mc
close(unitcommand) close(unitcommand)
...@@ -251,7 +252,7 @@ subroutine readcommand ...@@ -251,7 +252,7 @@ subroutine readcommand
! write command file in namelist format to output directory if requested ! write command file in namelist format to output directory if requested
if (nmlout.and.lroot) then if (nmlout.and.lroot) then
open(unitcommand,file=path(2)(1:length(2))//'COMMAND.namelist',err=998) open(unitcommand,file=path(2)(1:length(2))//'COMMAND.namelist',err=998)
write(unitcommand,nml=command) write(unitcommand,nml=nml_command)
close(unitcommand) close(unitcommand)
endif endif
...@@ -259,22 +260,22 @@ subroutine readcommand ...@@ -259,22 +260,22 @@ subroutine readcommand
! Determine how Markov chain is formulated (for w or for w/sigw) ! Determine how Markov chain is formulated (for w or for w/sigw)
!*************************************************************** !***************************************************************
if (cblflag.eq.1) then !---- added by mc to properly set parameters for CBL simulations if (iflagcbl.eq.1) then !added by mc to set parameters for CBL simulations
turbswitch=.true. turbswitch=.true.
if (lsynctime>maxtl) lsynctime=maxtl !maxtl defined in com_mod.f90 if (lsynctime.gt.maxtl) lsynctime=maxtl !maxtl defined in com_mod.f90
if (ctl.lt.5) then if (ctl.lt.5) then
print *,'WARNING: CBL flag active the ratio of TLu/dt has been set to 5' print*,'WARNING: CBL flag active; ctl (TLu/dt) has been set to 5'
ctl=5. ctl=5.
end if endif
if (ifine*ctl.lt.50) then if (ifine*ctl.lt.50.) then
ifine=int(50./ctl)+1 ifine=int(50./ctl)+1
print *,'WARNING: CBL flag active; ctl (TLW/dt) was < 50,'// &
print *,'WARNING: CBL flag active the ratio of TLW/dt was < 50, ifine has been re-set to',ifine ' ifine has been re-set to', ifine
!pause
endif endif
print *,'WARNING: CBL flag active the ratio of TLW/dt is ',ctl*ifine print*,'WARNING: CBL flag active; reduced ctl is ',ctl*ifine
print *,'WARNING: CBL flag active lsynctime is ',lsynctime print*,'WARNING: CBL flag active; lsynctime is ',lsynctime
else !added by mc else !added by mc
! note PS: shouldn't we print some msg as above also in the ntext case?
if (ctl.ge.0.1) then if (ctl.ge.0.1) then
turbswitch=.true. turbswitch=.true.
else else
...@@ -285,27 +286,27 @@ subroutine readcommand ...@@ -285,27 +286,27 @@ subroutine readcommand
fine=1./real(ifine) fine=1./real(ifine)
ctl=1./ctl ctl=1./ctl
! Set the switches required for the various options for input/output units ! Set the switches required for the various options for input/output units
!************************************************************************* !*************************************************************************
!AF Set the switches IND_REL and IND_SAMP for the release and sampling !AF Set the switches IND_REL and IND_SAMP for the release and sampling
!Af switches for the releasefile: !Af switches for the releasefile:
!Af IND_REL = 1 : xmass * rho !Af IND_REL = 1 : xmass * rho
!Af IND_REL = 0 : xmass * 1 !Af IND_REL = 0 : xmass * 1
!Af switches for the conccalcfile: !Af switches for the conccalcfile:
!AF IND_SAMP = 0 : xmass * 1 !AF IND_SAMP = 0 : xmass * 1
!Af IND_SAMP = -1 : xmass / rho !Af IND_SAMP = -1 : xmass / rho
!AF IND_SOURCE switches between different units for concentrations at the source !AF IND_SOURCE switches between different units for concentrations at the source
!Af NOTE that in backward simulations the release of computational particles !Af NOTE that in backward simulations the release of computational particles
!Af takes place at the "receptor" and the sampling of p[articles at the "source". !Af takes place at the "receptor" and the sampling of p[articles at the "source".
!Af 1 = mass units !Af 1 = mass units
!Af 2 = mass mixing ratio units !Af 2 = mass mixing ratio units
!Af IND_RECEPTOR switches between different units for concentrations at the receptor !Af IND_RECEPTOR switches between different units for concentrations at the receptor
!Af 1 = mass units !Af 1 = mass units
!Af 2 = mass mixing ratio units !Af 2 = mass mixing ratio units
! 3 = wet deposition in outputfield ! 3 = wet deposition in outputfield
! 4 = dry deposition in outputfield ! 4 = dry deposition in outputfield
if ( ldirect .eq. 1 ) then ! FWD-Run if ( ldirect .eq. 1 ) then ! FWD-Run
!Af set release-switch !Af set release-switch
...@@ -327,6 +328,8 @@ subroutine readcommand ...@@ -327,6 +328,8 @@ subroutine readcommand
else ! mass mix else ! mass mix
ind_samp = 0 ind_samp = 0
endif endif
! note PS: why do we suddenly switch to CASE syntax??
! not helpful.
select case (ind_receptor) select case (ind_receptor)
case (1) ! 1 .. concentration at receptor case (1) ! 1 .. concentration at receptor
ind_rel = 1 ind_rel = 1
...@@ -336,10 +339,10 @@ subroutine readcommand ...@@ -336,10 +339,10 @@ subroutine readcommand
ind_rel = 3 ind_rel = 3
if (lroot) then if (lroot) then
write(*,*) ' #### FLEXPART WET DEPOSITION BACKWARD MODE #### ' write(*,*) ' #### FLEXPART WET DEPOSITION BACKWARD MODE #### '
write(*,*) ' #### Releaseheight is forced to 0 - 20km #### ' write(*,*) ' #### Release height is forced to 0 - 20 km #### '
write(*,*) ' #### Release is performed above ground lev #### ' write(*,*) ' #### Release is performed above ground lev #### '
end if end if
WETBKDEP=.true. wetbkdep=.true.
allocate(xscav_frac1(maxpart,maxspec)) allocate(xscav_frac1(maxpart,maxspec))
case (4) ! 4 .. dry deposition in outputfield case (4) ! 4 .. dry deposition in outputfield
ind_rel = 4 ind_rel = 4
...@@ -348,7 +351,7 @@ subroutine readcommand ...@@ -348,7 +351,7 @@ subroutine readcommand
write(*,*) ' #### Releaseheight is forced to 0 - 2*href #### ' write(*,*) ' #### Releaseheight is forced to 0 - 2*href #### '
write(*,*) ' #### Release is performed above ground lev #### ' write(*,*) ' #### Release is performed above ground lev #### '
end if end if
DRYBKDEP=.true. drybkdep=.true.
allocate(xscav_frac1(maxpart,maxspec)) allocate(xscav_frac1(maxpart,maxspec))
end select end select
endif endif
...@@ -398,14 +401,15 @@ subroutine readcommand ...@@ -398,14 +401,15 @@ subroutine readcommand
mintime=lsynctime mintime=lsynctime
endif endif
! Check for netcdf output switch ! check for netcdf output switch (use for non-namelist input only!)
!*******************************
if (iout.ge.8) then if (iout.ge.8) then
lnetcdfout = 1 lnetcdfout = 1
iout = iout - 8 iout = iout - 8
#ifndef USE_NCF #ifndef USE_NCF
write(*,*) 'ERROR: netcdf output not activated during compile time but used in COMMAND file!' write(*,*) 'ERROR: netcdf output not activated during compile '// &
write(*,*) 'Please recompile with netcdf library (`make [...] ncf=yes`) or use standard output format.' 'time but used in COMMAND file!'
write(*,*) 'Please recompile with netcdf library (`make [...] ncf=yes`)'//&
' or use standard output format.'
stop stop
#endif #endif
endif endif
...@@ -413,7 +417,7 @@ subroutine readcommand ...@@ -413,7 +417,7 @@ subroutine readcommand
! Check whether a valid option for gridded model output has been chosen ! Check whether a valid option for gridded model output has been chosen
!********************************************************************** !**********************************************************************