Ignore:
Timestamp:
May 6, 2010, 2:24:59 PM (14 years ago)
Author:
Ehouarn Millour
Message:

Minor bug fix: Enable the possiblity to start a Shallow Water run from a start.nc file.

Plus some cleanup in outputs messages (in dyetat0,dynredem and iniconst).

EM

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

Legend:

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

    r1146 r1380  
    11!
    2 ! $Header$
     2! $Id $
    33!
    44      SUBROUTINE dynetat0(fichnom,vcov,ucov,
     
    3434#include "serre.h"
    3535#include "logic.h"
     36#include "iniprint.h"
    3637
    3738c   Arguments:
     
    5859      ierr = NF_OPEN (fichnom, NF_NOWRITE,nid)
    5960      IF (ierr.NE.NF_NOERR) THEN
    60         write(6,*)' Pb d''ouverture du fichier start.nc'
    61         write(6,*)' ierr = ', ierr
     61        write(lunout,*)'dynetat0: Pb d''ouverture du fichier start.nc'
     62        write(lunout,*)' ierr = ', ierr
    6263        CALL ABORT
    6364      ENDIF
     
    6667      ierr = NF_INQ_VARID (nid, "controle", nvarid)
    6768      IF (ierr .NE. NF_NOERR) THEN
    68          PRINT*, "dynetat0: Le champ <controle> est absent"
     69         write(lunout,*)"dynetat0: Le champ <controle> est absent"
    6970         CALL abort
    7071      ENDIF
     
    7576#endif
    7677      IF (ierr .NE. NF_NOERR) THEN
    77          PRINT*, "dynetat0: Lecture echoue pour <controle>"
     78         write(lunout,*)"dynetat0: Lecture echoue pour <controle>"
    7879         CALL abort
    7980      ENDIF
     
    121122c
    122123c
    123       PRINT*,'rad,omeg,g,cpp,kappa',rad,omeg,g,cpp,kappa
     124      write(lunout,*)'dynetat0: rad,omeg,g,cpp,kappa',
     125     &               rad,omeg,g,cpp,kappa
    124126
    125127      IF(   im.ne.iim           )  THEN
     
    136138      ierr = NF_INQ_VARID (nid, "rlonu", nvarid)
    137139      IF (ierr .NE. NF_NOERR) THEN
    138          PRINT*, "dynetat0: Le champ <rlonu> est absent"
     140         write(lunout,*)"dynetat0: Le champ <rlonu> est absent"
    139141         CALL abort
    140142      ENDIF
     
    145147#endif
    146148      IF (ierr .NE. NF_NOERR) THEN
    147          PRINT*, "dynetat0: Lecture echouee pour <rlonu>"
     149         write(lunout,*)"dynetat0: Lecture echouee pour <rlonu>"
    148150         CALL abort
    149151      ENDIF
     
    151153      ierr = NF_INQ_VARID (nid, "rlatu", nvarid)
    152154      IF (ierr .NE. NF_NOERR) THEN
    153          PRINT*, "dynetat0: Le champ <rlatu> est absent"
     155         write(lunout,*)"dynetat0: Le champ <rlatu> est absent"
    154156         CALL abort
    155157      ENDIF
     
    160162#endif
    161163      IF (ierr .NE. NF_NOERR) THEN
    162          PRINT*, "dynetat0: Lecture echouee pour <rlatu>"
     164         write(lunout,*)"dynetat0: Lecture echouee pour <rlatu>"
    163165         CALL abort
    164166      ENDIF
     
    166168      ierr = NF_INQ_VARID (nid, "rlonv", nvarid)
    167169      IF (ierr .NE. NF_NOERR) THEN
    168          PRINT*, "dynetat0: Le champ <rlonv> est absent"
     170         write(lunout,*)"dynetat0: Le champ <rlonv> est absent"
    169171         CALL abort
    170172      ENDIF
     
    175177#endif
    176178      IF (ierr .NE. NF_NOERR) THEN
    177          PRINT*, "dynetat0: Lecture echouee pour <rlonv>"
     179         write(lunout,*)"dynetat0: Lecture echouee pour <rlonv>"
    178180         CALL abort
    179181      ENDIF
     
    181183      ierr = NF_INQ_VARID (nid, "rlatv", nvarid)
    182184      IF (ierr .NE. NF_NOERR) THEN
    183          PRINT*, "dynetat0: Le champ <rlatv> est absent"
     185         write(lunout,*)"dynetat0: Le champ <rlatv> est absent"
    184186         CALL abort
    185187      ENDIF
     
    190192#endif
    191193      IF (ierr .NE. NF_NOERR) THEN
    192          PRINT*, "dynetat0: Lecture echouee pour rlatv"
     194         write(lunout,*)"dynetat0: Lecture echouee pour rlatv"
    193195         CALL abort
    194196      ENDIF
     
    196198      ierr = NF_INQ_VARID (nid, "cu", nvarid)
    197199      IF (ierr .NE. NF_NOERR) THEN
    198          PRINT*, "dynetat0: Le champ <cu> est absent"
     200         write(lunout,*)"dynetat0: Le champ <cu> est absent"
    199201         CALL abort
    200202      ENDIF
     
    205207#endif
    206208      IF (ierr .NE. NF_NOERR) THEN
    207          PRINT*, "dynetat0: Lecture echouee pour <cu>"
     209         write(lunout,*)"dynetat0: Lecture echouee pour <cu>"
    208210         CALL abort
    209211      ENDIF
     
    211213      ierr = NF_INQ_VARID (nid, "cv", nvarid)
    212214      IF (ierr .NE. NF_NOERR) THEN
    213          PRINT*, "dynetat0: Le champ <cv> est absent"
     215         write(lunout,*)"dynetat0: Le champ <cv> est absent"
    214216         CALL abort
    215217      ENDIF
     
    220222#endif
    221223      IF (ierr .NE. NF_NOERR) THEN
    222          PRINT*, "dynetat0: Lecture echouee pour <cv>"
     224         write(lunout,*)"dynetat0: Lecture echouee pour <cv>"
    223225         CALL abort
    224226      ENDIF
     
    226228      ierr = NF_INQ_VARID (nid, "aire", nvarid)
    227229      IF (ierr .NE. NF_NOERR) THEN
    228          PRINT*, "dynetat0: Le champ <aire> est absent"
     230         write(lunout,*)"dynetat0: Le champ <aire> est absent"
    229231         CALL abort
    230232      ENDIF
     
    235237#endif
    236238      IF (ierr .NE. NF_NOERR) THEN
    237          PRINT*, "dynetat0: Lecture echouee pour <aire>"
     239         write(lunout,*)"dynetat0: Lecture echouee pour <aire>"
    238240         CALL abort
    239241      ENDIF
     
    241243      ierr = NF_INQ_VARID (nid, "phisinit", nvarid)
    242244      IF (ierr .NE. NF_NOERR) THEN
    243          PRINT*, "dynetat0: Le champ <phisinit> est absent"
     245         write(lunout,*)"dynetat0: Le champ <phisinit> est absent"
    244246         CALL abort
    245247      ENDIF
     
    250252#endif
    251253      IF (ierr .NE. NF_NOERR) THEN
    252          PRINT*, "dynetat0: Lecture echouee pour <phisinit>"
     254         write(lunout,*)"dynetat0: Lecture echouee pour <phisinit>"
    253255         CALL abort
    254256      ENDIF
     
    256258      ierr = NF_INQ_VARID (nid, "temps", nvarid)
    257259      IF (ierr .NE. NF_NOERR) THEN
    258          PRINT*, "dynetat0: Le champ <temps> est absent"
     260         write(lunout,*)"dynetat0: Le champ <temps> est absent"
    259261         CALL abort
    260262      ENDIF
     
    265267#endif
    266268      IF (ierr .NE. NF_NOERR) THEN
    267          PRINT*, "dynetat0: Lecture echouee <temps>"
     269         write(lunout,*)"dynetat0: Lecture echouee <temps>"
    268270         CALL abort
    269271      ENDIF
     
    271273      ierr = NF_INQ_VARID (nid, "ucov", nvarid)
    272274      IF (ierr .NE. NF_NOERR) THEN
    273          PRINT*, "dynetat0: Le champ <ucov> est absent"
     275         write(lunout,*)"dynetat0: Le champ <ucov> est absent"
    274276         CALL abort
    275277      ENDIF
     
    280282#endif
    281283      IF (ierr .NE. NF_NOERR) THEN
    282          PRINT*, "dynetat0: Lecture echouee pour <ucov>"
     284         write(lunout,*)"dynetat0: Lecture echouee pour <ucov>"
    283285         CALL abort
    284286      ENDIF
     
    286288      ierr = NF_INQ_VARID (nid, "vcov", nvarid)
    287289      IF (ierr .NE. NF_NOERR) THEN
    288          PRINT*, "dynetat0: Le champ <vcov> est absent"
     290         write(lunout,*)"dynetat0: Le champ <vcov> est absent"
    289291         CALL abort
    290292      ENDIF
     
    295297#endif
    296298      IF (ierr .NE. NF_NOERR) THEN
    297          PRINT*, "dynetat0: Lecture echouee pour <vcov>"
     299         write(lunout,*)"dynetat0: Lecture echouee pour <vcov>"
    298300         CALL abort
    299301      ENDIF
     
    301303      ierr = NF_INQ_VARID (nid, "teta", nvarid)
    302304      IF (ierr .NE. NF_NOERR) THEN
    303          PRINT*, "dynetat0: Le champ <teta> est absent"
     305         write(lunout,*)"dynetat0: Le champ <teta> est absent"
    304306         CALL abort
    305307      ENDIF
     
    310312#endif
    311313      IF (ierr .NE. NF_NOERR) THEN
    312          PRINT*, "dynetat0: Lecture echouee pour <teta>"
     314         write(lunout,*)"dynetat0: Lecture echouee pour <teta>"
    313315         CALL abort
    314316      ENDIF
     
    319321        ierr =  NF_INQ_VARID (nid, tname(iq), nvarid)
    320322        IF (ierr .NE. NF_NOERR) THEN
    321            PRINT*, "dynetat0: Le champ <"//tname(iq)//"> est absent"
    322            PRINT*, "          Il est donc initialise a zero"
     323           write(lunout,*)"dynetat0: Le champ <"//tname(iq)//
     324     &                    "> est absent"
     325           write(lunout,*)"          Il est donc initialise a zero"
    323326           q(:,:,iq)=0.
    324327        ELSE
     
    329332#endif
    330333          IF (ierr .NE. NF_NOERR) THEN
    331              PRINT*, "dynetat0: Lecture echouee pour "//tname(iq)
    332              CALL abort
     334            write(lunout,*)"dynetat0: Lecture echouee pour "//tname(iq)
     335            CALL abort
    333336          ENDIF
    334337        ENDIF
     
    338341      ierr = NF_INQ_VARID (nid, "masse", nvarid)
    339342      IF (ierr .NE. NF_NOERR) THEN
    340          PRINT*, "dynetat0: Le champ <masse> est absent"
     343         write(lunout,*)"dynetat0: Le champ <masse> est absent"
    341344         CALL abort
    342345      ENDIF
     
    347350#endif
    348351      IF (ierr .NE. NF_NOERR) THEN
    349          PRINT*, "dynetat0: Lecture echouee pour <masse>"
     352         write(lunout,*)"dynetat0: Lecture echouee pour <masse>"
    350353         CALL abort
    351354      ENDIF
     
    353356      ierr = NF_INQ_VARID (nid, "ps", nvarid)
    354357      IF (ierr .NE. NF_NOERR) THEN
    355          PRINT*, "dynetat0: Le champ <ps> est absent"
     358         write(lunout,*)"dynetat0: Le champ <ps> est absent"
    356359         CALL abort
    357360      ENDIF
     
    362365#endif
    363366      IF (ierr .NE. NF_NOERR) THEN
    364          PRINT*, "dynetat0: Lecture echouee pour <ps>"
     367         write(lunout,*)"dynetat0: Lecture echouee pour <ps>"
    365368         CALL abort
    366369      ENDIF
  • LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3d/dynredem.F

    r1299 r1380  
    2626#include "description.h"
    2727#include "serre.h"
     28#include "iniprint.h"
    2829
    2930c   Arguments:
     
    126127      ierr = NF_CREATE(fichnom, NF_CLOBBER, nid)
    127128      IF (ierr.NE.NF_NOERR) THEN
    128          WRITE(6,*)" Pb d ouverture du fichier "//fichnom
    129          WRITE(6,*)' ierr = ', ierr
     129         write(lunout,*)"dynredem0: Pb d ouverture du fichier "
     130     &                  //trim(fichnom)
     131         write(lunout,*)' ierr = ', ierr
    130132         CALL ABORT
    131133      ENDIF
     
    509511      ierr = NF_CLOSE(nid) ! fermer le fichier
    510512
    511       PRINT*,'iim,jjm,llm,iday_end',iim,jjm,llm,iday_end
    512       PRINT*,'rad,omeg,g,cpp,kappa',
    513      ,        rad,omeg,g,cpp,kappa
     513      write(lunout,*)'dynredem0: iim,jjm,llm,iday_end',
     514     &               iim,jjm,llm,iday_end
     515      write(lunout,*)'dynredem0: rad,omeg,g,cpp,kappa',
     516     &        rad,omeg,g,cpp,kappa
    514517
    515518      RETURN
     
    531534#include "comgeom.h"
    532535#include "temps.h"
     536#include "iniprint.h"
     537
    533538
    534539      INTEGER l
     
    557562      ierr = NF_OPEN(fichnom, NF_WRITE, nid)
    558563      IF (ierr .NE. NF_NOERR) THEN
    559          PRINT*, "Pb. d ouverture "//fichnom
     564         write(lunout,*)"dynredem1: Pb. d ouverture "//trim(fichnom)
    560565         CALL abort
    561566      ENDIF
     
    566571      ierr = NF_INQ_VARID(nid, "temps", nvarid)
    567572      IF (ierr .NE. NF_NOERR) THEN
    568          print *, NF_STRERROR(ierr)
     573         write(lunout,*) NF_STRERROR(ierr)
    569574         abort_message='Variable temps n est pas definie'
    570575         CALL abort_gcm(modname,abort_message,ierr)
     
    575580      ierr = NF_PUT_VAR1_REAL (nid,nvarid,nb,time)
    576581#endif
    577       PRINT*, "Enregistrement pour ", nb, time
     582      write(lunout,*) "dynredem1: Enregistrement pour ", nb, time
    578583
    579584c
     
    602607      ierr = NF_INQ_VARID(nid, "ucov", nvarid)
    603608      IF (ierr .NE. NF_NOERR) THEN
    604          PRINT*, "Variable ucov n est pas definie"
    605          CALL abort
     609         abort_message="Variable ucov n est pas definie"
     610         ierr=1
     611         CALL abort_gcm(modname,abort_message,ierr)
    606612      ENDIF
    607613#ifdef NC_DOUBLE
     
    613619      ierr = NF_INQ_VARID(nid, "vcov", nvarid)
    614620      IF (ierr .NE. NF_NOERR) THEN
    615          PRINT*, "Variable vcov n est pas definie"
    616          CALL abort
     621         abort_message="Variable vcov n est pas definie"
     622         ierr=1
     623         CALL abort_gcm(modname,abort_message,ierr)
    617624      ENDIF
    618625#ifdef NC_DOUBLE
     
    624631      ierr = NF_INQ_VARID(nid, "teta", nvarid)
    625632      IF (ierr .NE. NF_NOERR) THEN
    626          PRINT*, "Variable teta n est pas definie"
    627          CALL abort
     633         abort_message="Variable teta n est pas definie"
     634         ierr=1
     635         CALL abort_gcm(modname,abort_message,ierr)
    628636      ENDIF
    629637#ifdef NC_DOUBLE
     
    637645         ierr_file = NF_OPEN ("start_trac.nc", NF_NOWRITE,nid_trac)
    638646         IF (ierr_file .NE.NF_NOERR) THEN
    639             write(6,*)' Pb d''ouverture du fichier start_trac.nc'
    640             write(6,*)' ierr = ', ierr_file
     647            write(lunout,*)'dynredem1: Pb d''ouverture du fichier',
     648     &                     ' start_trac.nc'
     649            write(lunout,*)' ierr = ', ierr_file
    641650         ENDIF
    642651      END IF
     
    648657            ierr = NF_INQ_VARID(nid, tname(iq), nvarid)
    649658            IF (ierr .NE. NF_NOERR) THEN
    650                PRINT*, "Variable  tname(iq) n est pas definie"
    651                CALL abort
     659               abort_message="Variable  tname(iq) n est pas definie"
     660               ierr=1
     661               CALL abort_gcm(modname,abort_message,ierr)
    652662            ENDIF
    653663#ifdef NC_DOUBLE
     
    661671             ierr = NF_INQ_VARID (nid_trac, tname(iq), nvarid_trac)
    662672             IF (ierr .NE. NF_NOERR) THEN
    663                 PRINT*, tname(iq),"est absent de start_trac.nc"
     673                write(lunout,*) "dynredem1: ",trim(tname(iq)),
     674     &                          " est absent de start_trac.nc"
    664675                ierr = NF_INQ_VARID(nid, tname(iq), nvarid)
    665676                IF (ierr .NE. NF_NOERR) THEN
    666                    PRINT*, "Variable ", tname(iq)," n est pas definie"
    667                    CALL abort
     677                   abort_message="dynredem1: Variable "//
     678     &                     trim(tname(iq))//" n est pas definie"
     679                   ierr=1
     680                   CALL abort_gcm(modname,abort_message,ierr)
    668681                ENDIF
    669682#ifdef NC_DOUBLE
     
    674687               
    675688             ELSE
    676                 PRINT*, tname(iq), "est present dans start_trac.nc"
     689                write(lunout,*) "dynredem1: ",trim(tname(iq)),
     690     &              " est present dans start_trac.nc"
    677691#ifdef NC_DOUBLE
    678692               ierr = NF_GET_VAR_DOUBLE(nid_trac, nvarid_trac, trac_tmp)
     
    681695#endif
    682696                IF (ierr .NE. NF_NOERR) THEN
    683                    PRINT*, "Lecture echouee pour", tname(iq)
    684                    CALL abort
     697                   abort_message="dynredem1: Lecture echouee pour"//
     698     &                    trim(tname(iq))
     699                   ierr=1
     700                   CALL abort_gcm(modname,abort_message,ierr)
    685701                ENDIF
    686702                ierr = NF_INQ_VARID(nid, tname(iq), nvarid)
    687703                IF (ierr .NE. NF_NOERR) THEN
    688                    PRINT*, "Variable ", tname(iq)," n est pas definie"
    689                    CALL abort
     704                   abort_message="dynredem1: Variable "//
     705     &                trim(tname(iq))//" n est pas definie"
     706                   ierr=1
     707                   CALL abort_gcm(modname,abort_message,ierr)
    690708                ENDIF
    691709#ifdef NC_DOUBLE
     
    701719             ierr = NF_INQ_VARID(nid, tname(iq), nvarid)
    702720             IF (ierr .NE. NF_NOERR) THEN
    703                 PRINT*, "Variable  tname(iq) n est pas definie"
    704                 CALL abort
     721                abort_message="dynredem1: Variable "//
     722     &                trim(tname(iq))//" n est pas definie"
     723                   ierr=1
     724                   CALL abort_gcm(modname,abort_message,ierr)
    705725             ENDIF
    706726#ifdef NC_DOUBLE
     
    717737      ierr = NF_INQ_VARID(nid, "masse", nvarid)
    718738      IF (ierr .NE. NF_NOERR) THEN
    719          PRINT*, "Variable masse n est pas definie"
    720          CALL abort
     739         abort_message="dynredem1: Variable masse n est pas definie"
     740         ierr=1
     741         CALL abort_gcm(modname,abort_message,ierr)
    721742      ENDIF
    722743#ifdef NC_DOUBLE
     
    728749      ierr = NF_INQ_VARID(nid, "ps", nvarid)
    729750      IF (ierr .NE. NF_NOERR) THEN
    730          PRINT*, "Variable ps n est pas definie"
    731          CALL abort
     751         abort_message="dynredem1: Variable ps n est pas definie"
     752         ierr=1
     753         CALL abort_gcm(modname,abort_message,ierr)
    732754      ENDIF
    733755#ifdef NC_DOUBLE
  • LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3d/gcm.F

    r1357 r1380  
    248248          CALL iniacademic(vcov,ucov,teta,q,masse,ps,phis,time_0)
    249249        endif
    250 !#ifdef CPP_IOIPSL
     250
    251251        if (planet_type.eq."earth") then
    252252#ifdef CPP_EARTH
    253253! Load an Earth-format start file
    254254         CALL dynetat0("start.nc",vcov,ucov,
    255      .              teta,q,masse,ps,phis, time_0)
    256 #endif
     255     &              teta,q,masse,ps,phis, time_0)
     256#endif
     257        ! SW model also has Earth-format start files
     258        ! (but can be used without the CPP_EARTH directive)
     259          if (iflag_phys.eq.0) then
     260            CALL dynetat0("start.nc",vcov,ucov,
     261     &              teta,q,masse,ps,phis, time_0)
     262          endif
     263       
    257264        endif ! of if (planet_type.eq."earth")
     265       
    258266c       write(73,*) 'ucov',ucov
    259267c       write(74,*) 'vcov',vcov
  • LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3d/iniconst.F

    r1299 r1380  
    1919#include "temps.h"
    2020#include "comvert.h"
     21#include "iniprint.h"
    2122
    2223
     
    4849      r       = cpp * kappa
    4950
    50       PRINT*,' R  CP  Kappa ',  r , cpp,  kappa
     51      write(lunout,*)'iniconst: R  CP  Kappa ',  r , cpp,  kappa
    5152c
    5253c-----------------------------------------------------------------------
Note: See TracChangeset for help on using the changeset viewer.