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/phylmd/thermcell_flux2.F90

    r1146 r1403  
     1!
     2! $Id$
     3!
    14      SUBROUTINE thermcell_flux2(ngrid,klev,ptimestep,masse, &
    25     &       lalim,lmax,alim_star,  &
     
    3841      REAL zfm
    3942
    40       integer igout
     43      integer igout,lout
    4144      integer lev_out
    4245      integer lunout1
     
    4649      REAL fomass_max,alphamax
    4750      save fomass_max,alphamax
     51
     52      logical check_debug,labort_gcm
     53
     54      character (len=20) :: modname='thermcell_flux2'
     55      character (len=80) :: abort_message
    4856
    4957      fomass_max=0.5
     
    7886! Verification de la nullite des entrainement et detrainement au dessus
    7987! de lmax(ig)
    80 !-------------------------------------------------------------------------
    81 
     88! Active uniquement si check_debug=.true. ou prt_level>=10
     89!-------------------------------------------------------------------------
     90
     91      check_debug=.false..or.prt_level>=10
     92
     93      if (check_debug) then
    8294      do l=1,klev
    8395         do ig=1,ngrid
     
    88100                    print*,'alim_star(ig,l)',alim_star(ig,l)
    89101                    print*,'detr_star(ig,l)',detr_star(ig,l)
    90 !                   stop
    91102               endif
    92103            else
     
    96107                    print*,'alim_star(ig,l)',alim_star(ig,l)
    97108                    print*,'detr_star(ig,l)',detr_star(ig,l)
    98                     stop
     109                    abort_message = ''
     110                    labort_gcm=.true.
     111                    CALL abort_gcm (modname,abort_message,1)
    99112               endif
    100113            endif
    101114         enddo
    102115      enddo
     116      endif
    103117
    104118!-------------------------------------------------------------------------
     
    253267
    254268!     do l=1,klev
     269
     270
     271
     272         labort_gcm=.false.
    255273         do ig=1,ngrid
    256274            if (entr(ig,l)<0.) then
    257                print*,'N1 ig,l,entr',ig,l,entr(ig,l)
    258                stop 'entr negatif'
    259             endif
     275               labort_gcm=.true.
     276               igout=ig
     277               lout=l
     278            endif
     279         enddo
     280
     281         if (labort_gcm) then
     282            print*,'N1 ig,l,entr',igout,lout,entr(igout,lout)
     283            abort_message = 'entr negatif'
     284            CALL abort_gcm (modname,abort_message,1)
     285         endif
     286
     287         do ig=1,ngrid
    260288            if (detr(ig,l).gt.fm(ig,l)) then
    261289               ncorecfm6=ncorecfm6+1
     
    280308               entr(ig,l)=0.
    281309            endif
    282 
     310         enddo
     311
     312         labort_gcm=.false.
     313         do ig=1,ngrid
    283314            if (entr(ig,l).lt.0.) then
    284                print*,'ig,l,lmax(ig)',ig,l,lmax(ig)
    285                print*,'entr(ig,l)',entr(ig,l)
    286                print*,'fm(ig,l)',fm(ig,l)
    287                stop 'probleme dans thermcell flux'
    288             endif
    289          enddo
     315               labort_gcm=.true.
     316               igout=ig
     317            endif
     318         enddo
     319         if (labort_gcm) then
     320            ig=igout
     321            print*,'ig,l,lmax(ig)',ig,l,lmax(ig)
     322            print*,'entr(ig,l)',entr(ig,l)
     323            print*,'fm(ig,l)',fm(ig,l)
     324            abort_message = 'probleme dans thermcell flux'
     325            CALL abort_gcm (modname,abort_message,1)
     326         endif
     327
     328
    290329!     enddo
    291330      endif
     
    305344               detr(ig,l)=detr(ig,l)+fm(ig,l+1)
    306345               fm(ig,l+1)=0.
    307 !              print*,'fm2<0',l+1,lmax(ig)
    308346               ncorecfm2=ncorecfm2+1
    309347            endif
     348         enddo
     349
     350         labort_gcm=.false.
     351         do ig=1,ngrid
    310352            if (detr(ig,l).lt.0.) then
     353               labort_gcm=.true.
     354               igout=ig
     355            endif
     356        enddo
     357        if (labort_gcm) then
     358               ig=igout
    311359               print*,'cas 2 : ig,l,lmax(ig)',ig,l,lmax(ig)
    312360               print*,'detr(ig,l)',detr(ig,l)
    313361               print*,'fm(ig,l)',fm(ig,l)
    314                stop 'probleme dans thermcell flux'
    315             endif
    316         enddo
     362               abort_message = 'probleme dans thermcell flux'
     363               CALL abort_gcm (modname,abort_message,1)
     364        endif
    317365!    enddo
    318366
     
    379427
    380428      if (1.eq.1) then
     429      labort_gcm=.false.
    381430      do l=1,klev-1
    382431         do ig=1,ngrid
     
    399448                   else
    400449                      if(l.ge.lmax(ig).and.0.eq.1) then
     450                         igout=ig
     451                         lout=l
     452                         labort_gcm=.true.
     453                      endif
     454                      entr(ig,l+1)=entr(ig,l+1)-ddd
     455                      detr(ig,l)=0.
     456                      fm(ig,l+1)=fm(ig,l)+entr(ig,l)
     457                      detr(ig,l)=0.
     458                   endif
     459                endif
     460            endif
     461         enddo
     462      enddo
     463      if (labort_gcm) then
     464                         ig=igout
     465                         l=lout
    401466                         print*,'ig,l',ig,l
    402467                         print*,'eee0',eee0
     
    413478                         print*,'fm(ig,l+1)',fm(ig,l+1)
    414479                         print*,'fm(ig,l)',fm(ig,l)
    415                          stop 'probleme dans thermcell_flux'
    416                       endif
    417                       entr(ig,l+1)=entr(ig,l+1)-ddd
    418                       detr(ig,l)=0.
    419                       fm(ig,l+1)=fm(ig,l)+entr(ig,l)
    420                       detr(ig,l)=0.
    421                    endif
    422                 endif
    423             endif
    424          enddo
    425       enddo
     480                         abort_message = 'probleme dans thermcell_flux'
     481                         CALL abort_gcm (modname,abort_message,1)
     482      endif
    426483      endif
    427484!                 
Note: See TracChangeset for help on using the changeset viewer.