!
! $Id: gcm.F90 3579 2019-10-09 13:11:07Z fairhead $
!
!
!
PROGRAM replay3d
  USE comgeom2_mod_h
  USE comdissnew_mod_h
  USE comvert_mod, only :  preff, pa
  USE inigeomphy_mod, ONLY: inigeomphy
  USE control_mod
  USE temps_mod, ONLY: calend,start_time,annee_ref,day_ref, &
                     itau_dyn,itau_phy,day_ini,jD_ref,jH_ref,day_end
  USE comconst_mod, ONLY: cpp, daysec, dtphys, dtvr, g, r, rad
  USE logic_mod, ONLY: ecripar, iflag_phys, read_start

  USE serre_mod, ONLY : clon,clat,transx,transy,alphax,alphay,pxo,pyo,              &
        grossismx, grossismy, dzoomx, dzoomy,taux,tauy
  USE mod_const_mpi, ONLY: comm_lmdz
  USE ioipsl, only: getin

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  ! FH 2008/05/09 On elimine toutes les clefs physiques dans la dynamique
  ! A nettoyer. On ne veut qu'une ou deux routines d'interface
  ! dynamique -> physique pour l'initialisation
  USE iniphysiq_mod, ONLY: iniphysiq
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  USE dimensions_mod, ONLY: iim, jjm, llm, ndm
  USE paramet_mod_h

  IMPLICIT NONE

  !      ......   Version  du 10/01/98    ..........

  !             avec  coordonnees  verticales hybrides
  !   avec nouveaux operat. dissipation * ( gradiv2,divgrad2,nxgraro2 )

  !=======================================================================
  !
  !   Auteur:  P. Le Van /L. Fairhead/F.Hourdin
  !   -------
  !
  !   Objet:
  !   ------
  !
  !   GCM LMD nouvelle grille
  !
  !=======================================================================
  !
  !  ... Dans inigeom , nouveaux calculs pour les elongations  cu , cv
  !      et possibilite d'appeler une fonction f(y)  a derivee tangente
  !      hyperbolique a la  place de la fonction a derivee sinusoidale.
  !  ... Possibilite de choisir le schema pour l'advection de
  !        q  , en modifiant iadv dans traceur.def  (MAF,10/02) .
  !
  !      Pour Van-Leer + Vapeur d'eau saturee, iadv(1)=4. (F.Codron,10/99)
  !      Pour Van-Leer iadv=10
  !
  !-----------------------------------------------------------------------
  !   Declarations:
  !   -------------

  REAL zdtvr


  ! variables dynamiques intermediaire pour le transport

  !   variables pour le fichier histoire
  REAL dtav      ! intervalle de temps elementaire

  REAL time_0

  LOGICAL lafin

  integer :: ntime=10000,it,klon,klev

  character*20 :: lmax_replay


  ! locales pour gestion du temps
  INTEGER :: an, mois, jour
  REAL :: heure

  !   Initialisations:
  !   ----------------


  !----------------------------------------------------------------------
  !  lecture des fichiers gcm.def ou run.def
  !  ---------------------------------------
  !
preff=101325.
 pa=50000.
 clon=0.
 clat=0.
 taux=3.
 tauy=3.
 dzoomx=0.1
 dzoomy=0.1
 grossismx=1.
 grossismx=1.
 transx=0.
 transy=0.

  CALL conf_gcm( 99, .TRUE.)

  if (mod(iphysiq, iperiod) /= 0) call abort_gcm("conf_gcm", &
       "iphysiq must be a multiple of iperiod", 1)

 rad=6400000
g=9.81



  !-----------------------------------------------------------------------
  !   Choix du calendrier
  !   -------------------

  !      calend = 'earth_365d'


  !-----------------------------------------------------------------------
  !   Lecture de l'etat initial :
  !   ---------------------------

  !-----------------------------------------------------------------------
  !   Lecture des parametres de controle pour la simulation :
  !   -------------------------------------------------------
  !  on recalcule eventuellement le pas de temps


  zdtvr    = daysec/REAL(day_step)

  !
  ! on remet le calendrier \`a zero si demande
  !
     annee_ref = anneeref
     day_ref = dayref
     day_ini = dayref
     itau_dyn = 0
     itau_phy = 0
     time_0 = 0.

  mois = 1
  heure = 0.
! call ymds2ju(annee_ref, mois, day_ref, heure, jD_ref)
  jH_ref = jD_ref - int(jD_ref)
  jD_ref = int(jD_ref)



     dtvr = zdtvr
     CALL iniconst
     print*,'APRES inisconst'
     CALL inigeom


  CALL inigeomphy(iim,jjm,llm, &
               1, comm_lmdz, &
               rlatu,rlatv, &
               rlonu,rlonv, &
               aire,cu,cv)

CALL suphel
!open(82,file='dump_param.bin',form='unformatted',status='old')



print*,'Rlatu=',rlatu
klon=2+iim*(jjm-1)

print*,'AVANT getin'
klev=llm
CALL getin('lmax_replay',lmax_replay)
print*,'APRES getin',lmax_replay
CALL getin(lmax_replay,klev)
print*,'replay3d lmax_replay klev',lmax_replay,klev

     CALL iophys_ini(900.,klev)

!---------------------------------------------------------------------
! Initialisation de la parametrisation
!---------------------------------------------------------------------
      call call_ini_replay

!---------------------------------------------------------------------
! Boucle en temps sur l'appel à la parametrisation
!---------------------------------------------------------------------
      DO it=1,ntime
         print*,'Pas de temps ',it,klon,klev
         call call_param_replay(klon,klev)
      ENDDO


END PROGRAM replay3d
