Ignore:
Timestamp:
Nov 17, 2009, 2:00:14 PM (15 years ago)
Author:
lguez
Message:

1) Reactivated ability to read ozone (that was deactivated because of
dependency on version of IOIPSL). Added ability to read a pressure
coordinate in Pa in "regr_lat_time_climoz".

2) Added the ability to read a second ozone climatology, corresponding to
daylight ozone:

-- "read_climoz" is now an integer variable, instead of a logical
variable.

-- Added argument "read_climoz" to "phys_state_var_init",
"phys_output_open" and "regr_lat_time_climoz".

-- Created new variable "ozone_daylight" for "hist*.nc" output files.

-- Added a third dimension to variable "wo" in module
"phys_state_var_mod" and variable "POZON" in "radlwsw": index 1 for
average day-night ozone, index 2 for daylight ozone.

-- Added a fourth dimension to variables "o3_in", "o3_regr_lat" and
"o3_out" in "regr_lat_time_climoz": index 1 for average day-night
ozone, index 2 for daylight ozone.

-- In "physiq", moved call to "conf_phys" before call to
"phys_state_var_init". Thus, "conf_phys" is now inside the block "if
(first)" instead of "IF (debut)". There were definitions of "bl95_b0"
and "bl95_b1" that were useless because the variables were overwritten
by "conf_phys". Removed those definitions.

-- In "radlwsw", we pass the average day-night ozone to "LW_LMDAR4"
and the daylight ozone, if we have it, to "SW_LMDAR4" or
"SW_AEROAR4". If we do not have a specific field for daylight ozone
then "SW_LMDAR4" or "SW_AEROAR4" just get the average day-night ozone.

-- "regr_lat_time_climoz" now manages latitudes where the input ozone
field is missing at all levels (polar night).

-- Encapsulated "radlwsw" in a module.

3) Modifications to make sequential and parallel versions of
"create_etat0_limit" almost identical:

-- In "dyn3dpar/create_etat0_limit.F". No need to call
"phys_state_var_init", removed "use phys_state_var_mod" statement. No
need for "clesphys.h", removed "include" statement.

-- In "dyn3dpar/etat0_netcdf.F". Added argument "tau_ratqs" in call to
"conf_phys" (this bug was already corrected in "dyn3d"). Moved call to
"inifilr" after call to "infotrac_init" (as in "dyn3d").

4) Other peripheral modifications:

-- Added procedures "nf95_get_att" and "nf95_def_var_scalar" in
NetCDF95 interface. Overloaded "nf95_put_var" with three more
procedures: "nf95_put_var_FourByteReal", "nf95_put_var_FourByteInt",
"nf95_put_var_1D_FourByteInt".

-- Overloaded "regr1_step_av" with one more procedure:
"regr14_step_av". Overloaded "regr3_lint" with one more procedure:
"regr34_lint".

-- Corrected call to "Init_Phys_lmdz" in "dyn3d/create_etat0_limit.F":
the last argument should be an array, not a scalar.

-- Encapsulated "conf_phys" in a module.

-- Splitted module "regr_pr" into "regr_pr_av_m" and "regr_pr_int_m".

5) Tests:

This revision was compared to revision 1259, with optimization options
"debug" and "dev", parallelization options "none", "mpi", "omp" and
"mpi_omp", 1 and 2 MPI processes, 1 and 2 OpenMP threads, with the
compiler "FORTRAN90/SX Version 2.0 for SX-8". Both programs
"create_etat0_limit" and "gcm" were tested. In all cases,
parallelization does not change the results. With "read_climoz = 0" in
the ".def" files, the results of revision 1259 and of this revision
are the same.

Location:
LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/create_etat0_limit.F

    r1222 r1263  
    99       USE mod_phys_lmdz_para
    1010       USE mod_const_mpi
    11        USE phys_state_var_mod     
    1211       USE infotrac
    1312#ifdef CPP_IOIPSL
     
    3837#include "indicesol.h"
    3938#include  "control.h"
    40 #include "clesphys.h"
    4139      REAL :: masque(iip1,jjp1)
    4240!      REAL :: pctsrf(iim*(jjm-1)+2, nbsrf)
     
    6260     &                 for 1 process and 1 task')
    6361      ENDIF
    64       CALL phys_state_var_init
    6562      call InitComgeomphy
    66      
     63
    6764#ifdef CPP_IOIPSL
    6865      call ioconf_calendar('360d')
  • LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/etat0_netcdf.F

    r1227 r1263  
    1515      USE filtreg_mod
    1616      use regr_lat_time_climoz_m, only: regr_lat_time_climoz
     17      use conf_phys_m, only: conf_phys
    1718#endif
    1819!#endif of #ifdef CPP_EARTH
     
    132133      REAL                 :: bl95_b0, bl95_b1
    133134      real                 :: fact_cldcon, facttemps,ratqsbas,ratqshaut
     135      real                 :: tau_ratqs
    134136      integer              :: iflag_cldcon
    135137      integer              :: iflag_ratqs
     
    142144      REAL      :: solarlong0
    143145      real :: seuil_inversion
    144       logical  read_climoz ! read ozone climatology
     146
     147      integer  read_climoz ! read ozone climatology
     148C     Allowed values are 0, 1 and 2
     149C     0: do not read an ozone climatology
     150C     1: read a single ozone climatology that will be used day and night
     151C     2: read two ozone climatologies, the average day and night
     152C     climatology and the daylight climatology
    145153
    146154      !
     
    170178     &                 fact_cldcon, facttemps,ok_newmicro,iflag_radia,  &
    171179     &                 iflag_cldcon,                                    &
    172      &                 iflag_ratqs,ratqsbas,ratqshaut,                  &
     180     &                 iflag_ratqs,ratqsbas,ratqshaut,tau_ratqs,        &
    173181     &                 ok_ade, ok_aie, aerosol_couple,                  &
    174182     &                 flag_aerosol, new_aod,                           &
     
    187195      CALL inigeom()
    188196
    189       CALL inifilr()
    190197! Initialisation pour traceurs
    191198      call infotrac_init
    192199      ALLOCATE(q3d(iip1, jjp1, llm, nqtot))
    193 !     CALL phys_state_var_init()
     200
     201      CALL inifilr()
     202      CALL phys_state_var_init(read_climoz)
    194203      !
    195204      latfi(1) = ASIN(1.0)
     
    416425      !
    417426
    418       if (read_climoz) call regr_lat_time_climoz ! ozone climatology
     427!     Ozone climatology:
     428      if (read_climoz >= 1) call regr_lat_time_climoz(read_climoz)
    419429
    420430      varname = 'tsol'
Note: See TracChangeset for help on using the changeset viewer.