Ignore:
Timestamp:
Dec 22, 2009, 12:07:26 PM (14 years ago)
Author:
lguez
Message:

1) Replaced calls to "float" by calls to "real" and "dble" in
"phys_cosp". "call construct_cosp_gridbox(float(itap),..." was a bug
since the corresponding dummy argument has the type "double
precision". (And "float" is not in the Fortran standard.)

2) Modifications for the program "create_etat0_limit" only, "gcm" is
not touched:

2.1) Removed generic interface "startget" in module "startvar". Replaced
calls to "startget" by calls to "startget_phys2d", "startget_dyn" and
"startget_phys1d".

2.2) Simplified the interface of "startget_dyn" and made it more secure by
removing arguments for sizes of arrays and using assumed-shape array
arguments.

2.3) Corrected bug in call to "startget_dyn" for northward velocity. See
ticket #25 in Trac.

2.4) Collected procedures "inter_barxy", "inter_barx", "inter_bary",
"ord_coord" and "ord_coordm" in a module. "inter_barxy" is the only
public procedure in the module. Rewrote those five procedures: removed
arguments for sizes of arrays; used assumed-shape array arguments;
used array expressions; translated some spaghetti code in "inter_bary"
into structured code; corrected bug in "inter_bary", described by
ticket #26 in Trac.

2.5) Corrected a bug in "inter_bary": "y0" was initialized at 0
instead of -90. This bug made values at the south pole wrong. (This bug
has been acknowledeged by P. Le Van.)

2.6) Made the variable "champ" in procedure "limit_netcdf" an array of
rank 2. Thus it can be an argument in the call to the newly-secured
"inter_barxy".

2.7) The files "start.nc", "startphy.nc" and "limit.nc" are impacted
by this revision. There is a significant change in the variable "vcov"
of "start.nc". See
http://web.lmd.jussieu.fr/~lglmd/Rev_1293/index.html. Note also the
changed value of "vcov" at the south pole. There is very little change
in other variables, in all three files.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3dpar/etat0_netcdf.F

    r1279 r1293  
    263263        varname = 'masque'
    264264        masque(:,:) = 0.0
    265         CALL startget(varname, iip1, jjp1, rlonv, rlatu, masque, 0.0,
    266      , jjm ,rlonu,rlatv , interbar )
     265        CALL startget_phys2d(varname, iip1, jjp1, rlonv, rlatu, masque,
     266     $       0.0, jjm ,rlonu,rlatv , interbar )
    267267        WRITE(*,*) 'MASQUE construit : Masque'
    268268        WRITE(*,'(97I1)') nINT(masque(:,:))
     
    324324      ! This line needs to be replaced by a call to restget to get the values in the restart file
    325325      orog(:,:) = 0.0
    326        CALL startget(varname, iip1, jjp1, rlonv, rlatu, orog, 0.0 ,
    327      , jjm ,rlonu,rlatv , interbar, masque )
     326       CALL startget_phys2d(varname, iip1, jjp1, rlonv, rlatu, orog,
     327     $     0.0 , jjm ,rlonu,rlatv , interbar, masque )
    328328      !
    329329      WRITE(*,*) 'OUT OF GET VARIABLE : Relief'
     
    333333      ! This line needs to be replaced by a call to restget to get the values in the restart file
    334334      rugo(:,:) = 0.0
    335        CALL startget(varname, iip1, jjp1, rlonv, rlatu, rugo, 0.0 ,
    336      , jjm, rlonu,rlatv , interbar )
     335       CALL startget_phys2d(varname, iip1, jjp1, rlonv, rlatu, rugo,
     336     $     0.0 , jjm, rlonu,rlatv , interbar )
    337337      !
    338338      WRITE(*,*) 'OUT OF GET VARIABLE : Rugosite'
     
    346346      varname = 'psol'
    347347      psol(:,:) = 0.0
    348       CALL startget(varname, iip1, jjp1, rlonv, rlatu, psol, 0.0 ,
    349      , jjm ,rlonu,rlatv , interbar )
     348      CALL startget_phys2d(varname, iip1, jjp1, rlonv, rlatu, psol,
     349     $     0.0 , jjm ,rlonu,rlatv , interbar )
    350350      !
    351351      !  Compute here the pressure on the intermediate levels. One would expect that this is available in the GCM
     
    375375      varname = 'surfgeo'
    376376      phis(:,:) = 0.0
    377       CALL startget(varname, iip1, jjp1, rlonv, rlatu, phis, 0.0 ,
    378      , jjm ,rlonu,rlatv, interbar )
     377      CALL startget_phys2d(varname, iip1, jjp1, rlonv, rlatu, phis,
     378     $     0.0 , jjm ,rlonu,rlatv, interbar )
    379379      !
    380380      varname = 'u'
    381381      uvent(:,:,:) = 0.0
    382       CALL startget(varname, iip1, jjp1, rlonu, rlatu, llm, pls,
    383      . workvar, uvent, 0.0, jjm ,rlonv, rlatv, interbar )
     382      CALL startget_dyn(varname, rlonu, rlatu, pls, workvar, uvent, 0.,
     383     $     rlonv, rlatv, interbar )
    384384      ! 
    385385      varname = 'v'
    386386      vvent(:,:,:) = 0.0
    387       CALL startget(varname, iip1, jjm, rlonv, rlatv, llm, pls,
    388      . workvar, vvent, 0.0, jjp1, rlonu, rlatu, interbar )
     387      CALL startget_dyn(varname, rlonv, rlatv, pls(:, :jjm, :),
     388     . workvar(:, :jjm, :), vvent, 0., rlonu, rlatu(:jjm), interbar )
    389389      !
    390390      varname = 't'
    391391      t3d(:,:,:) = 0.0
    392       CALL startget(varname, iip1, jjp1, rlonv, rlatu, llm, pls,
    393      . workvar, t3d, 0.0 , jjm, rlonu, rlatv , interbar )
     392      CALL startget_dyn(varname, rlonv, rlatu, pls, workvar, t3d, 0.,
     393     $    rlonu, rlatv , interbar )
    394394      !
    395395      WRITE(*,*) 'T3D min,max:',minval(t3d(:,:,:)),
     
    397397      varname = 'tpot'
    398398      tpot(:,:,:) = 0.0
    399       CALL startget(varname, iip1, jjp1, rlonv, rlatu, llm, pls,
    400      . pk, tpot, 0.0 , jjm, rlonu, rlatv , interbar )
     399      CALL startget_dyn(varname, rlonv, rlatu, pls, pk, tpot, 0., rlonu,
     400     $     rlatv, interbar)
    401401      !
    402402      WRITE(*,*) 'T3D min,max:',minval(t3d(:,:,:)),
     
    420420      WRITE(*,*) 'QSAT min,max:',minval(qsat(:,:,:)),
    421421     .                           maxval(qsat(:,:,:))
    422       CALL startget(varname, iip1, jjp1, rlonv, rlatu, llm, pls,
    423      . qsat, qd, 0.0, jjm, rlonu, rlatv , interbar )
     422      CALL startget_dyn(varname, rlonv, rlatu, pls, qsat, qd, 0., rlonu,
     423     $    rlatv , interbar )
    424424      q3d(:,:,:,1) = qd(:,:,:)
    425425      !
     
    431431      ! This line needs to be replaced by a call to restget to get the values in the restart file
    432432      tsol(:) = 0.0
    433       CALL startget(varname, iip1, jjp1, rlonv, rlatu, klon, tsol, 0.0,
    434      .    jjm, rlonu, rlatv , interbar )
     433      CALL startget_phys1d(varname, iip1, jjp1, rlonv, rlatu, klon,
     434     $     tsol, 0.0, jjm, rlonu, rlatv , interbar )
    435435      !
    436436      WRITE(*,*) 'TSOL construit :'
     
    439439      varname = 'qsol'
    440440      qsol(:) = 0.0
    441       CALL startget(varname, iip1, jjp1, rlonv, rlatu, klon, qsol, 0.0,
    442       jjm, rlonu, rlatv , interbar )
     441      CALL startget_phys1d(varname, iip1, jjp1, rlonv, rlatu, klon,
     442     $     qsol, 0.0, jjm, rlonu, rlatv , interbar )
    443443      !
    444444      varname = 'snow'
    445445      sn(:) = 0.0
    446       CALL startget(varname, iip1, jjp1, rlonv, rlatu, klon, sn, 0.0,
    447      .    jjm, rlonu, rlatv , interbar )
     446      CALL startget_phys1d(varname, iip1, jjp1, rlonv, rlatu, klon, sn,
     447     $     0.0, jjm, rlonu, rlatv , interbar )
    448448      !
    449449      varname = 'rads'
    450450      radsol(:) = 0.0
    451       CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,radsol,0.0,
    452      .    jjm, rlonu, rlatv , interbar )
     451      CALL startget_phys1d(varname,iip1,jjp1,rlonv,rlatu,klon,radsol,
     452     $     0.0, jjm, rlonu, rlatv , interbar )
    453453      !
    454454      varname = 'rugmer'
    455455      rugmer(:) = 0.0
    456       CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,rugmer,0.0,
    457      .    jjm, rlonu, rlatv , interbar )
     456      CALL startget_phys1d(varname,iip1,jjp1,rlonv,rlatu,klon,rugmer,
     457     $     0.0, jjm, rlonu, rlatv , interbar )
    458458      !
    459459!      varname = 'agesno'
    460460!      agesno(:) = 0.0
    461 !      CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,agesno,0.0,
     461!      CALL startget_phys1d(varname,iip1,jjp1,rlonv,rlatu,klon,agesno,0.0,
    462462!     .     jjm, rlonu, rlatv , interbar )
    463463
    464464      varname = 'zmea'
    465465      zmea(:) = 0.0
    466       CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,zmea,0.0,
     466      CALL startget_phys1d(varname,iip1,jjp1,rlonv,rlatu,klon,zmea,0.0,
    467467     .     jjm, rlonu, rlatv , interbar )
    468468
    469469      varname = 'zstd'
    470470      zstd(:) = 0.0
    471       CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,zstd,0.0,
     471      CALL startget_phys1d(varname,iip1,jjp1,rlonv,rlatu,klon,zstd,0.0,
    472472     .     jjm, rlonu, rlatv , interbar )
    473473      varname = 'zsig'
    474474      zsig(:) = 0.0
    475       CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,zsig,0.0,
     475      CALL startget_phys1d(varname,iip1,jjp1,rlonv,rlatu,klon,zsig,0.0,
    476476     .     jjm, rlonu, rlatv , interbar )
    477477      varname = 'zgam'
    478478      zgam(:) = 0.0
    479       CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,zgam,0.0,
     479      CALL startget_phys1d(varname,iip1,jjp1,rlonv,rlatu,klon,zgam,0.0,
    480480     .     jjm, rlonu, rlatv , interbar )
    481481      varname = 'zthe'
    482482      zthe(:) = 0.0
    483       CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,zthe,0.0,
     483      CALL startget_phys1d(varname,iip1,jjp1,rlonv,rlatu,klon,zthe,0.0,
    484484     .     jjm, rlonu, rlatv , interbar )
    485485      varname = 'zpic'
    486486      zpic(:) = 0.0
    487       CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,zpic,0.0,
     487      CALL startget_phys1d(varname,iip1,jjp1,rlonv,rlatu,klon,zpic,0.0,
    488488     .     jjm, rlonu, rlatv , interbar )
    489489      varname = 'zval'
    490490      zval(:) = 0.0
    491       CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,zval,0.0,
     491      CALL startget_phys1d(varname,iip1,jjp1,rlonv,rlatu,klon,zval,0.0,
    492492     .     jjm, rlonu, rlatv , interbar )
    493493c
Note: See TracChangeset for help on using the changeset viewer.