!
!##################################################################
!##################################################################
!###### ######
!###### SUBROUTINE INITASSIM ######
!###### ######
!###### Developed by ######
!###### Center for Analysis and Prediction of Storms ######
!###### University of Oklahoma ######
!###### ######
!##################################################################
!##################################################################
!
SUBROUTINE initassim(nx,ny,nz) 1,4
!
!-----------------------------------------------------------------------
!
! PURPOSE:
!
! Initialize the recovery/assimilation control parameters. Most of
! them are read in from an input file. This subroutine also produces
! a log file which can be used as the input file for replicating a
! particular recovery/assimilation.
!
!-----------------------------------------------------------------------
!
! AUTHOR: Steven Lazarus and Alan Shapiro
!
! 2/20/1993.
!
! MODIFICATION HISTORY:
!
! 01/03/96 (Limin Zhao)
! Added control parameters for blending ADAS data with Doppler
! retrieval(v_err, hfillerr, adas_err).
!
! 11/15/96 (Limin Zhao)
! Added control parameters for sensitivity tests(bc_opt, itest,
! ig, ip_wgt, nadas).
!
!-------------------------------------------------------------------------
!
! INPUT:
!
! nx Number of grid points in the x-direction
! ny Number of grid points in the y-direction
! nz Number of grid points in the z-direction
!
! OUTPUT:
!
! Parameters declared in include file 'ASSIM.INC':
!
! assimnm The name of this job (a string at least 6 characters
! long).
!
! assimdat File names of the input data.
!
! dtyp Input data file type:
!
! = 0, Model History file format. Contains data at 1 time level.
! = 1, Processed Lincoln Lab data. (See ARPSPROC.F)
! = 2, Other. (User specified)
!
! recovopt Dynamic retrieval option:
!
! = 0, Do NOT retrieve p' or T'
! = 1, Retrieve p' and T'
!
! varopt Variational adjustment option:
!
! = 0, NO variational adjustment
! = 1, Perform a variational adjustment
!
! insrtopt Insertion option:
!
! = 0, Do NOT insert velocities
! = 1, Insert velocities
!
! xshift x coordinate of lower left hand corner point of
! model grid with repsect to the radar.
!
! yshift y coordinate of lower left hand corner point of
! model grid with repsect to the radar.
!
! zshift z coordinate of lower left hand corner point of
! model grid with repsect to the radar.
!
! dirnam Directory from which the input data is read
! ldirnm Length of directory name where the data resides
!
!-----------------------------------------------------------------------
!
!
!-----------------------------------------------------------------------
!
! Variable Declarations. (Local Variables)
!
!-----------------------------------------------------------------------
!
IMPLICIT NONE
INTEGER :: nx,ny,nz ! The number of grid points in 3 directions
!
!-----------------------------------------------------------------------
!
! Misc. local variables:
!
!-----------------------------------------------------------------------
!
INTEGER :: i
CHARACTER (LEN=128 ) :: logfn ! A string used as the log file filename.
CHARACTER (LEN=128 ) :: stuff ! A string to 'stuff' in unneeded comment lines.
INTEGER :: llogfn ! The length of the log file filename.
INTEGER :: logfunt ! FORTRAN unit number for log file output.
INTEGER :: lenstr ! Length of a string
INTEGER :: istat ! Flag set by open statement on the status
! of file opening
INTEGER :: inparm ! I/O unit for the ASSIM.INPUT file
INTEGER :: outparm ! I/O unit for writing assimilation parameters
LOGICAL :: iexist ! Flag set by inquire statement for file
! existence
!
!-----------------------------------------------------------------------
!
! Include files:
!
!-----------------------------------------------------------------------
!
INCLUDE 'assim.inc'
INCLUDE 'globcst.inc'
!
!-----------------------------------------------------------------------
!
! namelist Declarations:
!
!-----------------------------------------------------------------------
!
NAMELIST /assimilation/ assimopt, assimnm,dirnam,dtyp, &
recovopt,varopt,insrtopt, &
xshift,yshift,zshift, &
ip_wgt,v_err,vfill_err,adas_err,spval, &
nvf,assimdat,nadas,adasdat, &
itest,bc_opt,ig, &
voltim1,voltim2,voltim3, &
radid,latrad,lonrad,elvrad
!
!-----------------------------------------------------------------------
!
! Routines called:
!
!-----------------------------------------------------------------------
!
EXTERNAL assimpar
EXTERNAL strlnth
!
!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
!
! Beginning of executable code...
!
!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
!
! CALL getunit(outparm)
! open(unit=outparm,file='assimbat.out',form='formatted',
! : status='unknown',iostat=istat)
! IF( istat.ne.0) THEN
! write(outparm,'(/1x,a,i2,/1x,a/)')
! : 'Error occured when opening output file ASSIMBAT.OUT
! : in FORTRAN unit ',outparm,'Program stopped in ASSIMBAT.'
! STOP
! ENDIF
outparm = 6
WRITE(outparm,'(/ 15(/5x,a)//)') &
'###############################################################', &
'###############################################################', &
'##### #####', &
'##### Welcome to #####', &
'##### #####', &
'##### The recovery/assimilation input parameter #####', &
'##### suboutine ASSIMBAT.F #####', &
'##### #####', &
'##### #####', &
'##### Developed by #####', &
'##### Center for Analysis and Prediction of Storms #####', &
'##### University of Oklahoma #####', &
'##### #####', &
'###############################################################', &
'###############################################################'
!
!
!-----------------------------------------------------------------------
!
! Read in the values of the recovery/assimilation parameters:
!
!-----------------------------------------------------------------------
!
! CALL getunit(inparm)
! open(unit=inparm,file='assim.input',form='formatted',
! open(unit=inparm,file='assim.input.2',form='formatted',
! : status='old',iostat=istat)
! IF( istat.ne.0) THEN
! write(outparm,'(/1x,a,i2,/1x,a/)')
! : 'Error occured when opening initial input file ASSIM.INPUT
! : using FORTRAN unit ',inparm,'Program stopped in ASSIMBAT.'
! STOP
! ENDIF
inparm = 5
WRITE(outparm,'(4(/5x,a),/6(/5x,a)/)') &
'The recovery/assimilation is run concurrently with the ARPS', &
'model by inputing a number of control parameters from an', &
'external file, assim.input. The parameters are input via the', &
'screen for interactive jobs.', &
'After completing the parameter input, a log file is produced,', &
'which can then be used as the input file to replicate the', &
'job. This file is named assimnm.log.nn, where assimnm is a', &
'prefix for the output files that are associated with the', &
'assimilation and nn is a number appended to the file name when', &
'file assim.log.nn-1 already exists.'
!
!-----------------------------------------------------------------------
!
! Read in comment lines for this job and the name of assimilation log
! file - designated by a string at least 6 characters long.
!
!-----------------------------------------------------------------------
!
WRITE(outparm,'(/2x,a,/3(/5x,a),a)') &
'COMMENT LINES AND JOB NAME', &
'You can provide the model with a few lines of comments', &
'which designate the nature of this model run. You need', &
'to tell the model first how many lines of comments you', &
'have.'
WRITE(outparm,'(/5x,a/)') &
'Input the number of comment lines (0 to 50):'
READ (inparm,assimilation)
WRITE(outparm,'(/5x,a,/5x,a,/5x,a,/5x,a/)') &
'The assimilation requires a 6 character long string to', &
'construct the names of output files. This string is the', &
'the name of the log file. Please input such a string', &
'(at least 6 characters long):'
WRITE(outparm,'(/5x,a,i3)') &
'The ARPS data assimilation option is: ', assimopt
WRITE(outparm,'(/5x,a,a)') &
'The name of this run is: ', assimnm
IF( assimnm == runname) THEN
WRITE (outparm,'(3(/5x,a))') &
'WARNING: The assimilation name matches that of the run name', &
'Job aborted in subroutine INITASSIM.'
STOP
END IF
!
!-----------------------------------------------------------------------
!
! Read in the number of input files (minimum of 3).
!
!-----------------------------------------------------------------------
!
WRITE(outparm,'(/3(/5x,a))') &
'In order to perform an assimilation, there must', &
'be a minimum of 3 input files at 3 different times.', &
'Please set the number of input data files >=3'
WRITE(outparm,'(5x,a,i4)') 'Input was ',nvf
IF ( nvf < 3 ) THEN
WRITE (outparm,'(/5x,a,i3,a))') &
'WARNING: The number of input velocity files,', nvf, &
' is less than 3.'
WRITE (outparm,'(/5x,a))') &
'Job aborted in subroutine INITASSIM.'
STOP
END IF
!
!-----------------------------------------------------------------------
!
! Read in the input data file type
!
! dtyp= 0, input files are model history data files
! = 1, input files are processed Lincoln Lab data files
! = 2, other (user specified)
!
! For all options, the names of input files need to be provided.
!
!-----------------------------------------------------------------------
!
WRITE(outparm,'(/2x,a,//5x,a,//5x,a,/5x,a,/5x,a,//5x,a)') &
'INPUT DATA FILE TYPE:', &
'Two options:', &
' 0 input files are model history data files ', &
' 1 input files are processed Lincoln Lab data files ', &
' 2 input files are other (user specified) ', &
'Select input data file type (see above):'
WRITE(outparm,'(5x,a,i4)') 'input was ',dtyp
IF( dtyp /= 0.AND.dtyp /= 1.AND.dtyp /= 2) THEN
WRITE (outparm,'(3(/5x,a))') &
'dtyp must equal either 0,1 or 2', &
'Please set dtyp to 0, 1, or 2 prior to running the model.', &
'Job aborted in subroutine ASSIMBAT.'
STOP
END IF
!
!
!-----------------------------------------------------------------------
!
! Dynamic retreival flag
!
! recovopt = 0, Do NOT retrieve p, T
! = 1, Retrieve p, T
!
!-----------------------------------------------------------------------
!
WRITE(outparm,'(/2x,a,//5x,a,//5x,a,/5x,a,//5x,a)') &
'DYNAMIC RETRIEVAL FLAG:', &
'Two options:', &
' 0 no insertion, no retrieval', &
' 1 insert velocities/retrieve p, T', &
'Select retrieval option (see above):'
!
! read (inparm,*) recovopt
WRITE(outparm,'(/5x,a,i4/)') 'Input was ', recovopt
IF( recovopt /= 0.AND.recovopt /= 1) THEN
WRITE (outparm,'(3(/5x,a))') &
'recovopt must equal either 0,or 1', &
'Please set recovopt to 0,or 1 prior to running the model.', &
'Job aborted in subroutine ASSIMBAT.'
STOP
END IF
! read(inparm,*) stuff
! read(inparm,*) stuff
!
!-----------------------------------------------------------------------
!
! Variational adjustment flag
!
! varopt = 0, NO variational adjusment
! = 1, Perform variational adjustment
!
!-----------------------------------------------------------------------
!
WRITE(outparm,'(/2x,a,//5x,a,//5x,a,/5x,a,//5x,a)') &
'VARIATIONAL ADJUSTMENT FLAG:', &
'Two options:', &
' 0 NO variational adjustment ', &
' 1 Perform variational adjustment', &
'Select variational adjustment option (see above):'
!
! read (inparm,*) varopt
WRITE(outparm,'(/5x,a,i4/)') 'Input was ', varopt
IF( varopt /= 0.AND.varopt /= 1) THEN
WRITE (outparm,'(3(/5x,a))') &
'varopt must equal either 0,or 1', &
'Please set varopt to 0,or 1 prior to running the model.', &
'Job aborted in subroutine ASSIMBAT.'
STOP
END IF
! read(inparm,*) stuff
! read(inparm,*) stuff
!
!-----------------------------------------------------------------------
!
! Insertion flag
!
! insrtopt = 0, NO insertion
! = 1, Perform an insertion
!
!-----------------------------------------------------------------------
!
WRITE(outparm,'(/2x,a,//5x,a,//5x,a,/5x,a,//5x,a)') &
'INSERTION FLAG:', &
'Two options:', &
' 0 NO insertion', &
' 1 Perform an insertion', &
'Select insertion option (see above):'
!
! read (inparm,*) insrtopt
WRITE(outparm,'(/5x,a,i4/)') 'Input was ', insrtopt
IF( insrtopt /= 0.AND.insrtopt /= 1) THEN
WRITE (outparm,'(3(/5x,a))') &
'insrtopt must equal either 0,or 1', &
'Please set insrtopt to 0,or 1 prior to running the model.', &
'Job aborted in subroutine ASSIMBAT.'
STOP
END IF
!
!-----------------------------------------------------------------------
!
! If the recovery/assimilation options are turned off, exit.
!
!-----------------------------------------------------------------------
!
IF (recovopt == 0.AND.varopt == 0.AND.insrtopt == 0) RETURN
!
!-----------------------------------------------------------------------
!
! Input the position of the lower left hand corner of the cartesian
! model grid with respect to the radar (xshift,yshift,zshift).
!
!-----------------------------------------------------------------------
!
! read(inparm,*) stuff
! read(inparm,*) stuff
WRITE(outparm,'(2(/5x,a))') &
'Input the x-ccordinate of the lower left hand corner of:', &
'Cartesian model grid:'
! read (inparm,*) xshift
WRITE(outparm,'(/5x,a,f8.0/)') 'Input was ', xshift
WRITE(outparm,'(2(/5x,a))') &
'Input the y-ccordinate of the lower left hand corner of:', &
'Cartesian model grid:'
! read (inparm,*) yshift
WRITE(outparm,'(/5x,a,f8.0/)') 'Input was ', yshift
WRITE(outparm,'(2(/5x,a))') &
'Input the z-ccordinate of the lower left hand corner of:', &
'Cartesian model grid:'
! read (inparm,*) zshift
WRITE(outparm,'(/5x,a,f8.0/)') 'Input was ', zshift
!
!-----------------------------------------------------------------------
!
! Blending control parametrs.
!
!-----------------------------------------------------------------------
!
! read (inparm,*) stuff
!
WRITE(outparm,'(1(/5x,a))') &
'Input the option for determine the blending weights:'
! read (inparm,*) ip_wgt
WRITE(outparm,'(/5x,a,i4/)') 'Input was ', ip_wgt
!
WRITE(outparm,'(1(/5x,a))') &
'Input the variance error for the retrival velocity:'
! read (inparm,*) v_err
WRITE(outparm,'(/5x,a,f8.0/)') 'Input was ', v_err
WRITE(outparm,'(1(/5x,a))') &
'Input the variance error for the hole-fill velocity:'
! read (inparm,*) vfill_err
WRITE(outparm,'(/5x,a,f8.0/)') 'Input was ', vfill_err
WRITE(outparm,'(1(/5x,a))') &
'Input the variance error for adas background:'
! read (inparm,*) adas_err
WRITE(outparm,'(/5x,a,f8.0/)') 'Input was ', adas_err
WRITE(outparm,'(1(/5x,a))') &
'Input the bad data flag:'
! read (inparm,*) spval
WRITE(outparm,'(/5x,a,f8.0/)') 'Input was ',spval
!
!-----------------------------------------------------------------------
!
! Assimilation input parameter:
!
! Input the name of the directory from which the data
! files will be read:
!
!-----------------------------------------------------------------------
!
WRITE(outparm,'(3(/5x,a),/5x,a,a,/5x,a/)') &
'You can redirect the input of data files from a separate', &
'directory rather from than the current work directory by', &
'specifying the full path name of such a directory.', &
'If you give a blank string the current work directory ', &
'is assumed.', &
'The directory for input is:'
! read (inparm,*) dirnam
ldirnm = 128
CALL strlnth
( dirnam, ldirnm)
IF( ldirnm == 0 ) THEN
dirnam = '.'
ldirnm = 1
END IF
IF( dirnam(1:ldirnm) /= ' ') THEN
!
!-----------------------------------------------------------------------
!
! Check if the specified input directory exists, if not,
! abort the job.
!
!-----------------------------------------------------------------------
!
INQUIRE(FILE=dirnam(1:ldirnm),EXIST=iexist)
IF( .NOT.iexist ) THEN
WRITE(outparm,'(/5x,a,2(/5x,a))') &
'Specified input directory '//dirnam(1:ldirnm)// &
' not found.', &
'Please create it before starting the model.', &
'Job aborted in subroutine ASSIMBAT.'
STOP
END IF
WRITE(outparm,'(/5x,a,a)') &
'Input files will be in directory ', &
dirnam(1:ldirnm)//'.'
ELSE
WRITE(outparm,'(/5x,a)') &
'Data files are in the current work directory.'
END IF
! read(inparm,*) stuff
!
!-----------------------------------------------------------------------
!
! Input grid/base state file name (for model data ingest only)
!
!-----------------------------------------------------------------------
!
! write(outparm,'(/a/a/a)')
! :'Please give the name of the file containing the grid and base',
! :'state array data. This file will not be read if the grid and ',
! :'base state arrays are present in each time-dependent data file.'
! read(inparm,*) gbfile
! lenstr = 128
! CALL strlnth( gbfile, lenstr)
! write(outparm,'(/5x,a,a)')
! :'The grid/base state data file to be read in is',
! : gbfile(1:lenstr)
!
!-----------------------------------------------------------------------
!
! Input data files.
!
!-----------------------------------------------------------------------
!
WRITE(outparm,'(//2x,a,//5x,a,/5x,a/)') &
'INITIAL DATA FILES:', &
'Input the names of the data files used by the', &
'recovery/assimilation (character string in quotes):'
!
DO i = 1, nvf
! read(inparm,*) assimdat(i)
lenstr = LEN(assimdat(i))
CALL strlnth
( assimdat(i), lenstr)
WRITE(outparm,'(/5x,a,a)') &
'The data file to be read in is ', &
assimdat(i)(1:lenstr)
END DO
!
!-----------------------------------------------------------------------
!
! Read in ADAS background fields.
!
!-----------------------------------------------------------------------
!
WRITE(outparm,'(1(/5x,a))') &
'Input the number of background fields:'
! read (inparm,*) nadas
WRITE(outparm,'(/5x,a,i4/)') 'Input was ', nadas
WRITE(outparm,'(//2x,a,//5x,a,/5x,a/)') &
'BACKGROUND DATA FILES:', &
'Input the names of the data files used by the', &
'recovery/assimilation (character string in quotes):'
!
DO i = 1, nadas
! read(inparm,*) adasdat(i)
lenstr = LEN(adasdat(i))
CALL strlnth
( adasdat(i), lenstr)
WRITE(outparm,'(/5x,a,a)') &
'The data file to be read in is ', &
adasdat(i)(1:lenstr)
END DO
!
!-----------------------------------------------------------------------
!
! Several options for doing sensitive tests on pressure B.C.,
! different strategy to do hole-filling, estimation of
! the perturbation pressure at the lowest levels.
!
!-----------------------------------------------------------------------
!
WRITE(outparm,'(1(/5x,a))') &
'Input the option for pressure B.C. in psolver'
! read (inparm,*) bc_opt
WRITE(outparm,'(5x,a,i4)') 'Input was ',bc_opt
WRITE(outparm,'(1(/5x,a))') &
'Input the option for hole-filling test'
! read (inparm,*) itest
WRITE(outparm,'(5x,a,i4)') 'Input was ',itest
WRITE(outparm,'(1(/5x,a))') &
'Input the option for estimate the pressure at the lowest level'
! read (inparm,*) ig
WRITE(outparm,'(5x,a,i4)') 'Input was ', ig
!
!-----------------------------------------------------------------------
!
! Print out the input parameters.
! Write out a log file of model parameters which can be used as
! the input file to re-run the model.
!
!-----------------------------------------------------------------------
!
CALL assimpar
( nx, ny, nz)
CALL retunit(outparm)
CALL retunit(inparm)
RETURN
END SUBROUTINE initassim
!##################################################################
!##################################################################
!###### ######
!###### SUBROUTINE ASSIMPAR ######
!###### ######
!###### Developed by ######
!###### Center for Analysis and Prediction of Storms ######
!###### University of Oklahoma ######
!###### ######
!##################################################################
!##################################################################
SUBROUTINE assimpar(nx,ny,nz) 1,6
!
!-----------------------------------------------------------------------
!
! PURPOSE:
!
! Print out the input parameters.
! Write out a log file of model parameters which can be used as
! the input file to re-run the model.
!
!-----------------------------------------------------------------------
!
! AUTHOR: Steven Lazarus and Alan Shapiro
!
! 2/23/1993.
!
!-----------------------------------------------------------------------
!
! INPUT:
!
! nx Number of grid points in the x-direction
! ny Number of grid points in the y-direction
! nz Number of grid points in the z-direction
!
! OUTPUT:
!
! Parameters declared in include file 'assim.inc':
!
! assimnm The name of this job (a string at least 6
! characters long).
!
! assimdat File names of input data.
!
! nvf Number of input data files (minimum of 3)
!
! dtyp Input data file type:
!
! = 0, Model History file format. Contains data at 1 time level.
! = 1, Processed Lincoln Lab data. (See ARPSPROC.F)
! = 2, Other. (User specified)
!
! recovopt Dynamic retrieval option:
!
! = 0, Do NOT retrieve p' or T'
! = 1, Retrieve p' and T'
!
! varopt Variational adjustment option:
!
! = 0, NO variational adjustment
! = 1, Perform a variational adjustment
!
! insrtopt Insertion option:
!
! = 0, Do NOT insert velocities
! = 1, Insert velocities
!
! xshift x coordinate of lower left hand corner point of
! model grid with repsect to the radar.
!
! yshift y coordinate of lower left hand corner point of
! model grid with repsect to the radar.
!
! zshift z coordinate of lower left hand corner point of
! model grid with repsect to the radar.
!
! dirnam Directory name where input data resides
! ldirnm Length of directory name, dirnam
!
! Parameters declared in include file 'globcst.inc':
!
! mgrid Grid identifier
! nestgrd Grid nesting flag
!
!-----------------------------------------------------------------------
!
!
!-----------------------------------------------------------------------
!
! Variable Declarations. (Local Variables)
!
!-----------------------------------------------------------------------
!
IMPLICIT NONE
INTEGER :: nx,ny,nz ! The number of grid points in 3 directions
!
!-----------------------------------------------------------------------
!
! Misc. local variables:
!
!-----------------------------------------------------------------------
!
CHARACTER (LEN=128 ) :: logfn ! A string used as the log file filename.
INTEGER :: llogfn ! The length of the log file filename.
INTEGER :: logfunt ! FORTRAN unit number for log file output.
INTEGER :: lenstr ! Length of a string
INTEGER :: lengbf ! Length of a string
INTEGER :: istat ! Flag set by open statement on the status
! of file opening
INTEGER :: iout ! I/O channel output of misc. log file data
LOGICAL :: iexist ! Flag set by inquire statement for file
! existence
INTEGER :: i
!
!-----------------------------------------------------------------------
!
! Include files:
!
!-----------------------------------------------------------------------
!
INCLUDE 'globcst.inc'
INCLUDE 'assim.inc'
!
!-----------------------------------------------------------------------
!
! Routines called:
!
!-----------------------------------------------------------------------
!
EXTERNAL strlnth
EXTERNAL gtlogfn
!
!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
!
! Beginning of executable code...
!
!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
!
! CALL getunit(iout)
! open(unit=iout,file='assimbat.misc',form='formatted',
! : status='unknown',iostat=istat)
! IF( istat.ne.0) THEN
! write(iout,'(/1x,a,i2,/1x,a/)')
! : 'Error occured when opening misc. output file ASSIM.MISC
! : using FORTRAN unit ',iout,'Program stopped in ASSIMPAR.'
! STOP
! ENDIF
iout = 6
WRITE(iout,'(/5x,a/)') &
'Comment lines for this run:'
WRITE(iout,*) ' '
WRITE(iout,102) 'nvf =',nvf
WRITE(iout,102) 'dtyp =',dtyp
WRITE(iout,102) 'recovopt =',recovopt
WRITE(iout,102) 'varopt=',varopt
WRITE(iout,102) 'insrtopt =',insrtopt
WRITE(iout,104) 'xshift =',xshift
WRITE(iout,104) 'yshift =',yshift
WRITE(iout,104) 'zshift =',zshift
WRITE(iout,*) ' '
WRITE(iout,102) 'ip_wgt =',ip_wgt
WRITE(iout,104) 'v_err =',v_err
WRITE(iout,104) 'vfill_err=',vfill_err
WRITE(iout,104) 'adas_err =',adas_err
WRITE(iout,104) 'spval =',spval
WRITE(iout,*) ' '
WRITE(iout,102) 'bc_opt =',bc_opt
WRITE(iout,102) 'itest =',itest
WRITE(iout,102) 'ig =',ig
101 FORMAT(5X,a,f12.3)
102 FORMAT(5X,a,i4)
103 FORMAT(5X,a,e13.3)
104 FORMAT(5X,a,f8.0)
WRITE(iout,*) ' '
!
!-----------------------------------------------------------------------
!
! Now let's write out a log file of this job which can be used
! as the input file for replicating this run.
!
! First get a name for the log file:
!
!-----------------------------------------------------------------------
!
lenstr = LEN(assimnm)
CALL strlnth
( assimnm, lenstr )
CALL gtlogfn
(assimnm(1:lenstr), mgrid, nestgrd, logfn, llogfn)
CALL getunit
(logfunt)
OPEN (UNIT=logfunt, FILE=logfn(1:llogfn),STATUS='new', &
IOSTAT=istat)
IF(istat /= 0) THEN
WRITE(iout,'(/5x,a)') 'Error in opening log file ', logfn
WRITE(iout,'(5x,a/)') 'Job stopped in subroutine ASSIMPAR.'
STOP
ELSE
WRITE(iout,'(/5x,a,i3,a)') &
'FORTRAN unit ',logfunt, &
' will be used for log file output.'
END IF
WRITE (logfunt, '(/1x,a)') '&assimilation'
WRITE (logfunt, '(3x,a,i4,a)') 'assimopt = ', assimopt, ','
WRITE(logfunt,'(5x,a,a,a)') &
'assimnm = ''',assimnm(1:lenstr),''','
WRITE(logfunt,'(5x,a,a,a)') &
'dirnam = ''',dirnam(1:ldirnm),''','
WRITE (logfunt, '(5x,a,i4,a)') 'dtyp = ', dtyp, ','
WRITE (logfunt, '(5x,a,i4,a)') 'recovopt = ', recovopt, ','
WRITE (logfunt, '(5x,a,i4,a)') 'varopt = ', varopt,','
WRITE (logfunt, '(5x,a,i4,a)') 'insrtopt = ', insrtopt, ','
WRITE (logfunt, '(3x,a,f16.4,a)') 'xshift = ',xshift, ','
WRITE (logfunt, '(3x,a,f16.4,a)') 'yshift = ',yshift, ','
WRITE (logfunt, '(3x,a,f16.4,a)') 'zshift = ',zshift, ','
WRITE (logfunt, '(5x,a,i4,a)') 'ip_wgt = ',ip_wgt, ','
WRITE (logfunt, '(3x,a,f16.4,a)') 'v_err = ',v_err, ','
WRITE (logfunt, '(3x,a,f16.4,a)') 'vfill_err = ',vfill_err, ','
WRITE (logfunt, '(3x,a,f16.4,a)') 'adas_err = ',adas_err, ','
WRITE (logfunt, '(3x,a,f16.4,a)') 'spval = ',spval, ','
WRITE (logfunt, '(5x,a,i4,a)') 'nvf = ',nvf, ','
DO i=1,nvf
lenstr = LEN( assimdat(i) )
CALL strlnth
(assimdat(i), lenstr )
WRITE(logfunt,'(7x,a,i2.2,a,a,a)') &
'assimdat( ',i,') = ''',assimdat(i)(1:lenstr),''','
END DO
WRITE (logfunt, '(5x,a,i4,a)') 'nadas = ',nadas, ','
DO i=1,nadas
lenstr = LEN( adasdat(i) )
CALL strlnth
(adasdat(i), lenstr )
WRITE(logfunt,'(7x,a,i2.2,a,a)') &
'adasdat( ',i,') = ''',adasdat(i)(1:lenstr),''','
END DO
WRITE (logfunt, '(5x,a,i4,a)') 'itest = ',itest, ','
WRITE (logfunt, '(5x,a,i4,a)') 'bc_opt = ',bc_opt, ','
WRITE (logfunt, '(5x,a,i4,a)') 'ig = ',ig, ','
WRITE (logfunt, '(3x,a,f16.4,a)') 'voltim1 = ',voltim1, ','
WRITE (logfunt, '(3x,a,f16.4,a)') 'voltim2 = ',voltim2, ','
WRITE (logfunt, '(3x,a,f16.4,a)') 'voltim3 = ',voltim3, ','
lenstr = LEN( radid )
CALL strlnth
( radid, lenstr )
WRITE(logfunt,'(5x,a,a,a)') &
'radid = ''',radid(1:lenstr),''','
WRITE (logfunt, '(3x,a,f16.4,a)') 'latrad = ',latrad, ','
WRITE (logfunt, '(3x,a,f16.4,a)') 'lonrad = ',lonrad, ','
WRITE (logfunt, '(3x,a,f16.4,a)') 'elvrad = ',elvrad, ','
WRITE (logfunt, '(1x,a)') '&end'
CLOSE ( logfunt )
CALL retunit(logfunt)
WRITE(iout,'(/5x,a,a,a/)') &
'Log file ',logfn(1:llogfn),' was produced for this job.'
! CALL retunit(iout)
RETURN
END SUBROUTINE assimpar