Ignore:
Timestamp:
Jul 1, 2010, 11:02:53 AM (14 years ago)
Author:
Laurent Fairhead
Message:

Merged LMDZ4V5.0-dev branch changes r1292:r1399 to trunk.

Validation:
Validation consisted in compiling the HEAD revision of the trunk,
LMDZ4V5.0-dev branch and the merged sources and running different
configurations on local and SX8 machines comparing results.

Local machine: bench configuration, 32x24x11, gfortran

  • IPSLCM5A configuration (comparison between trunk and merged sources):
    • numerical convergence on dynamical fields over 3 days
    • start files are equivalent (except for RN and PB fields)
    • daily history files equivalent
  • MH07 configuration, new physics package (comparison between LMDZ4V5.0-dev branch and merged sources):
    • numerical convergence on dynamical fields over 3 days
    • start files are equivalent (except for RN and PB fields)
    • daily history files equivalent

SX8 machine (brodie), 96x95x39 on 4 processors:

  • IPSLCM5A configuration:
    • start files are equivalent (except for RN and PB fields)
    • monthly history files equivalent
  • MH07 configuration:
    • start files are equivalent (except for RN and PB fields)
    • monthly history files equivalent

Changes to the makegcm and create_make_gcm scripts to take into account
main programs in F90 files


Fusion de la branche LMDZ4V5.0-dev (r1292:r1399) au tronc principal

Validation:
La validation a consisté à compiler la HEAD de le trunk et de la banche
LMDZ4V5.0-dev et les sources fusionnées et de faire tourner le modéle selon
différentes configurations en local et sur SX8 et de comparer les résultats

En local: 32x24x11, config bench/gfortran

  • pour une config IPSLCM5A (comparaison tronc/fusion):
    • convergence numérique sur les champs dynamiques après 3 jours
    • restart et restartphy égaux (à part sur RN et Pb)
    • fichiers histoire égaux
  • pour une config nlle physique (MH07) (comparaison LMDZ4v5.0-dev/fusion):
    • convergence numérique sur les champs dynamiques après 3 jours
    • restart et restartphy égaux
    • fichiers histoire équivalents

Sur brodie, 96x95x39 sur 4 proc:

  • pour une config IPSLCM5A:
    • restart et restartphy égaux (à part sur RN et PB)
    • pas de différence dans les fichiers histmth.nc
  • pour une config MH07
    • restart et restartphy égaux (à part sur RN et PB)
    • pas de différence dans les fichiers histmth.nc

Changement sur makegcm et create_make-gcm pour pouvoir prendre en compte des
programmes principaux en *F90

Location:
LMDZ4/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/trunk

  • LMDZ4/trunk/libf/dyn3d/gcm.F

    r1315 r1403  
    1515      USE filtreg_mod
    1616      USE infotrac
     17      USE control_mod
    1718
    1819!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     
    6869#include "logic.h"
    6970#include "temps.h"
    70 #include "control.h"
     71!!!!!!!!!!!#include "control.h"
    7172#include "ener.h"
    7273#include "description.h"
    7374#include "serre.h"
    74 #include "com_io_dyn.h"
     75!#include "com_io_dyn.h"
    7576#include "iniprint.h"
    7677#include "tracstoke.h"
     78#ifdef INCA
     79! Only INCA needs these informations (from the Earth's physics)
    7780#include "indicesol.h"
    78 
     81#endif
    7982      INTEGER         longcles
    8083      PARAMETER     ( longcles = 20 )
     
    181184      if (planet_type.eq."earth") then
    182185#ifdef CPP_EARTH
    183       CALL Init_Phys_lmdz(iim,jjp1,llm,1,(jjm-1)*iim+2)
     186      CALL Init_Phys_lmdz(iim,jjp1,llm,1,(/(jjm-1)*iim+2/))
    184187      call InitComgeomphy
    185188#endif
     
    241244      if (read_start) then
    242245      ! we still need to run iniacademic to initialize some
    243       ! constants & fields, if we run the 'newtonian' case:
    244         if (iflag_phys.eq.2) then
     246      ! constants & fields, if we run the 'newtonian' or 'SW' cases:
     247        if (iflag_phys.ne.1) then
    245248          CALL iniacademic(vcov,ucov,teta,q,masse,ps,phis,time_0)
    246249        endif
    247 !#ifdef CPP_IOIPSL
     250
    248251        if (planet_type.eq."earth") then
    249252#ifdef CPP_EARTH
    250253! Load an Earth-format start file
    251254         CALL dynetat0("start.nc",vcov,ucov,
    252      .              teta,q,masse,ps,phis, time_0)
     255     &              teta,q,masse,ps,phis, time_0)
     256#else
     257        ! SW model also has Earth-format start files
     258        ! (but can be used without the CPP_EARTH directive)
     259          if (iflag_phys.eq.0) then
     260            CALL dynetat0("start.nc",vcov,ucov,
     261     &              teta,q,masse,ps,phis, time_0)
     262          endif
    253263#endif
    254264        endif ! of if (planet_type.eq."earth")
     265       
    255266c       write(73,*) 'ucov',ucov
    256267c       write(74,*) 'vcov',vcov
     
    294305      ENDIF
    295306
    296       zdtvr    = daysec/FLOAT(day_step)
     307      zdtvr    = daysec/REAL(day_step)
    297308        IF(dtvr.NE.zdtvr) THEN
    298309         WRITE(lunout,*)
     
    303314C on remet le calendrier à zero si demande
    304315c
    305       if (annee_ref .ne. anneeref .or. day_ref .ne. dayref) then
     316      IF (raz_date == 1) THEN
     317        annee_ref = anneeref
     318        day_ref = dayref
     319        day_ini = dayref
     320        itau_dyn = 0
     321        itau_phy = 0
     322        time_0 = 0.
     323        write(lunout,*)
     324     .   'GCM: On reinitialise a la date lue dans gcm.def'
     325      ELSE IF (annee_ref .ne. anneeref .or. day_ref .ne. dayref) THEN
    306326        write(lunout,*)
    307327     .  'GCM: Attention les dates initiales lues dans le fichier'
     
    309329     .  ' restart ne correspondent pas a celles lues dans '
    310330        write(lunout,*)' gcm.def'
    311         write(lunout,*)' annee_ref=',annee_ref," anneeref=",anneeref
    312         write(lunout,*)' day_ref=',day_ref," dayref=",dayref
    313         if (raz_date .ne. 1) then
    314           write(lunout,*)
    315      .    'GCM: On garde les dates du fichier restart'
    316         else
    317           annee_ref = anneeref
    318           day_ref = dayref
    319           day_ini = dayref
    320           itau_dyn = 0
    321           itau_phy = 0
    322           time_0 = 0.
    323           write(lunout,*)
    324      .   'GCM: On reinitialise a la date lue dans gcm.def'
    325         endif
    326       ELSE
    327         raz_date = 0
    328       endif
     331        write(lunout,*)' annee_ref=',annee_ref," anneeref=",anneeref
     332        write(lunout,*)' day_ref=',day_ref," dayref=",dayref
     333        write(lunout,*)' Pas de remise a zero'
     334      ENDIF
     335
     336c      if (annee_ref .ne. anneeref .or. day_ref .ne. dayref) then
     337c        write(lunout,*)
     338c     .  'GCM: Attention les dates initiales lues dans le fichier'
     339c        write(lunout,*)
     340c     .  ' restart ne correspondent pas a celles lues dans '
     341c        write(lunout,*)' gcm.def'
     342c        write(lunout,*)' annee_ref=',annee_ref," anneeref=",anneeref
     343c        write(lunout,*)' day_ref=',day_ref," dayref=",dayref
     344c        if (raz_date .ne. 1) then
     345c          write(lunout,*)
     346c     .    'GCM: On garde les dates du fichier restart'
     347c        else
     348c          annee_ref = anneeref
     349c          day_ref = dayref
     350c          day_ini = dayref
     351c          itau_dyn = 0
     352c          itau_phy = 0
     353c          time_0 = 0.
     354c          write(lunout,*)
     355c     .   'GCM: On reinitialise a la date lue dans gcm.def'
     356c        endif
     357c      ELSE
     358c        raz_date = 0
     359c      endif
    329360
    330361#ifdef CPP_IOIPSL
     
    355386      nbetatmoy = nday / periodav + 1
    356387
     388      if (iflag_phys.eq.1) then
     389      ! these initialisations have already been done (via iniacademic)
     390      ! if running in SW or Newtonian mode
    357391c-----------------------------------------------------------------------
    358392c   Initialisation des constantes dynamiques :
    359393c   ------------------------------------------
    360       dtvr = zdtvr
    361       CALL iniconst
     394        dtvr = zdtvr
     395        CALL iniconst
    362396
    363397c-----------------------------------------------------------------------
    364398c   Initialisation de la geometrie :
    365399c   --------------------------------
    366       CALL inigeom
     400        CALL inigeom
    367401
    368402c-----------------------------------------------------------------------
    369403c   Initialisation du filtre :
    370404c   --------------------------
    371       CALL inifilr
     405        CALL inifilr
     406      endif ! of if (iflag_phys.eq.1)
    372407c
    373408c-----------------------------------------------------------------------
     
    405440         if (planet_type.eq."earth") then
    406441#ifdef CPP_EARTH
    407          CALL iniphysiq(ngridmx,llm,daysec,day_ini,dtphys ,
     442         CALL iniphysiq(ngridmx,llm,daysec,day_ini,dtphys/nsplit_phys ,
    408443     ,                latfi,lonfi,airefi,zcufi,zcvfi,rad,g,r,cpp     )
    409444#endif
     
    440475
    441476#ifdef CPP_IOIPSL
    442       if ( 1.eq.1) then
    443477      time_step = zdtvr
    444       t_ops = iecri * daysec
    445       t_wrt = iecri * daysec
    446 !      CALL inithist(dynhist_file,day_ref,annee_ref,time_step,
    447 !    .              t_ops, t_wrt, histid, histvid)
    448 
    449 !     IF (ok_dynzon) THEN
    450 !        t_ops = iperiod * time_step
    451 !        t_wrt = periodav * daysec
    452 !        CALL initdynav(dynhistave_file,day_ref,annee_ref,time_step,
    453 !    .        t_ops, t_wrt, histaveid)
    454 !     END IF
     478      if (ok_dyn_ins) then
     479        ! initialize output file for instantaneous outputs
     480        ! t_ops = iecri * daysec ! do operations every t_ops
     481        t_ops =((1.0*iecri)/day_step) * daysec 
     482        t_wrt = daysec ! iecri * daysec ! write output every t_wrt
     483        CALL inithist(day_ref,annee_ref,time_step,
     484     &              t_ops,t_wrt)
     485      endif
     486
     487      IF (ok_dyn_ave) THEN
     488        ! initialize output file for averaged outputs
     489        t_ops = iperiod * time_step ! do operations every t_ops
     490        t_wrt = periodav * daysec   ! write output every t_wrt
     491        CALL initdynav(day_ref,annee_ref,time_step,
     492     &       t_ops,t_wrt)
     493      END IF
    455494      dtav = iperiod*dtvr/daysec
    456       endif
    457 
    458 
    459495#endif
    460496! #endif of #ifdef CPP_IOIPSL
Note: See TracChangeset for help on using the changeset viewer.