!-------------------------------------- LICENCE BEGIN ------------------------------------
!Environment Canada - Atmospheric Science and Technology License/Disclaimer,
! version 3; Last Modified: May 7, 2008.
!This is free but copyrighted software; you can use/redistribute/modify it under the terms
!of the Environment Canada - Atmospheric Science and Technology License/Disclaimer
!version 3 or (at your option) any later version that should be found at:
!http://collaboration.cmc.ec.gc.ca/science/rpn.comm/license.html
!
!This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
!without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
!See the above mentioned License/Disclaimer for more details.
!You should have received a copy of the License/Disclaimer along with this software;
!if not, you can write to: EC-RPN COMM Group, 2121 TransCanada, suite 500, Dorval (Quebec),
!CANADA, H9P 1J3; or send e-mail to service.rpn@ec.gc.ca
!-------------------------------------- LICENCE END --------------------------------------
!
subroutine subgpar 1,3
use modfgat
, only : nstamplist
use mod4dv
, only : l4dvar
!
IMPLICIT NONE
#if defined (DOC)
*
*s/r subgpar :
* Author C. Page (UQAM) May 2003.
!
*Revision: L. Fillion - 26 Oct 04 - MSC/CAN - Rename sugetgd to subgpar and pursue work.
* L. Fillion ARMA/MSC May 2006: Mesovar upgrade to v10_0_0.
* L. Fillion ARMA/EC 22 May 2008: Upgrade lam4d to v_10_1_1
*
*-----------------------------------------------------------------------
*
* Purpose: to get grid parameters grtyp, ig1, ig2 and ig3 from
* trial field used to select needed obs for Limited-Area
* mode in brpacma subroutine. Store into comgdpar.
* Also computes grid point spacing in meters needed for
* Limited-Area : cormdl
*
*-----------------------------------------------------------------------
*
* Argument:
*
#endif
*
#include "taglam4d.cdk"
#include "pardim.cdk"
#include "comdim.cdk"
#include "comlun.cdk"
#include "comcst.cdk"
#include "comgdpar.cdk"
#include "comdimo.cdk"
#include "namgdpar.cdk"
#include "compdg.cdk"
#include "comgem.cdk"
!#include "comgemla.cdk"
#include "comgembgh.cdk"
#include "comgrd_param.cdk"
#include "cvcord.cdk"
#include "maxlev.cdk"
*
integer ji,jj,jk,jlev
integer ikey, ierr, iabt, igrchk, ini, inj, ink
*
integer ip2t,vfstlir,vfstluk
integer idtyp, ip1, ip2, ip3, ig1, ig2, ig3, ig4, idt, ipas
+ , ibits,iswa, ilng, idltf, iubc, ix1, ix2, ix3
integer ip1kind,ip1style
integer iig1,iig2,iig3
integer iip1,iip2,iip3,itrlnlev,ip1_pak_trl,ip1_vco_trl,itrlgid,ibrpstamp
integer iip1s_trl(jpnflev)
integer ikeys(levmax)
character*2 cnom
character*8 cetiket,cletiket
character*1 clgr, ctyp, cltypvar
*
integer idatet,igdid
integer fstinf, fstprm, fstinl
real*8 zfld(ni+nj)
real*8 zlatbeg,zlonbeg,zdlon,zdlat,zlat
!
!!
write(nulout,*) ''
write(nulout,*) '******************************************************** '
write(nulout,'(10x,"SUBGPAR: LOOKING FOR PARAMETERS IN 1ST TRIAL FIELD")')
write(nulout,*) '******************************************************** '
write(nulout,*) ''
!
cletiket = ' '
ikey = fstinf(ninmpg(1),ini,inj,ink,-1,cletiket,
& -1,-1,-1,' ','UU')
write(nulout,*) 'subgpar: ini,inj,ink=',ini,inj,ink
if (ikey.lt.0) then
ikey = fstinf(ninmpg(1),ini,inj,ink,-1,' ',
& -1,-1,-1,' ',' ')
ierr = fstprm(ikey,idatet,idt,ipas,ini,inj,ink,ibits,idtyp,
& ip1,ip2,ip3,ctyp,cnom,cetiket,clgr,ig1,ig2,ig3,ig4,
& iswa,ilng,idltf,iubc,ix1,ix2,ix3)
write(nulout,9600) 'UU', cetiket, ini, inj
9600 format(///,4x,'In SUGETGD: cannot find a record with ',/,
& ' NOMVAR=',a2,' and ETIKET=',a8,' in the trial',/,
& ' field file.',/,10x,'JOB IS ABORTED',//,
& ' The dimensions INI,INJ found',
& ' in the trial field file are: ',2i6 )
call abort3d
(nulout
& ,'SUBGPAR: Problem with trial field file')
endif
ierr = fstprm(ikey,idatet,idt,ipas,ini,inj,ink,ibits,idtyp,
& ip1,ip2,ip3,ctyp,cnom,cetiket,clgr,ig1,ig2,ig3,ig4,
& iswa,ilng,idltf,iubc,ix1,ix2,ix3)
!
! Transfer trial field grid parameters to COMGDPAR
!
ndeett = idt
npast = ipas
nip2t = ip2
nig1t = ig1
nig2t = ig2
nig3t = ig3
nig4t = ig4
cgrtypt = clgr
nit = ini
njt = inj
write(nulout,*) 'subgpar: nit,njt = ',nit,njt
write(nulout,*) 'subgpar: nig1t,nig2t,nig3t,nig4t=',nig1t,nig2t,nig3t,nig4t
!
! get total number of vertical levels = nkt in the 1st trial file
!
! write(nulout,*) 'subgpar: looking nb of levels at date ',idatet
! ierr = fstinl(ninmpg(1),INI,INJ,INK, idatet, ' ', -1, -1, -1,
! & ' ','UU',IKEYS, NKT, levmax)
!
! nkt = ink
! write(nulout,*) 'subgpar: NB LEV in 1st TRIAL FILE: nkt set to ',nkt
!
! get Rotation parameters nig1rbg,nig2rbg,nig3rbg,nig4rbg
!
cletiket = ' '
cltypvar = ' '
ikey = fstinf(ninmpg(1), iNI, iNJ, iNK, -1,cletiket, -1
& ,-1,-1,cltypvar,'>>')
!
ierr = fstprm(ikey,idatet,idt,ipas,ini,inj,ink,ibits,idtyp,
& ip1,ip2,ip3,ctyp,cnom,cetiket,clgr,
& nig1rbg,nig2rbg,nig3rbg,nig4rbg,
& iswa,ilng,idltf,iubc,ix1,ix2,ix3)
!
write(nulout,*) 'subgpar: nig1rbg,nig2rbg,nig3rbg,nig4rbg=',
& nig1rbg,nig2rbg,nig3rbg,nig4rbg
!
! also useful are the real form of the rotation parameters
! i.e. rlatrbg, rlon1bg, rlat2bg, rlon2bg
!
call cigaxg('E', rlat1bg, rlon1bg, rlat2bg, rlon2bg,
& nig1rbg,nig2rbg,nig3rbg,nig4rbg)
!
write(nulout,*) 'subgpar: rlat1bg, rlon1bg, rlat2bg, rlon2bg=',
& rlat1bg, rlon1bg, rlat2bg, rlon2bg
!
return
end