Ignore:
Timestamp:
Jun 4, 2007, 4:13:10 PM (17 years ago)
Author:
Laurent Fairhead
Message:

Merge entre la version V3_conv et le HEAD
YM, JG, LF

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/trunk/libf/dyn3dpar/leapfrog_p.F

    r630 r764  
    1 !
     1! 
    22! $Header$
    33!
     
    66#define IO_DEBUG
    77
    8 #undef CPP_IOIPSL
     8!#undef CPP_IOIPSL
    99
    1010      SUBROUTINE leapfrog_p(ucov,vcov,teta,ps,masse,phis,nq,q,clesphy0,
     
    1919       USE Write_Field_p
    2020       USE vampir
    21        
    22 #ifdef INCA
    23       USE transport_controls, ONLY : hadv_flg, mmt_adj
    24 #endif
    2521
    2622      IMPLICIT NONE
     
    7571
    7672#include "academic.h"
     73#include "clesphys.h"
     74#include "advtrac.h"
    7775     
    7876      include 'mpif.h'
     
    146144
    147145      REAL alpha(ip1jmp1,llm),beta(ip1jmp1,llm)
    148 #ifdef INCA_CH4
     146#ifdef INCA
    149147      REAL :: flxw(ip1jmp1,llm)
    150148#endif
     
    160158      REAL      d_h_vcol, d_qt, d_qw, d_ql, d_ec
    161159      CHARACTER*15 ztit
    162       INTEGER   ip_ebil_dyn  ! PRINT level for energy conserv. diag.
    163       SAVE      ip_ebil_dyn
    164       DATA      ip_ebil_dyn/0/
     160!      INTEGER   ip_ebil_dyn  ! PRINT level for energy conserv. diag.
     161!      SAVE      ip_ebil_dyn
     162!      DATA      ip_ebil_dyn/0/
    165163c-jld
    166164
     
    183181      PARAMETER (testita = 9)
    184182     
    185 c declaration liées au parallelisme
     183c declaration liees au parallelisme
    186184      INTEGER :: ierr
    187185      LOGICAL :: FirstCaldyn=.TRUE.
     
    198196      INTEGER :: iapptrac = 0
    199197      INTEGER :: AdjustCount = 0
    200      
     198      INTEGER :: var_time
    201199      ItCount=0
    202200     
     
    225223c   Debut de l'integration temporelle:
    226224c   ----------------------------------
    227 c et du parallélisme !!
     225c et du parallelisme !!
    228226
    229227   1  CONTINUE
    230228
    231       call MPI_BARRIER(MPI_COMM_WORLD,ierr)
     229      call MPI_BARRIER(COMM_LMDZ,ierr)
    232230
    233231#ifdef CPP_IOIPSL
    234232      if (ok_guide.and.(itaufin-itau-1)*dtvr.gt.21600) then
    235         call guide(itau,ucov,vcov,teta,q,masse,ps)
     233        call guide_pp(itau,ucov,vcov,teta,q,masse,ps)
    236234      else
    237235        IF(prt_level>9)WRITE(*,*)'attention on ne guide pas les ',
     
    289287cym      CALL filtreg ( finvmaold ,jjp1, llm, -2,2, .TRUE., 1 )
    290288
    291 cym  ne sert à rien
     289cym  ne sert a rien
    292290cym      call minmax(ijp1llm,q(:,:,3),zqmin,zqmax)
    293291
     
    295293
    296294      ItCount=ItCount+1
    297       if (MOD(ItCount,10000)==0) then
     295      if (MOD(ItCount,1)==1) then
    298296        debug=.true.
    299297      else
     
    315313      conser = .FALSE.
    316314      apdiss = .FALSE.
    317 
     315c      idissip=1
    318316      IF( purmats ) THEN
    319317         IF( MOD(itau,iconser) .EQ.0.AND.  forward    ) conser = .TRUE.
     
    420418     &                                jj_Nb_caldyn,0,0,TestRequest)
    421419 
     420        do j=1,nqmx
     421         call Register_SwapFieldHallo(q(1,1,j),q(1,1,j),ip1jmp1,llm,
     422     &                                jj_nb_caldyn,0,0,TestRequest)
     423        enddo
     424
    422425         call SetDistrib(jj_nb_caldyn)
    423426         call SendRequest(TestRequest)
     
    469472       call VTe(VThallo)
    470473
     474     
    471475      if (debug) then   
    472              
    473476        call WriteField_p('ucov',reshape(ucov,(/iip1,jmp1,llm/)))
    474477        call WriteField_p('vcov',reshape(vcov,(/iip1,jjm,llm/)))
     
    476479        call WriteField_p('ps',reshape(ps,(/iip1,jmp1/)))
    477480        call WriteField_p('masse',reshape(masse,(/iip1,jmp1,llm/)))
     481        call WriteField_p('pk',reshape(pk,(/iip1,jmp1,llm/)))
    478482        call WriteField_p('pks',reshape(pks,(/iip1,jmp1/)))
    479483        call WriteField_p('pkf',reshape(pkf,(/iip1,jmp1,llm/)))
    480484        call WriteField_p('phis',reshape(phis,(/iip1,jmp1/)))
    481 c        do j=1,nqmx
    482 c          call WriteField_p('q'//trim(int2str(j)),
    483 c     .                reshape(q(:,:,j),(/iip1,jmp1,llm/)))
    484 c        enddo       
     485        do j=1,nqmx
     486          call WriteField_p('q'//trim(int2str(j)),
     487     .                reshape(q(:,:,j),(/iip1,jmp1,llm/)))
     488        enddo       
    485489      endif
    486       
     490 
    487491
    488492     
     
    497501     
    498502      call VTb(VTcaldyn)
    499      
     503
     504      var_time=time+iday-day_ini
     505      OMP_CHUNK=5
     506c$OMP PARALLEL DEFAULT(SHARED)
     507cc$OMP+         SHARED(itau,ucov,vcov,teta,ps,masse,pk,pkf,phis ,
     508cc$OMP+                phi,conser,du,dv,dteta,dp,w, pbaru,pbarv,
     509cc$OMP+                var_time)     
     510
    500511      CALL caldyn_p
    501512     $  ( itau,ucov,vcov,teta,ps,masse,pk,pkf,phis ,
    502513     $    phi,conser,du,dv,dteta,dp,w, pbaru,pbarv, time+iday-day_ini )
    503      
     514
     515c$OMP END PARALLEL     
    504516      call VTe(VTcaldyn)
    505517c      call WriteField_p('du',reshape(du,(/iip1,jmp1,llm/)))
     
    516528
    517529      IF( forward. OR . leapf )  THEN
    518 
    519 c
    520 #ifdef INCA_CH4
     530c$OMP PARALLEL DEFAULT(SHARED)
     531c
     532#ifdef INCA
    521533             CALL caladvtrac_p(q,pbaru,pbarv,
    522534     *                      p, masse, dq,  teta,
    523535     .             flxw,
    524      .             pk,
    525      .             mmt_adj,
    526      .             hadv_flg,iapptrac)
     536     .             pk,
     537     .             iapptrac)
    527538#else
    528539             CALL caladvtrac_p(q,pbaru,pbarv,
     
    530541     .             pk,iapptrac)
    531542#endif
     543
     544c$OMP END PARALLEL
     545
    532546c      do j=1,nqmx
    533547c        call WriteField_p('q'//trim(int2str(j)),
    534 c    .                reshape(q(:,:,j),(/iip1,jmp1,llm/)))
     548c     .                reshape(q(:,:,j),(/iip1,jmp1,llm/)))
    535549c        call WriteField_p('dq'//trim(int2str(j)),
    536550c     .                reshape(dq(:,:,j),(/iip1,jmp1,llm/)))
    537551c      enddo
    538 
    539          IF (offline) THEN
     552       IF (offline) THEN
    540553Cmaf stokage du flux de masse pour traceurs OFF-LINE
    541 
     554#undef CPP_IOIPSL
    542555#ifdef CPP_IOIPSL
    543556           CALL fluxstokenc(pbaru,pbarv,masse,teta,phi,phis,
     
    556569 
    557570       call VTb(VTintegre)
     571c      call WriteField_p('ucovm1',reshape(ucovm1,(/iip1,jmp1,llm/)))
     572c      call WriteField_p('vcovm1',reshape(vcovm1,(/iip1,jjm,llm/)))
     573c      call WriteField_p('tetam1',reshape(tetam1,(/iip1,jmp1,llm/)))
     574c      call WriteField_p('psm1',reshape(psm1,(/iip1,jmp1/)))
     575c      call WriteField_p('ucov',reshape(ucov,(/iip1,jmp1,llm/)))
     576c      call WriteField_p('vcov',reshape(vcov,(/iip1,jjm,llm/)))
     577c      call WriteField_p('teta',reshape(teta,(/iip1,jmp1,llm/)))
     578c      call WriteField_p('ps',reshape(ps,(/iip1,jmp1/)))
     579c$OMP PARALLEL DEFAULT(SHARED)
    558580       CALL integrd_p ( 2,vcovm1,ucovm1,tetam1,psm1,massem1 ,
    559581     $         dv,du,dteta,dq,dp,vcov,ucov,teta,q,ps,masse,phis ,
    560582     $              finvmaold                                    )
    561583
     584c$OMP END PARALLEL
     585c      call WriteField_p('ucovm1',reshape(ucovm1,(/iip1,jmp1,llm/)))
     586c      call WriteField_p('vcovm1',reshape(vcovm1,(/iip1,jjm,llm/)))
     587c      call WriteField_p('tetam1',reshape(tetam1,(/iip1,jmp1,llm/)))
     588c      call WriteField_p('psm1',reshape(psm1,(/iip1,jmp1/)))
     589c      call WriteField_p('ucov',reshape(ucov,(/iip1,jmp1,llm/)))
     590c      call WriteField_p('vcov',reshape(vcov,(/iip1,jjm,llm/)))
     591c      call WriteField_p('teta',reshape(teta,(/iip1,jmp1,llm/)))
     592c      call WriteField_p('dteta',reshape(dteta,(/iip1,jmp1,llm/)))
     593
     594c      call WriteField_p('ps',reshape(ps,(/iip1,jmp1/)))
     595 
    562596       call VTe(VTintegre)
     597
    563598c .P.Le Van (26/04/94  ajout de  finvpold dans l'appel d'integrd)
    564599c
     
    579614c     .......   Ajout   P.Le Van ( 17/04/96 )   ...........
    580615c
     616c$OMP PARALLEL DEFAULT(SHARED)
     617c$OMP+         PRIVATE(rdaym_ini,rdayvrai,ijb,ije)
     618
     619c$OMP MASTER
    581620         call suspend_timer(timer_caldyn)
    582621         print*,'Entree dans la physique : Iteration No ',true_itau
     622c$OMP END MASTER
     623
    583624         CALL pression_p (  ip1jmp1, ap, bp, ps,  p      )
     625c$OMP BARRIER
     626
     627c$OMP MASTER
    584628         CALL exner_hyb_p(  ip1jmp1, ps, p,alpha,beta,pks, pk, pkf )
    585 
     629c$OMP END MASTER
     630c$OMP BARRIER
    586631           rdaym_ini  = itau * dtvr / daysec
    587632           rdayvrai   = rdaym_ini  + day_ini
     
    598643c+jld
    599644
    600 c  Diagnostique de conservation de l'énergie : initialisation
     645c  Diagnostique de conservation de l'energie : initialisation
    601646      IF (ip_ebil_dyn.ge.1 ) THEN
    602647          ztit='bil dyn'
     
    605650      ENDIF
    606651c-jld
     652c$OMP BARRIER
     653c$OMP MASTER
    607654        call VTb(VThallo)
    608655        call SetTag(Request_physic,800)
     
    638685     *                               jj_Nb_physic,2,2,Request_physic)
    639686        enddo
    640 #ifdef INCA_CH4
     687#ifdef INCA
    641688        call Register_SwapFieldHallo(flxw,flxw,ip1jmp1,llm,
    642689     *                               jj_Nb_physic,2,2,Request_physic)
     
    650697       
    651698        call VTb(VTphysiq)
     699c$OMP END MASTER
     700c$OMP BARRIER
     701
     702cc$OMP MASTER   
     703c      call WriteField_p('ucovfi',reshape(ucov,(/iip1,jmp1,llm/)))
     704c      call WriteField_p('vcovfi',reshape(vcov,(/iip1,jjm,llm/)))
     705c      call WriteField_p('tetafi',reshape(teta,(/iip1,jmp1,llm/)))
     706c      call WriteField_p('pfi',reshape(p,(/iip1,jmp1,llmp1/)))
     707c      call WriteField_p('pkfi',reshape(pk,(/iip1,jmp1,llm/)))
     708cc$OMP END MASTER
     709cc$OMP BARRIER
     710       
    652711        CALL calfis_p( nq, lafin ,rdayvrai,time  ,
    653712     $               ucov,vcov,teta,q,masse,ps,p,pk,phis,phi ,
    654713     $               du,dv,dteta,dq,w,
    655 #ifdef INCA_CH4
     714#ifdef INCA
    656715     $               flxw,
    657716#endif
    658717     $               clesphy0, dufi,dvfi,dtetafi,dqfi,dpfi  )
    659      
    660718        ijb=ij_begin
    661719        ije=ij_end 
    662720        if ( .not. pole_nord) then
    663           dufi_tmp(1:iip1,:)   = dufi(ijb:ijb+iim,:)
    664           dvfi_tmp(1:iip1,:)   = dvfi(ijb:ijb+iim,:) 
    665           dtetafi_tmp(1:iip1,:)= dtetafi(ijb:ijb+iim,:) 
     721c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
     722          DO l=1,llm
     723          dufi_tmp(1:iip1,l)   = dufi(ijb:ijb+iim,l)
     724          dvfi_tmp(1:iip1,l)   = dvfi(ijb:ijb+iim,l) 
     725          dtetafi_tmp(1:iip1,l)= dtetafi(ijb:ijb+iim,l) 
     726          dqfi_tmp(1:iip1,l,:) = dqfi(ijb:ijb+iim,l,:) 
     727          ENDDO
     728c$OMP END DO NOWAIT
     729
     730c$OMP MASTER
    666731          dpfi_tmp(1:iip1)     = dpfi(ijb:ijb+iim) 
    667           dqfi_tmp(1:iip1,:,:) = dqfi(ijb:ijb+iim,:,:) 
    668         endif
    669        
     732c$OMP END MASTER
     733        endif
     734
     735c$OMP BARRIER
     736c$OMP MASTER
    670737        call SetDistrib(jj_nb_Physic_bis)
    671738
     
    695762 
    696763        call SetDistrib(jj_nb_Physic)
    697        
     764c$OMP END MASTER
     765c$OMP BARRIER   
    698766                ijb=ij_begin
    699767        if (.not. pole_nord) then
    700           dufi(ijb:ijb+iim,:) = dufi(ijb:ijb+iim,:)+dufi_tmp(1:iip1,:)
    701           dvfi(ijb:ijb+iim,:) = dvfi(ijb:ijb+iim,:)+dvfi_tmp(1:iip1,:)
    702           dtetafi(ijb:ijb+iim,:) = dtetafi(ijb:ijb+iim,:)
    703      &                           +dtetafi_tmp(1:iip1,:)
     768       
     769c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
     770          DO l=1,llm
     771            dufi(ijb:ijb+iim,l) = dufi(ijb:ijb+iim,l)+dufi_tmp(1:iip1,l)
     772            dvfi(ijb:ijb+iim,l) = dvfi(ijb:ijb+iim,l)+dvfi_tmp(1:iip1,l)
     773            dtetafi(ijb:ijb+iim,l) = dtetafi(ijb:ijb+iim,l)
     774     &                              +dtetafi_tmp(1:iip1,l)
     775            dqfi(ijb:ijb+iim,l,:) = dqfi(ijb:ijb+iim,l,:)
     776     &                              + dqfi_tmp(1:iip1,l,:)
     777          ENDDO
     778c$OMP END DO NOWAIT
     779
     780c$OMP MASTER
    704781          dpfi(ijb:ijb+iim)   = dpfi(ijb:ijb+iim)+ dpfi_tmp(1:iip1)
    705           dqfi(ijb:ijb+iim,:,:) = dqfi(ijb:ijb+iim,:,:)
    706      &                           + dqfi_tmp(1:iip1,:,:)
     782c$OMP END MASTER
     783         
    707784        endif
    708        
     785c$OMP BARRIER
     786cc$OMP MASTER   
    709787c      call WriteField_p('dufi',reshape(dufi,(/iip1,jmp1,llm/)))
    710788c      call WriteField_p('dvfi',reshape(dvfi,(/iip1,jjm,llm/)))
    711789c      call WriteField_p('dtetafi',reshape(dtetafi,(/iip1,jmp1,llm/)))
    712790c      call WriteField_p('dpfi',reshape(dpfi,(/iip1,jmp1/)))
     791cc$OMP END MASTER
    713792c     
    714793c      do j=1,nqmx
     
    723802     $                 dufi, dvfi, dtetafi , dqfi ,dpfi  )
    724803
     804c$OMP BARRIER
     805c$OMP MASTER
    725806        call VTe(VTphysiq)
    726807
     
    765846
    766847        call SetDistrib(jj_Nb_caldyn)
    767 c
    768 c  Diagnostique de conservation de l'énergie : difference
     848c$OMP END MASTER
     849c$OMP BARRIER
     850c
     851c  Diagnostique de conservation de l'energie : difference
    769852      IF (ip_ebil_dyn.ge.1 ) THEN
    770853          ztit='bil phys'
     
    772855     e  , ucov    , vcov , ps, p ,pk , teta , q(:,:,1), q(:,:,2))
    773856      ENDIF
    774      
    775       if (debug) then
    776        call WriteField_p('ucovfi',reshape(ucov,(/iip1,jmp1,llm/)))
    777        call WriteField_p('vcovfi',reshape(vcov,(/iip1,jjm,llm/)))
    778        call WriteField_p('tetafi',reshape(teta,(/iip1,jmp1,llm/)))
    779       endif
     857
     858cc$OMP MASTER     
     859c      if (debug) then
     860c       call WriteField_p('ucovfi',reshape(ucov,(/iip1,jmp1,llm/)))
     861c       call WriteField_p('vcovfi',reshape(vcov,(/iip1,jjm,llm/)))
     862c       call WriteField_p('tetafi',reshape(teta,(/iip1,jmp1,llm/)))
     863c      endif
     864cc$OMP END MASTER
     865
    780866#else
    781867
     
    799885
    800886c-jld
     887c$OMP MASTER
    801888         call resume_timer(timer_caldyn)
    802889         if (FirstPhysic) then
     
    804891           FirstPhysic=.false.
    805892         endif
     893c$OMP END MASTER
     894c$OMP END PARALLEL
    806895       ENDIF
    807896
     
    815904
    816905      IF(apdiss) THEN
     906c$OMP  PARALLEL DEFAULT(SHARED)
     907c$OMP+          PRIVATE(ijb,ije,tppn,tpn,tpps,tps)
     908c$OMP MASTER
    817909        call suspend_timer(timer_caldyn)
    818910       
     
    822914
    823915        call VTb(VThallo)
    824 
     916c$OMP END MASTER
     917
     918c$OMP BARRIER
     919c$OMP MASTER
    825920        call Register_SwapFieldHallo(ucov,ucov,ip1jmp1,llm,
    826921     *                          jj_Nb_dissip,1,1,Request_dissip)
     
    847942       
    848943        call start_timer(timer_dissip)
     944c$OMP END MASTER
     945c$OMP BARRIER
     946
    849947        call covcont_p(llm,ucov,vcov,ucont,vcont)
    850948        call enercin_p(vcov,ucov,vcont,ucont,ecin0)
     
    853951
    854952        CALL dissip_p(vcov,ucov,teta,p,dvdis,dudis,dtetadis)
    855        
     953         
    856954        ijb=ij_begin
    857955        ije=ij_end
    858        
    859         ucov(ijb:ije,1:llm)=ucov(ijb:ije,1:llm)+dudis(ijb:ije,1:llm)
    860        
     956c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
     957        DO l=1,llm
     958          ucov(ijb:ije,l)=ucov(ijb:ije,l)+dudis(ijb:ije,l)
     959        ENDDO
     960c$OMP END DO NOWAIT     
    861961        if (pole_sud) ije=ije-iip1
    862         vcov(ijb:ije,1:llm)=vcov(ijb:ije,1:llm)+dvdis(ijb:ije,1:llm)
     962c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
     963        DO l=1,llm
     964          vcov(ijb:ije,l)=vcov(ijb:ije,l)+dvdis(ijb:ije,l)
     965        ENDDO
     966c$OMP END DO NOWAIT     
     967
    863968c       teta=teta+dtetadis
    864969
     
    868973C       On rajoute la tendance due a la transform. Ec -> E therm. cree
    869974C       lors de la dissipation
     975c$OMP BARRIER
     976c$OMP MASTER
    870977            call suspend_timer(timer_dissip)
    871978            call VTb(VThallo)
     
    877984            call VTe(VThallo)
    878985            call resume_timer(timer_dissip)
    879            
     986c$OMP END MASTER
     987c$OMP BARRIER       
    880988            call covcont_p(llm,ucov,vcov,ucont,vcont)
    881989            call enercin_p(vcov,ucov,vcont,ucont,ecin)
     
    883991            ijb=ij_begin
    884992            ije=ij_end
    885            
     993c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)         
    886994            do l=1,llm
    887995              do ij=ijb,ije
     
    890998              enddo
    891999            enddo
    892            
     1000c$OMP END DO NOWAIT         
    8931001       endif
    8941002
    8951003       ijb=ij_begin
    8961004       ije=ij_end
    897            
     1005c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)         
    8981006         do l=1,llm
    8991007           do ij=ijb,ije
     
    9011009           enddo
    9021010         enddo
    903          
     1011c$OMP END DO NOWAIT     
    9041012c------------------------------------------------------------------------
    9051013
     
    9131021         
    9141022        if (pole_nord) then
     1023c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    9151024          DO l  =  1, llm
    9161025            DO ij =  1,iim
     
    9231032            ENDDO
    9241033          ENDDO
    925                
     1034c$OMP END DO NOWAIT
     1035
     1036c$OMP MASTER               
    9261037          DO ij =  1,iim
    9271038            tppn(ij)  = aire(  ij    ) * ps (  ij    )
     
    9321043            ps(  ij    ) = tpn
    9331044          ENDDO
     1045c$OMP END MASTER
    9341046        endif
    9351047       
    9361048        if (pole_sud) then
     1049c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    9371050          DO l  =  1, llm
    9381051            DO ij =  1,iim
     
    9451058            ENDDO
    9461059          ENDDO
    947                
     1060c$OMP END DO NOWAIT
     1061
     1062c$OMP MASTER               
    9481063          DO ij =  1,iim
    9491064            tpps(ij)  = aire(ij+ip1jm) * ps (ij+ip1jm)
     
    9541069            ps(ij+ip1jm) = tps
    9551070          ENDDO
     1071c$OMP END MASTER
    9561072        endif
    9571073
     1074
     1075c$OMP BARRIER
     1076c$OMP MASTER
    9581077        call VTe(VTdissipation)
    9591078
     
    9831102        call resume_timer(timer_caldyn)
    9841103        print *,'fin dissipation'
     1104c$OMP END MASTER
     1105c$OMP END PARALLEL
    9851106      END IF
    9861107
     
    10661187
    10671188            IF( itau. EQ. itaufinp1 ) then 
    1068 c$$$       write(79,*) 'ucov',ucov
    1069 c$$$       write(80,*) 'vcov',vcov
    1070 c$$$       write(81,*) 'teta',teta
    1071 c$$$       write(82,*) 'ps',ps
    1072 c$$$       write(83,*) 'q',q
    1073 c$$$       WRITE(85,*) 'q1 = ',q(:,:,1)
    1074 c$$$       WRITE(86,*) 'q3 = ',q(:,:,3)
    1075 
     1189
     1190              call finalize_parallel
    10761191              abort_message = 'Simulation finished'
    1077 
    10781192              call abort_gcm(modname,abort_message,0)
    10791193            ENDIF
     
    11611275
    11621276
    1163 #ifdef CPP_IOIPSL
     1277c#ifdef CPP_IOIPSL
    11641278       CALL dynredem1_p("restart.nc",0.0,
    11651279     ,                     vcov,ucov,teta,q,nqmx,masse,ps)
    1166 #endif
     1280c#endif
    11671281
    11681282              CLOSE(99)
     
    12181332               forward =  .FALSE.
    12191333               IF( itau. EQ. itaufinp1 ) then 
     1334                 call finalize_parallel
    12201335                 abort_message = 'Simulation finished'
    12211336                 call abort_gcm(modname,abort_message,0)
     
    12961411               ENDIF
    12971412
    1298 #ifdef CPP_IOIPSL
     1413c#ifdef CPP_IOIPSL
    12991414                 IF(itau.EQ.itaufin)
    13001415     . CALL dynredem1_p("restart.nc",0.0,
    13011416     .                     vcov,ucov,teta,q,nqmx,masse,ps)
    1302 #endif
     1417c#endif
    13031418
    13041419                 forward = .TRUE.
     
    13091424      END IF
    13101425
    1311       STOP
     1426        call finalize_parallel
     1427        STOP
    13121428      END
Note: See TracChangeset for help on using the changeset viewer.