Changeset 97 for trunk/libf/dyn3d


Ignore:
Timestamp:
Mar 22, 2011, 5:25:44 PM (14 years ago)
Author:
slebonnois
Message:

Serie de modifs SL pour homogeneisation des phytitan et phyvenus
Ca touche aussi aux liens phy/dyn (surtout a propos de clesphy0),
a verifier avec les autres, donc...

Location:
trunk/libf/dyn3d
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/libf/dyn3d/bilan_dyn.F

    r37 r97  
    915915         do itr=2,ntr
    916916           do l=1,llm
    917             do j=1,jjp1
     917            do j=1,jjm
    918918          zawQ(1,l,itr,iQ)=zawQ(1,l,itr,iQ)+zwQ(j,l,itr,iQ)*zmasse(j,l)
    919919            enddo
  • trunk/libf/dyn3d/calfis.F

    r37 r97  
    2121     $                  pdq,
    2222     $                  flxw,
    23      $                  clesphy0,
    2423     $                  pdufi,
    2524     $                  pdvfi,
     
    131130      REAL pdqfi(iip1,jjp1,llm,nqtot)
    132131      REAL pdpsfi(iip1,jjp1)
    133 
    134       INTEGER        longcles
    135       PARAMETER    ( longcles = 20 )
    136       REAL clesphy0( longcles )
    137132
    138133
     
    515510     .             zphis,
    516511     .             presnivs,
    517      .             clesphy0,
    518512     .             zufi,
    519513     .             zvfi,
     
    546540     .             zphis,
    547541     .             presnivs,
    548      .             clesphy0,
    549542     .             zufi,
    550543     .             zvfi,
  • trunk/libf/dyn3d/ce0l.F90

    r1 r97  
    3939#include "temps.h"
    4040#include "logic.h"
    41   INTEGER, PARAMETER            :: longcles=20
    42   REAL,    DIMENSION(longcles)  :: clesphy0
    4341  REAL,    DIMENSION(iip1,jjp1) :: masque
    4442  CHARACTER(LEN=15)             :: calnd
    4543!-------------------------------------------------------------------------------
    46   CALL conf_gcm( 99, .TRUE. , clesphy0 )
     44  CALL conf_gcm( 99, .TRUE. )
    4745
    4846  CALL Init_Phys_lmdz(iim,jjp1,llm,1,(/(jjm-1)*iim+2/))
  • trunk/libf/dyn3d/conf_gcm.F

    r6 r97  
    44c
    55c
    6       SUBROUTINE conf_gcm( tapedef, etatinit, clesphy0 )
     6      SUBROUTINE conf_gcm( tapedef, etatinit )
    77c
    88      USE control_mod
     
    2222c     etatinit  :     = TRUE   , on ne  compare pas les valeurs des para-
    2323c     -metres  du zoom  avec  celles lues sur le fichier start .
    24 c      clesphy0 :  sortie  .
    2524c
    2625       LOGICAL etatinit
    2726       INTEGER tapedef
    2827
    29        INTEGER        longcles
    30        PARAMETER(     longcles = 20 )
    31        REAL clesphy0( longcles )
    32 c
    3328c   Declarations :
    3429c   --------------
     
    147142      CALL getin('raz_date', raz_date)
    148143
     144!Config  Key  = resetvarc
     145!Config  Desc = Reinit des variables de controle
     146!Config  Def  = n
     147!Config  Help = Reinit des variables de controle
     148      resetvarc = .false.
     149      CALL getin('resetvarc',resetvarc)
     150
    149151!Config  Key  = nday
    150152!Config  Desc = Nombre de jours d'integration
     
    154156      nday = 10
    155157      CALL getin('nday',nday)
     158
     159!Config  Key  = less1day
     160!Config  Desc = Possibilite d'integrer moins d'un jour
     161!Config  Def  = n
     162!Config  Help = Possibilite d'integrer moins d'un jour
     163      less1day = .false.
     164      CALL getin('less1day',less1day)
     165
     166!Config  Key  = fractday
     167!Config  Desc = integration sur une fraction de jour
     168!Config  Def  = 0.01
     169!Config  Help = integration sur une fraction de jour
     170      fractday = 0.01
     171      CALL getin('fractday',fractday)
    156172
    157173!Config  Key  = day_step
     
    360376       ip_ebil_dyn = 0
    361377       CALL getin('ip_ebil_dyn',ip_ebil_dyn)
    362 
    363       DO i = 1, longcles
    364        clesphy0(i) = 0.
    365       ENDDO
    366378
    367379ccc  ....   P. Le Van , ajout  le 7/03/95 .pour le zoom ...
     
    611623      write(lunout,*)' anneeref = ', anneeref
    612624      write(lunout,*)' nday = ', nday
     625      if (less1day) then
     626      write(lunout,*)' Run only for a fraction of day ! '
     627      write(lunout,*)' fractday = ', fractday
     628      endif
    613629      write(lunout,*)' day_step = ', day_step
    614630      write(lunout,*)' iperiod = ', iperiod
  • trunk/libf/dyn3d/control_mod.F90

    r1 r97  
    2424  LOGICAL ok_dyn_ave ! output averaged values of fields in the dynamics
    2525                     ! in NetCDF files dyn_hist*ave.nc
     26  LOGICAL :: resetvarc  ! allows to reset the variables in sortvarc
     27  LOGICAL :: less1day   ! allows to run less than 1 day (for Venus)
     28  REAL    :: fractday   ! fraction of the day to run in this case
    2629
    2730END MODULE
  • trunk/libf/dyn3d/gcm.F

    r7 r97  
    8080#include "indicesol.h"
    8181#endif
    82       INTEGER         longcles
    83       PARAMETER     ( longcles = 20 )
    84       REAL  clesphy0( longcles )
    85       SAVE  clesphy0
    86 
    8782
    8883
     
    172167! Ehouarn: dump possibility of using defrun
    173168!#ifdef CPP_IOIPSL
    174       CALL conf_gcm( 99, .TRUE. , clesphy0 )
     169      CALL conf_gcm( 99, .TRUE. )
    175170!#else
    176171!      CALL defrun( 99, .TRUE. , clesphy0 )
     
    210205        call ioconf_calendar('gregorian')
    211206        write(lunout,*)'CALENDRIER CHOISI: Terrestre bissextile'
     207      else if (calend == 'titan') then
     208!        call ioconf_calendar('titan')
     209        write(lunout,*)'CALENDRIER CHOISI: Titan'
     210        abort_message = 'A FAIRE...'
     211        call abort_gcm(modname,abort_message,1)
     212      else if (calend == 'venus') then
     213!        call ioconf_calendar('venus')
     214        write(lunout,*)'CALENDRIER CHOISI: Venus'
     215        abort_message = 'A FAIRE...'
     216        call abort_gcm(modname,abort_message,1)
    212217      else
    213218        abort_message = 'Mauvais choix de calendrier'
     
    361366      mois = 1
    362367      heure = 0.
     368! Ce n'est defini pour l'instant que pour la Terre...
     369      if (planet_type.eq.'earth') then
    363370      call ymds2ju(annee_ref, mois, day_ref, heure, jD_ref)
    364371      jH_ref = jD_ref - int(jD_ref)
     
    373380      write(lunout,*)'jD_ref+jH_ref,an, mois, jour, heure'
    374381      write(lunout,*)jD_ref+jH_ref,an, mois, jour, heure
     382      else
     383! A voir pour Titan et Venus
     384        jD_ref=0
     385        jH_ref=0
     386      write(lunout,*)'A VOIR POUR VENUS ET TITAN: jD_ref, jH_ref'
     387      write(lunout,*)jD_ref,jH_ref
     388      endif ! planet_type
    375389#else
    376390! Ehouarn: we still need to define JD_ref and JH_ref
     
    460474
    461475#ifdef CPP_IOIPSL
     476! Ce n'est defini pour l'instant que pour la Terre...
     477      if (planet_type.eq.'earth') then
    462478      call ju2ymds(jD_ref + day_ini - day_ref, an, mois, jour, heure)
    463479      write (lunout,301)jour, mois, an
    464480      call ju2ymds(jD_ref + day_end - day_ref, an, mois, jour, heure)
    465481      write (lunout,302)jour, mois, an
     482      else
     483! A voir pour Titan et Venus
     484      write(lunout,*)'A VOIR POUR VENUS ET TITAN: separation en annees...'
     485      endif ! planet_type
     486
    466487 301  FORMAT('1'/,15x,'run du ', i2,'/',i2,'/',i4)
    467488 302  FORMAT('1'/,15x,'    au ', i2,'/',i2,'/',i4)
     
    519540
    520541
    521       CALL leapfrog(ucov,vcov,teta,ps,masse,phis,q,clesphy0,
     542      CALL leapfrog(ucov,vcov,teta,ps,masse,phis,q,
    522543     .              time_0)
    523544
  • trunk/libf/dyn3d/leapfrog.F

    r53 r97  
    44c
    55c
    6       SUBROUTINE leapfrog(ucov,vcov,teta,ps,masse,phis,q,clesphy0,
     6      SUBROUTINE leapfrog(ucov,vcov,teta,ps,masse,phis,q,
    77     &                    time_0)
    88
     
    6666! FH 2008/05/09 On elimine toutes les clefs physiques dans la dynamique
    6767! #include "clesphys.h"
    68 
    69       INTEGER         longcles
    70       PARAMETER     ( longcles = 20 )
    71       REAL  clesphy0( longcles )
    7268
    7369      real zqmin,zqmax
     
    202198
    203199      itaufin   = nday*day_step
     200      if (less1day) then
     201c MODIF VENUS: to run less than one day:
     202        itaufin   = int(fractday*day_step)
     203      endif
    204204      itaufinp1 = itaufin +1
    205205      modname="leapfrog"
     
    236236      CALL pression ( ip1jmp1, ap, bp, ps, p       )
    237237      CALL exner_hyb( ip1jmp1, ps, p,alpha,beta, pks, pk, pkf )
     238c------------------
     239c TEST PK MONOTONE
     240c------------------
     241      write(*,*) "Test PK"
     242      do ij=1,ip1jmp1
     243        do l=2,llm
     244          if(pk(ij,l).gt.pk(ij,l-1)) then
     245c           write(*,*) ij,l,pk(ij,l)
     246            abort_message = 'PK non strictement decroissante'
     247            call abort_gcm(modname,abort_message,1)
     248c           write(*,*) "ATTENTION, Test PK deconnecté..."
     249          endif
     250        enddo
     251      enddo
     252      write(*,*) "Fin Test PK"
     253c     stop
     254c------------------
    238255
    239256c-----------------------------------------------------------------------
     
    430447     $               du,dv,dteta,dq,
    431448     $               flxw,
    432      $               clesphy0, dufi,dvfi,dtetafi,dqfi,dpfi  )
     449     $               dufi,dvfi,dtetafi,dqfi,dpfi  )
    433450
    434451c      ajout des tendances physiques:
  • trunk/libf/dyn3d/sortvarc.F

    r1 r97  
    5555
    5656      REAL       SSUM
     57
     58      logical  firstcal
     59      data     firstcal/.true./
     60      save     firstcal
    5761
    5862c-----------------------------------------------------------------------
     
    115119     *               cosphi(ij)
    116120          ENDDO
    117           angl(l) = radsg *
     121          angl(l) = rad *
    118122     s    (SSUM(ip1jm-iip1,ge(iip2),1)-SSUM(jjm-1,ge(iip2),iip1))
    119123      ENDDO
     
    129133      ang   = SSUM(     llm,  angl, 1 )
    130134
    131 c      rday = REAL(INT ( day_ini + time ))
    132 c
     135      IF (firstcal.and.resetvarc) then
    133136       rday = REAL(INT(time-jD_ref-jH_ref))
    134       IF(ptot0.eq.0.)  THEN
    135137         PRINT 3500, itau, rday, heure,time
    136138         PRINT*,'WARNING!!! On recalcule les valeurs initiales de :'
     
    151153      ang = ang /ang0
    152154
     155      firstcal = .false.
    153156
    154157      PRINT 3500, itau, rday, heure, time
  • trunk/libf/dyn3d/sortvarc0.F

    r1 r97  
    116116     *               cosphi(ij)
    117117          ENDDO
    118           angl(l) = radsg *
     118          angl(l) = rad *
    119119     s    (SSUM(ip1jm-iip1,ge(iip2),1)-SSUM(jjm-1,ge(iip2),iip1))
    120120      ENDDO
Note: See TracChangeset for help on using the changeset viewer.