Directory trunk/libf/dyn3dpar/

Total Files:
90
Deleted Files:
148
Lines of Code:
22502

[root]/trunk/libf/dyn3dpar

Lines of Code

trunk/libf/dyn3dpar/ Lines of Code

Developers

Author Changes Lines of Code Lines per Change
Totals 1071 (100.0%) 8707 (100.0%) 8.1
lguez 513 (47.9%) 3743 (43.0%) 7.2
emillour 415 (38.7%) 3079 (35.4%) 7.4
fairhead 74 (6.9%) 996 (11.4%) 13.4
jghattas 30 (2.8%) 349 (4.0%) 11.6
musat 2 (0.2%) 168 (1.9%) 84.0
fhourdin 11 (1.0%) 124 (1.4%) 11.2
acozic 8 (0.7%) 98 (1.1%) 12.2
aslmd 6 (0.6%) 85 (1.0%) 14.1
ymeurdesoif 3 (0.3%) 28 (0.3%) 9.3
acaubel 5 (0.5%) 23 (0.3%) 4.6
dcugnet 3 (0.3%) 13 (0.1%) 4.3
idelkadi 1 (0.1%) 1 (0.0%) 1.0

Most Recent Commits

dcugnet 2016-10-12 14:53 Rev.: 2665

* A (re)startphy.nc file (standard name: "startphy0.nc") can be read by ce0l to
get land mask, so mask can be defined (in decreasing priority order) from:
1) "o2a.nc file" if this file is found
2) "startphy0.nc" if this file is found
3) "Relief.nc" otherwise
* Sub-cell scales parameters for orographic gravity waves can be read from file
"oro_params.nc" if the configuration key "read_orop" is TRUE.
The effect is to bypass the "grid_noro" routine in ce0l, so that any
pre-defined mask (from o2a.nc or startphy0.nc) is then overwritten.
* The gcm stops if the "limit.nc" records number differs from the current year
number of days. A warning is issued in case the gcm calendar does not match
the time axis attribute "calendar" (if available) from the "limit.nc" file.
This attribute is now added to the "limit.nc" time axis.
* Few simplifications in grid_noro
* Few parameters changes in acama_gwd and flott_gwd.
* Variable d_u can be saved in the outputs.

13 lines of code changed in 2 files:

  • trunk/libf/dyn3dpar: conf_gcm.F90 (+10 -1), logic_mod.F90 (+3 -2)
emillour 2016-09-04 08:12 Rev.: 2622

Some code tidying: turn ener.h into ener_mod.F90
EM

4 lines of code changed in 14 files:

  • trunk/libf/dyn3dpar: advect_new_p.F (-1), advect_p.F (-1), advtrac_p.F90 (-1), dynetat0.F (+1 -1), dynredem.F (+1 -1), dynredem_p.F (+1 -1), gcm.F (-1), iniacademic.F90 (+1 -1), initdynav_p.F (-1), initfluxsto_p.F (-1), inithist_p.F (-1), leapfrog_p.F (-1), writedynav_p.F (-1), writehist_p.F (-1)
emillour 2016-07-25 11:31 Rev.: 2603

Cleanup in the dynamics: turn logic.h into module logic_mod.F90
EM

73 lines of code changed in 30 files:

  • trunk/libf/dyn3dpar: advect_new_p.F (+9 -8), advect_p.F (+2 -1), advtrac_p.F90 (-1), bernoui_p.F (-1), conf_gcm.F90 (+3 -1), convmas1_p.F (-1), convmas2_p.F (-1), convmas_p.F (-1), divgrad_p.F (-1), dteta1_p.F (-1), dynetat0.F (+1 -2), dynredem.F (+1 -1), dynredem_p.F (+1 -1), gcm.F (+7 -2), gradiv_p.F (-1), iniacademic.F90 (+1 -1), initdynav_p.F (-1), initfluxsto_p.F (-1), inithist_p.F (-1), integrd_p.F (+1 -1), leapfrog_p.F (+2 -1), logic.h (del), logic_mod.F90 (new 45), nxgrarot_p.F (-1), tourpot_p.F (-1), vlsplt_p.F (-4), vlspltgen_p.F (-1), vlspltqs_p.F (-3), writedynav_p.F (-1), writehist_p.F (-1)
emillour 2016-07-24 11:51 Rev.: 2601

Cleanup in the dynamics: turn temps.h into module temps_mod.F90
EM

67 lines of code changed in 18 files:

  • trunk/libf/dyn3dpar: advtrac_p.F90 (-1), bilan_dyn_p.F (+1 -1), conf_gcm.F90 (+1 -1), dynetat0.F (+2 -1), dynredem.F (+3 -2), dynredem_p.F (+3 -2), fluxstokenc_p.F (-1), gcm.F (+8 -2), iniacademic.F90 (+1 -1), initdynav_p.F (+1 -1), initfluxsto_p.F (+1 -1), inithist_p.F (+1 -1), integrd_p.F (+5 -4), leapfrog_p.F (+3 -1), temps.h (del), temps_mod.F90 (new 33), writedynav_p.F (+2 -1), writehist_p.F (+2 -1)
emillour 2016-07-23 07:45 Rev.: 2600

Cleanup in the dynamics: turn comvert.h into module comvert_mod.F90
EM

120 lines of code changed in 34 files:

  • trunk/libf/dyn3dpar: advect_new_p.F (-1), advect_p.F (+1 -2), advtrac_p.F90 (-1), bilan_dyn_p.F (+5 -4), caldyn_p.F (+1 -1), convmas1_p.F (-1), convmas2_p.F (-1), convmas_p.F (-1), dudv2_p.F (-1), dynetat0.F (+2 -1), dynredem.F (+2 -2), dynredem_p.F (+2 -2), exner_hyb_p_m.F90 (+1 -1), exner_milieu_p_m.F90 (+1 -1), fluxstokenc_p.F (-1), gcm.F (-1), geopot_p.F (-1), groupe_p.F (-1), guide_p_mod.F90 (+3 -3), iniacademic.F90 (+1 -1), initdynav_p.F (+1 -1), initfluxsto_p.F (+12 -12), inithist_p.F (+1 -1), integrd_p.F (+1 -1), leapfrog_p.F (+19 -19), qminimum_p.F (-1), sw_case_williamson91_6.F (+2 -1), top_bound_p.F (+3 -2), vitvert_p.F (+2 -1), vlsplt_p.F (-4), vlspltgen_p.F (+60 -61), vlspltqs_p.F (-3), writedynav_p.F (-1), writehist_p.F (-1)
emillour 2016-07-22 11:28 Rev.: 2598

Cleanup in the dynamics: turn serre.h into module serre_mod.F90
EM

10 lines of code changed in 16 files:

  • trunk/libf/dyn3dpar: addfi_p.F (-1), conf_gcm.F90 (+2 -1), dynetat0.F (+1 -1), dynredem.F (+2 -1), dynredem_p.F (+2 -1), exner_hyb_p_m.F90 (-1), exner_milieu_p_m.F90 (-1), gcm.F (-1), guide_p_mod.F90 (+3 -5), initdynav_p.F (-1), initfluxsto_p.F (-1), inithist_p.F (-1), integrd_p.F (-1), leapfrog_p.F (-1), writedynav_p.F (-1), writehist_p.F (-1)
emillour 2016-07-22 08:44 Rev.: 2597

Cleanup in the dynamics: get rid of comconst.h, make it a module comconst_mod.
EM

43 lines of code changed in 36 files:

  • trunk/libf/dyn3dpar: addfi_p.F (-1), advect_new_p.F (+1 -1), advect_p.F (+1 -1), advtrac_p.F90 (+1 -1), bilan_dyn_p.F (+1 -1), caladvtrac_p.F (+1 -1), caldyn_p.F (-1), conf_gcm.F90 (+3 -1), dissip_p.F (+1 -1), dynetat0.F (+2 -1), dynredem.F (+1 -1), dynredem_p.F (+1 -1), exner_hyb_p_m.F90 (+1 -1), exner_milieu_p_m.F90 (+1 -1), fluxstokenc_p.F (-1), friction_p.F (+1 -1), gcm.F (+2 -1), groupe_p.F (+1 -1), groupeun_p.F (+2 -2), guide_p_mod.F90 (+7 -5), iniacademic.F90 (+1 -1), initdynav_p.F (+1 -1), initfluxsto_p.F (+1 -1), inithist_p.F (+1 -1), integrd_p.F (+1 -1), leapfrog_p.F (+1 -1), massbar_p.F (-1), massbarxy_p.F (-1), massdair_p.F (-1), sw_case_williamson91_6.F (+1 -1), top_bound_p.F (+3 -2), vlsplt_p.F (+1 -4), vlspltgen_p.F (+1 -1), vlspltqs_p.F (+2 -3), writedynav_p.F (+1 -1), writehist_p.F (-1)
fhourdin 2016-02-15 11:10 Rev.: 2442

ngroup passe du statut de paramètre à constante.
Pour pouvoir l'ajuster en fonction de la resolution
ngroup est maintenant lu dans les .def. ngroup=3 par défaut
ngroup changed from parameter to constant

12 lines of code changed in 3 files:

  • trunk/libf/dyn3dpar: conf_gcm.F90 (+4), groupe_p.F (+2 -2), groupeun_p.F (+6 -6)
emillour 2016-01-03 12:16 Rev.: 2418

Improving the physics/dynamics interface:
- added module callphysiq_mod.F90 in dynphy_lonlat/phy*** which contains the routine "call_physiq" which is called by calfis* and calls the physics. This way different "physiq" routine from different physics packages may be called: The calfis* routines now exposes all available fields that might be transmitted to physiq but which is actually send (ie: expected/needed by physiq) is decided in call_physiq.
- turned "physiq.F90" into module "physiq_mod.F90" for better control of "physiq" arguments. Extracted embeded "gr_fi_ecrit" as self-standing routine (but note that this routine actually only works in serial mode).
EM

1 lines of code changed in 1 file:

  • trunk/libf/dyn3dpar: gcm.F (+1 -1)
emillour 2015-10-18 08:38 Rev.: 2375

Fix in the computation of the date; the convention is that it corresponds to the time at the end of the current dynamics or physics step (except when in backward Matsuno step where it remains unchanged as it was correctly updated during the forward part of the step).
Note that the relationship between itau and date is a bit tricky as itau is incremented between Matsuno forward and backward steps (and from a leapfrog step to the next) but unchanged from Matsuno bacward step to leapfrog step.
Because of change in date when calling physics, bench results will change with this revision.
EM

18 lines of code changed in 1 file:

  • trunk/libf/dyn3dpar: leapfrog_p.F (+18 -5)
emillour 2015-08-25 17:14 Rev.: 2351

More on physics/dynamics separation and cleanup:
- Set things up so that all physics-related initializations are done via iniphysiq.
- Created a "geometry_mod.F90" module in phy_common to store information on the loacl grid (i.e. replaces comgeomphy) and moreover give these variables more obvious names (e.g.: rlond => longitude, rlatd => latitude, airephy => cell_area).
- removed obsolete comgeomphy.h and comgeomphy.F90
EM

25 lines of code changed in 2 files:

  • trunk/libf/dyn3dpar: bands.F90 (+15 -8), gcm.F (+10 -8)
emillour 2015-08-24 09:26 Rev.: 2347

Make iniphysiq a module.
Fix call to iniphysiq in lmdz1d (missing arguments and arrays of wrong sizes).
EM

1 lines of code changed in 1 file:

  • trunk/libf/dyn3dpar: gcm.F (+1 -4)
emillour 2015-08-21 17:13 Rev.: 2346

Physics/dynamics separation:
- remove all references to dimensions.h from physics. nbp_lon (==iim) , nbp_lat (==jjm+1) and nbp_lev (==llm) from mod_grid_phy_lmdz should be used instead.
- added module regular_lonlat_mod in phy_common to store information about the global (lon-lat) grid cell boundaries and centers.
EM

1 lines of code changed in 1 file:

  • trunk/libf/dyn3dpar: gcm.F (+1 -1)
dcugnet 2015-07-31 19:22 Rev.: 2336

* Add parallel capability for ce0l.
* Small bug in grid_noro fixed (smoothed topography was used instead of unsmoothed one for geopotential computation at north pole).
* Removed average of mass at poles in etat0dyn_netcdf after start_init_dyn => different results in the zoomed grid case.
* ok_etat0=n and ok_limit=y combination now works fine (if no initial state is needed, but only limit.nc file). This required:
- to move grid_noro0 and start_init_noro0 subroutines from etat0dyn_netcdf.F90 to limit_netcdf.F90
- to create init_ssrf_m.F90 file, so that sub-surfaces can be initialized from limit_netcdf.F90 without any etat0*_netcdf routines call).
* Simplified somehow the corresponding code, in particular:
1) removed obsolete flags "oldice".
2) removed flag "ibar": barycentric interpolation is used everywhere (except in start_init_subsurf, still calling grille_m - to be changed soon).
3) removed useless CPP_PHY precompilation directives, considering the possibility to run ce0l without physics is useless (ce0l is dedicated to Earth physics).

0 lines of code changed in 1 file:

  • trunk/libf/dyn3dpar: ce0l.F90 (del)
emillour 2015-06-17 14:46 Rev.: 2302

Move etat0phys_netcdf.F90 to "dynlonlat_phylonlat/phylmd" as it relies on "phylmd" routines.
Some cleanup to remove obsolete and unecessary CPP_EARTH preprocessing condition.
EM

1 lines of code changed in 1 file:

  • trunk/libf/dyn3dpar: leapfrog_p.F (+1 -3)
emillour 2015-03-23 09:27 Rev.: 2239

Reorganizing physics/dynamics interface:
- what is related to dynamics-physics interface is now in a seperate directory: dynlmdz_phy*** for physics in phy***
- 1d model and related dependencies (including a couple from "dynamics", set up as symbolic links) is now in subdirectory "dyn1d" of phy***.
- "bibio" directory is now "misc" and should only contain autonomous utilities.
- "cosp" is now a subdirectory of phylmd.
EM

32 lines of code changed in 10 files:

  • trunk/libf/dyn3dpar: advtrac_p.F90 (+4 -3), calfis_p.F (del), covcont_p.F (+2 -1), gcm.F (+3 -1), gr_dyn_fi_p.F (del), gr_fi_dyn_p.F (del), leapfrog_p.F (+2), mod_hallo.F90 (+4 -1), mod_interface_dyn_phys.F90 (del), parallel_lmdz.F90 (+17)
emillour 2015-03-11 16:55 Rev.: 2225

Some cleanup and tidying up in the dynamics/physics interface.
EM

18 lines of code changed in 1 file:

  • trunk/libf/dyn3dpar: gcm.F (+18 -59)
emillour 2015-03-10 11:58 Rev.: 2222

Bug fix: Poles are single points on physics grid. True mesh area there is thus the sum of corresponding dynamics "polar meshes" areas.
Note that this also implies that some extra work is needed in physics to generate correct areas at "polar points" for outputs (especially for zoomed grids).
EM

5 lines of code changed in 1 file:

  • trunk/libf/dyn3dpar: gcm.F (+5 -3)
emillour 2015-03-09 08:38 Rev.: 2221

Some cleanup: remove (unused) clesph0 from dynamics.
EM

8 lines of code changed in 5 files:

  • trunk/libf/dyn3dpar: calfis_p.F (-7), ce0l.F90 (+1 -3), conf_gcm.F90 (+3 -11), gcm.F (+2 -15), leapfrog_p.F (+2 -6)
acozic 2015-01-16 15:15 Rev.: 2180

After checking I reload commit 2169 and 2170

7 lines of code changed in 2 files:

  • trunk/libf/dyn3dpar: gcm.F (+1 -1), leapfrog_p.F (+6 -1)
acozic 2014-12-19 17:21 Rev.: 2171

There are some commits that we must not do just before holiday .... so be back to rev 2168

2 lines of code changed in 2 files:

  • trunk/libf/dyn3dpar: gcm.F (+1 -1), leapfrog_p.F (+1 -6)
acozic 2014-12-16 12:37 Rev.: 2170

Add modification to manage xios with inca model

7 lines of code changed in 2 files:

  • trunk/libf/dyn3dpar: gcm.F (+1 -1), leapfrog_p.F (+6 -1)
fhourdin 2014-11-19 02:13 Rev.: 2151

Corrections pour le 1D.
Le test recemment introduit sur le fait que iphysiq est multiple
de iperiod est deplace de conf_gcm.F90 vers gcm.F pour éviter
qu'il ne soit actif en 1D.
Le include ../dyn3d/conf_gcm.F est remplace par ../dyn3d/conf_gcm.F90
dans 1DUTILS.h

Bug fixing for 1D


2 lines of code changed in 2 files:

  • trunk/libf/dyn3dpar: conf_gcm.F90 (-3), gcm.F (+2)
lguez 2014-11-14 15:38 Rev.: 2143

Forgot deletion of fixed source form files.

0 lines of code changed in 1 file:

  • trunk/libf/dyn3dpar: conf_gcm.F (del)
lguez 2014-11-14 15:32 Rev.: 2142

dyn3d/conf_gcm.F, fixed source form, was included in lmdz1d.F90, free source
form, did not work. So converted conf_gcm.F to free source form. Also
converted dyn3dpar and dyn3dmem versions.

979 lines of code changed in 1 file:

  • trunk/libf/dyn3dpar: conf_gcm.F90 (new 979)
lguez 2014-11-10 19:32 Rev.: 2141

iphysiq must be a multiple of iperiod: added the test.

79 lines of code changed in 1 file:

  • trunk/libf/dyn3dpar: conf_gcm.F (+79 -77)
lguez 2014-10-24 19:53 Rev.: 2134

In nudging procedures, replaced explicit Euler integration of nudged
fields by exact integration. This does not change anything if
guide_add is true, but it changes the value of alpha if guide_add is
false. We could have taken into account the variation of the nudging
field during a nudging time step. This would be a small correction. We
choose not to take it into account for the time being. Also, we add a
restriction on zonal nudging: we allow it only for a grid which is
regular in longitude. It does not seem to make sense otherwise and the
exact integration would take more programming for an irregular grid.

In the sequential version, copying the parallel versions, set
iguide_int to 1 when the input value is 0.

12 lines of code changed in 1 file:

  • trunk/libf/dyn3dpar: guide_p_mod.F90 (+12 -3)
lguez 2014-09-19 19:51 Rev.: 2124

In guide_main, there is the line:

f_out=((MOD(itau,iguide_sav).EQ.0).AND.guide_sav)

The Fortran standard says that the result of mod(a, p) with p = 0 is
processor dependent. With ifort (on Ada at IDRIS), it produces a
run-time error. This is now fixed. The user must still choose
iguide_sav=0 in order to write only once.

4 lines of code changed in 1 file:

  • trunk/libf/dyn3dpar: guide_p_mod.F90 (+4 -2)
lguez 2014-09-01 16:19 Rev.: 2111

Not possible to adjust MPI bands with nudging.

2 lines of code changed in 1 file:

  • trunk/libf/dyn3dpar: conf_gcm.F (+2 -1)
lguez 2014-08-27 17:54 Rev.: 2110

Abort if surface pressure becomes negative. The call to abort_gcm
already was in the sequential version but not in dyn3dpar nor in
dyn3dmem. In dyn3dmem, there is a variable checksum_all, which is
always true. The call to MPI_ALLREDUCE which should update
checksum_all is commented out. I do not know why (performance?).

Non-ASCII characters in comments are not always rendered properly and
they risk being lost. See revision [1740].

Bug fix in procedure convect2: the dimension len must be declared
before the array idcum which has this dimension. Bug fix in procedure
icefrac: the dimensions nl and len must be declared before the arrays
which have these dimensions.

2 lines of code changed in 1 file:

  • trunk/libf/dyn3dpar: integrd_p.F (+2 -2)
lguez 2014-07-22 18:33 Rev.: 2100

Removed "on rentre dans guide_main" from guide_main in dyn3dpar, was
already commented out in the dyn3dmem version.

Keeping length of lines under 80 characters in physiq (for
readability). Removed wrong comments "ajout des tendances de la
diffusion turbulente". Replaced "con" by "convection" as an argument
of add_phys_tend.

3 lines of code changed in 2 files:

  • trunk/libf/dyn3dpar: abort_gcm.F (+3 -3), guide_p_mod.F90 (-1)
lguez 2014-07-16 18:55 Rev.: 2094

In module getparam, moved procedures ini_getparam and fin_getparam out
of the generic interface. Let us keep the generic interface for
procedures which do the same processing on arguments which differ only
by type, kind or rank.

2 lines of code changed in 1 file:

  • trunk/libf/dyn3dpar: getparam.F90 (+2 -1)
fhourdin 2014-07-10 09:18 Rev.: 2087

Correction de bug pour gfortran qui refuse if (rerad_start==.false.)
change en if (.not. read_start)

1 lines of code changed in 1 file:

  • trunk/libf/dyn3dpar: iniacademic.F90 (+1 -1)
emillour 2014-07-09 16:43 Rev.: 2083

- Minor fix in dyn3dpar/leapfrog_p.F , should call geopot_p and not geopot
- Added a sanity check in iniacademic
- Added flag "resetvarc" to trigger a reset of initial values in sortvarc
- Removed "sortvarc0" since the job can now be done with "resetvarc" and
having set flag resertvarc to true.
EM

35 lines of code changed in 3 files:

  • trunk/libf/dyn3dpar: conf_gcm.F (+7), iniacademic.F90 (+25 -14), leapfrog_p.F (+3 -2)
acaubel 2014-06-04 14:33 Rev.: 2055

Modifications in order to run forced configuration with coupled executable
i.e replaced the use of cpp key CPP_PARA by the use of type_ocean flag.

1 lines of code changed in 1 file:

  • trunk/libf/dyn3dpar: mod_const_mpi.F90 (+1 -1)
acaubel 2014-06-03 17:07 Rev.: 2054

Modifications to run LMDZ in coupled mode with both OASIS-MCT and XIOS.

13 lines of code changed in 2 files:

  • trunk/libf/dyn3dpar: mod_const_mpi.F90 (+8 -1), parallel_lmdz.F90 (+5)
fhourdin 2014-05-08 02:11 Rev.: 2039

1. Inclusion d'un appel supplementaire a geopot dans leapfrog dans
les versions dyn3d et dyn3dpar pour garantir la convergence
des 3 versions dyn3d/dyn3dpar/dyn3dmem.
La convergence fonctionne avec un compilateur gfortran 4.6.3 / openmpi
distribué sous ubuntu avec la nouvelle physique (NPv3.2) et le guidage.
options : gfortran -fdefault-real-8 -DNC_DOUBLE -O3
Une seule exception : si on guide avec dyn3dpar et openMP.

2. Correction du guidage dans dyn3dmem.

3. un print supprime dans cv3_toutines.F90

Rm : On ne devrait perdre la convergence numérique avec les précédentes
versions que pour la nouvelle physique puisque le géopotentiel
n'est utilisé dans la physique que par les theermiques et sisvat.

=====================================================================

1. Added call to geopot in leapfrog in dyn3d and dyn3dpar in order to
insure numerical convergence with dyn3dmem.
The convergence dyn3d/dyn3dpar/dyn3dmem is satistied with
gfortran 4.6.3 / openmpi, new physics (NPv3.2) and nudging.
options : gfortran -fdefault-real-8 -DNC_DOUBLE -O3
Only one exception : with nudging & dynd3dpar & openMP.

2. Bug fixing for nudging in dyn3dmem.

3. print supressed in cv3_routines.F90

Rm : Numerical convergence with previous releases should be lost for new
physics only since the geopotential is used only by thermals and
sisvat in the physics.

3 lines of code changed in 1 file:

  • trunk/libf/dyn3dpar: leapfrog_p.F (+3)
fhourdin 2014-05-07 11:05 Rev.: 2038

Possibilité d'imposer le nombre de pas de temps de la simulation avec nday<0
If nday<0, nday is the total number of time step of the simulation

12 lines of code changed in 2 files:

  • trunk/libf/dyn3dpar: gcm.F (+6 -1), leapfrog_p.F (+6 -1)
lguez 2014-05-06 16:56 Rev.: 2037

PVteta computed by PVtheta was not used. Also there were a couple of
problems with PVtheta:

-- PVtheta calls tetalevel in phylmd, and interpolates at
Earth-specific values of potential temperature.

-- PVtheta calls tourabs, and the computation of rot in tourabs should
be modified (it is not correct when there is a zoom).

-- Even when there is no zoom, the computation of rot in tourabs
should probably be modified: directly combine vcov and ucov, as in
tourpot, instead of dividing by cv and cu.

1 lines of code changed in 1 file:

  • trunk/libf/dyn3dpar: calfis_p.F (+1 -22)
fhourdin 2014-04-25 21:17 Rev.: 2026

Correction de declaration manquante
Missing declaration

1 lines of code changed in 1 file:

  • trunk/libf/dyn3dpar: exner_milieu_p_m.F90 (+1 -1)

(83 more)

Generated by StatSVN 0.7.0