Ignore:
Timestamp:
Jul 7, 2009, 4:01:00 PM (15 years ago)
Author:
Laurent Fairhead
Message:

Modifications nécessaires a l'inclusion d'un calendrier réaliste.
La date courante est calculée dans leapfrog.F et exprimée en Jour Julien
(modifié). On en a profité pour faire un peu de ménage dans la gestion des dates
du modèle.
Dans la physique, on utilise les routines de passages entre calendrier Julien et
Gregorien incluses dans IOIPSL pour calculer le nombre de jours écoulés depuis le
1er janvier (pour les conditions aux limites) ou l'equinoxe (pour le calcul de
la longitude solaire). Le calcul de l'orbite reprend celui du gcm planétaire
(codé par FH)
On décide du calendrier à utiliser à l'aide du paramètre calend du run.def. Par
défaut celui-ci est à earth_360d
LF

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/branches/LMDZ4-dev/libf/dyn3d/gcm.F

    r1200 r1201  
    113113      real time_step, t_wrt, t_ops
    114114
    115       REAL rdayvrai,rdaym_ini,rday_ecri
    116115      LOGICAL first
    117116
     
    135134      character (len=20) :: modname
    136135      character (len=80) :: abort_message
    137 
    138 C Calendrier
    139       LOGICAL true_calendar
    140       PARAMETER (true_calendar = .false.)
     136! locales pour gestion du temps
     137      INTEGER :: an, mois, jour
     138      REAL :: heure
     139
    141140
    142141c-----------------------------------------------------------------------
     
    163162
    164163
    165 c-----------------------------------------------------------------------
    166 c   Choix du calendrier
    167 c   -------------------
    168 
    169 #ifdef CPP_IOIPSL
    170       if (true_calendar) then
    171         call ioconf_calendar('gregorian')
    172       else
    173         call ioconf_calendar('360d')
    174       endif
    175 #endif
    176164c----------------------------------------------------------------------
    177165c  lecture des fichiers gcm.def ou run.def
     
    197185      endif
    198186!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     187c-----------------------------------------------------------------------
     188c   Choix du calendrier
     189c   -------------------
     190
     191c      calend = 'earth_365d'
     192
     193#ifdef CPP_IOIPSL
     194      if (calend == 'earth_360d') then
     195        call ioconf_calendar('360d')
     196        write(lunout,*)'CALENDRIER CHOISI: Terrestre a 360 jours/an'
     197      else if (calend == 'earth_365d') then
     198        call ioconf_calendar('noleap')
     199        write(lunout,*)'CALENDRIER CHOISI: Terrestre a 365 jours/an'
     200      else if (calend == 'earth_366d') then
     201        call ioconf_calendar('gregorian')
     202        write(lunout,*)'CALENDRIER CHOISI: Terrestre bissextile'
     203      else
     204        abort_message = 'Mauvais choix de calendrier'
     205        call abort_gcm(modname,abort_message,1)
     206      endif
     207#endif
     208c-----------------------------------------------------------------------
    199209
    200210      IF (config_inca /= 'none') THEN
     
    303313          annee_ref = anneeref
    304314          day_ref = dayref
    305           day_ini = dayref
     315          day_ini = 1
    306316          itau_dyn = 0
    307317          itau_phy = 0
     
    314324      endif
    315325
     326      mois = 1
     327      heure = 0.
     328      call ymds2ju(annee_ref, mois, day_ref, heure, jD_ref)
     329      jH_ref = jD_ref - int(jD_ref)
     330      jD_ref = int(jD_ref)
     331
    316332#ifdef CPP_IOIPSL
    317333      call ioconf_startdate(annee_ref,0,day_ref, 0.)
    318334#endif
    319335
     336      write(lunout,*)'DEBUG'
     337      write(lunout,*)'annee_ref, mois, day_ref, heure, jD_ref'
     338      write(lunout,*)annee_ref, mois, day_ref, heure, jD_ref
     339      call ju2ymds(jD_ref+jH_ref,an, mois, jour, heure)
     340      write(lunout,*)'jD_ref+jH_ref,an, mois, jour, heure'
     341      write(lunout,*)jD_ref+jH_ref,an, mois, jour, heure
    320342
    321343c  nombre d'etats dans les fichiers demarrage et histoire
     
    391413      WRITE(lunout,300)day_ini,day_end
    392414 300  FORMAT('1'/,15x,'run du jour',i7,2x,'au jour',i7//)
     415      call ju2ymds(jD_ref+day_ini-1,an, mois, jour, heure)
     416      write (lunout,301)jour, mois, an
     417      call ju2ymds(jD_ref+day_end-1,an, mois, jour, heure)
     418      write (lunout,302)jour, mois, an
     419 301  FORMAT('1'/,15x,'run du ', i2,'/',i2,'/',i4)
     420 302  FORMAT('1'/,15x,'    au ', i2,'/',i2,'/',i4)
    393421
    394422      if (planet_type.eq."earth") then
Note: See TracChangeset for help on using the changeset viewer.