Ignore:
Timestamp:
Dec 10, 2009, 10:02:56 AM (15 years ago)
Author:
Laurent Fairhead
Message:

Merged LMDZ4-dev branch changes r1241:1278 into the trunk
Running trunk and LMDZ4-dev in LMDZOR configuration on local
machine (sequential) and SX8 (4-proc) yields identical results
(restart and restartphy are identical binarily)
Log history from r1241 to r1278 is available by switching to
source:LMDZ4/branches/LMDZ4-dev-20091210

Location:
LMDZ4/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/trunk

  • LMDZ4/trunk/libf/dyn3dpar/leapfrog_p.F

    r1146 r1279  
    11!
    2 ! $Header$
     2! $Id$
    33!
    44c
     
    1818       USE timer_filtre, ONLY : print_filtre_timer
    1919       USE infotrac
     20       USE guide_p_mod, ONLY : guide_main
     21       USE getparam
    2022
    2123      IMPLICIT NONE
     
    118120c
    119121      INTEGER itau,itaufinp1,iav
    120       INTEGER*4  iday ! jour julien
    121       REAL       time ! Heure de la journee en fraction d'1 jour
     122!      INTEGER  iday ! jour julien
     123      REAL       time
    122124
    123125      REAL  SSUM
     
    132134      real time_step, t_wrt, t_ops
    133135
    134       REAL rdayvrai,rdaym_ini
     136! jD_cur: jour julien courant
     137! jH_cur: heure julienne courante
     138      REAL :: jD_cur, jH_cur
     139      INTEGER :: an, mois, jour
     140      REAL :: secondes
     141
    135142      LOGICAL first,callinigrads
    136143
     
    160167      character*80 abort_message
    161168
    162 C Calendrier
    163       LOGICAL true_calendar
    164       PARAMETER (true_calendar = .false.)
    165169
    166170      logical,PARAMETER :: dissip_conservative=.TRUE.
     
    186190      INTEGER :: iapptrac
    187191      INTEGER :: AdjustCount
    188       INTEGER :: var_time
     192!      INTEGER :: var_time
    189193      LOGICAL :: ok_start_timer=.FALSE.
    190194      LOGICAL, SAVE :: firstcall=.TRUE.
     
    205209
    206210      itau = 0
    207       iday = day_ini+itau/day_step
    208       time = FLOAT(itau-(iday-day_ini)*day_step)/day_step+time_0
    209          IF(time.GT.1.) THEN
    210           time = time-1.
    211           iday = iday+1
    212          ENDIF
     211!      iday = day_ini+itau/day_step
     212!      time = FLOAT(itau-(iday-day_ini)*day_step)/day_step+time_0
     213!         IF(time.GT.1.) THEN
     214!          time = time-1.
     215!          iday = iday+1
     216!         ENDIF
    213217
    214218c Allocate variables depending on dynamic variable nqtot
     
    239243   1  CONTINUE
    240244
    241 c$OMP MASTER
    242 
    243       CALL barrier
    244      
    245 c$OMP END MASTER
    246 c$OMP BARRIER
     245      jD_cur = jD_ref + day_ini - day_ref + int (itau * dtvr / daysec)
     246      jH_cur = jH_ref +                                                 &
     247     &          (itau * dtvr / daysec - int(itau * dtvr / daysec))
     248
    247249
    248250#ifdef CPP_IOIPSL
    249 c$OMP MASTER
    250       if (ok_guide.and.(itaufin-itau-1)*dtvr.gt.21600) then
    251         call guide_pp(itau,ucov,vcov,teta,q,masse,ps)
    252       else
    253         IF(prt_level>9)WRITE(*,*)'attention on ne guide pas les ',
    254      .    '6 dernieres heures'
     251      if (ok_guide) then
     252!$OMP MASTER
     253        call guide_main(itau,ucov,vcov,teta,q,masse,ps)
     254!$OMP END MASTER
     255!$OMP BARRIER
    255256      endif
    256 c$OMP END MASTER
    257257#endif
     258
    258259c
    259260c     IF( MOD( itau, 10* day_step ).EQ.0 )  THEN
     
    545546      call VTb(VTcaldyn)
    546547c$OMP END MASTER
    547       var_time=time+iday-day_ini
     548!      var_time=time+iday-day_ini
    548549
    549550c$OMP BARRIER
    550551!      CALL FTRACE_REGION_BEGIN("caldyn")
     552      time = jD_cur + jH_cur
    551553      CALL caldyn_p
    552554     $  ( itau,ucov,vcov,teta,ps,masse,pk,pkf,phis ,
    553      $    phi,conser,du,dv,dteta,dp,w, pbaru,pbarv, time+iday-day_ini )
     555     $    phi,conser,du,dv,dteta,dp,w, pbaru,pbarv, time )
    554556
    555557!      CALL FTRACE_REGION_END("caldyn")
     558
    556559c$OMP MASTER
    557560      call VTe(VTcaldyn)
     
    560563cc$OMP BARRIER
    561564cc$OMP MASTER
    562 c      call WriteField_p('du',reshape(du,(/iip1,jmp1,llm/)))
    563 c      call WriteField_p('dv',reshape(dv,(/iip1,jjm,llm/)))
    564 c      call WriteField_p('dteta',reshape(dteta,(/iip1,jmp1,llm/)))
    565 c      call WriteField_p('dp',reshape(dp,(/iip1,jmp1/)))
    566 c      call WriteField_p('w',reshape(w,(/iip1,jmp1,llm/)))
    567 c      call WriteField_p('pbaru',reshape(pbaru,(/iip1,jmp1,llm/)))
    568 c      call WriteField_p('pbarv',reshape(pbarv,(/iip1,jjm,llm/)))
    569 c      call WriteField_p('p',reshape(p,(/iip1,jmp1,llmp1/)))
    570 c      call WriteField_p('masse',reshape(masse,(/iip1,jmp1,llm/)))
    571 c      call WriteField_p('pk',reshape(pk,(/iip1,jmp1,llm/)))
     565!      call WriteField_p('du',reshape(du,(/iip1,jmp1,llm/)))
     566!      call WriteField_p('dv',reshape(dv,(/iip1,jjm,llm/)))
     567!      call WriteField_p('dteta',reshape(dteta,(/iip1,jmp1,llm/)))
     568!      call WriteField_p('dp',reshape(dp,(/iip1,jmp1/)))
     569!      call WriteField_p('w',reshape(w,(/iip1,jmp1,llm/)))
     570!      call WriteField_p('pbaru',reshape(pbaru,(/iip1,jmp1,llm/)))
     571!      call WriteField_p('pbarv',reshape(pbarv,(/iip1,jjm,llm/)))
     572!      call WriteField_p('p',reshape(p,(/iip1,jmp1,llmp1/)))
     573!      call WriteField_p('masse',reshape(masse,(/iip1,jmp1,llm/)))
     574!      call WriteField_p('pk',reshape(pk,(/iip1,jmp1,llm/)))
    572575cc$OMP END MASTER
    573576
     
    681684         CALL exner_hyb_p(  ip1jmp1, ps, p,alpha,beta,pks, pk, pkf )
    682685c$OMP BARRIER
    683            rdaym_ini  = itau * dtvr / daysec
    684            rdayvrai   = rdaym_ini  + day_ini
    685 
     686           jD_cur = jD_ref + day_ini - day_ref
     687     $        + int (itau * dtvr / daysec)
     688           jH_cur = jH_ref +                                            &
     689     &              (itau * dtvr / daysec - int(itau * dtvr / daysec))
     690!         call ju2ymds(jD_cur+jH_cur, an, mois, jour, secondes)
    686691
    687692c rajout debug
     
    720725     *                               jj_Nb_physic,2,2,Request_physic)
    721726       
     727        call Register_SwapFieldHallo(masse,masse,ip1jmp1,llm,
     728     *                               jj_Nb_physic,1,2,Request_physic)
     729
    722730        call Register_SwapFieldHallo(p,p,ip1jmp1,llmp1,
    723731     *                               jj_Nb_physic,2,2,Request_physic)
     
    767775cc$OMP BARRIER
    768776!        CALL FTRACE_REGION_BEGIN("calfis")
    769         CALL calfis_p(lafin ,rdayvrai,time  ,
     777        CALL calfis_p(lafin ,jD_cur, jH_cur,
    770778     $               ucov,vcov,teta,q,masse,ps,p,pk,phis,phi ,
    771779     $               du,dv,dteta,dq,
     
    861869c      ------------------------------
    862870         IF (ok_strato) THEN
    863            CALL top_bound_p( vcov,ucov,teta, dufi,dvfi,dtetafi)
     871           CALL top_bound_p( vcov,ucov,teta,masse,dufi,dvfi,dtetafi)
    864872         ENDIF
    865873       
     
    885893     *                               jj_Nb_caldyn,Request_physic)
    886894       
     895        call Register_SwapField(masse,masse,ip1jmp1,llm,
     896     *                               jj_Nb_caldyn,Request_physic)
     897
    887898        call Register_SwapField(p,p,ip1jmp1,llmp1,
    888899     *                               jj_Nb_caldyn,Request_physic)
     
    957968       call Register_Hallo(vcov,ip1jm,llm,1,1,1,1,Request_Physic)
    958969       call SendRequest(Request_Physic)
     970c$OMP BARRIER
    959971       call WaitRequest(Request_Physic)     
    960972
     
    12511263      print *, 'Temps CPU ecoule sur la parallelisation :',DiffCpuTime()
    12521264      CALL print_filtre_timer
     1265      call fin_getparam
    12531266        call finalize_parallel
    12541267c$OMP END MASTER
     
    12641277            IF(forward. OR. leapf) THEN
    12651278              itau= itau + 1
    1266               iday= day_ini+itau/day_step
    1267               time= FLOAT(itau-(iday-day_ini)*day_step)/day_step+time_0
    1268                 IF(time.GT.1.) THEN
    1269                   time = time-1.
    1270                   iday = iday+1
    1271                 ENDIF
     1279!              iday= day_ini+itau/day_step
     1280!              time= FLOAT(itau-(iday-day_ini)*day_step)/day_step+time_0
     1281!                IF(time.GT.1.) THEN
     1282!                  time = time-1.
     1283!                  iday = iday+1
     1284!                ENDIF
    12721285            ENDIF
    12731286
     
    12761289
    12771290c$OMP MASTER
     1291              call fin_getparam
    12781292              call finalize_parallel
    12791293c$OMP END MASTER
     
    13011315c$OMP BARRIER
    13021316c$OMP MASTER
    1303               CALL writedynav_p(histaveid, itau,vcov ,
    1304      ,                          ucov,teta,pk,phi,q,masse,ps,phis)
     1317!              CALL writedynav_p(histaveid, itau,vcov ,
     1318!     ,                          ucov,teta,pk,phi,q,masse,ps,phis)
    13051319
    13061320c ATTENTION!!! bilan_dyn_p ne marche probablement pas avec OpenMP
     
    13531367#ifdef CPP_IOIPSL
    13541368 
    1355               CALL writehist_p(histid,histvid, itau,vcov,
    1356      &                         ucov,teta,phi,q,masse,ps,phis)
     1369!              CALL writehist_p(histid,histvid, itau,vcov,
     1370!     &                         ucov,teta,phi,q,masse,ps,phis)
    13571371
    13581372#endif
     
    13801394
    13811395              if (planet_type.eq."earth") then
    1382 #ifdef CPP_EARTH
    13831396! Write an Earth-format restart file
    13841397                CALL dynredem1_p("restart.nc",0.0,
    13851398     &                           vcov,ucov,teta,q,masse,ps)
    1386 
    1387 #endif
    13881399              endif ! of if (planet_type.eq."earth")
    13891400
    1390               CLOSE(99)
     1401!              CLOSE(99)
    13911402c$OMP END MASTER
    13921403            ENDIF ! of IF (itau.EQ.itaufin)
     
    14331444
    14341445             itau =  itau + 1
    1435              iday = day_ini+itau/day_step
    1436              time = FLOAT(itau-(iday-day_ini)*day_step)/day_step+time_0
    1437 
    1438                   IF(time.GT.1.) THEN
    1439                    time = time-1.
    1440                    iday = iday+1
    1441                   ENDIF
     1446!             iday = day_ini+itau/day_step
     1447!             time = FLOAT(itau-(iday-day_ini)*day_step)/day_step+time_0
     1448!
     1449!                  IF(time.GT.1.) THEN
     1450!                   time = time-1.
     1451!                   iday = iday+1
     1452!                  ENDIF
    14421453
    14431454               forward =  .FALSE.
    14441455               IF( itau. EQ. itaufinp1 ) then 
    14451456c$OMP MASTER
     1457                 call fin_getparam
    14461458                 call finalize_parallel
    14471459c$OMP END MASTER
     
    14711483c$OMP BARRIER
    14721484c$OMP MASTER
    1473                CALL writedynav_p(histaveid, itau,vcov ,
    1474      ,                          ucov,teta,pk,phi,q,masse,ps,phis)
     1485!               CALL writedynav_p(histaveid, itau,vcov ,
     1486!     ,                          ucov,teta,pk,phi,q,masse,ps,phis)
    14751487               CALL bilan_dyn_p(2,dtvr*iperiod,dtvr*day_step*periodav,
    14761488     ,           ps,masse,pk,pbaru,pbarv,teta,phi,ucov,vcov,q)
     
    15161528#ifdef CPP_IOIPSL
    15171529
    1518                 CALL writehist_p(histid, histvid, itau,vcov ,
    1519      &                           ucov,teta,phi,q,masse,ps,phis)
     1530!                CALL writehist_p(histid, histvid, itau,vcov ,
     1531!     &                           ucov,teta,phi,q,masse,ps,phis)
    15201532#endif
    15211533! For some Grads output (but does it work?)
     
    15391551              IF(itau.EQ.itaufin) THEN
    15401552                if (planet_type.eq."earth") then
    1541 #ifdef CPP_EARTH
    15421553c$OMP MASTER
    15431554                   CALL dynredem1_p("restart.nc",0.0,
    15441555     .                               vcov,ucov,teta,q,masse,ps)
    15451556c$OMP END MASTER
    1546 #endif
    15471557                endif ! of if (planet_type.eq."earth")
    15481558              ENDIF ! of IF(itau.EQ.itaufin)
     
    15551565      END IF ! of IF(.not.purmats)
    15561566c$OMP MASTER
     1567      call fin_getparam
    15571568      call finalize_parallel
    15581569c$OMP END MASTER
Note: See TracChangeset for help on using the changeset viewer.