Ignore:
Timestamp:
Jan 22, 2019, 4:21:59 PM (5 years ago)
Author:
Laurent Fairhead
Message:

"Historic" :-) commit merging the physics branch used for DYNAMICO with the LMDZ trunk.
The same physics branch can now be used seamlessly with the traditional lon-lat LMDZ
dynamical core and DYNAMICO.
Testing consisted in running a lon-lat LMDZ bucket simulation with the NPv6.1 physics package
with the original trunk sources and the merged sources. Tests were succesful in the sense that
numeric continuity was preserved in the restart files from both simulation. Further tests
included running both versions of the physics codes for one year in a LMDZOR setting in which
the restart files also came out identical.

Caution:

  • as the physics package now manages unstructured grids, grid information needs to be transmitted

to the surface scheme ORCHIDEE. This means that the interface defined in surf_land_orchidee_mod.F90
is only compatible with ORCHIDEE version orchidee2.1 and later versions. If previous versions of
ORCHIDEE need to be used, the CPP key ORCHIDEE_NOUNSTRUCT needs to be set at compilation time.
This is done automatically if makelmdz/makelmdz_fcm are called with the veget orchidee2.0 switch

  • due to a limitation in XIOS, the time at which limit conditions will be read in by DYNAMICO will be

delayed by one physic timestep with respect to the time it is read in by the lon-lat model. This is caused
by the line

IF (MOD(itime-1, lmt_pas) == 0 .OR. (jour_lu /= jour .AND. grid_type /= unstructured)) THEN ! time to read

in limit_read_mod.F90

Work still needed on COSP integration and XML files for DYNAMICO

EM, YM, LF

Location:
LMDZ6/trunk/libf/dyn3dmem
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/dyn3dmem/caladvtrac_mod.F90

    r1907 r3435  
    4444    CALL allocate_u(massem,llm,d)
    4545    CALL allocate_u(pbaruc,llm,d)
     46    pbaruc(:,:)=0
    4647    CALL allocate_v(pbarvc,llm,d)
     48    pbarvc(:,:)=0
    4749    CALL allocate_u(pbarug,llm,d)
    4850    CALL allocate_v(pbarvg,llm,d)
  • LMDZ6/trunk/libf/dyn3dmem/call_calfis_mod.F90

    r2603 r3435  
    5252    CALL allocate_u(p,llmp1,d)
    5353    CALL allocate_u(pks,d)
     54    pks(:)=0
    5455    CALL allocate_u(pk,llm,d)
     56    pk(:,:)=0
    5557    CALL allocate_u(pkf,llm,d)
    5658    CALL allocate_u(phi,llm,d)
  • LMDZ6/trunk/libf/dyn3dmem/call_dissip_mod.F90

    r1987 r3435  
    3131
    3232    CALL allocate_u(ucov,llm,d)
     33    ucov(:,:)=0
    3334    CALL allocate_v(vcov,llm,d)
     35    vcov(:,:)=0
    3436    CALL allocate_u(teta,llm,d)
    3537    CALL allocate_u(p,llmp1,d)
  • LMDZ6/trunk/libf/dyn3dmem/gcm.F90

    r2622 r3435  
    233233       'GCM: AVANT iniacademic AVANT AVANT AVANT AVANT'
    234234  if (.not.read_start) then
     235     annee_ref=anneeref
    235236     CALL iniacademic_loc(vcov,ucov,teta,q,masse,ps,phis,time_0)
    236237  endif
     
    368369
    369370  !-----------------------------------------------------------------------
     371  !   Initialisation des I/O :
     372  !   ------------------------
     373
     374
     375  if (nday>=0) then
     376     day_end = day_ini + nday
     377  else
     378     day_end = day_ini - nday/day_step
     379  endif
     380
     381  WRITE(lunout,300)day_ini,day_end
     382300 FORMAT('1'/,15x,'run du jour',i7,2x,'au jour',i7//)
     383
     384#ifdef CPP_IOIPSL
     385  call ju2ymds(jD_ref + day_ini - day_ref, an, mois, jour, heure)
     386  write (lunout,301)jour, mois, an
     387  call ju2ymds(jD_ref + day_end - day_ref, an, mois, jour, heure)
     388  write (lunout,302)jour, mois, an
     389301 FORMAT('1'/,15x,'run du ', i2,'/',i2,'/',i4)
     390302 FORMAT('1'/,15x,'    au ', i2,'/',i2,'/',i4)
     391#endif
     392
     393  !-----------------------------------------------------------------------
    370394  !   Initialisation de la physique :
    371395  !   -------------------------------
     
    381405  ENDIF ! of IF ((iflag_phys==1).or.(iflag_phys>=100))
    382406
    383 
    384   !-----------------------------------------------------------------------
    385   !   Initialisation des I/O :
    386   !   ------------------------
    387 
    388 
    389   if (nday>=0) then
    390      day_end = day_ini + nday
    391   else
    392      day_end = day_ini - nday/day_step
    393   endif
    394 
    395   WRITE(lunout,300)day_ini,day_end
    396 300 FORMAT('1'/,15x,'run du jour',i7,2x,'au jour',i7//)
    397 
    398 #ifdef CPP_IOIPSL
    399   call ju2ymds(jD_ref + day_ini - day_ref, an, mois, jour, heure)
    400   write (lunout,301)jour, mois, an
    401   call ju2ymds(jD_ref + day_end - day_ref, an, mois, jour, heure)
    402   write (lunout,302)jour, mois, an
    403 301 FORMAT('1'/,15x,'run du ', i2,'/',i2,'/',i4)
    404 302 FORMAT('1'/,15x,'    au ', i2,'/',i2,'/',i4)
    405 #endif
    406407
    407408  !      if (planet_type.eq."earth") then
  • LMDZ6/trunk/libf/dyn3dmem/iniacademic_loc.F90

    r2622 r3435  
    101101  time_0=0.
    102102  day_ref=1
    103   annee_ref=0
     103  ! annee_ref=0
    104104
    105105  im         = iim
  • LMDZ6/trunk/libf/dyn3dmem/integrd_mod.F90

    r1907 r3435  
    2323    CALL allocate_u(deltap,llm,d)
    2424    CALL allocate_u(ps,d)
     25    ps(:)=0
    2526
    2627   
  • LMDZ6/trunk/libf/dyn3dmem/vlsplt_loc.F

    r2765 r3435  
    1919      include "dimensions.h"
    2020      include "paramet.h"
     21      include "iniprint.h"
    2122c
    2223c
     
    872873      include "dimensions.h"
    873874      include "paramet.h"
     875      include "iniprint.h"
    874876c
    875877c
     
    10271029      ELSE ! countcfl>=1
    10281030
    1029       PRINT*,'vlz passage dans le non local'
     1031      IF (prt_level>9) THEN
     1032        WRITE(lunout,*)'vlz passage dans le non local'
     1033      ENDIF
    10301034c ---------------------------------------------------------------
    10311035c  Debut du traitement du cas ou on viole le CFL : w > masse
     
    10591063c  le critère
    10601064      DO WHILE (countcfl>=1)
    1061       print*,'On viole le CFL Vertical sur ',countcfl,' pts'
     1065        IF (prt_level>9) THEN
     1066          WRITE(lunout,*)'On viole le CFL Vertical sur ',countcfl,' pts'
     1067        ENDIF
    10621068      countcfl=0
    10631069
Note: See TracChangeset for help on using the changeset viewer.