!-------------------------------------- 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 subg_lam(CDCTL,KULOUT) 1,8
#if defined (DOC)
*
***s/r subg_lam  - To initialize Background error statistics for
*                  grd_typ = ('GU' & lcva_hemis) or grd_typ = 'LU' mode.
*
*
*Author  : Luc Fillion - ARMA/EC - 6 Aug 2010
*
*Revision:
*    -------------------
*
*Arguments
*     CDCTL   : 'I' --> identity is used for the correlation in spectral space
*     .         'H' --> homegeneous and isotropic error correlation
*               '0' --> return no statistics needed
#endif
      USE procs_topo
      IMPLICIT NONE
*implicits
#include "comct0.cdk"
#include "pardim.cdk"
#include "comdim.cdk"
#include "comlun.cdk"
#include "comcva.cdk"
#include "comgrd_param.cdk"
#include "comspg.cdk"
#include "comfftla.cdk"
#include "comcorr.cdk"
#include "compstat.cdk"
*
      logical llprep
      CHARACTER*1 CDCTL
      INTEGER JLEV, JLA, JK, JGL, KULOUT,ji,jj
      REAL*8 ZVORSC, ZDIVSC, ZGZSC, ZPSSC, ZTGSC, ZQSC, zozsc
      REAL*8 ZSIGU, ZSIGV, ZSIGQ, ZSIGPS, ZSIGTG, ZCON, ZGZMIN
      REAL*8 DLFACT
      INTEGER :: ierr,gensize 
      EXTERNAL INITRND
      real*8 zcorns(nksdim2,nksdim2,0:nband-1,1)
C
      IF(CDCTL .EQ. '0') THEN
         WRITE(NULOUT,9000)CDCTL
         RETURN
      ENDIF
 9000 FORMAT(//,3(" *****************"),/
     S     ," subg_lam: CDCTL=",A1,"       NO EXECUTION",/
     S     ,3(" *****************"))
C
      WRITE(NULOUT,FMT=9010)
 9010 FORMAT(//,1x,"-subg_lam: defining the forecast error"
     S     ," correlation as",/
     S     ," NOTE: MORE DIAGNOSTICS ABOUT FORECAST ERROR ARE",/
     S     ,"       WRITTEN ON THE FILE: DIAGSTAT")
!
!!
      llprep = .false.
!
      if(grd_typ.eq.'LU') then
        if(nconf.eq.101.or.nconf.eq.121) then  ! Background-Check
!
!         Set amplification factor of prediction error to one (default)
!
          damplibg(:,:,:) = 1.0d0
          return
        endif
      endif
C
C*1.  Prepare background error statistics 
C     -----------------------------------
C
      if(grd_typ.eq.'GU') then
        if(lcva_hemis) then
          call sustatsgl
        endif 
      else if(grd_typ.eq.'LU') then
        IF(myid == 0) call sustatsla
      endif
      if(llprep) then
        IF(myid == 0) call prep_target_bgchk
      endif
c
c*2.  INITIALIZE THE PROJECTION THAT DIAGONALIZES CORNS
c     -------------------------------------------------
c
      if(.not.lcornsmin) then ! preconditioning not already available on stats file
        IF(myid == 0) THEN
          if(grd_typ.eq.'LU') then
            if(nanalvar.eq.3) THEN
              call sucorns_3
            else
              call sucorns2la
            endif
          else
            if(nanalvar.eq.3) THEN
              call sucorns_3
            else if(nanalvar.eq.4) THEN
              call sucorns2
            endif
          endif
        endif
      endif
!
      gensize=NKSDIM2*NKSDIM2*(NTRUNC+1)*NLATBIN
      CALL rpn_comm_bcast(corns,gensize,"mpi_double_precision",0,"GRID",ierr)
!
      return
      end