Changeset 1399


Ignore:
Timestamp:
Mar 23, 2015, 8:46:14 AM (10 years ago)
Author:
emillour
Message:

Mars GCM:

  • Follow-up to cleanup in dynamics/physics interface. Add iniprint.h to be in line with what is done in LMDZ.COMMON dynamics.

EM

Location:
trunk/LMDZ.MARS
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.MARS/README

    r1395 r1399  
    21642164== 12/03/2015 == EM
    21652165- Some cleanup in the dynamics/physics interface.
     2166
     2167== 23/03/2015 == EM
     2168- Follow-up to cleanup in dynamics/physics interface. Add iniprint.h to be
     2169  in line with what is done in LMDZ.COMMON dynamics.
  • trunk/LMDZ.MARS/libf/dyn3d/defrun_new.F

    r1130 r1399  
    4949#include "comdissnew.h"
    5050#include "sponge.h"
     51#include "iniprint.h"
    5152c
    5253c   arguments:
     
    6061
    6162      CHARACTER ch1*72,ch2*72,ch3*72,ch4*8 ! to store various strings
    62       INTEGER tapeout ! unit numbers for (standard) outputs
    63       parameter (tapeout=6)
    6463      integer tapeerr ! unit number for error message
    6564      parameter (tapeerr=0)
     
    7675c   ----------------
    7776 
    78 !      tapeout=6
     77!      lunout=6
    7978
    8079c-----------------------------------------------------------------------
     
    9291      CLOSE(tapedef) ! first call to getin will open the file
    9392
     93      !lunout: default unit for the text outputs
     94      lunout=6
     95      CALL getin('lunout', lunout)
     96      IF (lunout /= 5 .and. lunout /= 6) THEN
     97        OPEN(UNIT=lunout,FILE='lmdz.out',ACTION='write',
     98     &       STATUS='unknown',FORM='formatted')
     99      ENDIF
     100
    94101      IF(ierr.EQ.0) THEN ! if file run.def is found
    95         WRITE(tapeout,*) "DEFRUN_NEW: reading file run.def"
     102        WRITE(lunout,*) "DEFRUN_NEW: reading file run.def"
    96103       
    97         WRITE(tapeout,*) ""
    98         WRITE(tapeout,*) "Number of days to run:"
     104        WRITE(lunout,*) ""
     105        WRITE(lunout,*) "Number of days to run:"
    99106        nday_r=1 ! default value
    100107        call getin("nday",nday_r)
    101         WRITE(tapeout,*)" nday = ",nday_r
     108        WRITE(lunout,*)" nday = ",nday_r
    102109       
    103110        ndynstep=-9999 ! default value
    104111        call getin("ndynstep",ndynstep)
    105112        if (ndynstep .gt. 0) then
    106           WRITE(tapeout,*) ""
    107           WRITE(tapeout,*) "Number of dynamical steps to run:"
    108           WRITE(tapeout,*) " ndynstep = ",ndynstep
    109           WRITE(tapeout,*) " nday value is now discarded "
     113          WRITE(lunout,*) ""
     114          WRITE(lunout,*) "Number of dynamical steps to run:"
     115          WRITE(lunout,*) " ndynstep = ",ndynstep
     116          WRITE(lunout,*) " nday value is now discarded "
    110117        endif
    111118
    112         WRITE(tapeout,*) ""
    113         WRITE(tapeout,*) "Number of dynamical steps per day:",
     119        WRITE(lunout,*) ""
     120        WRITE(lunout,*) "Number of dynamical steps per day:",
    114121     & "(should be a multiple of iperiod)"
    115122        day_step=960 ! default value
    116123        call getin("day_step",day_step)
    117         WRITE(tapeout,*)" day_step = ",day_step
    118 
    119         WRITE(tapeout,*) ""
    120         WRITE(tapeout,*) "periode pour le pas Matsuno (en pas)"
     124        WRITE(lunout,*)" day_step = ",day_step
     125
     126        WRITE(lunout,*) ""
     127        WRITE(lunout,*) "periode pour le pas Matsuno (en pas)"
    121128        iperiod=5 ! default value
    122129        call getin("iperiod",iperiod)
    123130        ! verify that day_step is a multiple of iperiod
    124131        if (((1.*day_step)/iperiod).ne.(day_step/iperiod)) then
    125           write(tapeout,*)" Error! iperiod must be such that",
     132          write(lunout,*)" Error! iperiod must be such that",
    126133     &    " day_step is a multiple of iperiod, but iperiod=",
    127134     &    iperiod," and day_step=",day_step
    128135        else
    129           WRITE(tapeout,*)" iperiod = ",iperiod
     136          WRITE(lunout,*)" iperiod = ",iperiod
    130137        endif
    131138       
    132         WRITE(tapeout,*) ""
    133         WRITE(tapeout,*) "periode de sortie des variables de ",
     139        WRITE(lunout,*) ""
     140        WRITE(lunout,*) "periode de sortie des variables de ",
    134141     &  "controle (en pas)"
    135142        iconser=120 ! default value
    136143        call getin("iconser",iconser)
    137         WRITE(tapeout,*)" iconser = ",iconser
    138 
    139         WRITE(tapeout,*) ""
    140         WRITE(tapeout,*) "periode de la dissipation (en pas)"
     144        WRITE(lunout,*)" iconser = ",iconser
     145
     146        WRITE(lunout,*) ""
     147        WRITE(lunout,*) "periode de la dissipation (en pas)"
    141148        idissip=5 ! default value
    142149        call getin("idissip",idissip)
    143         WRITE(tapeout,*)" idissip = ",idissip
     150        WRITE(lunout,*)" idissip = ",idissip
    144151
    145152ccc  ....   P. Le Van , modif le 29/04/97 .pour la dissipation  ...
    146153ccc
    147         WRITE(tapeout,*) ""
    148         WRITE(tapeout,*) "choix de l'operateur de dissipation ",
     154        WRITE(lunout,*) ""
     155        WRITE(lunout,*) "choix de l'operateur de dissipation ",
    149156     & "(star ou  non star )"
    150157        lstardis=.true. ! default value
    151158        call getin("lstardis",lstardis)
    152         WRITE(tapeout,*)" lstardis = ",lstardis
    153 
    154         WRITE(tapeout,*) ""
    155         WRITE(tapeout,*) "avec ou sans coordonnee hybrides"
     159        WRITE(lunout,*)" lstardis = ",lstardis
     160
     161        WRITE(lunout,*) ""
     162        WRITE(lunout,*) "avec ou sans coordonnee hybrides"
    156163        hybrid=.true. ! default value
    157164        call getin("hybrid",hybrid)
    158         WRITE(tapeout,*)" hybrid = ",hybrid
    159 
    160         WRITE(tapeout,*) ""
    161         WRITE(tapeout,*) "nombre d'iterations de l'operateur de ",
     165        WRITE(lunout,*)" hybrid = ",hybrid
     166
     167        WRITE(lunout,*) ""
     168        WRITE(lunout,*) "nombre d'iterations de l'operateur de ",
    162169     & "dissipation   gradiv "
    163170        nitergdiv=1 ! default value
    164171        call getin("nitergdiv",nitergdiv)
    165         WRITE(tapeout,*)" nitergdiv = ",nitergdiv
    166 
    167         WRITE(tapeout,*) ""
    168         WRITE(tapeout,*) "nombre d'iterations de l'operateur de ",
     172        WRITE(lunout,*)" nitergdiv = ",nitergdiv
     173
     174        WRITE(lunout,*) ""
     175        WRITE(lunout,*) "nombre d'iterations de l'operateur de ",
    169176     & "dissipation  nxgradrot"
    170177        nitergrot=2 ! default value
    171178        call getin("nitergrot",nitergrot)
    172         WRITE(tapeout,*)" nitergrot = ",nitergrot
    173 
    174         WRITE(tapeout,*) ""
    175         WRITE(tapeout,*) "nombre d'iterations de l'operateur de ",
     179        WRITE(lunout,*)" nitergrot = ",nitergrot
     180
     181        WRITE(lunout,*) ""
     182        WRITE(lunout,*) "nombre d'iterations de l'operateur de ",
    176183     & "dissipation  divgrad"
    177184        niterh=2 ! default value
    178185        call getin("niterh",niterh)
    179         WRITE(tapeout,*)" niterh = ",niterh
    180 
    181         WRITE(tapeout,*) ""
    182         WRITE(tapeout,*) "temps de dissipation des plus petites ",
     186        WRITE(lunout,*)" niterh = ",niterh
     187
     188        WRITE(lunout,*) ""
     189        WRITE(lunout,*) "temps de dissipation des plus petites ",
    183190     & "long.d ondes pour u,v (gradiv)"
    184191        tetagdiv=4000. ! default value
    185192        call getin("tetagdiv",tetagdiv)
    186         WRITE(tapeout,*)" tetagdiv = ",tetagdiv
    187 
    188         WRITE(tapeout,*) ""
    189         WRITE(tapeout,*) "temps de dissipation des plus petites ",
     193        WRITE(lunout,*)" tetagdiv = ",tetagdiv
     194
     195        WRITE(lunout,*) ""
     196        WRITE(lunout,*) "temps de dissipation des plus petites ",
    190197     & "long.d ondes pour u,v(nxgradrot)"
    191198        tetagrot=5000. ! default value
    192199        call getin("tetagrot",tetagrot)
    193         WRITE(tapeout,*)" tetagrot = ",tetagrot
    194 
    195         WRITE(tapeout,*) ""
    196         WRITE(tapeout,*) "temps de dissipation des plus petites ",
     200        WRITE(lunout,*)" tetagrot = ",tetagrot
     201
     202        WRITE(lunout,*) ""
     203        WRITE(lunout,*) "temps de dissipation des plus petites ",
    197204     & "long.d ondes pour  h ( divgrad)"
    198205        tetatemp=5000. ! default value
    199206        call getin("tetatemp",tetatemp)
    200         WRITE(tapeout,*)" tetatemp = ",tetatemp
    201 
    202         WRITE(tapeout,*) ""
    203         WRITE(tapeout,*) "coefficient pour gamdissip"
     207        WRITE(lunout,*)" tetatemp = ",tetatemp
     208
     209        WRITE(lunout,*) ""
     210        WRITE(lunout,*) "coefficient pour gamdissip"
    204211        coefdis=0. ! default value
    205212        call getin("coefdis",coefdis)
    206         WRITE(tapeout,*)" coefdis = ",coefdis
     213        WRITE(lunout,*)" coefdis = ",coefdis
    207214c
    208215c    ...............................................................
    209216
    210         WRITE(tapeout,*) ""
    211         WRITE(tapeout,*) "choix du shema d'integration temporelle ",
     217        WRITE(lunout,*) ""
     218        WRITE(lunout,*) "choix du shema d'integration temporelle ",
    212219     & "(true==Matsuno ou false==Matsuno-leapfrog)"
    213220        purmats=.false. ! default value
    214221        call getin("purmats",purmats)
    215         WRITE(tapeout,*)" purmats = ",purmats
    216 
    217         WRITE(tapeout,*) ""
    218         WRITE(tapeout,*) "avec ou sans physique"
     222        WRITE(lunout,*)" purmats = ",purmats
     223
     224        WRITE(lunout,*) ""
     225        WRITE(lunout,*) "avec ou sans physique"
    219226        physic=.true. ! default value
    220227        call getin("physic",physic)
    221         WRITE(tapeout,*)" physic = ",physic
    222 
    223         WRITE(tapeout,*) ""
    224         WRITE(tapeout,*) "periode de la physique (en pas)"
     228        WRITE(lunout,*)" physic = ",physic
     229
     230        WRITE(lunout,*) ""
     231        WRITE(lunout,*) "periode de la physique (en pas)"
    225232        iphysiq=20 ! default value
    226233        call getin("iphysiq",iphysiq)
    227234        ! verify that day_step is a multiple of iphysiq
    228235        if (((1.*day_step)/iphysiq).ne.(day_step/iphysiq)) then
    229           write(tapeout,*)" Error! iphysiq must be such that",
     236          write(lunout,*)" Error! iphysiq must be such that",
    230237     &    " day_step is a multiple of iphysiq, but iphysiq=",
    231238     &    iphysiq," and day_step=",day_step
    232239        else
    233           WRITE(tapeout,*)" iphysiq = ",iphysiq
     240          WRITE(lunout,*)" iphysiq = ",iphysiq
    234241        endif
    235242
    236         WRITE(tapeout,*) ""
    237         WRITE(tapeout,*) "choix d'une grille reguliere"
     243        WRITE(lunout,*) ""
     244        WRITE(lunout,*) "choix d'une grille reguliere"
    238245        grireg=.true.
    239246        call getin("grireg",grireg)
    240         WRITE(tapeout,*)" grireg = ",grireg
     247        WRITE(lunout,*)" grireg = ",grireg
    241248
    242249ccc   .... P.Le Van, ajout le 03/01/96 pour l'ecriture phys ...
    243250c
    244         WRITE(tapeout,*) ""
    245         WRITE(tapeout,*) "frequence (en pas) de l'ecriture ",
     251        WRITE(lunout,*) ""
     252        WRITE(lunout,*) "frequence (en pas) de l'ecriture ",
    246253     & "du fichier diagfi.nc"
    247254        ecritphy=240
     
    249256        ! verify that ecriphy is indeed a multiple of iphysiq
    250257        if (((1.*ecritphy)/iphysiq).ne.(ecritphy/iphysiq)) then
    251           write(tapeout,*)" Error! ecritphy must be a multiple",
     258          write(lunout,*)" Error! ecritphy must be a multiple",
    252259     &    " of iphysiq, but ecritphy=",ecritphy," and iphysiq=",
    253260     &    iphysiq
    254261        else
    255           WRITE(tapeout,*)" ecritphy = ",ecritphy
     262          WRITE(lunout,*)" ecritphy = ",ecritphy
    256263        endif
    257264       
    258265ccc   .... T.Navarro, read start time (06/2013) ...
    259266c
    260         WRITE(tapeout,*) ""
    261         WRITE(tapeout,*) "date de debut dans le fichier start.nc"
     267        WRITE(lunout,*) ""
     268        WRITE(lunout,*) "date de debut dans le fichier start.nc"
    262269        timestart=-9999
    263270        call getin("timestart",timestart)
    264         WRITE(tapeout,*)" timestart = ",timestart
     271        WRITE(lunout,*)" timestart = ",timestart
    265272
    266273ccc   .... T.Navarro, start output (01/2013) ...
    267274c
    268         WRITE(tapeout,*) ""
    269         WRITE(tapeout,*) "frequence (en pas) de l'ecriture ",
     275        WRITE(lunout,*) ""
     276        WRITE(lunout,*) "frequence (en pas) de l'ecriture ",
    270277     & "du fichier start.nc"
    271278        ecritstart=0
     
    274281        if ( ((real(ecritstart))/iphysiq)
    275282     &       .ne.(real(ecritstart)/iphysiq) ) then
    276           write(tapeout,*)" Error! ecritstart must be a multiple",
     283          write(lunout,*)" Error! ecritstart must be a multiple",
    277284     &    " of iphysiq, but ecritstart=",ecritstart," and iphysiq=",
    278285     &    iphysiq
    279286        else
    280           WRITE(tapeout,*)" ecritstart = ",ecritstart
     287          WRITE(lunout,*)" ecritstart = ",ecritstart
    281288        endif
    282289
     
    429436        ELSE    ! Below, case when etainit=.true.
    430437
    431            WRITE(tapeout,*) ""
    432            WRITE(tapeout,*) "longitude en degres du centre du zoom"
     438           WRITE(lunout,*) ""
     439           WRITE(lunout,*) "longitude en degres du centre du zoom"
    433440           clon=63. ! default value
    434441           call getin("clon",clon)
    435            WRITE(tapeout,*)" clon = ",clon
     442           WRITE(lunout,*)" clon = ",clon
    436443           
    437444c
    438            WRITE(tapeout,*) ""
    439            WRITE(tapeout,*) "latitude en degres du centre du zoom "
     445           WRITE(lunout,*) ""
     446           WRITE(lunout,*) "latitude en degres du centre du zoom "
    440447           clat=0. ! default value
    441448           call getin("clat",clat)
    442            WRITE(tapeout,*)" clat = ",clat
    443 
    444            WRITE(tapeout,*) ""
    445            WRITE(tapeout,*) "facteur de grossissement du zoom,",
     449           WRITE(lunout,*)" clat = ",clat
     450
     451           WRITE(lunout,*) ""
     452           WRITE(lunout,*) "facteur de grossissement du zoom,",
    446453     & " selon longitude"
    447454           grossismx=1.0 ! default value
    448455           call getin("grossismx",grossismx)
    449            WRITE(tapeout,*)" grossismx = ",grossismx
    450 
    451            WRITE(tapeout,*) ""
    452            WRITE(tapeout,*) "facteur de grossissement du zoom ,",
     456           WRITE(lunout,*)" grossismx = ",grossismx
     457
     458           WRITE(lunout,*) ""
     459           WRITE(lunout,*) "facteur de grossissement du zoom ,",
    453460     & " selon latitude"
    454461           grossismy=1.0 ! default value
    455462           call getin("grossismy",grossismy)
    456            WRITE(tapeout,*)" grossismy = ",grossismy
     463           WRITE(lunout,*)" grossismy = ",grossismy
    457464
    458465           IF( grossismx.LT.1. )  THEN
     
    472479           PRINT *,' Defrun  alphax alphay  ',alphax,alphay
    473480c
    474            WRITE(tapeout,*) ""
    475            WRITE(tapeout,*) "Fonction  f(y)  hyperbolique  si = .true.",
     481           WRITE(lunout,*) ""
     482           WRITE(lunout,*) "Fonction  f(y)  hyperbolique  si = .true.",
    476483     &  ", sinon  sinusoidale"
    477484           fxyhypb=.false. ! default value
    478485           call getin("fxyhypb",fxyhypb)
    479            WRITE(tapeout,*)" fxyhypb = ",fxyhypb
    480 
    481            WRITE(tapeout,*) ""
    482            WRITE(tapeout,*) "extension en longitude de la zone du zoom",
     486           WRITE(lunout,*)" fxyhypb = ",fxyhypb
     487
     488           WRITE(lunout,*) ""
     489           WRITE(lunout,*) "extension en longitude de la zone du zoom",
    483490     & " (fraction de la zone totale)"
    484491           dzoomx=0. ! default value
    485492           call getin("dzoomx",dzoomx)
    486            WRITE(tapeout,*)" dzoomx = ",dzoomx
    487 
    488            WRITE(tapeout,*) ""
    489            WRITE(tapeout,*) "extension en latitude de la zone du zoom",
     493           WRITE(lunout,*)" dzoomx = ",dzoomx
     494
     495           WRITE(lunout,*) ""
     496           WRITE(lunout,*) "extension en latitude de la zone du zoom",
    490497     & " (fraction de la zone totale)"
    491498           dzoomy=0. ! default value
    492499           call getin("dzoomy",dzoomy)
    493            WRITE(tapeout,*)" dzoomy = ",dzoomy
    494 
    495            WRITE(tapeout,*) ""
    496            WRITE(tapeout,*) "raideur du zoom en  X"
     500           WRITE(lunout,*)" dzoomy = ",dzoomy
     501
     502           WRITE(lunout,*) ""
     503           WRITE(lunout,*) "raideur du zoom en  X"
    497504           taux=2. ! default value
    498505           call getin("taux",taux)
    499            WRITE(tapeout,*)" taux = ",taux
    500 
    501            WRITE(tapeout,*) ""
    502            WRITE(tapeout,*) "raideur du zoom en  Y"
     506           WRITE(lunout,*)" taux = ",taux
     507
     508           WRITE(lunout,*) ""
     509           WRITE(lunout,*) "raideur du zoom en  Y"
    503510           tauy=2.0 ! default value
    504511           call getin("tauy",tauy)
    505            WRITE(tapeout,*)" tauy = ",tauy
     512           WRITE(lunout,*)" tauy = ",tauy
    506513
    507514        END IF ! of if (.not.etatinit )
    508515
    509         WRITE(tapeout,*) ""
    510         WRITE(tapeout,*) "Avec sponge layer"
     516        WRITE(lunout,*) ""
     517        WRITE(lunout,*) "Avec sponge layer"
    511518        callsponge=.true. ! default value
    512519        call getin("callsponge",callsponge)
    513         WRITE(tapeout,*)" callsponge = ",callsponge
    514 
    515         WRITE(tapeout,*) ""
    516         WRITE(tapeout,*) "Sponge: number of layers over which",
     520        WRITE(lunout,*)" callsponge = ",callsponge
     521
     522        WRITE(lunout,*) ""
     523        WRITE(lunout,*) "Sponge: number of layers over which",
    517524     &                    " sponge extends"
    518525        nsponge=3 ! default value
    519526        call getin("nsponge",nsponge)
    520         WRITE(tapeout,*)" nsponge = ",nsponge
    521 
    522         WRITE(tapeout,*)""
    523         WRITE(tapeout,*)"Sponge mode: (forcing is towards ..."
    524         WRITE(tapeout,*)"  over upper nsponge layers)"
    525         WRITE(tapeout,*)"  0: (h=hmean,u=v=0)"
    526         WRITE(tapeout,*)"  1: (h=hmean,u=umean,v=0)"
    527         WRITE(tapeout,*)"  2: (h=hmean,u=umean,v=vmean)"
     527        WRITE(lunout,*)" nsponge = ",nsponge
     528
     529        WRITE(lunout,*)""
     530        WRITE(lunout,*)"Sponge mode: (forcing is towards ..."
     531        WRITE(lunout,*)"  over upper nsponge layers)"
     532        WRITE(lunout,*)"  0: (h=hmean,u=v=0)"
     533        WRITE(lunout,*)"  1: (h=hmean,u=umean,v=0)"
     534        WRITE(lunout,*)"  2: (h=hmean,u=umean,v=vmean)"
    528535        mode_sponge=2 ! default value
    529536        call getin("mode_sponge",mode_sponge)
    530         WRITE(tapeout,*)" mode_sponge = ",mode_sponge
    531 
    532         WRITE(tapeout,*) ""
    533         WRITE(tapeout,*) "Sponge: characteristice time scale tetasponge"
    534         WRITE(tapeout,*) "(seconds) at topmost layer (time scale then "
    535         WRITE(tapeout,*) " doubles with decreasing layer index)."
     537        WRITE(lunout,*)" mode_sponge = ",mode_sponge
     538
     539        WRITE(lunout,*) ""
     540        WRITE(lunout,*) "Sponge: characteristice time scale tetasponge"
     541        WRITE(lunout,*) "(seconds) at topmost layer (time scale then "
     542        WRITE(lunout,*) " doubles with decreasing layer index)."
    536543        tetasponge=30000.0
    537544        call getin("tetasponge",tetasponge)
    538         WRITE(tapeout,*)" tetasponge = ",tetasponge
    539 
    540 
    541       WRITE(tapeout,*) '-----------------------------------------------'
    542       WRITE(tapeout,*) ' '
    543       WRITE(tapeout,*) ' '
     545        WRITE(lunout,*)" tetasponge = ",tetasponge
     546
     547
     548      WRITE(lunout,*) '-----------------------------------------------'
     549      WRITE(lunout,*) ' '
     550      WRITE(lunout,*) ' '
    544551c
    545552
     
    548555
    549556
    550       WRITE(tapeout,*) '-----------------------------------------------'
    551       WRITE(tapeout,*) ' '
    552       WRITE(tapeout,*) ' '
     557      WRITE(lunout,*) '-----------------------------------------------'
     558      WRITE(lunout,*) ' '
     559      WRITE(lunout,*) ' '
    553560cc
    554561      ELSE
     
    561568      if((grossismx.eq.1).and.(grossismy.eq.1)) then 
    562569c        Pas de zoom :
    563          write(tapeout,*) 'No zoom ? -> fxyhypb set to False'
     570         write(lunout,*) 'No zoom ? -> fxyhypb set to False'
    564571     &   ,'           (It runs better that way)'
    565572         fxyhypb = .false.
Note: See TracChangeset for help on using the changeset viewer.