Changeset 1320 for LMDZ4


Ignore:
Timestamp:
Feb 25, 2010, 3:50:51 PM (15 years ago)
Author:
idelkadi
Message:

Decoupage du pas de temps physique en N sous-pas (splitting)

Location:
LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3d
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3d/calfis.F

    r1299 r1320  
    150150      REAL zdpsrf(ngridmx)
    151151c
     152      REAL zdufic(ngridmx,llm),zdvfic(ngridmx,llm)
     153      REAL zdtfic(ngridmx,llm),zdqfic(ngridmx,llm,nqtot)
     154      REAL jH_cur_split,zdt_split
     155      LOGICAL debut_split,lafin_split
     156      INTEGER isplit
     157
    152158      REAL zsin(iim),zcos(iim),z1(iim)
    153159      REAL zsinbis(iim),zcosbis(iim),z1bis(iim)
     
    443449
    444450      if (planet_type=="earth") then
     451
     452      print*,'PHYSIQUE AVEC NSPLIT_PHYS=',nsplit_phys
     453      zdt_split=dtphys/nsplit_phys
     454      zdufic(:,:)=0.
     455      zdvfic(:,:)=0.
     456      zdtfic(:,:)=0.
     457      zdqfic(:,:,:)=0.
     458
     459      do isplit=1,nsplit_phys
     460
     461         jH_cur_split=jH_cur+(isplit-1) * dtvr / (daysec *nsplit_phys)
     462         debut_split=debut.and.isplit==1
     463         lafin_split=lafin.and.isplit==nsplit_phys
     464
    445465#ifdef CPP_EARTH
    446       CALL physiq (ngridmx,
     466         CALL physiq (ngridmx,
    447467     .             llm,
    448      .             debut,
    449      .             lafin,
     468     .             debut_split,
     469     .             lafin_split,
    450470     .             jD_cur,
    451      .             jH_cur,
    452      .             dtphys,
     471     .             jH_cur_split,
     472     .             zdt_split,
    453473     .             zplev,
    454474     .             zplay,
     
    470490     .             pducov,
    471491     .             PVteta)
     492
     493         zufi(:,:)=zufi(:,:)+zdufi(:,:)*zdt_split
     494         zvfi(:,:)=zvfi(:,:)+zdvfi(:,:)*zdt_split
     495         ztfi(:,:)=ztfi(:,:)+zdtfi(:,:)*zdt_split
     496         zqfi(:,:,:)=zqfi(:,:,:)+zdqfi(:,:,:)*zdt_split
     497
     498         zdufic(:,:)=zdufic(:,:)+zdufi(:,:)
     499         zdvfic(:,:)=zdvfic(:,:)+zdvfi(:,:)
     500         zdtfic(:,:)=zdtfic(:,:)+zdtfi(:,:)
     501         zdqfic(:,:,:)=zdqfic(:,:,:)+zdqfi(:,:,:)
     502
     503      enddo
     504      zdufi(:,:)=zdufic(:,:)/nsplit_phys
     505      zdvfi(:,:)=zdvfic(:,:)/nsplit_phys
     506      zdtfi(:,:)=zdtfic(:,:)/nsplit_phys
     507      zdqfi(:,:,:)=zdqfic(:,:,:)/nsplit_phys
     508
    472509#endif
    473510      endif !of if (planet_type=="earth")
  • LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3d/conf_gcm.F

    r1299 r1320  
    163163       day_step = 240
    164164       CALL getin('day_step',day_step)
     165
     166!Config  Key  = nsplit_phys
     167!Config  Desc = nombre de pas par jour
     168!Config  Def  = 1
     169!Config  Help = nombre de pas par jour (multiple de iperiod) (
     170!Config          ici pour  dt = 1 min )
     171       nsplit_phys = 1
     172       CALL getin('nsplit_phys',nsplit_phys)
    165173
    166174!Config  Key  = iperiod
  • LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3d/control_mod.F90

    r1299 r1320  
    1111
    1212  REAL    :: periodav
    13   INTEGER :: nday,day_step,iperiod,iapp_tracvl
     13  INTEGER :: nday,day_step,iperiod,iapp_tracvl,nsplit_phys
    1414  INTEGER :: iconser,iecri,idissip,iphysiq,iecrimoy
    1515  INTEGER :: dayref,anneeref, raz_date, ip_ebil_dyn
  • LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3d/gcm.F

    r1316 r1320  
    406406         if (planet_type.eq."earth") then
    407407#ifdef CPP_EARTH
    408          CALL iniphysiq(ngridmx,llm,daysec,day_ini,dtphys ,
     408         CALL iniphysiq(ngridmx,llm,daysec,day_ini,dtphys/nsplit_phys ,
    409409     ,                latfi,lonfi,airefi,zcufi,zcvfi,rad,g,r,cpp     )
    410410#endif
Note: See TracChangeset for help on using the changeset viewer.