copyright (C) 2001  MSC-RPN COMM  %%%MC2%%%

      subroutine phyctrl (prout,status) 2,3
      implicit none
*
      logical prout
      integer status
*
*     ##########################################
*     #  Initialization of controle parameters #
*     #  (see MC2 user guide for descriptions) #
*     ##########################################
*
#include "lcldim.cdk"
#include "physnml.cdk"
#include "physcom.cdk"
#include "yomdyn.cdk"
#include "partopo.cdk"
#include "path.cdk"
#include "lun.cdk"
#include "grd.cdk"
*
      character*8  dumc
      character*10 nmlname
      integer unnml,pnerrdirf,pnflag1,pnflag2,i,nfold,status2,status3,
     $        longueur
      data unnml /11/
*
*----------------------------------------------------------------------
      status  = -1
      status2 = -1
      status3 = -1
      nmlname = 'physics'
      pfbtyp  ='prosplit'
*
      if (.not.modrstrt) then
         radia   ='newrad'
         radftp  ='STD'
         fluvert ='clef'
         schmsol ='fcrest'
         mixing  ='BLAC62'
         convec  ='oldkuo'
         stcond  ='conds'
         gwdrag  ='gwd86'
         shlcvt(1)  ='conres'
         shlcvt(2)  ='nil'
         dzsedi  = -1.
         hrclip  = -1.
         ktdflt  = 0.
         as      = 12.
         beta    = 1.
*     
         mxadj    = 20
         kntrad   = 6
         moyhr    = 0
         nsloflux = 0
         lheat    = 1
         runlgt   =-1
*
         kfcmom_L= .true.
* for phy41
         kfctrig(1) = 0.
         kfctrig(2) = 0.
         kfctrig(3) = 0.05
         kfctrig(4) = 0.05
c         kfctrig(1) = 0.05
         kfcrad  = 1500.
         kfcdepth= 4000.
         kfcdlev = 0.5
         kfcdet  = 0.
         kfctimec= 3600.
         kfctimea= 3600.
         kkl     = 0.1
         kfcpcp  = 'ORI'
*     
         hcad  =0.6
         hfad  =1.
         hmad  =1.
* 
         impflx = .false.
         rad_filter = .true.    
         strato  =.false. 
         agregat =.true.
         incore  =.true.
         advectke=.false.
         diffuw  =.false.
         dbgmem  =.false.
         evap    =.true.
         wet     =.true.
         satuco  =.true.
         inilwc  =.false.
         snowmelt=.false.
         stomate =.false.
         typsol  =.false.
         bkgalb  =.true.
         snoalb  =.true.
         cortm   =.false.
         drylaps =.true.
* 210
*   * Secondary switches only active with fluvert= SIMP
*
         drag =.false.
         chauf=.true.
*
* *** Updating configuration with namelist pil_cfgs
*
         open (unnml,file=nml,access='SEQUENTIAL',
     $         form='FORMATTED',status='OLD',iostat=pnerrdirf)
         if (pnerrdirf.ne.0) then
            print '(/,2x,a/2x,3a/)', '==> ABORT -- ABORT <==',
     $            'FILE ',nml(1:longueur(nml)),' NOT FOUND'
            goto 9991
         endif
*
         rewind ( unnml )
         read (unnml, nml=physics, end = 9120)
         write (6,601) nmlname
*
         close (unnml)
*
         call low2up  (pfbtyp,dumc)
         gnpfb = 1
         if (dumc.eq.'PROSPLIT') gnpfb = 1
         if (dumc.eq.'GIRARD1' ) gnpfb = 2
         if (diffuw) then
            write (6,101) 'diffuw = .t.'
            goto 9991
         endif
         call low2up  (shlcvt(1),dumc)
         shlcvt(1) = dumc
         call low2up  (shlcvt(2),dumc)
         shlcvt(2) = dumc
         Grdc_initsfc_L = .false.
 101     format (/1x,'OPTION: ',a,' NEVER BEEN FULLY TESTED'/)
*
         status2 = 1
*        
      else
*
         print '(1x,a/1x,3a)', 'WARNING --  RESTART MODE',
     $        'USING CONFIGURATION OF PREVIOUS RUN (',nmlname,')'
         call rphypar (un_rstrt)
         call mod_rstrt (un_rstrt,prout,status2,'PHY')
*
      endif
*
      call serctrl (prout,status3)
c      call diactrl (prout,runlgt)
*
      if ((status2.eq.1).and.(status3.eq.1)) status = 1
      goto 9991
 9120 write (6, 9150) nmlname,nml
 9991 continue
#if defined (NEC) || defined (HPPA)
      call flush (6)
#endif
*----------------------------------------------------------------------
 601  format (' CONFIGURATION UPDATED WITH NAMELIST ',a)
 9150 format (/,2x,'==> ABORT -- ABORT <=='/2x,'NAMELIST ',a,
     $             ' NOT FOUND ON FILE ',a/)
*
      return
      end
*

      subroutine rphypar (fnrstrt) 1
      implicit none
      integer fnrstrt
*
*AUTHOR     Michel Desgagne                   Jan   1994
*
*REVISION
*
*LANGUAGE   Fortran 77
*
*OBJECT
*     Read physics configuration on a restart file
*
*FILES
*     unit= pnrstrt: restart file
*
*ARGUMENTS
*    NAMES     I/O  TYPE  A/S        DESCRIPTION
*
*    pnrstrt    I     I    S    restart file unit
*
*IMPLICIT
#include "physnml.cdk"
#include "physcom.cdk"
#include "grd.cdk"
*
*MODULES
*
**
*----------------------------------------------------------------------
*
      read  (fnrstrt)  radia,fluvert,schmsol,convec,stcond,
     $                 mxadj,kntrad,lheat,hcad,hfad,hmad,snoalb,
     $                 dbgmem,evap,wet,gwdrag,advectke,diffuw,
     $                 inilwc,snowmelt,stomate,typsol,satuco,drag,
     $                 chauf,incore,radftp,rad_filter,impflx,
     $                 hrclip,gnpfb,shlcvt,moyhr,nsloflux,ktdflt,dzsedi,
     $                 mixing,kfcmom_l,kfctrig,kfcrad,kfcdepth,kfcdlev,
     $                 kfcdet,kfctimec,kfctimea,agregat,bkgalb,drylaps,
     $                 as,beta,kfcpcp,kkl,strato,Grdc_initsfc_L 
*
*----------------------------------------------------------------------
      return
      end
*

      subroutine wphypar (fnrstrt) 1,1
      implicit none
      integer fnrstrt
*
*AUTHOR     Michel Desgagne                   Jan   1994
*
*REVISION
*
*LANGUAGE   Fortran 77
*
*OBJECT
*     Write physics configuration on a restart file
*
*FILES
*     unit= pnrstrt: restart file
*
*ARGUMENTS
*    NAMES     I/O  TYPE  A/S        DESCRIPTION
*
*    pnrstrt    I     I    S    restart file unit
*
*IMPLICIT
#include "physnml.cdk"
#include "physcom.cdk"
#include "partopo.cdk"
#include "grd.cdk"
*
*MODULES
*
**
*----------------------------------------------------------------------
*
      write (fnrstrt)  radia,fluvert,schmsol,convec,stcond,
     $                 mxadj,kntrad,lheat,hcad,hfad,hmad,snoalb,
     $                 dbgmem,evap,wet,gwdrag,advectke,diffuw,
     $                 inilwc,snowmelt,stomate,typsol,satuco,drag,
     $                 chauf,incore,radftp,rad_filter,impflx,
     $                 hrclip,gnpfb,shlcvt,moyhr,nsloflux,ktdflt,dzsedi,
     $                 mixing,kfcmom_l,kfctrig,kfcrad,kfcdepth,kfcdlev,
     $                 kfcdet,kfctimec,kfctimea,agregat,bkgalb,drylaps,
     $                 as,beta,kfcpcp,kkl,strato,Grdc_initsfc_L 
*
      call wsercfg (fnrstrt)
c      call wdiacfg (fnrstrt)
*
*----------------------------------------------------------------------
      return
      end